Làm chủ Llama-Factory: Hướng dẫn chuyên gia về Fine-Tuning LLM trên Linux

AI tutorial - IT technology blog
AI tutorial - IT technology blog

Bức tường ảo giác

Năm ngoái, đội ngũ của tôi đã đối mặt với một nút thắt cổ chai đầy khó chịu. Chúng tôi đang xây dựng một công cụ debug cho một framework nội bộ độc quyền, nhưng kết quả thật thảm hại. Ngay cả với cửa sổ ngữ cảnh 128k và các pipeline RAG phức tạp, mô hình vẫn bị ảo giác khoảng 40% thời gian. Nó cố gắng áp đặt các pattern React tiêu chuẩn vào một kiến trúc cũ (legacy) không hỗ trợ chúng. Nó phản hồi nhanh và tự tin, nhưng về mặt chức năng thì hoàn toàn vô dụng.

Nhiều kỹ sư DevOps và AI cuối cùng cũng đâm phải bức tường này. Bạn có một mô hình cơ sở mạnh mẽ như Llama 3 hoặc Mistral, nhưng nó thiếu đi “linh hồn” của codebase cụ thể của bạn. Nó hành xử như một người biết tuốt (generalist) trong khi bạn đang rất cần một chuyên gia (specialist).

Tại sao Prompt Engineering là chưa đủ

Vấn đề nằm ở “thế giới quan” của mô hình. Một LLM cơ sở được huấn luyện trên hàng petabyte dữ liệu công khai. Nó biết một chút về mọi thứ, nhưng nó không được gắn chặt vào logic nội bộ hoặc phong cách thương hiệu cụ thể của bạn.

Hãy coi RAG giống như việc đưa cho mô hình một chiếc thẻ thư viện. Nó có thể tra cứu thông tin, nhưng nó chưa thực sự “học” tài liệu đó. Nó thường thất bại trong việc tổng hợp các hướng dẫn phức tạp và ngách vì chưa nội hóa được logic cốt lõi. Để thay đổi cách một mô hình tư duy — chứ không chỉ là những gì nó biết — bạn phải sửa đổi trọng số của nó. Điều đó có nghĩa là bạn cần fine-tuning LLM.

Bức tranh toàn cảnh về Fine-Tuning

Fine-tuning trong lịch sử vốn là một quy trình có nhiều rào cản. Thông thường, bạn sẽ bị kẹt với ba lựa chọn không hoàn hảo:

  • Con đường thủ công: Viết các script PyTorch hoặc Hugging Face tùy chỉnh. Bạn có toàn quyền kiểm soát, nhưng sẽ dành 80% thời gian để debug lỗi CUDA “out of memory” thay vì huấn luyện.
  • Cloud API: Các dịch vụ như OpenAI rất tiện lợi nhưng đắt đỏ. Quan trọng hơn, chúng yêu cầu gửi mã nguồn nội bộ nhạy cảm đến máy chủ của bên thứ ba — một điều không thể chấp nhận đối với many đội ngũ bảo mật doanh nghiệp.
  • Các Framework chuyên dụng: Các công cụ như Axolotl rất mạnh mẽ nhưng dựa vào các cấu hình YAML dày đặc, có thể gây nản lòng cho người mới bắt đầu.

Giải pháp: Llama-Factory

Sau khi thử nghiệm hàng tá quy trình làm việc, tôi thấy Llama-Factory là điểm trung gian hiệu quả nhất. Nó hỗ trợ hơn 100 mô hình và tích hợp các kỹ thuật tiên tiến như LoRA, QLoRA và GaLore. Nó cung cấp một giao diện WebUI trực quan để thử nghiệm nhanh và một CLI mạnh mẽ cho các pipeline production.

Làm chủ công cụ này là một bước đi định hình sự nghiệp cho các kỹ sư AI Ops. Nó trừu tượng hóa những rắc rối ở cấp độ phần cứng để bạn có thể tập trung vào chất lượng dữ liệu.

Thiết lập môi trường Linux của bạn

Tôi khuyên dùng một phiên bản Ubuntu 22.04 hoặc 24.04. Về phần cứng, một GPU NVIDIA đơn lẻ với 24GB VRAM (như 3090 hoặc 4090) là điểm lý tưởng. Điều này cho phép bạn fine-tune một mô hình 8B một cách thoải mái.

