Khóa học
Trong hướng dẫn này, chúng ta sẽ khám phá cách fine-tune mô hình Llama 3 8B bằng LlaMA-Factory WebUI trên bộ dữ liệu Wikipedia Q&A. Trước hết, chúng ta sẽ giới thiệu về LlaMA-Factory WebUI, sau đó thiết lập nó trong môi trường Google Colab. Khi cấu hình xong, chúng ta sẽ đi qua quy trình fine-tune mô hình Llama 3 8B trên bộ dữ liệu và đánh giá hiệu năng của mô hình thông qua giao diện trò chuyện.
Trong quá trình thực hiện, bạn cũng sẽ học cách nạp bộ dữ liệu tùy chỉnh, hợp nhất mô hình và xuất chúng lên Hugging Face. Cuối cùng, chúng ta sẽ đề cập cách triển khai mô hình đã fine-tune để truy cập qua OpenAI API.
Bạn có thể trang bị kiến thức thực hành về các chủ đề AI phổ biến như ChatGPT, mô hình ngôn ngữ lớn, generative AI và nhiều hơn nữa bằng cách tham gia AI Fundamentals skill track.

Ảnh: Tác giả | Canva
LlaMA-Factory là gì?
hiyouga/LLaMA-Factory là một dự án mã nguồn mở cho phép bạn fine-tune hơn 100 mô hình ngôn ngữ lớn (LLM) thông qua giao diện WebUI. Dự án cung cấp bộ công cụ và script toàn diện để fine-tune, tạo chatbot, phục vụ (serving) và benchmark các LLM.
LLaMA-Factory được thiết kế đặc biệt cho người mới và các chuyên gia phi kỹ thuật muốn fine-tune LLM mã nguồn mở trên bộ dữ liệu tùy chỉnh mà không cần học các khái niệm AI phức tạp. Người dùng chỉ cần chọn mô hình, thêm bộ dữ liệu và điều chỉnh vài tham số để bắt đầu quá trình huấn luyện.
Sau khi huấn luyện xong, bạn có thể dùng chính ứng dụng web đó để kiểm thử mô hình, sau đó xuất lên Hugging Face hoặc lưu cục bộ. Đây là cách nhanh và hiệu quả để fine-tune LLM ngay trên máy của bạn.
Bắt đầu với LlaMA-Factory WebUI
Trong phần này, chúng ta sẽ học cách cài đặt và khởi chạy LlaMA-Factory WebUI trên Google Colab và Microsoft Windows.
Google Colab cung cấp quyền truy cập GPU miễn phí, vì vậy nếu laptop của bạn không có GPU hoặc chưa cài CUDA, tôi khuyến nghị bạn bắt đầu với notebook Colab.
- Mở notebook Google Colab với loại runtime “T4 GPU”.
- Trong ô mã, gõ lệnh sau để nhân bản (clone) kho GitHub LLaMA-Factory và cài đặt tất cả gói Python cần thiết.
%cd /content/
%rm -rf LLaMA-Factory
!git clone https://github.com/hiyouga/LLaMA-Factory.git
%cd LLaMA-Factory
%ls
%pip install -e .[torch,bitsandbytes]
- Để truy cập mô hình và bộ dữ liệu, bạn cần đăng nhập vào CLI của Hugging Face. Bạn phải tạo access token mới bằng cách vào phần cài đặt của Hugging Face, nhấp “Access Tokens” và tạo token mới cho Google Colab.

- Tạo biến môi trường của Hugging Face bằng tính năng “Secrets” của Colab, cho phép chúng ta tạo biến môi trường và truy cập an toàn trong notebook.

- Đăng nhập vào Hugging Face Hub bằng access token của Hugging Face.
from huggingface_hub import login
from google.colab import userdata
hf_token = userdata.get("HUGGINGFACE_TOKEN")
login(token = hf_token)
- Khởi chạy LLaMA-Factor WebUI bằng
llamafactory-cli. Chúng ta đặt GRADIO_SHARE=1 để tạo liên kết công khai truy cập ứng dụng web.
%cd /content/LLaMA-Factory/
!GRADIO_SHARE=1 llamafactory-cli webui
- Nhấn vào URL công khai để mở WebUI trong tab mới.

