gpt 파인튜닝
가능한 모델
- gpt-3.5-turbo-1106 (추천) -> turbo : chat gpt를 지원하는 모델
- gpt-3.5-turbo-0613
- babbage-002 -> 간단한 분류, 검색을 잘함, 검색 쿼리 일치 순서 매기
- davinci-002 -> 복잡한 의도를 이해하거나 요약, 창의적인 콘텐츠 생성 등을 잘함.
- gpt-4-0613 (experimental).
이용 예시
- 스타일, 톤, 포맷 등을 설정할 때
- 신뢰성 향상과 바라는 결과를 얻기 위해
- 복잡한 프롬프트에 따른 오류를 바로잡기 위해서
- 특수한 경우에 대한 핸들링 등
-> 일단 프롬프팅부터 해보라고 계속 강조함.... 프롬프팅부터 하고 프롬프팅으로 어려운 것 파인튜닝 하기
데이터 셋 준비하기
You should create a diverse set of demonstration conversations that are similar to the conversations you will ask the model to respond to at inference time in production.
-> 너가 물어볼 형식과 비슷한 대화 세트로 구성한 데이터가 필요하다.
(전문성이 없는 상태에서 자의적이지 않으려면 어떻게 해야하는가?)
예시1
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already."}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?"}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters."}]}
예시2
{"prompt": "", "completion": ""}
{"prompt": "", "completion": ""}
{"prompt": "", "completion": ""}
필요 데이터 수 (추천)
10개 이상은 필요하고
50 - 100개 정도의 데이터는 있어야 뚜렷한 성능 향상을 볼 수 있음.
토큰 개수 세기...
gpt-3.5-turbo-1106 (recommended) 얘의 경우 16385토큰 까지 입력 가능함
라이브러리 사용해서 토큰수 셀 수 있음 ex) jtokkit
예상 비용
base cost per 1 tokens (1토큰 당 기본 비용)
*
number of tokens in the input file (입력 파일의 토큰 수)
*
number of epochs trained (트레인된 에폭 수)
모델명 | 학습 (1K) | 입력 (1K) | 출력 (1K) |
---|---|---|---|
GPT-3.5-turbo | $0.0080 | $0.0030 | $0.0060 |
* open ai gpt 파인튜닝 공식 문서 참고
https://platform.openai.com/docs/guides/fine-tuning
프롬프트 엔지니어링
더 나은 결과를 위한 6가지 전략
1. 명확한 지시 내리기
- Include details in your query to get more relevant answers (디테일하게 적기)
- Ask the model to adopt a persona (모델에 페르소나 부여하기)
- Use delimiters to clearly indicate distinct parts of the input (구획문자 사용해서 포맷팅하기)
- Specify the steps required to complete a task (단계 구체화해서 말해주기) - step1 step2~ 이런 식으
- Provide examples (예시 제시하기)
- Specify the desired length of the output (원하는 길이 말해주기)
2. 참조 텍스트 제공하기
- 참조 텍스트 (뉴스, 인용문 등) 제공
3. 단순한 작업으로 쪼개기
4. 모델에게 생각할 시간 주기
5. 외부 도구 사용하기
DevPrep 필요 데이터
- 질문에 대한 솔루션 포맷 설정한 데이터
- 꼬리질문 데이터
- 모범 답안 데이터 (생성)
질문 -> 솔루션
- 경험과 생각을 묻는 질문 (직무 관련 경험, 프로젝트 경험, 인턴 경험..) -> 질문에 부합하는 내용인가? 구체성, 수치로 표현되었는가? 행동에 대한 근거가 명확한가? 명확한 목표를 설정하였는가?
- 지식을 묻는 질문 (기술 스택, cs 지식 ) -> 질문에 부합하는 내용인가? 빠진 내용은 없는가?
솔루션 : 구체적인 프롬프팅(유형에 따라 다르게)
꼬리질문 : 데이터 파인튜닝
모범 답안 : 데이터 파인튜닝
질문, 대답 데이터 -> 테스트에 필요
<솔루션 구조>
- 답변 하나마다 솔루션 제공
- 답변 내용의 적절성, 충분성, 구체성 평가 지표 (추후 미팅을 통해 확정 예정)
- 적절성 : 질문에 부합하는 내용인가
- 충분성 : 빠진 내용이 있는가
- 구체성 : 추상적인 내용이 있는가
- 꼬리 질문 예측 (더 세부적, 심층적으로 답변할 수 있도록)
- 우선, 솔루션 부분에서 예측되는 꼬리 ‘질문만’ 제시 → 이 질문에 따른 솔루션은 추후 논의 필요
- 다른 답안 공유
- 2가지 옵션
- 질문 생성 알고리즘 사용시, 모범 답안 생성
- 질문 추천 알고리즘 사용시, 데이터셋에서 모범 답안 추출
- 2가지 옵션
'project' 카테고리의 다른 글
[DevPrep] 6. koalpaca 모델 저장 (0) | 2024.03.28 |
---|---|
[DevPrep] 5. koalpaca fine-tuning test (1) | 2024.03.07 |
[DevPrep] 4. gpt 프롬프팅 테스트 & 데이터 (0) | 2024.03.04 |
[DevPrep] 2. llm 비교해서 선정하기 (0) | 2024.02.17 |