# Tạo môi trường ảo
python3 -m venv venv
source venv/bin/activate

# Clone và cài đặt
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .[metrics,bitsandbytes,qwen]

Bước 1: Sử dụng WebUI để tạo mẫu

Llama-Factory bao gồm LlamaBoard, một bảng điều khiển trực quan hoàn hảo cho các lượt chạy thử ban đầu. Nó trực quan hóa tác động của các siêu tham số (hyperparameter) trong thời gian thực. Ví dụ, bạn có thể thấy việc tăng LoRA rank từ 8 lên 16 ảnh hưởng đến mức tiêu thụ VRAM như thế nào trước khi bắt đầu một lượt huấn luyện kéo dài 4 giờ.

Khởi chạy bằng lệnh:

llamafactory-cli webui

Trong trình duyệt, hãy chọn **QLoRA** (4-bit quantization). Kỹ thuật này là một “cứu cánh”; nó cho phép bạn huấn luyện mô hình Llama 3 8B chỉ với khoảng 7-9GB VRAM, giúp việc tiếp cận trở nên khả thi ngay cả trên phần cứng tầm trung.

Bước 2: Cấu trúc dữ liệu của bạn

Chất lượng dữ liệu quyết định thành công của bạn. Llama-Factory sử dụng định dạng JSON đơn giản. Tạo file data/my_custom_data.json như sau:

[
  {
    "instruction": "Làm thế nào để khởi động lại dịch vụ cũ nội bộ?",
    "input": "",
    "output": "Để khởi động lại dịch vụ cũ, hãy xóa cache trong /var/lib/legacy-app và chạy 'systemctl restart legacy-worker'."
  }
]

Điều quan trọng là bạn phải đăng ký file này trong data/dataset_info.json. Nếu thiếu bước này, công cụ sẽ không nhận diện được tập dữ liệu của bạn.

Bước 3: Chuyển sang CLI cho môi trường Production

WebUI dùng để thử nghiệm; CLI dùng để mở rộng. Khi bạn đã chốt được các tham số, hãy xuất chúng ra file config.yaml. Điều này giúp các thử nghiệm của bạn có thể tái lập và sẵn sàng cho triển khai mô hình AI trên production.

Dưới đây là một cấu hình đã được kiểm chứng cho việc fine-tune LoRA:

# cấu hình mô hình
model_name_or_path: unsloth/llama-3-8b-instruct-bnb-4bit

# phương pháp huấn luyện
stage: sft
do_train: true
finetuning_type: lora
lora_target: all

# thông số tập dữ liệu
dataset: my_custom_data
template: llama3
cutoff_len: 1024
max_samples: 1000

# cấu hình đầu ra
output_dir: saves/llama-3-8b/lora/sft
logging_steps: 10
save_steps: 100
plot_loss: true

# tối ưu hóa
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
learning_rate: 0.0001
num_train_epochs: 3.0
fp16: true

Thực hiện huấn luyện với một lệnh duy nhất:

llamafactory-cli train config.yaml

Xác minh và Triển khai

Hãy theo dõi đường cong hàm mất mát (loss curve). Nếu loss giảm đều đặn và đi ngang quanh mức 0.8 đến 1.2, bạn thường đang đi đúng hướng. Tuy nhiên, các con số không nói lên toàn bộ câu chuyện; việc đánh giá LLM thực tế trên môi trường production là vô cùng quan trọng. Hãy sử dụng tab ‘Chat’ trong WebUI để tải adapter mới của bạn và kiểm tra nó với các trường hợp biên (edge cases) cụ thể.

Khi đã hài lòng, hãy merge các trọng số LoRA. Llama-Factory có thể xuất ra file GGUF hoặc Safetensors thống nhất. Đây là các tiêu chuẩn công nghiệp có thể cắm trực tiếp vào các engine suy luận như vLLM hoặc Open WebUI.

Lời kết

Fine-tuning không còn là một bộ môn “ma thuật đen” chỉ dành riêng cho các nhà nghiên cứu. Llama-Factory đã dân chủ hóa quy trình này. Bằng cách bắt đầu với WebUI để học cơ chế và chuyển sang YAML để tự động hóa, bạn có thể xây dựng AI thực sự hiểu doanh nghiệp của mình. Đừng chiến đấu với các mô hình chung chung nữa. Hãy xây dựng chuyên gia mà đội ngũ của bạn xứng đáng có được.

Share: