Fine-tuning biến một mô hình ngôn ngữ đa năng thành chuyên gia hiểu rõ lĩnh vực, giọng điệu và yêu cầu cụ thể của bạn. Dù bạn cần chatbot hỗ trợ khách hàng nói đúng phong cách thương hiệu hay trợ lý code nắm rõ API nội bộ, fine-tuning là cầu nối giữa mô hình chung chung và mô hình chuyên biệt.

Bài viết này hướng dẫn toàn bộ quy trình -- từ chuẩn bị dataset đến triển khai mô hình -- sử dụng hai nền tảng phổ biến nhất 2026: OpenAI và Together AI.

Khi Nào Nên Fine-Tune

Trước khi đầu tư thời gian và chi phí, hãy xác nhận fine-tuning là hướng đi đúng:

  • Prompt engineering không đủ. Bạn đã thử few-shot examples và system prompts nhưng mô hình vẫn bỏ sót chi tiết quan trọng.
  • Bạn có dữ liệu huấn luyện chất lượng. Tối thiểu 50-100 ví dụ cho task đơn giản, 500+ cho thay đổi hành vi phức tạp.
  • Cần tính nhất quán cao. Mô hình phải tuân thủ format, phong cách hoặc cách suy luận cụ thể.
  • Quan tâm đến latency hoặc chi phí. Mô hình nhỏ đã fine-tune có thể thay thế mô hình lớn với prompt dài.

Nếu chỉ cần bổ sung kiến thức thực tế, hãy xem xét RAG (retrieval-augmented generation) thay vì fine-tuning.

Bước 1: Chuẩn Bị Dữ Liệu Huấn Luyện

Chất lượng fine-tune phụ thuộc hoàn toàn vào dữ liệu. Cả OpenAI và Together AI đều nhận định dạng JSONL với cấu trúc hội thoại.

{"messages": [{"role": "system", "content": "Bạn là nhân viên hỗ trợ kỹ thuật cho Acme Cloud."}, {"role": "user", "content": "Deploy của tôi bị lỗi exit code 137."}, {"role": "assistant", "content": "Exit code 137 nghĩa là container bị kill do vượt giới hạn memory. Hãy tăng memory allocation trong file acme.yaml mục resources.memory, sau đó redeploy lại."}]}
{"messages": [{"role": "system", "content": "Bạn là nhân viên hỗ trợ kỹ thuật cho Acme Cloud."}, {"role": "user", "content": "Làm sao rotate API key?"}, {"role": "assistant", "content": "Vào Settings > API Keys, click icon rotate cạnh key cần đổi, sau đó cập nhật biến môi trường với giá trị mới."}]}

Mẹo chuẩn bị dữ liệu:

  1. Giữ system message nhất quán trong tất cả ví dụ
  2. Loại bỏ thông tin cá nhân (PII)
  3. Đảm bảo phản hồi assistant là output lý tưởng bạn mong muốn
  4. Validate JSONL -- một dòng lỗi sẽ hỏng toàn bộ file upload
  5. Đa dạng hóa ví dụ để tránh overfitting
# Validate file JSONL
python -c "
import json, sys
with open('training_data.jsonl') as f:
    for i, line in enumerate(f, 1):
        try:
            obj = json.loads(line)
            assert 'messages' in obj
        except Exception as e:
            print(f'Loi dong {i}: {e}')
            sys.exit(1)
print(f'Hop le: {i} vi du')
"

Bước 2: Fine-Tune Với OpenAI

OpenAI

OpenAI cung cấp trải nghiệm fine-tuning đơn giản nhất. Bạn có thể fine-tune GPT-4o-mini, GPT-4o và các mô hình khác trực tiếp qua API.

# Cài OpenAI CLI
pip install openai --upgrade
 
# Thiết lập API key
export OPENAI_API_KEY="sk-..."
from openai import OpenAI
 
client = OpenAI()
 
# Upload file huấn luyện
training_file = client.files.create(
    file=open("training_data.jsonl", "rb"),
    purpose="fine-tune"
)
 
# Tạo fine-tuning job
job = client.fine_tuning.jobs.create(
    training_file=training_file.id,
    model="gpt-4o-mini-2024-07-18",
    hyperparameters={
        "n_epochs": 3,
        "batch_size": "auto",
        "learning_rate_multiplier": "auto"
    }
)
 
print(f"Job da tao: {job.id}")

Theo dõi tiến trình:

# Kiểm tra trạng thái
job_status = client.fine_tuning.jobs.retrieve(job.id)
print(f"Trang thai: {job_status.status}")
print(f"Token da train: {job_status.trained_tokens}")
 
# Xem events
events = client.fine_tuning.jobs.list_events(job.id, limit=10)
for event in events.data:
    print(f"{event.created_at}: {event.message}")

Khi hoàn tất, model ID xuất hiện trong job details (ví dụ: ft:gpt-4o-mini-2024-07-18:org:custom-name:id).

