이 튜토리얼은 Gemini API 조정 서비스를 시작하는 데 도움이 됩니다. Python SDK 또는 REST API를 사용하여 curl 이 예는 텍스트 모델을 조정하는 방법을 보여줍니다. Gemini API 텍스트 생성 서비스입니다
ai.google.dev에서 보기 | Colab 노트북 사용해 보기 | GitHub에서 노트북 보기 |
제한사항
모델을 조정하기 전에 다음 제한사항을 알고 있어야 합니다.
데이터 세트 미세 조정
Gemini 1.5 Flash의 데이터 세트 미세 조정에는 다음과 같은 제한사항이 있습니다.
- 예시당 최대 입력 크기는 40,000자(영문 기준)입니다.
- 예시당 최대 출력 크기는 5,000자(영문 기준)입니다.
- 입력-출력 쌍의 예시만 지원됩니다. 채팅 스타일 멀티턴 지원되지 않습니다.
조정된 모델
조정된 모델에는 다음과 같은 제한사항이 있습니다.
- 조정된 Gemini 1.5 Flash 모델의 입력 제한은 40,000자입니다.
- 조정된 모델에서는 JSON 모드가 지원되지 않습니다.
- 텍스트 입력만 지원됩니다.
시작하기 전에: 프로젝트 및 API 키 설정
Gemini API를 호출하기 전에 프로젝트를 설정하고 확인할 수 있습니다
조정된 모델 목록
tunedModels.list
메서드를 사용하여 기존의 조정된 모델을 확인할 수 있습니다.
# Sending a page_size is optional
curl -X GET https://generativelanguage.googleapis.com/v1beta/tunedModels?page_size=5 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${access_token}" \
-H "x-goog-user-project: ${project_id}" > tuned_models.json
jq .tunedModels[].name < tuned_models.json
# Send the nextPageToken to get the next page.
page_token=$(jq .nextPageToken < tuned_models.json | tr -d '"')
if [[ "$page_token" != "null"" ]]; then
curl -X GET https://generativelanguage.googleapis.com/v1beta/tunedModels?page_size=5\&page_token=${page_token}?key=$GOOGLE_API_KEY \
-H "Content-Type: application/json" > tuned_models2.json
jq .tunedModels[].name < tuned_models.json
fi
조정된 모델 만들기
조정된 모델을 만들려면 dataset를 다음에 전달해야 합니다.
tunedModels.create
에 있는 모델
메서드를 사용하여 축소하도록 요청합니다.
이 예에서는 시퀀스의 다음 숫자를 생성하도록 모델을 조정합니다. 예를 들어 입력이 1
이면 모델은 2
을 출력해야 합니다. 입력이 one hundred
이면 출력은 one hundred one
입니다.
curl -X POST "https://generativelanguage.googleapis.com/v1beta/tunedModels?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '
{
"display_name": "number generator model",
"base_model": "models/gemini-1.5-flash-001-tuning",
"tuning_task": {
"hyperparameters": {
"batch_size": 2,
"learning_rate": 0.001,
"epoch_count":5,
},
"training_data": {
"examples": {
"examples": [
{
"text_input": "1",
"output": "2",
},{
"text_input": "3",
"output": "4",
},{
"text_input": "-3",
"output": "-2",
},{
"text_input": "twenty two",
"output": "twenty three",
},{
"text_input": "two hundred",
"output": "two hundred one",
},{
"text_input": "ninety nine",
"output": "one hundred",
},{
"text_input": "8",
"output": "9",
},{
"text_input": "-98",
"output": "-97",
},{
"text_input": "1,000",
"output": "1,001",
},{
"text_input": "10,100,000",
"output": "10,100,001",
},{
"text_input": "thirteen",
"output": "fourteen",
},{
"text_input": "eighty",
"output": "eighty one",
},{
"text_input": "one",
"output": "two",
},{
"text_input": "three",
"output": "four",
},{
"text_input": "seven",
"output": "eight",
}
]
}
}
}
}' | tee tunemodel.json
# Check the operation for status updates during training.
# Note: you can only check the operation on v1/
operation=$(cat tunemodel.json | jq ".name" | tr -d '"')
tuning_done=false
while [[ "$tuning_done" != "true" ]];
do
sleep 5
curl -X GET "https://generativelanguage.googleapis.com/v1/${operation}?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
2> /dev/null > tuning_operation.json
complete=$(jq .metadata.completedPercent < tuning_operation.json)
tput cuu1
tput el
echo "Tuning...${complete}%"
tuning_done=$(jq .done < tuning_operation.json)
done
# Or get the TunedModel and check it's state. The model is ready to use if the state is active.
modelname=$(cat tunemodel.json | jq ".metadata.tunedModel" | tr -d '"')
curl -X GET https://generativelanguage.googleapis.com/v1beta/${modelname}?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' > tuned_model.json
cat tuned_model.json | jq ".state"
에포크 수, 배치 크기, 학습률의 최적값은 상황에 따라 다릅니다. 사용 사례의 기타 제약 조건에 따라 조정할 수 있습니다 이러한 값에 관한 자세한 내용은 고급 조정 설정 및 초매개변수를 참고하세요.
조정된 모델은 조정된 모델 목록에 즉시 추가되지만 모델이 조정되는 동안 상태는 '만들기 중'으로 설정됩니다.
모델 사용해 보기
이
tunedModels.generateContent
메서드를 사용하고 조정된 모델의 이름을 지정하여 성능을 테스트합니다.
curl -X POST https://generativelanguage.googleapis.com/v1beta/$modelname:generateContent?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-d '{
"contents": [{
"parts": [{
"text": "LXIII"
}]
}]
}' 2> /dev/null
모델 삭제
더 이상 필요 없는 모델을 삭제하여 조정된 모델 목록을 정리할 수 있습니다.
tunedModels.delete
메서드를 사용하여 모델을 삭제합니다. 조정 작업을 취소한 경우
성능을 예측할 수 없습니다.
curl -X DELETE https://generativelanguage.googleapis.com/v1beta/${modelname}?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json'