- DSPy(Declarative Self-improving Python)는 프로그래밍을 통해 언어 모델(LM)을 제어하도록 설계된 프레임워크
- 간단한 분류기부터 복잡한 RAG 파이프라인, 에이전트 루프까지 모듈화된 AI 시스템을 빠르게 구축할 수 있으며, 프롬프트와 가중치를 최적화하는 알고리듬도 제공
- 기존의 불안정한 프롬프트 대신 합성 가능한 파이썬 코드를 작성하여, 모듈화된 AI 시스템을 빠르게 구축하고 LM이 고품질 출력을 생성하도록 학습시킬 수 있음
-
Module을 사용하여 AI 동작을 문자열이 아닌 코드로 기술
- 신뢰할 수 있는 AI 시스템을 구축하려면 빠르게 반복해야 함
- 그러나 프롬프트를 유지 관리하면 LM, 메트릭 또는 파이프라인을 변경할 때마다 문자열이나 데이터를 수정해야 하므로 어려움
- DSPy는 LM 시스템 정의를 특정 LM이나 프롬프팅 전략에 대한 복잡한 선택과 분리하기 위해 개발됨
- DSPy의 프로그래밍 방식
- DSPy는 프롬프트 문자열 조정에서 구조화되고 선언적인 자연어 모듈을 사용한 프로그래밍으로 초점을 전환함
- 시스템의 모든 AI 구성 요소에 대해 입출력 동작을 시그니처로 지정하고 모듈을 선택하여 LM 호출 전략을 할당함
- DSPy는 시그니처를 프롬프트로 확장하고 타입이 지정된 출력을 파싱하여 사용하기 쉽고 이식 가능하며 최적화 가능한 AI 시스템을 작성할 수 있음
-
Optimizer가 AI 모듈의 프롬프트와 가중치를 조정
- DSPy는 자연어 주석이 포함된 고수준 코드를 저수준 연산, 프롬프트 또는 가중치 업데이트로 컴파일하는 도구를 제공함
- 이를 통해 LM을 프로그램의 구조 및 메트릭과 정렬할 수 있음
- 코드나 메트릭을 변경하면 이에 맞게 간단히 다시 컴파일할 수 있음
- DSPy 최적화 프로세스
- 작업의 대표적인 입력 몇 십 개 또는 몇 백 개와 시스템 출력의 품질을 측정할 수 있는 메트릭이 있다면 DSPy Optimizer를 사용할 수 있음
-
dspy.BootstrapRS
는 모든 모듈에 대해 좋은 few-shot 예제를 합성함
-
dspy.MIPROv2
는 모든 프롬프트에 대해 더 나은 자연어 명령을 제안하고 지능적으로 탐색함
-
dspy.BootstrapFinetune
은 모듈용 데이터셋을 구축하고 이를 사용하여 시스템의 LM 가중치를 미세 조정함
-
DSPy 생태계는 오픈소스 AI 연구를 발전시킴
- DSPy의 모듈식 패러다임은 거대 언어 모델과 비교하여 더 많은 연구자들이 LM 프로그램의 구성 아키텍처, 추론 시간 전략, 최적화 도구를 분산된 방식으로 개선할 수 있는 기회를 제공함
- 이는 DSPy 사용자들에게 더 많은 제어권을 부여하고, 반복 작업을 더 빠르게 할 수 있도록 도와주며, 최신 최적화 도구나 모듈을 적용하여 프로그램이 시간이 지날수록 발전할 수 있게 하는 이점이 있음
- DSPy 연구는 2022년 2월 Stanford NLP에서 시작되었으며, ColBERT-QA, Baleen, Hindsight와 같은 초기 복합 LM 시스템 개발에서 얻은 교훈을 바탕으로 구축됨
- 2022년 12월에 DSP로 처음 출시되었고 2023년 10월에 DSPy로 발전하였으며, 250명의 기여자들 덕분에 수만 명의 사람들이 모듈형 LM 프로그램을 구축하고 최적화하는 방법을 배울 수 있게 됨
- DSPy 커뮤니티는 MIPROv2, BetterTogether, LeReT와 같은 최적화 도구와 STORM, IReRa, DSPy Assertions와 같은 프로그램 아키텍처에 대한 많은 연구 성과를 이룩함
- PAPILLON, PATH, WangLab@MEDIQA, UMD의 프롬프팅 사례 연구, Haize의 Red-Teaming 프로그램과 같은 새로운 문제에 대한 성공적인 적용 사례도 다수 보유하고 있음
- 이 외에도 많은 오픈소스 프로젝트, 프로덕션 애플리케이션 및 기타 사용 사례들을 통해 DSPy의 실용성이 입증됨