이 튜토리얼에서는 Python SDK 또는 curl을 사용한 REST API를 사용하여 Gemini API 조정 서비스를 시작하는 방법을 설명합니다. 이 예에서는 Gemini API 텍스트 생성 서비스의 텍스트 모델을 조정하는 방법을 보여줍니다.
시작하기 전에
Gemini API를 호출하기 전에 선택한 SDK가 설치되어 있고 Gemini API 키가 구성되어 있고 사용할 준비가 되었는지 확인합니다.
제한사항
모델을 조정하기 전에 다음 제한사항을 알아야 합니다.
데이터 세트 미세 조정
Gemini 1.5 Flash의 데이터 세트를 미세 조정하는 데는 다음과 같은 제한사항이 있습니다.
- 예시당 최대 입력 크기는 40,000자(영문 기준)입니다.
- 예시당 최대 출력 크기는 5,000자(영문 기준)입니다.
- 입력-출력 쌍 예시만 지원됩니다. 채팅 스타일의 여러 번의 대화는 지원되지 않습니다.
조정된 모델
조정된 모델에는 다음과 같은 제한사항이 있습니다.
- 조정된 Gemini 1.5 Flash 모델의 입력 한도는 40,000자(영문 기준)입니다.
- 조정된 모델에서는 JSON 모드가 지원되지 않습니다.
- 텍스트 입력만 지원됩니다.
조정된 모델 목록
tunedModels.list
메서드를 사용하여 기존의 조정된 모델을 확인할 수 있습니다.
from google import genai
from google.genai import types
client = genai.Client() # Get the key from the GOOGLE_API_KEY env variable
for model_info in client.models.list():
print(model_info.name)
조정된 모델 만들기
조정된 모델을 만들려면 tunedModels.create
메서드에서 dataset를 모델에 전달해야 합니다.
이 예에서는 시퀀스의 다음 숫자를 생성하도록 모델을 조정합니다. 예를 들어 입력이 1
이면 모델은 2
을 출력해야 합니다. 입력이 one hundred
이면 출력은 one hundred one
입니다.
# create tuning model
training_dataset = [
["1", "2"],
["3", "4"],
["-3", "-2"],
["twenty two", "twenty three"],
["two hundred", "two hundred one"],
["ninety nine", "one hundred"],
["8", "9"],
["-98", "-97"],
["1,000", "1,001"],
["10,100,000", "10,100,001"],
["thirteen", "fourteen"],
["eighty", "eighty one"],
["one", "two"],
["three", "four"],
["seven", "eight"],
]
training_dataset=types.TuningDataset(
examples=[
types.TuningExample(
text_input=i,
output=o,
)
for i,o in training_dataset
],
)
tuning_job = client.tunings.tune(
base_model='models/gemini-1.5-flash-001-tuning',
training_dataset=training_dataset,
config=types.CreateTuningJobConfig(
epoch_count= 5,
batch_size=4,
learning_rate=0.001,
tuned_model_display_name="test tuned model"
)
)
# generate content with the tuned model
response = client.models.generate_content(
model=tuning_job.tuned_model.model,
contents='III',
)
print(response.text)
에포크 수, 배치 크기, 학습률의 최적값은 데이터 세트와 사용 사례의 기타 제약 조건에 따라 다릅니다. 이러한 값에 관한 자세한 내용은 고급 조정 설정 및 초매개변수를 참고하세요.
모델 사용해 보기
tunedModels.generateContent
메서드를 사용하고 조정된 모델의 이름을 지정하여 성능을 테스트할 수 있습니다.
response = client.models.generate_content(
model=tuning_job.tuned_model.model,
contents='III'
)
구현되지 않음
일부 기능 (진행률 보고, 설명 업데이트, 조정된 모델 삭제)은 아직 새 SDK에 구현되지 않았습니다.