Lammafactory: Hướng dẫn cài đặt và thiết lập chi tiết
Mục lục:
- Giới thiệu Lammafactory
- Các mô hình và định dạng dữ liệu được hỗ trợ
- Dữ liệu tiền huấn luyện
- Dữ liệu tinh chỉnh có giám sát (SFT)
- Dữ liệu mô hình phần thưởng (Reward Modeling)
- Cài đặt và thiết lập
- Tinh chỉnh LLM (Fine-tuning)
- Cấu hình tập dữ liệu
- Cấu hình quá trình huấn luyện
- Bắt đầu huấn luyện
- Suy luận (Inference)
- Giao diện người dùng (WebUI) - LlamaBoard
- Kết luận
1. Giới thiệu Lammafactory
Huấn luyện các Mô Hình Ngôn Ngữ Lớn (LLM) luôn là một công việc phức tạp và tốn nhiều thời gian. Ngay cả với sự hỗ trợ rộng rãi từ các nền tảng công khai như HuggingFace, quá trình này vẫn đòi hỏi phải thiết lập nhiều script khác nhau cho từng giai đoạn của pipeline. Từ chuẩn bị dữ liệu cho giai đoạn tiền huấn luyện, tinh chỉnh, hoặc RLHF cho đến việc cấu hình mô hình, lượng tử hóa và LORAs, huấn luyện một LLM đòi hỏi nỗ lực thủ công và tinh chỉnh tỉ mỉ.
LLama-Factory ra mắt vào năm 2024 nhằm giải quyết chính xác vấn đề này. Kho lưu trữ trên GitHub này làm cho việc thiết lập huấn luyện mô hình cho tất cả các giai đoạn trong vòng đời của một LLM trở nên cực kỳ thuận tiện. Từ tiền huấn luyện đến SFT và thậm chí cả RLHF, kho lưu trữ này cung cấp hỗ trợ tích hợp cho việc thiết lập và huấn luyện tất cả các LLM mới nhất hiện có.
2. Các mô hình và định dạng dữ liệu được hỗ trợ
LLama-Factory hỗ trợ hầu hết các mô hình hiện đại, bao gồm LLama, LLava, Mixtral Mixture-of-Experts, Qwen, Phi, và Gemma cùng nhiều mô hình khác. Danh sách đầy đủ có thể được tìm thấy tại đây. Nó hỗ trợ tiền huấn luyện, SFT, và các kỹ thuật RL chính bao gồm DPO, PPO, và ORPO, cho phép tất cả các phương pháp mới nhất từ tinh chỉnh đầy đủ đến tinh chỉnh cố định, LORAs, QLoras, và Agent Tuning.
Hơn nữa, LLama-Factory cũng cung cấp các tập dữ liệu mẫu cho mỗi bước huấn luyện. Các tập dữ liệu mẫu thường tuân theo mẫu Alpaca, mặc dù định dạng ShareGPT cũng được hỗ trợ. Chúng ta sẽ làm rõ định dạng dữ liệu Alpaca bên dưới để hiểu rõ hơn về cách thiết lập dữ liệu độc quyền của bạn.
Lưu ý quan trọng: Khi sử dụng dữ liệu của riêng bạn, bạn phải chỉnh sửa và thêm thông tin về tệp dữ liệu của mình vào tệp dataset_info.json
trong thư mục Llama-Factory/data
. (Link)
- Dữ liệu tiền huấn luyện: Dữ liệu được lưu trữ trong tệp JSON và chỉ cột
text
được sử dụng để huấn luyện LLM. Định dạng dữ liệu cần như sau:
[
{"text": "văn bản 1"},
{"text": "văn bản 2"}
]
- Dữ liệu tinh chỉnh có giám sát (SFT): Trong dữ liệu SFT, có ba tham số bắt buộc:
instruction
(hướng dẫn),input
(đầu vào), vàoutput
(đầu ra). Tuy nhiên,system
(lời nhắc hệ thống) vàhistory
(lịch sử) có thể được truyền tùy chọn và sẽ được sử dụng để huấn luyện mô hình nếu được cung cấp trong tập dữ liệu. Định dạng Alpaca chung cho dữ liệu SFT như sau:
[
{
"instruction": "Hướng dẫn của người dùng (bắt buộc)",
"input": "Đầu vào của người dùng (tùy chọn)",
"output": "Phản hồi của mô hình (bắt buộc)",
"system": "Lời nhắc hệ thống (tùy chọn)",
"history": [
["Hướng dẫn vòng 1 (tùy chọn)", "Phản hồi vòng 1 (tùy chọn)"],
["Hướng dẫn vòng 2 (tùy chọn)", "Phản hồi vòng 2 (tùy chọn)"]
]
}
]
- Dữ liệu mô hình phần thưởng (Reward Modeling): LLama-Factory hỗ trợ huấn luyện LLM để sắp xếp ưu tiên bằng RLHF. Định dạng dữ liệu phải cung cấp hai phản hồi khác nhau cho cùng một hướng dẫn, làm nổi bật sự ưu tiên của việc sắp xếp. Phản hồi được sắp xếp tốt hơn được chuyển đến khóa
chosen
và phản hồi kém hơn được chuyển đến tham sốrejected
. Định dạng dữ liệu như sau:
[
{
"instruction": "Hướng dẫn của người dùng (bắt buộc)",
"input": "Đầu vào của người dùng (tùy chọn)",
"chosen": "Câu trả lời được chọn (bắt buộc)",
"rejected": "Câu trả lời bị loại bỏ (bắt buộc)"
}
]
3. Cài đặt và thiết lập
Kho lưu trữ GitHub (Link) cung cấp hỗ trợ cài đặt dễ dàng bằng setup.py
và tệp yêu cầu. Tuy nhiên, nên sử dụng môi trường Python sạch khi thiết lập kho lưu trữ để tránh xung đột giữa các gói.
Mặc dù Python 3.8 là yêu cầu tối thiểu, nhưng nên cài đặt Python 3.11 trở lên. Sao chép kho lưu trữ từ GitHub bằng lệnh sau:
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
Tạo một môi trường Python mới:
python3.11 -m venv venv
source venv/bin/activate
Cài đặt các gói cần thiết:
pip install -e ".[torch,metrics]"
Điều này sẽ cài đặt tất cả các gói phụ thuộc cần thiết, bao gồm torch, trl, accelerate, và các gói khác. Để đảm bảo cài đặt chính xác, bạn nên có thể sử dụng giao diện dòng lệnh của LLama-Factory. Chạy lệnh sau sẽ hiển thị thông tin trợ giúp về cách sử dụng trên terminal:
llamafactory-cli
4. Tinh chỉnh LLM (Fine-tuning)
Bây giờ, bạn có thể bắt đầu huấn luyện LLM! Điều này rất đơn giản, chỉ cần tạo một tệp cấu hình và gọi lệnh bash.
Lưu ý: Bạn cần GPU để huấn luyện LLM bằng LLama-factory.
Trong ví dụ này, chúng ta sẽ thực hiện SFT dựa trên LORA cho Phi3-mini-Instruct. Chúng ta sẽ tạo một tệp cấu hình YAML, nhưng bạn cũng có thể sử dụng tệp JSON.
Tạo tệp config.yaml
như sau (bạn có thể tìm thấy nhiều ví dụ khác nhau trong thư mục examples
của kho lưu trữ):
### model
model_name_or_path: microsoft/Phi-3.5-mini-instruct
### method
stage: sft
do_train: true
finetuning_type: lora
lora_target: all
### dataset
dataset: alpaca_en_demo
template: llama3
cutoff_len: 1024
max_samples: 1000
overwrite_cache: true
preprocessing_num_workers: 16
### output
output_dir: saves/phi-3/lora/sft
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true
### train
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
learning_rate: 1.0e-4
num_train_epochs: 3.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true
ddp_timeout: 180000000
### eval
val_size: 0.1
per_device_eval_batch_size: 1
eval_strategy: steps
eval_steps: 500
Cấu hình tập dữ liệu: Tên tập dữ liệu được chỉ định trong
dataset: alpaca_en_demo
là một tham số quan trọng. Các chi tiết khác về tập dữ liệu cần được thêm vào tệpdataset_info.json
trong thư mụcdata
. Thông tin này bao gồm đường dẫn tệp dữ liệu, định dạng dữ liệu và các cột được sử dụng. Trong hướng dẫn này, chúng ta sử dụng tập dữ liệualpaca_en_demo
(Link).Cấu hình quá trình huấn luyện: Việc thay đổi loại huấn luyện trong LLama-Factory rất dễ dàng, chỉ cần thay đổi tham số cấu hình. Như đã thấy ở trên, chúng ta chỉ cần các tham số sau để thiết lập SFT dựa trên LORA cho LLM.
### method
stage: sft
do_train: true
finetuning_type: lora
lora_target: all
Bạn có thể thay thế SFT bằng tiền huấn luyện và reward modeling với các tệp cấu hình chính xác có sẵn trong thư mục examples
.
- Bắt đầu huấn luyện: Gọi lệnh sau để bắt đầu huấn luyện:
llamafactory-cli train config.yaml
Chương trình sẽ tự động thiết lập tất cả các tập dữ liệu, mô hình và pipeline cần thiết cho quá trình huấn luyện.
5. Suy luận (Inference)
Quá trình suy luận thậm chí còn đơn giản hơn huấn luyện mô hình. Bạn cần một tệp cấu hình tương tự như huấn luyện, cung cấp mô hình cơ sở và đường dẫn đến bộ điều hợp LORA đã được huấn luyện.
Tạo tệp infer_config.yaml
:
model_name_or_path: microsoft/Phi-3.5-mini-instruct
adapter_name_or_path: saves/phi3-8b/lora/sft/ # Đường dẫn đến mô hình đã huấn luyện
template: llama3
finetuning_type: lora
Trò chuyện với mô hình đã được huấn luyện trên dòng lệnh:
llamafactory-cli chat infer_config.yaml
6. Giao diện người dùng (WebUI) - LlamaBoard
LLama-factory cung cấp tùy chọn huấn luyện và suy luận không cần mã với LlamaBoard.
Khởi động GUI bằng lệnh:
llamafactory-cli webui
7. Kết luận
LLama-factory đang nhanh chóng trở nên phổ biến với hơn 30.000 sao trên GitHub. Nó làm cho việc cấu hình và huấn luyện LLM từ đầu trở nên đơn giản hơn đáng kể, loại bỏ nhu cầu thiết lập thủ công pipeline huấn luyện cho các phương pháp khác nhau. Nó hỗ trợ tất cả các phương pháp và mô hình mới nhất và tuyên bố nhanh hơn 3,7 lần so với P-Tuning của ChatGLM đồng thời sử dụng ít bộ nhớ GPU hơn. Điều này giúp người dùng bình thường và những người đam mê dễ dàng huấn luyện LLM của họ bằng mã tối thiểu.

0 comments Blogger 0 Facebook
Đăng nhận xét