Giao diện LLAMA-Factory WebUI trông đơn giản nhưng có rất nhiều tùy chọn và tab. Chúng ta sẽ khám phá ở phần tiếp theo.

Nếu bạn gặp vấn đề khi khởi chạy LlaMA-Factory WebUI của riêng mình, vui lòng tham khảo notebook Google Colab.
Chạy LlaMA-Factory WebUI trên Windows
Nếu bạn muốn chạy LlaMA-Factory WebUI cục bộ trên Windows, bạn cần cài phiên bản dựng sẵn của thư viện bitsandbytes. Thư viện hỗ trợ CUDA 11.1 đến 12.2, vì vậy hãy chọn phiên bản phát hành phù hợp với phiên bản CUDA của bạn.
- Mở terminal Windows và gõ lệnh Git để clone kho LLaMA-Factory từ GitHub.
- Cài đặt tất cả gói Python cần thiết.
- Cài thư viện bitsandbytes cho Windows.
$ git clone https://github.com/hiyouga/LLaMA-Factory.git
$ cd LLaMA-Factory
$ pip install -e .[torch,bitsandbytes]
$ pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.2.post2-py3-none-win_amd64.whl
- Khởi chạy LLaMA-Factory WebUI.
$ llamafactory-cli webui
- Đừng quên đăng nhập Hugging Face bằng CLI và cung cấp access token.
$ huggingface-cli login
Fine-tune LlaMA-3 8B Chat bằng LlaMA-Factory WebUI
Phần này không có mã nguồn. Chúng ta sẽ chọn mô hình và bộ dữ liệu để fine-tune, thay đổi một số tham số và bấm vài nút để huấn luyện nhanh hơn.
Để hiểu lý thuyết đằng sau việc fine-tune các mô hình ngôn ngữ lớn, hãy xem hướng dẫn toàn diện này: Fine-Tuning Large Language Models.
Chọn bộ dữ liệu và mô hình
Chúng ta sẽ fine-tune mô hình unsloth/llama-3-8b-bnb-4bit trên bộ dữ liệu Microsoft/wiki_qa. Bộ dữ liệu có nhiều cột như bên dưới, nhưng chúng ta sẽ dùng cột “question” và “answer” để fine-tune mô hình.

Nguồn: microsoft/wiki_qa | Tập liệu Hỏi Đáp Wiki của Microsoft
Chúng ta không thể nạp đầy đủ mô hình LLaMA-3-8B instruction trên bản miễn phí của Google Colab. Thay vào đó, chúng ta sẽ nạp phiên bản lượng tử hóa 4-bit của cùng mô hình do Unsloth cung cấp.
Để làm điều này, chọn tên mô hình “Custom” và dán liên kết kho “unsloth/llama-3-8b-bnb-4bit” vào đường dẫn mô hình.

Chúng ta có thể chọn nhiều bộ dữ liệu để fine-tune mô hình. Tuy nhiên, trong hướng dẫn này, chúng ta chỉ dùng bộ dữ liệu “Wikiqa”, bạn có thể dễ dàng chọn từ danh sách có sẵn như trên.
Điều chỉnh tham số huấn luyện
Cuộn xuống để điều chỉnh các tham số huấn luyện mô hình. Chúng ta sẽ đặt các tham số sau:
- Learning rate: 4e-5
- Epochs: 1.0
- Max samples: 1000 để tăng tốc huấn luyện
Các tham số còn lại giữ mặc định. Bạn có thể thay đổi các giá trị này để điều chỉnh hành vi của mô hình đã fine-tune.

Chúng ta cũng có thể thay đổi hạng LoRa và các cấu hình liên quan đến LoRa. Trong hướng dẫn này, chúng ta giữ nguyên mặc định cho các thiết lập còn lại.

