본문 바로가기
C.W.K.
Stream
Lesson 06 of 06 · published

처음부터 끝까지 — 파인튜닝, 결합, 서빙

~20 min · walkthrough, end-to-end, deployment

Level 0호기심
0 XP0/51 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

조각을 한 흐름으로 묶자

작은 도메인 자료로 7B 지시 학습 모델을 파인튜닝하고, 어댑터를 결합해 배포 모델을 만든 뒤 mlx-lm HTTP 서버로 띄워 openai-python에서 호출할 거야. 32 GB Mac 한 대면 처음부터 끝까지 되고 GPU를 빌릴 필요가 없어.

전체 순서

  1. 기반을 골라. mlx-community/Mistral-7B-Instruct-v0.3-4bit는 약 5 GB 통합 메모리에 들어가는 7B Q4이고 지시 따르기의 좋은 기준선이야.
  2. 자료를 준비해. 레슨 2의 채팅 형식으로 train.jsonlvalid.jsonl을 만들어. 시연은 100–300개면 충분해.
  3. 학습해. 레슨 3의 기준값으로 mlx_lm lora --train을 실행하고 검증 손실이 평평해지면 멈춰.
  4. 결합해. mlx_lm fuse로 어댑터를 기반에 접어 새 모델 폴더를 만들어.
  5. 서빙해. 한 터미널에서 mlx_lm server --model ./my-fused를 시작해.
  6. 호출해. 다른 터미널의 openai-python에서 서버를 호출하면 파인튜닝 모델이 도메인 목소리로 답해.

남는 것은 재사용 가능한 기준선이야

파일 배치, YAML 설정, 학습·결합·서버 명령을 다시 참고할 수 있어. 이 흐름은 팀과 클라우드가 필요한 대형 프로젝트가 아니라 한 사람과 Mac 한 대의 오후 작업이라는 감각도 남아. 다음 파인튜닝은 처음부터 다시 만드는 게 아니라 이 기준선의 변형이 돼.

생기는 결과물

  • ./my-data/{train,valid}.jsonl — 다듬은 자료
  • ./my-lora.yaml — 학습 설정의 단일 기준
  • ./my-adapter/ — 학습된 LoRA 보정값
  • ./my-fused/ — 결합한 배포 모델
  • http://localhost:8080/v1 — OpenAI 호환 클라이언트에 파인튜닝 모델을 제공하는 주소

다음 선택

--upload-repo로 결합 모델을 Hugging Face에 올리거나, 다른 자료 조각에 두 번째 어댑터를 학습해 비교할 수 있어. 내장 서버의 한계에 닿으면 prod.lesson1의 작업자 관리 FastAPI 서비스로 넘어가.

Code

1–2단계 — 기반 고르기와 작은 자료 준비·bash
mkdir -p my-data
# Hand-write at least 50 chat-format examples in train.jsonl
# and ~10 in valid.jsonl (lesson 2 has the format).
# You can also use a public dataset like mlx-community/wikisql for the demo.
3단계 — LoRA 어댑터 학습·bash
# my-lora.yaml from lesson 3 contains all the flags as one source of truth.
python -m mlx_lm lora -c my-lora.yaml

# Or inline:
python -m mlx_lm lora \
  --model mlx-community/Mistral-7B-Instruct-v0.3-4bit \
  --train --data ./my-data \
  --fine-tune-type lora --num-layers 16 \
  --batch-size 4 --iters 200 --learning-rate 5e-5 \
  --max-seq-length 2048 \
  --steps-per-eval 25 --save-every 100 \
  --adapter-path ./my-adapter
4단계 — 어댑터 결합, 5단계 — 서빙·bash
# Fuse
python -m mlx_lm fuse \
  --model mlx-community/Mistral-7B-Instruct-v0.3-4bit \
  --adapter-path ./my-adapter \
  --save-path ./my-fused

# Serve (in one terminal — keeps running)
python -m mlx_lm server --model ./my-fused
6단계 — 클라이언트에서 파인튜닝 모델 호출·python
# In a separate terminal:
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8080/v1", api_key="x")

resp = client.chat.completions.create(
    model="./my-fused",
    messages=[
        {"role": "system", "content": "You are an expert in <your domain>."},
        {"role": "user",   "content": "<a question your fine-tune should answer well>"},
    ],
    max_tokens=120,
    temperature=0.7,
)
print(resp.choices[0].message.content)

External links

Exercise

관심 있는 도메인으로 전체 흐름을 돌려. 시간의 70%는 자료, 20%는 학습과 손실 확인, 10%는 결합·서빙·시험에 써. 나중 한 명령으로 다시 실행할 수 있게 YAML 설정을 저장해. 두 번째 도메인 파인튜닝이 첫 번째의 절반 시간에 끝날 만큼 반복 가능한 흐름을 만드는 게 목표야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.