Bước 3: Fine-Tune Với Together AI

Together AI

Together AI cho phép fine-tune các mô hình open-source như Llama 3, Mistral, Qwen -- thường rẻ hơn và kiểm soát được nhiều hơn.

pip install together
export TOGETHER_API_KEY="your-key-here"
import together
 
# Upload dữ liệu huấn luyện
file_resp = together.Files.upload(file="training_data.jsonl")
file_id = file_resp["id"]
 
# Bắt đầu fine-tuning
job = together.Fine_tuning.create(
    training_file=file_id,
    model="meta-llama/Llama-3-8b-chat-hf",
    n_epochs=3,
    learning_rate=1e-5,
    batch_size=4,
    suffix="my-support-bot"
)
 
print(f"Job ID: {job['id']}")

Together AI thường hoàn tất fine-tuning nhanh hơn cho mô hình open-source và cung cấp training metrics chi tiết bao gồm loss curves.

Bước 4: Đánh Giá Mô Hình

Không bao giờ bỏ qua bước đánh giá. Tạo test set riêng (10-20% dữ liệu) mà mô hình chưa từng thấy khi huấn luyện.

import json
 
def evaluate_model(client, model_id, test_file):
    correct = 0
    total = 0
 
    with open(test_file) as f:
        for line in f:
            example = json.loads(line)
            messages = example["messages"][:-1]  # Bo phan hoi assistant
            expected = example["messages"][-1]["content"]
 
            response = client.chat.completions.create(
                model=model_id,
                messages=messages,
                temperature=0
            )
            predicted = response.choices[0].message.content
 
            if expected.strip().lower() in predicted.strip().lower():
                correct += 1
            total += 1
 
    accuracy = correct / total * 100
    print(f"Do chinh xac: {accuracy:.1f}% ({correct}/{total})")
    return accuracy

Các chỉ số cần theo dõi:

  • Độ chính xác trên test set
  • Tuân thủ format phản hồi
  • Nhất quán về giọng điệu và phong cách
  • Tỷ lệ hallucination so với mô hình gốc
  • Latency và token usage

Bước 5: Triển Khai và Cải Tiến

Khi hài lòng với kết quả đánh giá, tích hợp mô hình vào sản phẩm:

# Sử dụng mô hình đã fine-tune trong production
response = client.chat.completions.create(
    model="ft:gpt-4o-mini-2024-07-18:org:support-bot:abc123",
    messages=[
        {"role": "system", "content": "Bạn là nhân viên hỗ trợ kỹ thuật cho Acme Cloud."},
        {"role": "user", "content": "Làm sao scale workers?"}
    ],
    temperature=0.3
)

Mẹo Thực Hành

  • Bắt đầu nhỏ. Fine-tune với 100 ví dụ trước. Nếu kết quả khả quan, mở rộng dataset.
  • Dùng validation set. Cả hai nền tảng hỗ trợ validation file để phát hiện overfitting trong quá trình huấn luyện.
  • Giữ epochs thấp. Với đa số task, 2-4 epochs là đủ. Nhiều hơn có nguy cơ mô hình học thuộc lòng.
  • So sánh chi phí. OpenAI tính theo training token. Together AI tính theo GPU-hour. Tính toán cả hai cho dataset của bạn.
  • Quản lý phiên bản dữ liệu. Ghi lại dataset nào tạo ra model nào. Bạn sẽ lặp lại nhiều lần.
  • Kết hợp với system prompts. Fine-tuning và prompting bổ trợ nhau -- dùng cả hai.

So Sánh Chi Phí

Với dataset 1.000 ví dụ (khoảng 500K training tokens):

  • OpenAI GPT-4o-mini fine-tuning: khoảng $4-8 cho huấn luyện, sau đó trả theo inference pricing chuẩn
  • Together AI Llama 3 8B: khoảng $2-5 mỗi job, chi phí inference thấp hơn cho mô hình open-source

Cả hai nền tảng đều có free tier hoặc credits cho lần thử nghiệm đầu tiên.

Lỗi Thường Gặp

  1. Quá ít dữ liệu. Dưới 50 ví dụ hiếm khi tạo ra cải thiện đáng kể.
  2. Format không nhất quán. Nếu ví dụ trộn lẫn nhiều format, mô hình học ra sự không nhất quán.
  3. Train trên dữ liệu synthetic chưa kiểm tra. Luôn để người thật review ví dụ do AI tạo.
  4. Bỏ qua thế mạnh mô hình gốc. Fine-tuning nên chuyên biệt hóa, không phải dạy lại từ đầu.
  5. Không có pipeline đánh giá. Không có metrics thì không biết v2 có tốt hơn v1 không.

Sẵn Sàng Fine-Tune?

OpenAI dễ onboard nhất. Together AI mang lại sự linh hoạt open-source với chi phí thấp hơn.

Bắt đầu với OpenAI