(OpenAI API) OpenAI Fine-tuning
1. 개요
OpenAI fine-tuning
- 사용자: 데이터만 제공
- OpenAI: learning rate, optimizer, loss 등은 OpenAI가 자동 관리
Updated 모델:
ft:gpt-4.1-mini:your-team:xxxx-xx-xx
-
위와 같은 형태로 API로 호출해 사용
-
모델 weight는 사용자가 볼 수 없음 & 다운로드도 불가능 (closed-source니까 당연)
오직 API로 inference만 가능!
2. 기본 코드
https://platform.openai.com/docs/guides/model-optimization
Step 1) Training 파일(JSONL) 준비
training_data.jsonl 예시:
{"messages": [{"role": "user", "content": "Hello!"}, {"role": "assistant", "content": "Hi! How can I help you?"}]}
{"messages": [{"role": "user", "content": "Summarize this text."}, {"role": "assistant", "content": "Sure! Here's the summary..."}]}
- 1줄 = 1개의 sample
- format = messages[] (ChatCompletion 스타일)
Step 2) 파일 업로드
from openai import OpenAI
client = OpenAI()
file = client.files.create(
file=open("training_data.jsonl", "rb"),
purpose="fine-tune"
)
Step 3) Fine-tuning Job 생성
job = client.fine_tuning.jobs.create(
training_file=file.id,
model="gpt-4.1-mini" # fine-tuning 가능한 모델 선택
)
print(job)
id='ftjob-abc123'
status='pending'
model='gpt-4.1-mini'
Step 4) Job 상태 조회 (Monitoring )
job_status = client.fine_tuning.jobs.retrieve(job.id)
(또는 이벤트 스트림 확인)
for event in client.fine_tuning.jobs.list_events(job.id):
print(event)
Step 5) Fine-tuned 모델 사용
학습이 완료되면 모델 ID가 생김
ft:gpt-4.1-mini:abc123:2025-01-20
사용 방법:
response = client.responses.create(
model="ft:gpt-4.1-mini:abc123",
input="Explain quantum computing in simple terms."
)
print(response.output[0].content[0].text)
3. 기타
(1) (Optional) Validation set
validation_file = client.files.create(
file=open("validation.jsonl", "rb"),
purpose="fine-tune"
)
job = client.fine_tuning.jobs.create(
training_file=file.id,
validation_file=validation_file.id,
model="gpt-4.1-mini"
)
(2) Fine-tuned 모델 목록 확인
client.fine_tuning.jobs.list()
4. Summary
training_data.jsonl 준비
↓
client.files.create()
↓
client.fine_tuning.jobs.create()
↓
모델 학습 (OpenAI 서버)
↓
완료 후 모델 ID 생성
↓
API 호출 시 model="ft:..."
5. 추가 팁
a) JSONL format 매우 중요
- “messages” 배열 구조만 허용
- assistant role과 user role 모두 있어야 함
- 불필요한 문장·주석 금지
b) 데이터 품질이 성능의 대부분
- fine-tuning은 hyperparameter를 조절할 수 없음
- 따라서, “데이터가 곧 모델의 능력”
c) 데이터 수는 적어도 50~100개는 추천
- 응답 스타일 위주라면 수십 개로도 효과 있음
- 복잡한 reasoning fine-tuning이라면 수천 개 사용