PyTorch 스타일 프레임워크를 활용한 모델 및 태스크-환경 불가지론적 능력 향상을 위한 하네스(Harness) 학습
요약
PyTorch 스타일의 프레임워크를 사용하여 모델과 환경에 구애받지 않는 '하네스 학습(Harness Training)' 방식을 제안합니다. 특정 태스크 환경에 맞춰 하네스를 학습시키면, 이후 어떤 LLM으로도 해당 환경을 평가하거나 능력을 전이할 수 있습니다.
핵심 포인트
- 모델 교체가 가능한 태스크-환경 불가지론적 하네스 학습 프레임워크 개발
- OpenAI 호환 API를 통해 다양한 LLM과 인터페이싱 가능
- Terminal-Bench 및 SWE-Bench 등 다양한 태스크 환경으로 확장 가능
- 학습된 하네스를 통해 미학습 환경에서도 태스크 해결 능력 전이 확인
저는 지난 몇 달 동안 "에이전트 주도 자기 개선 하네스(Agent-driven Self-improving Harness)"를 "하네스 학습(Harness Training)"으로 재정의하기 위해 이 프로젝트( https://github.com/workofart/harness-training )를 작업해 왔습니다. 아이디어는 간단합니다. 하네스를 고정된 태스크 LLM(Large Language Model)과 함께 주어진 태스크 환경에 대해 한 번 학습시킵니다. 그러면 태스크 LLM을 어떤 모델로든 교체할 수 있으며, "고정되어 학습된 하네스"를 새로운 태스크 환경의 어떤 태스크 LLM으로도 평가할 수 있습니다. 이것이 일반적인 문제였기 때문에, 저는 일반적인 PyTorch 스타일의 학습 프레임워크를 만들 기회로 삼았습니다. 현재는 태스크 LLM과 인터페이싱하기 위해 모든 OpenAI 호환 API를 사용하여 학습할 수 있으며, Terminal-Bench 또는 SWE-Bench 태스크를 대상으로 학습할 수 있지만, 어떤 태스크 환경도 지원하도록 쉽게 확장할 수 있습니다.
criterion = StrictPareto()
optimizer = GreedyMonotonic()
trainer = Trainer(
config_path="config/train_harness.yaml",
estimator=AgenticEstimator(
backend=CodexAgentBackend(...)
),
criterion=criterion,
optimizer=optimizer,
)
for loss in trainer.epochs(30):
# 베이스라인 대 후보(baseline-vs-candidate) 판결을 기록합니다.
loss.backward()
# 옵티마이저는 후보의 변경 사항을 새로운 베이스라인으로 빠르게 진행(git commit)하거나, 이를 거부(git ref로 보존)합니다.
optimizer.step()
저는 이 여정에 대한 블로그 포스트( https://www.henrypan.com/blog/2026-07-18-harness-training )를 작성했으며, 여기에는 다음 내용이 포함됩니다(이에 국한되지 않음):
- 이 하네스 학습 프레임워크를 사용하여 많은 태스크 LLM 전반의 일반적인 능력을 향상시켜 Terminal Bench 2.0(Terminus Harness)을 이겨낸 결과
- 또한 학습된 내용을 보지 못한 태스크 환경에서의 더 나은 태스크 해결 능력으로 전이(transfer)하는 결과(예: SWE-Bench 태스크에서 학습된 하네스가 Terminal Bench 태스크를 해결하는 경우)
- 이 프레임워크가 구축된 방식
- 프로젝트 초기 버전에서 부족했던 점에 대한 교훈(힌트: 결정론(determinism))
어떤 피드백이든 환영합니다. 감사합니다!
AI 자동 생성 콘텐츠
본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기