Transformers documentation

Tinh chỉnh

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Tinh chỉnh

Fine-tuning tiếp tục huấn luyện một mô hình lớn đã được huấn luyện trước trên một tập dữ liệu nhỏ hơn, đặc thù cho một tác vụ hoặc lĩnh vực. Ví dụ, fine-tuning trên một tập dữ liệu gồm các ví dụ về lập trình giúp mô hình trở nên giỏi hơn trong việc lập trình. Fine-tuning giống hệt với pretraining, ngoại trừ việc bạn không bắt đầu với các trọng số ngẫu nhiên. Nó cũng đòi hỏi ít tài nguyên tính toán, dữ liệu và thời gian hơn rất nhiều.

Hướng dẫn bên dưới đi qua các bước tinh chỉnh một mô hình ngôn ngữ lớn bằng Trainer.

Đăng nhập vào tài khoản Hugging Face của bạn bằng user token để đẩy mô hình đã fine-tune lên Hub.

from huggingface_hub import login

login()

Tokenization

Tải một dataset và tokenize cột văn bản mà mô hình được huấn luyện trên đó (horoscope trong dataset bên dưới).

Tokenizer tạo ra các đầu vào cho mô hình, input_ids và attention_mask. Phương thức forward của mô hình chỉ chấp nhận input_ids và attention_mask, vì vậy hãy đặt remove_columns để loại bỏ các cột như horoscope sau khi tokenization.

  • Đặt truncation=True và một max_length để cắt các chuỗi dài hơn xuống độ dài tối đa được chỉ định.
  • Sử dụng phương thức train_test_split để tạo một tập kiểm tra nhằm đánh giá mô hình.
from datasets import load_dataset
from transformers import AutoTokenizer, DataCollatorForLanguageModeling

model_name = "Qwen/Qwen3-0.6B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
dataset = load_dataset("karthiksagarn/astro_horoscope", split="train")

def tokenize(batch):
    return tokenizer(
        batch["horoscope"],
        truncation=True,
        max_length=512,
    )

dataset = dataset.map(tokenize, batched=True, remove_columns=dataset.column_names)
dataset = dataset.train_test_split(test_size=0.1)

Data collator tập hợp các mẫu từ bộ dữ liệu thành các lô (batch) để mô hình xử lý. DataCollatorForLanguageModeling động đệm (pad) mỗi lô đến độ dài của chuỗi dài nhất trong lô đó, thay vì đệm mọi chuỗi trong bộ dữ liệu về cùng một độ dài. Điều này tiết kiệm tài nguyên tính toán và bộ nhớ bằng cách tránh việc tính toán các token đệm không cần thiết.

  • Đặt mlm=False để tránh việc che ngẫu nhiên các token.
data_collator = DataCollatorForLanguageModeling(tokenizer, mlm=False)

Tải một mô hình

Tải checkpoint được huấn luyện trước để tinh chỉnh (xem hướng dẫn Tải mô hình để biết thêm chi tiết về việc tải mô hình).

  • Đặt dtype="auto" để tải trọng số với dtype đã lưu. Nếu không, PyTorch sẽ tải trọng số ở torch.float32, làm tăng gấp đôi bộ nhớ sử dụng nếu trọng số ban đầu là torch.bfloat16.
from transformers import AutoModelForCausalLM, TrainingArguments, Trainer

model_name = "Qwen/Qwen3-0.6B"
model = AutoModelForCausalLM.from_pretrained(model_name, dtype="auto")

Cấu hình huấn luyện

TrainingArguments cung cấp tất cả các tùy chọn để tùy chỉnh một phiên huấn luyện. Chỉ các đối số phổ biến nhất được đề cập ở đây. Mọi thứ khác đều có giá trị mặc định hợp lý hoặc chỉ liên quan đến các kịch bản cụ thể như huấn luyện phân tán. Xem tài liệu API của TrainingArguments để có danh sách đầy đủ các đối số.

thời lượng huấn luyện
các tối ưu hóa huấn luyện
đánh giá và lưu checkpoint
ghi log
  • num_train_epochs và per_device_train_batch_size kiểm soát thời lượng huấn luyện và kích thước lô. learning_rate đặt tốc độ học ban đầu cho bộ tối ưu.
training_args = TrainingArguments(
    output_dir="qwen3-finetuned",
    num_train_epochs=3,
    per_device_train_batch_size=2,
    gradient_accumulation_steps=8,
    gradient_checkpointing=True,
    gradient_checkpointing_kwargs={"every_n_layers": 4},
    bf16=True,
    learning_rate=2e-5,
    logging_steps=10,
    eval_strategy="epoch",
    save_strategy="epoch",
    load_best_model_at_end=True,
)

Huấn luyện

Tạo một instance Trainer với tất cả các thành phần cần thiết, sau đó gọi train() để bắt đầu.

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=dataset["train"],
    eval_dataset=dataset["test"],
    processing_class=tokenizer,
    data_collator=DataCollatorForLanguageModeling(tokenizer, mlm=False),
)

trainer.train()
trainer.push_to_hub()

push_to_hub() tải lên Hub các trọng số đã tinh chỉnh, cấu hình sinh, tokenizer và cấu hình mô hình.

Các bước tiếp theo

  • Đọc hướng dẫn Các tính năng của Trainer để xem các ví dụ hoạt động tối giản cho các tính năng phổ biến của Trainer như hàm loss tùy chỉnh, đánh giá tiết kiệm bộ nhớ, checkpointing và nhiều hơn nữa.
  • Đọc hướng dẫn Subclassing Trainer methods để tìm hiểu cách subclass các phương thức của Trainer nhằm hỗ trợ các tính năng mới và tùy chỉnh.
  • Đọc hướng dẫn Callbacks để tìm hiểu cách gắn vào các sự kiện huấn luyện cho việc ghi log, dừng sớm và các hành vi tùy chỉnh khác.
  • Đọc hướng dẫn Data collators để tìm hiểu cách tùy chỉnh cách các mẫu được tập hợp thành các lô (batches).
  • Chạy một script huấn luyện trên GPU thuê bằng Hugging Face Jobs.
  • Duyệt notebooks hoặc phần Resources > Task Recipes để xem thêm các ví dụ huấn luyện cho các tác vụ khác nhau về văn bản, âm thanh, thị giác và đa phương thức.
Update on GitHub