Jupyter Agents: training LLMs to reason with notebooks
Quick Summary
Jupyter Agent 프로젝트는 노트북 안에서 코드 실행과 추론을 결합하는 데이터 과학 에이전트를 만들고, Kaggle 노트북 기반 데이터 파이프라인으로 소형 Qwen3 4B 모델의 DABStep 성능을 끌어올리려는 시도다.
🖼️ 인포그래픽
🖼️ 4컷 인포그래픽
💡 한 줄 요약
Jupyter Agent 프로젝트는 노트북 안에서 코드 실행과 추론을 결합하는 데이터 과학 에이전트를 만들고, Kaggle 노트북 기반 데이터 파이프라인으로 소형 Qwen3-4B 모델의 DABStep 성능을 끌어올리려는 시도다.
📌 핵심 요약
- 글은 LLM에 더 많은 도구와 자율성을 부여하려는 흐름 속에서, Jupyter Notebook을 코드 실행과 단계적 reasoning을 함께 보여주기에 적합한 환경으로 보고 Jupyter Agent를 구축한 배경을 설명한다.
- 평가 기준으로는 데이터셋을 주고 비단순 데이터 질문에 답하게 하는 DABStep 벤치마크를 사용하며, 최신 대형 모델도 hard task에서 20% 미만 정확도에 머무를 만큼 여전히 어려운 과제라고 제시한다.
- 초기 소형 모델로 Qwen3-4B-Thinking-2507을 선택했으며, 기본 성능은 easy 44.4%, hard 2.1%였지만, 모델 주변 scaffolding을 단순화하자 easy 정확도가 59.7%까지 상승했다.
- 훈련 데이터 구축을 위해 Kaggle 노트북과 연결 데이터셋을 수집하고, 중복 제거, 데이터셋 다운로드, 교육 품질 점수화, 관련성 필터링, QA 생성, 실행 trace 생성, 최종 큐레이션을 거치는 다단계 파이프라인을 만들었다.
- 최종 Jupyter Agent Dataset은 5만 1천 개의 합성 노트북과 약 2억 토큰 규모로 구성되었으며, 원문은 이 데이터가 Qwen3-4B 모델의 지도 미세조정 기반이 된다고 설명한다.
🧩 주요 포인트
- 글은 LLM에 더 많은 도구와 자율성을 부여하려는 흐름 속에서, Jupyter Notebook을 코드 실행과 단계적 reasoning을 함께 보여주기에 적합한 환경으로 보고 Jupyter Agent를 구축한 배경을 설명한다.
- 평가 기준으로는 데이터셋을 주고 비단순 데이터 질문에 답하게 하는 DABStep 벤치마크를 사용하며, 최신 대형 모델도 hard task에서 20% 미만 정확도에 머무를 만큼 여전히 어려운 과제라고 제시한다.
- 초기 소형 모델로 Qwen3-4B-Thinking-2507을 선택했으며, 기본 성능은 easy 44.4%, hard 2.1%였지만, 모델 주변 scaffolding을 단순화하자 easy 정확도가 59.7%까지 상승했다.
- 훈련 데이터 구축을 위해 Kaggle 노트북과 연결 데이터셋을 수집하고, 중복 제거, 데이터셋 다운로드, 교육 품질 점수화, 관련성 필터링, QA 생성, 실행 trace 생성, 최종 큐레이션을 거치는 다단계 파이프라인을 만들었다.
- 최종 Jupyter Agent Dataset은 5만 1천 개의 합성 노트북과 약 2억 토큰 규모로 구성되었으며, 원문은 이 데이터가 Qwen3-4B 모델의 지도 미세조정 기반이 된다고 설명한다.
🧠 상세 정리
1. Jupyter Agent의 목표와 출발점
원문은 지난 1년 동안 LLM 연구와 제품 흐름이 더 많은 도구와 자율성을 모델에 부여해 복잡하고 열린 과제를 풀게 하는 방향으로 움직였다고 설명한다. 그 연장선에서 Jupyter Agent의 핵심 목표는 모델에게 코드 실행이라는 강력한 도구를 제공하는 것이다. Jupyter Notebook은 코드 셀과 마크다운 셀로 구성되어 있어, 여러 단계의 코드 실행과 그 사이의 reasoning을 함께 표현하기에 자연스러운 형식으로 제시된다. 따라서 Jupyter Agent는 데이터 분석과 데이터 과학 작업을 노트북 내부에서 직접 수행하는 에이전트로 설계되었으며, 저자들은 이를 데이터 과학 워크플로 안에 자연스럽게 들어온 Cursor 같은 경험에 비유한다.
2. 대형 모델 이후의 질문: 소형 데이터 과학 에이전트 개선
저자들은 Qwen-3 Coder를 사용해 Jupyter Agent 비전의 데모를 만들었고, 이것이 이전 jupyter-agent v1 작업의 후속이라고 밝힌다. 그러나 글의 중심 질문은 단순히 강력한 대형 모델을 사용하는 데 있지 않다. 이미 큰 모델들이 유용한 행동을 보이기 시작한 상황에서, 앞으로 어떻게 모델을 계속 개선할 수 있는지가 핵심 문제로 제기된다. 특히 현재 소형 모델은 에이전트형 데이터 과학 작업에서 대형 모델과 경쟁하기 어렵기 때문에, 이 프로젝트는 소형 모델을 강화하는 데 초점을 둔다. 전체 목표는 고품질 학습 데이터를 생성하고, 기존 소형 모델을 미세조정한 뒤, 관련 벤치마크에서 성능 향상이 실제로 나타나는지 평가하는 파이프라인을 만드는 것이다.
3. DABStep 벤치마크와 평가 문제
모델을 개선하려면 먼저 데이터 과학 에이전트의 능력을 측정할 수 있는 벤치마크가 필요하다고 원문은 말한다. 이를 위해 저자들은 전년에 Adyen과 함께 소개한 DABStep 벤치마크를 사용한다. 이 벤치마크는 LLM에 데이터셋을 제공하고, 단순 조회가 아닌 비자명한 데이터 질문에 답하게 하는 방식으로 데이터 과학 에이전트를 평가한다. 예시로 2023년에 평균 사기율이 가장 높았던 카드 스킴을 묻거나, 특정 merchant에 대해 가장 비용 효율적인 Authorization Characteristics Indicator 선택지를 묻는 과제가 제시된다. 원문은 이 벤치마크가 오늘날의 LLM에도 여전히 어렵고, hard task에서 가장 좋은 out-of-the-box 모델도 20% 정확도에 미치지 못한다고 설명한다.
4. 초기 기준선과 scaffolding의 영향
벤치마크를 정한 뒤 저자들은 DABStep에서 소형 데이터 에이전트 모델도 잘 작동하도록 만들기 위한 fine-tuning 데이터셋 구축을 목표로 삼았다. 첫 모델로는 Qwen3-4B-Thinking-2507을 선택했는데, 이는 매우 작아 반복 실험과 실행이 쉽지만 에이전트 상황에서 사용할 만큼의 기본 능력을 갖춘 모델로 소개된다. 초기 기준선은 easy task 44.4%, hard task 2.1%로, 성능 자체는 좋지 않았지만 개선 여지가 크다는 점에서 출발점으로는 의미가 있었다. 이후 저자들은 에이전트를 단순 채팅 모델과 구분하는 중요한 요소가 모델 주변의 scaffolding이라고 보고, 이 구조를 집중적으로 손봤다. 그 결과 easy split 정확도가 44.4%에서 59.7%로 뛰었다.
5. 단순화된 에이전트 루프와 final_answer 도구
원문은 DABStep 평가 스크립트가 smolagents를 사용해 코드를 실행하며, smolagents에는 사전 정의된 행동, 프롬프트 구조, 기대 출력 형식이 포함되어 있다고 설명한다. 저자들은 Qwen-Agent 코드베이스도 살펴보았고, 모델에 맞게 scaffolding을 조정하는 것이 중요하다고 판단했다. 그래서 외부 의존성이 없는 약 200줄의 단순한 코드로 scaffolding을 재구성했으며, tiny-agents의 정신에서 영감을 받았다고 밝힌다. 이 루프는 while loop와 두 가지 도구, 즉 code execution과 final_answer로 구성된다. 저자들은 Qwen-Agent와 달리 final_answer 도구를 명시적으로 추가했고, 테스트에서 이것이 성능 향상에 도움이 되었다고 말한다. smolagents와 비교하면 많은 프롬프트와 도구를 제거했고, ReACT 프레임워크에 의해 하드코딩된 가정도 줄였다.
6. Kaggle 기반 데이터셋 파이프라인 구축
scaffolding을 단순화한 뒤 프로젝트는 Qwen3-4B를 데이터 과학 에이전트 작업에 맞게 미세조정하는 단계로 이동한다. 원문은 특정 작업이나 행동을 개선하려면 그 작업을 최대한 가깝게 반영하는 데이터로 모델을 훈련해야 한다고 설명한다. 자연스러운 출발점은 실제 Jupyter Notebook이며, 그중에서도 Kaggle 노트북은 고품질 데이터 분석 사례가 풍부한 원천으로 제시된다. 저자들은 약 2TB 규모의 Kaggle Notebooks dataset과, 수동으로 다운로드해 노트북과 연결한 5TB 규모의 Kaggle Datasets를 사용했다. 각 노트북에는 작성자, 사용 데이터셋 등 풍부한 메타데이터가 포함되어 있어, 이후 필터링과 실행 가능성 확보에 중요한 기반이 되었다.
7. 중복 제거, 데이터셋 연결, 품질 점수화
데이터 준비의 첫 단계는 대규모 중복 제거였다. 저자들은 약 2TB의 Kaggle 노트북을 BigCode 프로젝트의 기존 작업을 재사용해 약 250GB로 줄였으며, StarCoder2 학습 데이터 처리 과정에서 output cell을 제외한 노트북이 이미 중복 제거된 상태였다고 설명한다. 원문은 Kaggle 노트북의 약 90%가 중복이거나 거의 동일한 변형이어서, 이를 제거하지 않으면 훈련이 왜곡될 수 있다고 강조한다. 다음으로 노트북이 실제 실행될 수 있도록 Kaggle 메타데이터에 연결된 외부 데이터셋을 kagglehub로 다운로드했다. 이후 Qwen3-32B를 사용해 노트북의 명확성, 완성도, 교육적 가치를 1~5점으로 평가하고 기준 이하를 제거했으며, 이 과정에서 약 70%의 노트북이 걸러졌다.
8. 관련성 필터링과 QA 생성
품질 점수화 이후에도 저자들은 데이터 분석과 직접 관련 없는 노트북을 추가로 제거했다. LLM 학습을 다루는 노트북이나 데이터 분석과 무관한 노트북, 또는 실제로 데이터셋을 사용하지 않는 노트북이 제외 대상이었다. 이 과정은 Qwen3-32B를 이용한 자동 LLM 기반 필터링으로 수행되었고, 약 20%의 노트북이 추가로 제거되었다. 그다음 정제된 노트북을 바탕으로 Qwen3-32B가 질문과 답변 쌍을 생성했다. 질문과 답변은 실제 노트북 실행 trace에 근거하도록 설계되었으며, 모델이 단순히 데이터셋 크기를 묻는 쉬운 질문을 만들려는 경향이 있어 더 어려운 질문을 유도하기 위한 여러 프롬프트를 시도해야 했다. 또한 hallucination을 줄이기 위해 질문·답변 생성과 답변 검증을 별도 단계로 나누었다.
9. 실행 trace 생성과 최종 Jupyter Agent Dataset
마지막으로 저자들은 원본 노트북이 종종 열려 있고 장황하며 불필요한 부분이 많기 때문에, 학습에 적합한 더 깔끔한 코드 실행 trace를 합성 방식으로 생성했다. Qwen-3-Coder-480B 모델을 사용해 이전 단계에서 만든 합성 QA 쌍의 질문에 답하는 Jupyter notebook 코드를 만들게 했고, step-by-step 코드 실행과 중간 출력이 trace에 포함되도록 했다. 실행에는 E2B를 사용했으며, 코드가 실제로 돌아가려면 Kaggle 데이터셋을 가져와야 했다. 다만 많은 데이터셋이 사용할 수 없는 문제가 있었고, 이때는 모델에게 상태를 유지하는 Python 코드 인터프리터처럼 행동하도록 프롬프트했다. 또한 Qwen3-Coder 계열의 tool calling 특성 때문에 각 코드 실행 도구 호출에 comment 필드를 요구해 비추론 모델도 셀 사이에 행동 설명을 남기도록 했다. 최종적으로 너무 긴 출력과 사소한 trace를 제거해 5만 1천 개의 합성 노트북과 약 2억 토큰 규모의 Jupyter Agent Dataset을 만들었다.
🧾 핵심 주장 / 시사점
- 원문에서 가장 중요한 성능 개선 단서는 모델 크기 자체보다 모델을 둘러싼 scaffolding에 있다. 같은 소형 모델이라도 도구 구성, 프롬프트 구조, final_answer 같은 명시적 종료 수단을 어떻게 설계하느냐에 따라 DABStep easy 성능이 크게 달라졌다.
- 데이터셋 구축은 단순한 수집보다 실행 가능성과 품질 관리가 핵심이었다. 중복 제거, 연결 데이터셋 확보, 교육적 가치 평가, 관련성 필터링, 답변 검증, trace 정제까지 여러 단계를 거쳐야 데이터 과학 에이전트 훈련에 쓸 수 있는 형태가 되었다.
- 저자들이 원본 Kaggle 답변과 에이전트가 생성한 최종 답변의 차이를 오류로만 보지 않고 별도 신호로 보존한 점이 흥미롭다. 이는 같은 데이터 질문도 전처리와 분석 절차에 따라 다른 답이 나올 수 있으며, 언어 모델이 인간과 데이터 분석을 어떻게 다르게 수행하는지 연구할 여지를 남긴다.
✅ 액션 아이템
- 원문에서 강조한 핵심 변화와 이해관계자를 기준으로 Jupyter Agents: training LLMs to reason with notebooks의 영향을 정리한다.
- 다음 의사결정이나 제품/정책 판단에 연결될 수 있는 근거를 원문 문장과 함께 기록한다.
- 기사에서 제시한 수치·사례·제약 조건을 분리해 과장 없이 검토한다.
- 후속 모니터링이 필요한 발표·제품·정책 변화가 있는지 출처 링크를 기준으로 추적한다.
❓ 열린 질문
- Introducing NVIDIA Nemotron 3 Nano Omni Long Context Multimodal Intelligence for Documents, Audio and Video Agents]]" "236. 이 변화가 실제 사용자나 조직의 선택 기준을 어떻게 바꿀까?
- How to Fine Tune Nemotron 3.5 ASR for Your Language, Domain, or Accent" "240. 이 근거가 다른 산업이나 지역에서도 동일하게 적용될 수 있을까?
- Nemotron 3.5 Content Safety Customizable Multimodal Safety for Global Enterprise AI" "235. 기사에서 아직 검증되지 않은 전제나 리스크는 무엇일까?
- LeRobot Humanoid An Open, Low Cost, 3D Printed Humanoid for Robot Learning" "[[271. 후속 발표나 데이터가 나오면 어떤 지표를 먼저 비교해야 할까?