Transformers documentation

Bắt đầu nhanh

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

Bắt đầu nhanh

Transformers được thiết kế để nhanh chóng và dễ sử dụng, giúp mọi người có thể bắt đầu học tập hoặc xây dựng với các mô hình transformer.

Số lượng các trừu tượng hướng đến người dùng được giới hạn ở chỉ ba lớp để khởi tạo một mô hình, và hai API cho suy luận hoặc huấn luyện. Hướng dẫn nhanh này giới thiệu các tính năng chính của Transformers và cho bạn thấy cách:

  • tải một mô hình được huấn luyện trước
  • chạy suy luận với Pipeline
  • tinh chỉnh một mô hình bằng Trainer

Cài đặt

Để bắt đầu, chúng tôi khuyến nghị bạn tạo một tài khoản Hugging Face. Tài khoản cho phép bạn lưu trữ và truy cập các mô hình, bộ dữ liệu và Spaces có kiểm soát phiên bản trên Hub của Hugging Face, một nền tảng cộng tác để khám phá và xây dựng.

Tạo User Access Token và đăng nhập vào tài khoản của bạn.

notebook
CLI

Dán User Access Token của bạn vào notebook_login khi được yêu cầu đăng nhập.

from huggingface_hub import notebook_login

notebook_login()

Cài đặt PyTorch.

# remove ! if installing from the CLI
!pip install torch

Sau đó, cài đặt phiên bản mới nhất của Transformers cùng một số thư viện bổ sung từ hệ sinh thái Hugging Face để truy cập bộ dữ liệu và mô hình thị giác, đánh giá quá trình huấn luyện và tối ưu hóa huấn luyện cho các mô hình lớn.

# remove ! if installing from the CLI
!pip install -U transformers datasets evaluate accelerate timm

Kỹ năng của Agent

Hugging Face Skills dạy cho agent lập trình của bạn cách làm việc với Transformers. Thay vì tự viết script huấn luyện, hãy yêu cầu agent của bạn tinh chỉnh một mô hình thị giác và để skill hướng dẫn nó.

Claude Code
Codex
/plugin marketplace add huggingface/skills
/plugin install hf-cli@huggingface/skills

Xem hướng dẫn Cài đặt để biết thêm các nền tảng được hỗ trợ khác như Cursor và Gemini.

Sau khi cài đặt một kỹ năng, hãy bao gồm nó trong các chỉ dẫn của bạn dành cho tác nhân lập trình.

Use the HF Trainer skill to fine-tune RT-DETRv2 on [Lekim89/sportsmot](https://huggingface.co/datasets/Lekim89/sportsmot) for basketball player tracking.

Mô hình được huấn luyện trước

Mỗi mô hình được huấn luyện trước kế thừa từ ba lớp cơ sở.

LớpMô tả
PreTrainedConfigMột tệp chỉ định các thuộc tính của mô hình, chẳng hạn như số đầu chú ý hoặc kích thước từ vựng.
PreTrainedModelMột mô hình (hoặc kiến trúc) được định nghĩa bởi các thuộc tính mô hình từ tệp cấu hình. Một mô hình được huấn luyện trước chỉ trả về các trạng thái ẩn thô. Đối với một tác vụ cụ thể, hãy sử dụng đầu mô hình phù hợp để chuyển đổi các trạng thái ẩn thô thành kết quả có ý nghĩa (ví dụ: LlamaModel so với LlamaForCausalLM).
Bộ tiền xử lýMột lớp để chuyển đổi các đầu vào thô (văn bản, hình ảnh, âm thanh, đa phương thức) thành các đầu vào số cho mô hình. Ví dụ, PreTrainedTokenizer chuyển đổi văn bản thành tensor và ImageProcessingMixin chuyển đổi pixel thành tensor.

Chúng tôi khuyến nghị sử dụng API AutoClass để tải các mô hình và bộ tiền xử lý vì nó tự động suy luận kiến trúc phù hợp cho từng tác vụ và framework machine learning dựa trên tên hoặc đường dẫn đến trọng số được huấn luyện trước và tệp cấu hình.

Sử dụng from_pretrained() để tải trọng số và tệp cấu hình từ Hub vào lớp mô hình và bộ tiền xử lý.

Khi bạn tải một mô hình, hãy cấu hình các tham số sau để đảm bảo mô hình được tải một cách tối ưu.

  • device_map="auto" tự động phân bổ trọng số mô hình vào thiết bị nhanh nhất của bạn trước tiên.
  • dtype="auto" khởi tạo trực tiếp trọng số mô hình bằng kiểu dữ liệu mà chúng được lưu trữ, giúp tránh việc nạp trọng số hai lần (PyTorch mặc định nạp trọng số ở torch.float32).
from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf", dtype="auto", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")

Tokenize văn bản và trả về các tensor PyTorch bằng tokenizer. Di chuyển các đầu vào đã được tokenize sang cùng thiết bị với mô hình trước khi chạy suy luận để mô hình có thể xử lý chúng.

model_inputs = tokenizer(["The secret to baking a good cake is "], return_tensors="pt").to(model.device)

Mô hình giờ đã sẵn sàng để suy luận hoặc huấn luyện.

Để suy luận, truyền các đầu vào đã token hóa vào generate() để tạo văn bản. Giải mã các id token thành văn bản bằng batch_decode().

generated_ids = model.generate(**model_inputs, max_length=30)
tokenizer.batch_decode(generated_ids)[0]
'<s> The secret to baking a good cake is 100% in the preparation. There are so many recipes out there,'

Bỏ qua và chuyển đến phần Trainer để tìm hiểu cách tinh chỉnh một mô hình.

Pipeline