Bắt đầu quá trình huấn luyện
Cuộn tiếp xuống để xem cấu hình huấn luyện. Hãy cung cấp thư mục đầu ra và đường dẫn cấu hình, sau đó nhấn nút “Start”. Biểu đồ loss sẽ mất chút thời gian để hiển thị vì LlaMA-Factor sẽ tải mô hình và bộ dữ liệu trước, rồi mới nạp cả hai, có thể mất ít nhất 5 phút.

Khi mô hình được nạp đầy đủ và huấn luyện bắt đầu, bạn sẽ thấy các trực quan hóa trên biểu đồ loss. Như quan sát, loss giảm dần theo số bước, rất tích cực.

Khi huấn luyện hoàn tất, bạn sẽ thấy thông báo kết thúc ở góc dưới bên trái. Như quan sát, loss giảm dần và đi ngang sau 45 bước.

Nếu bạn là nhà khoa học dữ liệu hoặc lập trình viên, bạn sẽ thấy việc fine-tune mô hình bằng Python khá dễ dàng.
Chúng tôi có hướng dẫn chi tiết cho người kỹ thuật muốn huấn luyện LlaMA-3 tại đây: Fine-Tuning Llama 3 and Using It Locally: A Step-by-Step Guide.
Đánh giá mô hình đã fine-tune
Để đánh giá mô hình đã fine-tune, chúng ta chuyển menu từ “Train” sang “Chat”. Sau đó, vào “Checkpoint path” và nạp adapter đã fine-tune đã lưu.

Tiếp đó, nhấn nút “Load model” và chờ vài giây cho đến khi mô hình được nạp thành công.

Cuộn xuống để thấy ô nhập chat và đặt một câu hỏi chung về dãy núi.

Kết quả là bạn sẽ nhận được câu trả lời ngắn gọn, tương tự như bộ dữ liệu "wiki_qa".

Hãy thử hỏi một câu khác. Ta có thể thấy mô hình hoạt động rất tốt. Trong vòng 30 phút, chúng ta đã fine-tune xong mô hình — điều mà dùng thư viện Transformers có thể mất hơn 4 giờ. Thật ấn tượng.

Đôi khi, fine-tune không phải là lời giải cho mọi vấn đề của LLM. Vì vậy, bạn nên đọc RAG vs Fine-Tuning: A Comprehensive Tutorial with Practical Examples để tìm hiểu phương án phù hợp nhất với bạn.
Các tính năng bổ sung của LlaMA-Factory WebUI
Ngoài fine-tune và kiểm thử mô hình, hệ sinh thái LLaMA-Factory còn cung cấp một số tính năng cốt lõi như dùng dữ liệu tùy chỉnh để fine-tune, hợp nhất và xuất mô hình, cũng như triển khai mô hình đã fine-tune bằng VLLM.
Bộ dữ liệu tùy chỉnh
Để thêm bộ dữ liệu tùy chỉnh, chỉ cần sửa file data/dataset_info.json, và nó sẽ khả dụng trong LLaMA-Factory WebUI.
Để biết chi tiết về định dạng tệp dữ liệu yêu cầu và cách sửa file dataset_info.json, vui lòng tham khảo tài liệu data/README.md.
Bạn có thể chọn dùng bộ dữ liệu từ các hub Hugging Face hoặc ModelScope, hoặc nạp từ đĩa cục bộ.

Xem trước file data/dataset_info.json
Hợp nhất và xuất mô hình
Chúng ta có thể dễ dàng hợp nhất bộ điều hợp LoRA đã fine-tune với mô hình đầy đủ và xuất lên Hugging Face Hub bằng cách nhấp tab “Export”.
Điều chỉnh kích thước shard tối đa, đặt đường dẫn thư mục xuất, và chỉ định ID kho trên Hugging Face Hub cùng thiết bị xuất. Quá trình sẽ mất vài phút để hợp nhất mô hình và tải tất cả tệp mô hình lên Hugging Face Hub.
Lưu ý: Bản miễn phí của Colab chỉ có 12GB RAM, trong khi hợp nhất LoRA của mô hình 8 tỷ tham số cần tối thiểu 16GB RAM. Do đó, thao tác này không thể thực hiện trên bản miễn phí của Colab.

