Instruction Tuning
Instruction tuning tinh chỉnh model ngôn ngữ đã tiền huấn luyện bằng các cặp chỉ dẫn-phản hồi để model làm theo yêu cầu. Nội dung bao gồm FLAN, InstructGPT, dữ liệu và VLM.
Instruction tuning là quá trình fine-tune một mô hình ngôn ngữ lớn (LLM) pretrained trên các cặp instruction và câu trả lời mong muốn, để model làm theo yêu cầu viết bằng ngôn ngữ thông thường. Model pretrained chỉ tiếp tục văn bản: khi OpenAI yêu cầu “Giải thích sự kiện đổ bộ lên Mặt Trăng cho một đứa trẻ 6 tuổi bằng vài câu”, GPT-3 tiếp tục bằng các yêu cầu tương tự về lực hấp dẫn và thuyết tương đối, trong khi InstructGPT được instruction-tune viết ra lời giải thích. Các nhà nghiên cứu Google mô tả phương pháp này trong bài báo FLAN năm 2021; họ fine-tune model 137 tỷ tham số trên hơn 60 bộ dữ liệu xử lý ngôn ngữ tự nhiên (NLP) được viết lại thành instruction. Model đã fine-tune vượt hiệu năng zero-shot của GPT-3 175 tỷ tham số trên 20 trong số 25 tác vụ mà model chưa từng gặp. Trong pipeline của model chat, bước tương tự thường được gọi là fine-tuning có giám sát (SFT), và hai thuật ngữ này được dùng như từ đồng nghĩa.
Cách instruction tuning hoạt động#
Mỗi ví dụ được định dạng bằng một template đánh dấu nơi kết thúc instruction và bắt đầu câu trả lời, chẳng hạn chat template của các model hiện nay hoặc các tiêu đề “### Instruction” và “### Response” của Alpaca do Stanford phát triển. Training sử dụng cùng hàm loss next-token như pretraining, nhưng chỉ token trong câu trả lời được tính; nhờ đó, model học cách tạo câu trả lời thay vì dự đoán chính instruction. Một ví dụ training trên GPT-2 của OpenAI minh họa thiết lập này:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
optimizer = torch.optim.AdamW(model.parameters(), lr=5e-5)
# One instruction-response pair in the Alpaca prompt format
prompt_ids = tokenizer("### Instruction:\nName three animals that can fly.\n\n### Response:\n").input_ids
response_ids = tokenizer("Bats, eagles, and bees." + tokenizer.eos_token).input_ids
input_ids = torch.tensor([prompt_ids + response_ids])
# Label -100 drops the instruction from the loss, so the model learns only to respond
labels = torch.tensor([[-100] * len(prompt_ids) + response_ids])
for step in range(3):
loss = model(input_ids=input_ids, labels=labels).loss
loss.backward()
optimizer.step()
optimizer.zero_grad()
print(f"step {step}: loss {loss.item():.2f}")Chỉ 10 token trong câu trả lời được tính vào loss, và ba lần cập nhật trên ví dụ duy nhất này làm loss giảm từ 4.45 xuống 1.49. Một lượt instruction tuning áp dụng cùng cập nhật trên hàng nghìn đến hàng triệu cặp instruction-câu trả lời khác nhau, giúp model học thói quen tổng quát là trả lời thay vì học thuộc một câu trả lời.
Instruction tuning thường là giai đoạn đầu tiên của post-training, và dữ liệu có thể đến từ nhiều nguồn:
Các bộ dữ liệu instruction#
Bộ dữ liệu Flan của Google tăng lên 1.836 tác vụ vào năm 2022, và instruction tuning trên bộ dữ liệu này giúp PaLM 540 tỷ tham số cải thiện trung bình 9,4%. InstructGPT của OpenAI kết hợp ví dụ minh họa do người gán nhãn viết với học tăng cường từ phản hồi của con người (RLHF); người dùng thích đầu ra của model 1,3 tỷ tham số này hơn đầu ra của GPT-3 175 tỷ tham số. Alpaca của Stanford, phát hành tháng 3 năm 2023, fine-tune LLaMA 7B của Meta với chi phí dưới 600 USD trên 52.000 ví dụ do một model OpenAI tạo bằng phương pháp Self-Instruct, là ví dụ ban đầu về việc dùng dữ liệu tổng hợp làm nguồn dữ liệu instruction. LIMA của Meta cho thấy một tập dữ liệu nhỏ có thể đạt hiệu quả đáng kể: nhóm fine-tune LLaMA 65 tỷ tham số chỉ trên 1.000 ví dụ được chọn lọc kỹ, và các tác giả kết luận rằng model học gần như toàn bộ kiến thức trong quá trình pretraining, còn instruction tuning dạy định dạng và phong cách trả lời. Sau đó, các phương pháp như tối ưu hóa ưu tiên trực tiếp (DPO) tiếp tục tinh chỉnh model đã tune bằng dữ liệu ưu tiên.
Instruction tuning trực quan#
Mô hình thị giác-ngôn ngữ (VLM) cũng học cách làm theo instruction về ảnh theo cách tương tự. LLaVA, công bố tháng 4 năm 2023, cung cấp cho GPT-4 chỉ xử lý văn bản các chú thích và bounding box của ảnh COCO, rồi yêu cầu model viết 158.000 đoạn hội thoại, mô tả chi tiết và ví dụ suy luận phức tạp về các ảnh đó. Sau đó, nhóm fine-tune trên dữ liệu này một model kết nối encoder ảnh CLIP với model ngôn ngữ; phương pháp này được gọi là instruction tuning trực quan. VLM được instruction-tune trả lời các yêu cầu tự do về ảnh; khối LLM trong Ultralytics Platform Agents dựa vào khả năng đó: khối này gửi ảnh, kết quả từ YOLO26 ở bước trước và prompt viết sẵn đến model thị giác-ngôn ngữ được chọn.
Instruction tuning so với các thuật ngữ liên quan#
Tinh chỉnh prompt học một số vector prompt mềm và giữ model ở trạng thái đóng băng, còn thiết kế prompt chỉ thay đổi văn bản đầu vào, trong khi instruction tuning cập nhật trọng số của model. Tinh chỉnh theo lĩnh vực điều chỉnh model cho một lĩnh vực như y học hoặc luật mà không nhất thiết dạy model làm theo yêu cầu. Instruction tuning cũng có thể được thực hiện bằng tinh chỉnh tiết kiệm tham số (PEFT): QLoRA huấn luyện adapter LoRA trên một model được lượng tử hóa 4-bit, và các tác giả của phương pháp này đã tinh chỉnh theo chỉ dẫn một model 65 tỷ tham số trên một GPU 48 GB duy nhất.










