일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 챗GPT
- openAI
- 태블로
- Python
- 서평
- tableau
- Ga
- r
- AZURE
- datastudio
- daily
- review
- 필사
- 책리뷰
- ChatGPT
- AWS
- Q
- bigquery
- diary
- 북리뷰
- 빅쿼리
- Adobe
- GPT
- 파이썬
- SQL
- 구글애널리틱스
- 데이터분석
- 생성AI
- 데이터시각화
- 데일리
- Today
- Total
가볍게 배우고 깊게 즐기고 오래 남기기
[Azure & GPT] Azure OpenAI Hyperparameter - GPT LLM Fine tuning 하기 위한 하이퍼파라미터 정리 본문
[Azure & GPT] Azure OpenAI Hyperparameter - GPT LLM Fine tuning 하기 위한 하이퍼파라미터 정리
Awesomist 2023. 5. 3. 18:01기존 OpenAI에서 제공하는 영역보다 보다 폭 넓게 작업하기 위해서
Azure API를 사용하면서 하이퍼파라미터를 공부하고 있는데,
MS 내에서 제공하는 문서들을 전체적으로 잘 되어있지만
OpenAI 문서와 관련해서는 실질적으로 파이썬 사이드 MS문서와 openai 공식문서 내에 전체 파라미터를 정리한 내용이 촘촘하게 정리되어 있지 않아서 직접 정리해보았다. (닷넷쪽에 하이퍼파라미터는 잘 설명되어있고 파이썬은 누락이 많음)
(2023.05.02 기준 , Azure openai 내 최신화된 Hyperparameter)
* best_of / logprobs / logit_bias는 현재 2023-03-preview 버전에서 제공되고 있다.
* 그 외에 .net의 경우 echo라는 변수를 통해 말 그대로 입력 프롬프트를 다시 한번 되말하는 작업들을 추가적으로 넣을 수 있다.
Hyperaraeter (python / REST API) |
Hyperaraeter (.net) |
Memo | Range |
n | ChoicesPerPrompt | 제공된 프롬프트마다 생성할 선택지 수를 가져오거나 설정 | 1 ~ 128 |
temperature | Temperature | 생성된 완성본에서 나타나는 토큰의 다양성을 조절하는 샘플링 수준을 설정하는데, 0일수록 객관적이고 학습된 그대로 응답하고 1이상 일수록 자의적인 대답을 하기 시작한다. 좋게 말하면 임기응변이지만 거짓말을 포함한 창조적인 답변이 나오기 때문에, 서비스 특성에 따라 조정해야 한다. 별도로 지정하지 않는 경우, 기본값은 1.0 |
0.0 ~ 2.0 |
top_p | NucleusSamplingFactor | Nucleus Sampling 방법에서 사용되는 확률 분포의 상한선을 결정하는 값으로, 값이 높을수록, 생성된 완성본의 일관성을 높일 수 있다. 일반적으로는 0.1 ~ 0.9 사이의 값을 사용하며, 너무 높게 설정하면 상위 확률 분포에 속한 토큰들이 전체 토큰 중 대부분을 차지할 수 있다. |
0~1 |
frequency_penalty | FrequencyPenalty | 생성된 텍스트에서 누적 빈도수에 따라 생성된 토큰이 나타날 확률에 영향을 미치는 값 다양성 관점에서는 높은 값일수록 좋지만 너무 높게 설정하면 이전에 자주 나타난 토큰들이 전혀 나타나지 않을 수도 있어 안내용 챗봇등에서 사용할 경우 주의해야 한다. |
-2.0 ~ 2.0 |
presence_penalty | PresencePenalty | 생성된 완성본에서 이미 나타난 토큰이 다음 토큰으로 선택될 확률을 조절하는 값 위의 빈도패널티와 동일하게 너무 높게 설정하면 이전에 나타난 토큰들이 전혀 나타나지 않을 수도 있으므로 주의해야 한다. |
-2.0 ~ 2.0 |
max_tokens | MaxTokens | 답변 내용 생성시 최대 토큰 수 API 전체의 값이 4096~4097 수준이므로 학습하는 프롬프트의 토큰수를 고려해 조율해야 한다. |
0~4000 |
stop | StopSequences | 생성된 완성본 생성을 종료하는 데 사용되는 텍스트 시퀀스 목록을 가져옵니다. 최대 4개의 중지 시퀀스가 허용 |
|
best_of | GenerationSampleCount | 최종 응답 구성 전 내부적으로 생성될 완성본 개수 |
|
logprobs | LogProbabilityCount | 생성된 완성본에서 각 토큰의 로그 확률을 반환하고, 이 값으로 모델이 각 토큰을 선택하는 데 사용한 확률값을 확인할 수 있다. 모델에 의해 선택될 확률이 높다는 것을 의미하고, logprobs 값 자체가 높다고 해서 생성된 완성본의 품질이 높다는 것은 아니므로 일관성 여부를 모니터링 해야 한다. |
0 ~ 5 |
logit_bias | TokenSelectionBiases | 생성된 완성본에서 각 토큰의 선택 확률을 조절하는 값으로, 이 값을 높일수록, 해당 토큰이 선택될 확률이 증가한다. 의도적인 내용이 있다면 모르겠지만 값 자체를 너무 높게 설정하면 해당 토큰이 다른 토큰들보다 지나치게 자주 선택되어, 생성된 완성본의 다양성이 감소할 수 있다. |
-100~+100 |
[참고문서]
(.net에 오히려 촘촘히 정리되어 있어 해당 내용을 참고해 작성했다.)
ChatCompletionsOptions Class (Azure.AI.OpenAI) - Azure for .NET Developers
The configuration information used for a chat completions request.
learn.microsoft.com
CompletionsOptions Class (Azure.AI.OpenAI) - Azure for .NET Developers
Post body schema to create a prompt completion from a deployment.
learn.microsoft.com