Lớp Pipeline là cách thuận tiện nhất để chạy suy luận với một mô hình được huấn luyện trước. Nó hỗ trợ nhiều tác vụ như tạo văn bản, phân đoạn hình ảnh, nhận dạng giọng nói tự động, trả lời câu hỏi từ tài liệu, và nhiều hơn nữa.

Tham khảo tài liệu tham khảo API Pipeline để có danh sách đầy đủ các tác vụ khả dụng.

Tạo một đối tượng Pipeline và chọn một tác vụ. Mặc định, Pipeline sẽ tải xuống và lưu vào bộ nhớ đệm một mô hình được huấn luyện trước mặc định cho tác vụ đã cho. Truyền tên mô hình vào tham số model để chọn một mô hình cụ thể.

sinh văn bản
phân đoạn ảnh
nhận dạng giọng nói tự động

Sử dụng Accelerator để tự động phát hiện bộ tăng tốc khả dụng cho suy luận.

from transformers import pipeline
from accelerate import Accelerator

device = Accelerator().device

pipe = pipeline("text-generation", model="meta-llama/Llama-2-7b-hf", device=device)

Gợi ý Pipeline với một số văn bản ban đầu để tạo thêm văn bản.

pipe("The secret to baking a good cake is ", max_length=50)
[{'generated_text': 'The secret to baking a good cake is 100% in the batter. The secret to a great cake is the icing.\nThis is why we’ve created the best buttercream frosting reci'}]

Trainer

Trainer là vòng lặp huấn luyện và đánh giá hoàn chỉnh cho các mô hình PyTorch. Nó trừu tượng hóa phần lớn các đoạn mã lặp lại thường gặp khi tự viết vòng lặp huấn luyện, giúp bạn bắt đầu huấn luyện nhanh hơn và tập trung vào các lựa chọn thiết kế huấn luyện. Bạn chỉ cần một mô hình, tập dữ liệu, một bộ tiền xử lý và một bộ sắp xếp dữ liệu để tạo các lô dữ liệu từ tập dữ liệu.

Sử dụng lớp TrainingArguments để tùy chỉnh quy trình huấn luyện. Lớp này cung cấp nhiều tùy chọn cho huấn luyện, đánh giá và nhiều hơn nữa. Hãy thử nghiệm các siêu tham số và tính năng huấn luyện như batch size, learning rate, mixed precision, torch.compile và nhiều hơn nữa để đáp ứng nhu cầu huấn luyện của bạn. Bạn cũng có thể sử dụng các tham số huấn luyện mặc định để nhanh chóng tạo ra một baseline.

Tải mô hình, tokenizer và bộ dữ liệu để huấn luyện.

from transformers import AutoModelForSequenceClassification, AutoTokenizer
from datasets import load_dataset

model = AutoModelForSequenceClassification.from_pretrained("distilbert/distilbert-base-uncased")
tokenizer = AutoTokenizer.from_pretrained("distilbert/distilbert-base-uncased")
dataset = load_dataset("cornell-movie-review-data/rotten_tomatoes")

Tạo một hàm để tokenize văn bản và chuyển đổi nó thành các tensor PyTorch. Áp dụng hàm này lên toàn bộ dataset bằng phương thức map.

def tokenize_dataset(dataset):
    return tokenizer(dataset["text"])
dataset = dataset.map(tokenize_dataset, batched=True)

Tải một data collator để tạo các lô dữ liệu và truyền tokenizer vào đó.

from transformers import DataCollatorWithPadding

data_collator = DataCollatorWithPadding(tokenizer=tokenizer)

Tiếp theo, thiết lập TrainingArguments với các tính năng huấn luyện và siêu tham số.

from transformers import TrainingArguments

training_args = TrainingArguments(
    output_dir="distilbert-rotten-tomatoes",
    learning_rate=2e-5,
    per_device_train_batch_size=8,
    per_device_eval_batch_size=8,
    num_train_epochs=2,
    push_to_hub=True,
)

Cuối cùng, truyền tất cả các thành phần riêng biệt này vào Trainer và gọi train() để bắt đầu.

from transformers import Trainer

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

trainer.train()

Chia sẻ model và tokenizer của bạn lên Hub bằng push_to_hub().

trainer.push_to_hub()

Chúc mừng, bạn vừa huấn luyện mô hình đầu tiên của mình với Transformers!

Các bước tiếp theo

Giờ đây, khi bạn đã hiểu rõ hơn về Transformers và những gì nó mang lại, đã đến lúc tiếp tục khám phá và học hỏi những gì bạn quan tâm nhất.

  • Các lớp cơ sở: Tìm hiểu thêm về các lớp cấu hình, mô hình và bộ xử lý. Điều này sẽ giúp bạn hiểu cách tạo và tùy chỉnh mô hình, tiền xử lý các loại đầu vào khác nhau (âm thanh, hình ảnh, đa phương thức), và cách chia sẻ mô hình của bạn.
  • Suy luận: Khám phá sâu hơn về Pipeline, suy luận và trò chuyện với LLM, các tác tử, và cách tối ưu hóa suy luận bằng framework học máy và phần cứng của bạn.
  • Đào tạo: Tìm hiểu chi tiết hơn về Trainer, cũng như đào tạo phân tán và tối ưu hóa đào tạo trên phần cứng cụ thể.
  • Quantization: Giảm yêu cầu về bộ nhớ và lưu trữ bằng quantization và tăng tốc suy luận bằng cách biểu diễn trọng số với ít bit hơn.
  • Tài nguyên: Bạn đang tìm kiếm các công thức từ đầu đến cuối về cách huấn luyện và suy luận với một mô hình cho một tác vụ cụ thể? Hãy xem các công thức tác vụ!
Update on GitHub