과학 컴퓨팅을 위한 장기 실행 에이전트 워크플로우 개요
연구 소개 및 배경
현재 대부분의 과학자들은 AI 에이전트를 대화형 루프 안에서 사용하면서 각 단계를 직접 관리합니다. 하지만 모델이 장기 과제 수행 능력에서 크게 발전하면서, 새로운 작업 방식이 등장하고 있습니다. 고수준의 목표만 지정하고 에이전트 팀이 자율적으로 작업하도록 하는 방식입니다. 이를 통해 며칠, 몇 주, 심지어 몇 달이 걸릴 수 있는 프로젝트를 단 몇 시간 만에 완료할 수 있게 되었습니다.
이 글은 Anthropic Discovery 팀의 연구원 Siddharth Mishra-Sharma가 작성한 것으로, 과학 컴퓨팅 과제에 다일 에이전트 코딩 워크플로우를 적용하는 방법을 설명합니다. 핵심은 테스트 오라클(test oracle), 영속 메모리(persistent memory), 오케스트레이션 패턴이라는 세 가지 핵심 구성 요소입니다.
Anthropic의 C 컴파일러 프로젝트에서는 Claude가 약 2,000개의 세션을 거쳐 리눅스 커널을 컴파일할 수 있는 C 컴파일러를 구축한 바 있습니다. 이번 글에서는 이와 유사한 패턴을 과학 컴퓨팅에 적용하는 방법을, 일반적인 학술 연구실 환경을 기준으로 설명합니다.
구체적 사례: 미분 가능한 볼츠만 솔버(Boltzmann Solver)
이 글의 구체적 사례로는 Claude Opus 4.6을 사용하여 JAX 기반의 미분 가능한 우주론적 볼츠만 솔버를 구현한 프로젝트를 다룹니다. 이 수치 코드는 빅뱅의 잔광인 우주 마이크로파 배경복사(Cosmic Microwave Background, CMB)의 통계적 성질을 예측하는 것으로, 초기 우주에서 광자, 바리온, 중성미자, 암흑 물질의 결합 방정식을 풀어냅니다.
CLASS와 CAMB 같은 볼츠만 솔버는 우주론의 핵심 과학 인프라로, Planck이나 Simons Observatory 같은 관측 데이터를 활용하여 우주론적 모델의 매개변수를 제한하는 데 사용됩니다. 미분 가능한 버전을 만들면, 즉 솔버 전체를 통해 그래디언트를 전파할 수 있으면, 그래디언트 기반 추론 방법을 활용하여 매개변수 추정 속도를 크게 높일 수 있습니다. JAX로 작성하면 자동 미분과 GPU 가속을 사실상 무료로 얻을 수 있어 자연스러운 선택입니다.
주목할 점은 이 과제가 저자의 핵심 전문 분야가 아니라는 것입니다. 도구와 과학에 대한 개략적인 이해는 있지만, 직접 합리적인 시간 내에 완성할 수 있는 전문성은 부족했습니다. 해당 전문성을 가진 연구 그룹들이 JAX 기반의 미분 가능한 솔버를 구현한 바 있으며, 이러한 작업은 보통 수개월에서 수년의 연구자 시간이 소요됩니다. 여기서의 목표는 비전문가의 최소한의 개입만으로 에이전트가 더 나아갈 수 있는지 확인하는 것이었습니다.
장기 실행 에이전트의 핵심 패턴
계획 수립과 CLAUDE.md
자율적 에이전트 연구 팀을 관리하는 방식으로 전환하면서 가장 많은 시간을 투자해야 할 부분은 프로젝트의 목표와 관련 맥락을 명확하게 기술하는 지시문을 작성하는 것입니다. 이 지시문은 루트 디렉토리의 CLAUDE.md 파일에 저장됩니다. Claude는 이 파일을 특별히 취급하여 컨텍스트에 유지하면서 전체 계획의 참조 자료로 활용합니다. 중요한 점은 Claude가 작업하면서 이 지시문을 직접 수정할 수 있다는 것입니다.
초기 CLAUDE.md에는 전체 계획과 설계 결정이 기록되어 있습니다. 저자는 프로젝트의 고수준 목표, 즉 참조 CLASS 구현과의 완전한 기능 동등성을 유지하면서 완전히 미분 가능한 솔버를 만들고 주요 과학적 결과물에서 CLASS 대비 0.1%의 정확도를 달성하는 것을 지정한 뒤, Claude와 반복적으로 논의하여 계획을 완성했습니다.
세션 간 메모리: CHANGELOG.md
진행 파일(여기서는 CHANGELOG.md)은 에이전트의 이동 가능한 장기 메모리 역할을 하며, 일종의 실험 노트입니다. CLAUDE.md에서 Claude는 이 파일에 진행 상황을 기록하도록 지시받았습니다.
좋은 진행 파일에는 다음이 포함됩니다:
- 현재 상태
- 완료된 작업
- 실패한 접근 방식과 그 이유 (이것이 없으면 이후 세션에서 같은 시행착오를 반복합니다)
- 주요 체크포인트에서의 정확도 표
- 알려진 제한 사항
예를 들어 이런 항목이 기록됩니다: "섭동(perturbation) ODE에 Tsit5를 시도했으나 시스템이 너무 뻣뻣함(stiff). Kvaerno5로 전환" - 프로젝트의 CHANGELOG에서 이러한 요소들을 확인할 수 있습니다.
테스트 오라클(Test Oracle)
장기 자율 과학 작업에서 결정적으로 중요한 것은 에이전트가 자신이 진전을 이루고 있는지 알 수 있는 방법을 갖는 것입니다. 과학 코드의 경우 이는 참조 구현, 명확히 정량화 가능한 목표, 또는 기존 테스트 스위트가 될 수 있습니다. 에이전트에게 테스트 스위트를 확장하고 작업 중에 테스트를 실행하도록 지시하여 회귀(regression)를 방지하는 것도 유용합니다.
이 프로젝트에서 Claude는 CLASS C 소스코드를 참조 구현으로 사용하여 단위 테스트를 구성하고 지속적으로 실행하도록 지시받았습니다.
Git을 통한 조율
Git은 에이전트의 진행 상황을 관찰하고 조율하는 좋은 방법이 됩니다. 에이전트는 의미 있는 작업 단위를 마칠 때마다 커밋하고 푸시해야 합니다. 이를 통해 문제가 생겼을 때 복구 가능한 히스토리를 확보하고, 진행 상황을 눈으로 확인할 수 있으며, 예를 들어 컴퓨트 할당이 중간에 소진되더라도 작업이 유실되지 않습니다.
실제로 CLAUDE.md에 "의미 있는 작업 단위를 마칠 때마다 커밋하고 푸시하라. 커밋 전에 pytest tests/ -x -q를 실행하라. 기존에 통과하던 테스트를 깨뜨리는 코드는 절대 커밋하지 마라."와 같은 규칙을 포함시킵니다.
실행 루프와 Ralph 패턴
HPC 클러스터에서의 실행
HPC 클러스터에서 SLURM 스케줄러를 사용하는 환경을 기준으로, tmux 안에서 Claude Code 세션을 시작하고 에이전트를 실행합니다. 다음과 같은 방식으로 실행되는 스크립트를 사용하였습니다:
#!/bin/bash
#SBATCH --job-name=claude-agent
#SBATCH --partition=GPU-shared
#SBATCH --gres=gpu:h100-32:1
#SBATCH --time=48:00:00
#SBATCH --output=agent_%j.log
cd $PROJECT/my-solver
source .venv/bin/activate
export TERM=xterm-256color
tmux new-session -d -s claude "claude; exec bash"
tmux wait-for claude
tmux 세션 안에서 실행되기 때문에 분리(detach)한 뒤 노트북을 닫고, 가끔 GitHub을 통해 진행 상황을 확인할 수 있습니다. 저자는 커피 줄을 서면서 폰으로 GitHub을 확인하곤 했다고 합니다.
srun --jobid=JOBID --overlap --pty tmux attach -t claude
Ralph 루프: 에이전트 게으름 방지
현재 모델은 복잡한 다단계 과제를 수행할 때 작업을 완료하기 전에 멈추는 "에이전트 게으름(agentic laziness)" 현상을 보일 수 있습니다. 이는 에이전트가 마치 "오늘은 여기까지 하고 내일 계속하죠?"라고 말하는 식입니다.
이를 해결하기 위한 오케스트레이션 패턴이 Ralph 루프입니다. 이는 본질적으로 에이전트가 완료를 주장할 때 다시 컨텍스트로 돌려보내어 "정말로 끝났나요?"라고 확인하는 반복 루프입니다. 에이전트는 작업이 기준에 미달함을 인정하고 기준에 도달할 때까지 계속 작업합니다. GSD나 과학 분야 전용 변형 등 유사한 패턴도 있습니다.
일반적인 호출 예시는 다음과 같습니다:
/ralph-loop "전체 매개변수 범위에서 0.1% 정확도 달성까지 작업을 계속하세요." --max-iterations 20 --completion-promise "DONE"
여기서 Claude는 최대 20회 반복하면서 "DONE" 확인어로 작업 완료를 보증할 때까지 진행합니다.
프로젝트 결과
Claude는 clax 프로젝트를 처음부터 며칠에 걸쳐 작업하여, 참조 CLASS 구현의 다양한 출력에 대해 1% 미만의 오차를 달성했습니다.
주요 성과는 다음과 같습니다:
| 다중극자(Multipole) l | C_l^TT 오차 | C_l^EE 오차 |
|---|---|---|
| 20 | -0.08% | -0.21% |
| 100 | -0.02% | +0.02% |
| 500 | -0.15% | -0.15% |
| 1000 | -0.57% | -0.26% |
| 1200 | -0.07% | +0.03% |
렌즈 효과가 적용된 CMB 스펙트럼에서는 l=10~2000 범위에서 TT와 EE 모두 0.2% 미만의 오차를 달성했으며, 10개의 LCDM 매개변수 조합에서도 유효성이 검증되었습니다. V100 GPU에서 34초 만에 실행되어 HMC 추론에 바로 사용할 수 있는 수준입니다.
에이전트 개발의 특성과 시사점
에이전트의 개발 궤적이 완전히 매끄럽지는 않았습니다. 초기에는 기준점(fiducial) 매개변수 하나에서만 테스트하여 테스트 커버리지에 빈틈이 있었습니다. 게이지 규약(gauge convention) 오류 같은 기본적인 실수도 있었고, 우주론 전문가라면 즉시 발견할 버그를 추적하는 데 몇 시간을 소비하기도 했습니다. 그러나 에이전트는 0.1% 미만의 정확도라는 목표를 향해 지속적으로 진전을 이루어 나갔습니다.
이 프로젝트의 부수 효과로, 저자는 볼츠만 솔버와 그것이 모델링하는 물리학에 대해 상당히 많은 것을 배웠다고 합니다. Git 커밋 히스토리를 따라가면서 모르는 내용을 찾아보는 것이 과학을 흡수하는 효과적인 방법이 되었다는 것입니다. 커밋 로그는 빠르고 정확한 포스닥의 실험 노트처럼 읽힌다고 표현하고 있습니다.
결과적으로 이 솔버가 완전한 프로덕션 수준은 아니지만(모든 구간에서 CLASS와 허용 가능한 정확도로 일치하지는 않음), 에이전트 주도 개발이 수개월에서 수년의 연구자 작업을 며칠로 압축할 수 있음을 보여주었습니다.
저자는 이런 말로 글을 마무리합니다: "컴퓨트와 성공 기준이 명확한 프로젝트가 있다면, 에이전트를 돌리지 않는 매일 밤은 잠재적 진전을 버려두는 것(Potential Progress Left on the Table)과 같습니다."
Long-running Claude for scientific computing 소개 블로그
clax GitHub 저장소
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()