Hợp nhất và xuất mô hình đã fine-tune lên Hugging Face Hub
Triển khai với API kiểu OpenAI và vLLM
LlaMA-Factory đi kèm framework vLLM để phục vụ và triển khai mô hình. Bằng cách gõ lệnh sau, chúng ta có thể phục vụ mô hình Llama-3-8B-Instruct và truy cập nó qua OpenAI Python API hoặc RestAPI.
$ API_PORT=8000 llamafactory-cli api examples/inference/llama3_vllm.yaml
Bạn thậm chí có thể sửa file hoặc tạo file .yaml của riêng mình để phục vụ mô hình đã fine-tune trong môi trường production. Tất cả những gì cần làm là cung cấp đường dẫn đến thư mục mô hình cục bộ hoặc trên Huggin Face Hub.

Nguồn: hiyouga/LLaMA-Factory (github.com)
Nếu bạn đang tìm giải pháp low-code tương tự để fine-tune LLMs, đặc biệt là mô hình độc quyền GPT-4o, chúng tôi có hướng dẫn toàn diện dành cho bạn. Xem hướng dẫn từng bước tại đây: Fine-Tuning OpenAI's GPT-4: A Step-by-Step Guide.
Kết luận
LLaMA-Factory WebUI đơn giản hóa quy trình cho cả người mới và chuyên gia. Bạn chỉ cần điều chỉnh vài tham số để fine-tune mô hình trên bộ dữ liệu tùy chỉnh. Với cùng giao diện, bạn có thể kiểm thử mô hình và xuất lên Hugging Face hoặc lưu cục bộ. Nhờ đó, bạn có thể triển khai mô hình vào production sau này bằng lệnh CLI api của LLaMA-Factory. Đơn giản là vậy.
Thay vì viết hàng trăm dòng mã và xử lý sự cố khi fine-tune, bạn có thể đạt kết quả tương tự chỉ với vài cú nhấp chuột.
Trong hướng dẫn này, chúng ta đã tìm hiểu về LLaMA-Factory WebUI, cách fine-tune mô hình LLaMA-3-8B-Instruct trên bộ dữ liệu Wikipedia Q&A bằng framework này. Ngoài ra, chúng ta đã kiểm thử mô hình đã fine-tune bằng menu chatbot tích hợp và khám phá các tính năng bổ sung mà LLaMA-Factory cung cấp.
Học cách fine-tune LLMs bằng Python bằng cách đăng ký miễn phí Webinar sắp tới Fine-Tuning Your Own Llama 3 Model.
Là một nhà khoa học dữ liệu được chứng nhận, tôi đam mê tận dụng công nghệ tiên tiến để tạo ra các ứng dụng học máy đổi mới. Với nền tảng vững chắc về nhận dạng giọng nói, phân tích và báo cáo dữ liệu, MLOps, AI hội thoại và NLP, tôi đã rèn giũa kỹ năng phát triển các hệ thống thông minh có thể tạo ra tác động thực sự. Bên cạnh chuyên môn kỹ thuật, tôi cũng là một người truyền đạt tốt, có khả năng chắt lọc các khái niệm phức tạp thành ngôn ngữ rõ ràng, súc tích. Nhờ đó, tôi trở thành một blogger được nhiều người quan tâm trong lĩnh vực khoa học dữ liệu, chia sẻ góc nhìn và kinh nghiệm với cộng đồng các chuyên gia dữ liệu ngày càng lớn. Hiện tại, tôi tập trung vào sáng tạo và biên tập nội dung, làm việc với các mô hình ngôn ngữ lớn để phát triển nội dung mạnh mẽ và hấp dẫn, giúp doanh nghiệp và cá nhân tận dụng tối đa dữ liệu của mình.
