최적화기 고르기
최적화기 고르기 (Optimizers: choosing one)
DSPy는 12개가 넘는 최적화기(텔레프롬프터)를 제공하고, 가장 많이 받는 질문은 "어떤 것을 써야 하나요?"입니다. 이 페이지는 선택 가이드로, 각 최적화기가 무엇을 튜닝하는지, 컴파일 시점에 무엇이 필요한지, 비용이 얼마인지, 언제 대안을 이기는지를 다룹니다.
출처: 문서
본문
작동하는 프로그램과 메트릭이 있고, 무엇에 대해 컴파일할지 정하려 할 때 이 문서를 읽으세요. 개별 최적화기(GEPA, BootstrapFewShot 계열, BootstrapFinetune)의 심층 페이지는 이 문서 옆에 있습니다.
설계 결정
1. 모든 최적화기는 지시문·데모·가중치 중 하나 이상을 튜닝한다
세 개의 손잡이가 DSPy가 노출하는 모든 탐색 공간을 커버합니다. 지시문(instructions)은 각 predictor의 시그니처에 있는 자연어 docstring입니다. 데모(demos)는 각 predictor가 호출 시점에 보는 컨텍스트 내 예시입니다. 가중치(weights)는 LM이 튜닝 가능할 때의 모델 파라미터입니다. 각 최적화기는 이 중 하나나 둘을 고르고 나머지는 건드리지 않습니다. 아래 API 살펴보기는 어느 손잡이를 돌리는지에 따라 묶었어요.
2. .compile() 은 새 복사본을 반환한다. 원래 student는 변경되지 않는다
모든 최적화기가 가장 먼저 하는 것은 student.reset_copy() 입니다 — 상속된 _compiled 플래그를 지우는 deepcopy죠. 컴파일된 프로그램이 반환되고, 당신이 넘긴 원본은 그대로 남습니다. 같은 student에 대해 다른 최적화기·데이터셋·예산으로 .compile() 을 다시 실행하고 결과를 비교해도 안전합니다.
API 살펴보기
각 최적화기가 무엇을 튜닝하는지 기준으로 묶었어요.
지시문과 데모 (프롬프트) 최적화기
dspy.GEPA — (가이드: GEPA in depth)
반성(reflection) 기반 지시문 최적화기. 후보 프로그램 개체군을 유지하고 reflection_lm 으로 포인트를 제안합니다. 지시문과 코드(Flex)를 모두 튜닝할 수 있습니다. 작업을 재정의해야 할 때, 그리고 GEPA가 있는 강력한 메트릭 피드백(Prediction(score, feedback))이 있을 때 최상의 결과를 줍니다. 예산이 더 많은 auto 설정을 선택할 수 있습니다.
dspy.MIPROv2 — 지시문과 훈련 세트의 특정 데모를 동시에 최적화하려 할 때 탁월합니다. 여러 단계로 반복하는 프로그램에 좋습니다.
데모 (프롬프트) 최적화기 — BootstrapFewShot 계열
가이드를 참고하세요. 이 계열은 predictor의 demos 리스트를 수집·선택합니다.
dspy.BootstrapFewShot — 메트릭으로 필터링된 부트스트랩 데모를 선택. 넓은 기본선으로 좋습니다.
dspy.BootstrapFewShotWithRandomSearch (별칭 BootstrapRS) — 데모 세트에 걸친 무작위 탐색.
dspy.LabeledFewShot — 메트릭·LM 호출 없는 기본선. 데모만으로 충분한지 확인할 때.
dspy.KNNFewShot — 추론 시점 KNN 검색으로 데모를 선택.
dspy.InferRules — 부트스트랩된 트레이스에서 규칙을 추출.
가중치 (모델) 최적화기
dspy.BootstrapFinetune — 부트스트랩된 예시로 기본 모델을 파인튜닝. 프롬프트 최적화가 한계에 닿았을 때.
선택 요령
- 데이터가 적고 구조를 유지하고 싶다 →
BootstrapFewShot계열로 시작. - 지시문을 다시 쓰고 싶다, 특히 강력한 피드백 메트릭이 있다 →
GEPA. - 지시문과 데모를 함께, 다단계 파이프라인 →
MIPROv2. - 모델 자체를 조정하고 싶다 →
BootstrapFinetune.
크로스링크
- GEPA in depth — 반성 기반 지시문 최적화기의 전체 메커니즘.
- BootstrapFewShot family — 데모 튜닝 계열의 변형과 실패 모드.
- Metrics and evaluation — 모든 최적화기가 컴파일하는 메트릭 계약.