이 튜토리얼에서는 Python SDK 또는 curl을 사용하여 REST API를 사용하여 Gemini API 조정 서비스를 시작하는 방법을 설명합니다. 이 예에서는 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를 호출하기 전에 프로젝트를 설정하고 API 키를 구성해야 합니다.
조정된 모델 목록
tunedModels.list
메서드를 사용하여 기존의 조정된 모델을 확인할 수 있습니다.
import google.generativeai as genai
for model_info in genai.list_tuned_models():
print(model_info.name)
조정된 모델 만들기
조정된 모델을 만들려면 tunedModels.create
메서드에서 데이터 세트를 모델에 전달해야 합니다.
이 예에서는 시퀀스의 다음 숫자를 생성하도록 모델을 조정합니다. 예를 들어 입력이 1
이면 모델은 2
을 출력해야 합니다. 입력이 one hundred
이면 출력은 one hundred one
입니다.
import google.generativeai as genai
import time
base_model = "models/gemini-1.5-flash-001-tuning"
training_data = [
{"text_input": "1", "output": "2"},
# ... more examples ...
# ...
{"text_input": "seven", "output": "eight"},
]
operation = genai.create_tuned_model(
# You can use a tuned model here too. Set `source_model="tunedModels/..."`
display_name="increment",
source_model=base_model,
epoch_count=20,
batch_size=4,
learning_rate=0.001,
training_data=training_data,
)
for status in operation.wait_bar():
time.sleep(10)
result = operation.result()
print(result)
# # You can plot the loss curve with:
# snapshots = pd.DataFrame(result.tuning_task.snapshots)
# sns.lineplot(data=snapshots, x='epoch', y='mean_loss')
model = genai.GenerativeModel(model_name=result.name)
result = model.generate_content("III")
print(result.text) # IV
에포크 수, 배치 크기, 학습률의 최적값은 데이터 세트와 사용 사례의 다른 제약 조건에 따라 다릅니다. 이러한 값에 관한 자세한 내용은 고급 조정 설정 및 초매개변수를 참고하세요.
모델을 조정하는 데 시간이 많이 걸릴 수 있으므로 이 API는 조정이 완료될 때까지 기다리지 않습니다. 대신 조정 작업의 상태를 확인하거나 완료될 때까지 기다렸다가 결과를 확인할 수 있는 google.api_core.operation.Operation
객체를 반환합니다.
조정된 모델은 조정된 모델 목록에 즉시 추가되지만 모델이 조정되는 동안 상태는 '만들기 중'으로 설정됩니다.
조정 진행 상황 확인
wait_bar()
메서드를 사용하여 조정 작업의 진행 상황을 확인할 수 있습니다.
for status in operation.wait_bar():
time.sleep(10)
operation.metadata
를 사용하여 총 조정 단계 수를 확인하고 operation.update()
를 사용하여 작업 상태를 새로고침할 수도 있습니다.
cancel()
메서드를 사용하여 언제든지 조정 작업을 취소할 수 있습니다.
operation.cancel()
모델 사용해 보기
tunedModels.generateContent
메서드를 사용하고 조정된 모델의 이름을 지정하여 성능을 테스트할 수 있습니다.
import google.generativeai as genai
model = genai.GenerativeModel(model_name="tunedModels/my-increment-model")
result = model.generate_content("III")
print(result.text) # "IV"
설명 업데이트
genai.update_tuned_model
메서드를 사용하여 언제든지 조정된 모델의 설명을 업데이트할 수 있습니다.
genai.update_tuned_model('tunedModels/my-increment-model', {"description":"This is my model."})
모델 삭제
더 이상 필요 없는 모델을 삭제하여 조정된 모델 목록을 정리할 수 있습니다.
tunedModels.delete
메서드를 사용하여 모델을 삭제합니다. 조정 작업을 취소한 경우 성능을 예측할 수 없으므로 이러한 작업을 삭제하는 것이 좋습니다.
genai.delete_tuned_model("tunedModels/my-increment-model")