
DSPy에 대한 소개
DSPy는 특히 LM이 파이프라인 내에서 한 번 이상 사용되는 경우 LM 프롬프트와 가중치를 알고리즘적으로 최적화하기 위한 프레임워크입니다. DSPy 없이 LM을 사용하여 복잡한 시스템을 구축하려면 일반적으로 다음과 같이 해야 합니다:
(1) 문제를 단계로 세분화하고, (2) 각 단계가 개별적으로 잘 작동할 때까지 LM을 잘 프롬프트하고, (3) 단계가 함께 잘 작동하도록 조정하고, (4) 합성 예제를 생성하여 각 단계를 조정하고, (5) 이러한 예제를 사용하여 작은 LM을 미세 조정하여 비용을 절감해야 합니다. 현재는 파이프라인, LM 또는 데이터를 변경할 때마다 모든 프롬프트(또는 미세 조정 단계)를 변경해야 하므로 어렵고 번거롭습니다.
이를 보다 체계적이고 훨씬 더 강력하게 만들기 위해 DSPy는 두 가지 작업을 수행합니다. 첫째, 프로그램(모듈)의 흐름과 각 단계의 매개변수(LM 프롬프트 및 가중치)를 분리합니다. 둘째, DSPy는 최대화하려는 메트릭에 따라 LM 호출의 프롬프트 및/또는 가중치를 조정할 수 있는 LM 기반 알고리즘인 새로운 최적화 도구를 도입합니다.
Analogy to Neural Networks
신경망을 구축할 때는 수작업으로 튜닝한 플로트 목록 위에 수동으로 포-루프를 작성하지 않습니다. 대신 PyTorch와 같은 프레임워크를 사용하여 레이어(예: 컨볼루션 또는 드롭아웃)를 구성한 다음 최적화 도구(예: SGD 또는 Adam)를 사용하여 네트워크의 파라미터를 학습할 수 있습니다.
DSPy는 문자열 기반 프롬프트 트릭을 대체할 수 있는 적절한 범용 모듈(예: ChainOfThought, ReAct 등)을 제공합니다. 프롬프트 해킹과 일회성 합성 데이터 생성기를 대체하기 위해 DSPy는 프로그램에서 매개변수를 업데이트하는 알고리즘인 일반 최적화 도구(BootstrapFewShotWithRandomSearch 또는 MIPRO)도 제공합니다. 코드, 데이터, 어설션 또는 메트릭을 수정할 때마다 프로그램을 다시 컴파일하면 변경 사항에 맞는 새롭고 효과적인 프롬프트를 DSPy가 생성합니다.