프롬프트 엔지니어링 자동화(APE: Automated Prompt Engineering)
프롬프트 엔지니어링 자동화(APE: Automated Prompt Engineering)
https://medium.com/towards-data-science/automated-prompt-engineering-the-definitive-hands-on-guide-1476c8cd3c50
APE(Automated Prompt Engineering) ?
특정 작업에 대한 LLM의 성능을 향상하기 위해서, 프롬프트를 자동으로 생성하고 정제(refining)하는 기술
- 다양한 프롬프트를 수동으로 만들고, 테스트하는 프롬프트 엔지니어링의 전 과정을 자동화!
- 기존 머신러닝의 하이퍼 파라미터 최적화(HPO-hyperparameter optimisation)의 자동화의 과정과 유사
왜 중요한가?
- 기업들이 LLM에 적합한 최적의 프롬프트를 찾는 데 어려움을 겪는 경우가 많고, 이는 LLM을 실제 작업에 도입하는 것을 늦춘다.
- 하나의 프롬프트를 위해서도 많은 시간이 걸리는데, 기업에서는 실제로 백여개의 프롬프트가 필요하다. -> 수동으로 프롬프트 엔지니어링을 하는 것은 보틀넥이 될 수 있다.
- 수동 프롬프트 엔지니어링은 기존에 본인이 알고 있는 프롬프트 엔지니어링 기법을 통해 발전시킬 수 있지만, 창의력이 제한되고, 비슷한 패턴을 반복하게 된다. 하지만 본인이 모르는 더 많은 프롬프트 설계가 존재할 수 있으며, 예상치 못한 접근이 좋은 성능을 낼 수도 있다.
- 수동 프롬프트 엔지니어링은 일종의 시행착오처럼 느껴질 수 있는데, APE는 이 과정을 자동화하여 많은 프롬프트를 빠르게 테스트할 수 있다.
APE의 작동방식
프롬프트 엔지니어링
프롬프트 엔지니어링이란?
- 가장 정확하고 관련성 높으며 유용한 응답을 이끌어내기 위해 LLM에 제공되는 입력 프롬프트를 설계하고 개선하는 프로세스
- temperature, topK등의 파라미터도 이에 포함된다.
APE의 핵심 아이디어
- 다양한 스타일로 수많은 프롬프트를 생성하는 도구로 LLM을 사용한다. 생성된 프롬프트를 개선하는 과정을 지속적으로 수행한다.
- LLM 응답을 평가하고, metric을 산정하는 도구로도 LLM을 사용한다.
- 미리 정의된 답(ground truth)와 비교하여 답변의 품질을 평가
metric? 모델이 특정 작업에서 얼마나 잘 수행하고 있는지를 객관적으로 평가하는 데 사용되는 지표 - 정량적 평가 기준
- ex
- 코드생성: 컴파일오류가 없는지, 기능이 잘 수행되는지, 성능이 좋은지 등..
- 감정분석: Precision, Recall, F1 Score 등이 감정 분석 성능을 평가하는 척도
- Text Summarization: ROUGE, BLEU와 같은 점수가 요약된 텍스트의 품질을 평가
- ex
- 미리 정의된 답(ground truth)와 비교하여 답변의 품질을 평가
=> 각자의 역량 영역 내에 있는 작업 수행을 위해 LLM이 독립적으로 작동한다!
APE Workflow
- 아래 세 가지를 먼저 준비한다. (ML의 HPO의 training dataset, initial starting values, evaluation metric과 유사)
- labelled dataset
- 초기 프롬프트
- 평가 지표(metric)
- 초기 프롬프트로 시작
- 초기 프롬프트와 데이터셋으로 워크플로우는를 시작한다
- 응답 생성
- 초기 프롬프트와 데이터셋을 통해 LLM이 응답을 생성한다.
- 응답 평가
- LLM의 답변과 정답(ground truth)을 비교해서 성능을 평가하고, 결과(점수)를 저장한다.
- 프롬프트 최적화
- 최적화용 LLM을 통해 새로운 프롬프트를 만든다.
- 3-5과정을 반복
- 가장 성능이 좋은 프롬프트 선택
- scores를 참고하여 가장 성능이 좋은 프롬프트를 선택한다.
Strategies for prompt optimisation
프롬프트 최적화의 가장 좋은 전략은
random prompt optimisation
이다.
random prompt optimisation
“brute-force” 접근을 차용하여 기존에 생성했던 prompt와 response와는 별개로 랜덤하게 다양한 잠재적 프롬프트를 무작위로 탐색한다.
APE frameworks
DSPy는 APE 를 위한 라이브러리도 존재한다.
Hands-on 자료
Github의 자료를 통해 실습해볼 수 있다.