Transformers Model Class
Định nghĩa
Transformers model class là lớp Python trong Hugging Face Transformers đóng gói kiến trúc model, config, weights, forward pass và output format cho một checkpoint hoặc một downstream task.
Cách hiểu bằng lời của tôi
Trong Hugging Face, một model không chỉ là “Transformer”. Nó là một class cụ thể gắn với kiến trúc và task. Ví dụ cùng một XLM-R body có thể được dùng cho masked language modeling, sequence classification hoặc token classification bằng cách thay phần head ở trên cùng.
Body và Head
- Body: phần pretrained Transformer chính, ví dụ
XLMRobertaModel. Nó nhậninput_ids,attention_maskvà tạo contextual hidden states. - Head: phần task-specific nằm trên body, ví dụ token classification head cho NER. Nó biến hidden states thành logits theo số nhãn cần dự đoán.
Mental model:
input_ids + attention_mask
-> Transformer body
-> last_hidden_state
-> task head
-> logitsVới token classification / NER
Với Named Entity Recognition, model cần dự đoán nhãn cho từng token/subword, nên head không chỉ đọc một vector cấp câu như [CLS].
Luồng dữ liệu:
input_ids
-> XLM-R body
-> token hidden states [batch_size, sequence_length, hidden_size]
-> dropout
-> linear classifier
-> logits [batch_size, sequence_length, num_labels]Nếu truyền labels, model có thể tính loss. Các vị trí không muốn tính loss, ví dụ special tokens hoặc subword phụ, thường được đặt label -100.
AutoModel vs AutoModelFor…
AutoModel: load body/base model, thường trả hidden states.AutoModelForTokenClassification: load body kèm token classification head.AutoModelForSequenceClassification: load body kèm classification head cho toàn sequence.
Điểm dễ nhầm: AutoModel chưa có head cho task cuối. Nếu muốn fine-tune NER, cần dùng model class có token classification head hoặc tự tạo head.
Config và output
config giữ các thông tin như:
hidden_sizenum_labelsid2labellabel2id- dropout probability
- tên kiến trúc/base model
Output thường là object có cấu trúc, ví dụ TokenClassifierOutput, gồm:
lossnếu có labels.logitsđể dự đoán nhãn.hidden_statesnếu bật output hidden states.attentionsnếu bật output attentions.
Khi áp dụng
- Khi fine-tune task mới và cần hiểu head nào đang được thêm vào body.
- Khi label set thay đổi và cần set
num_labels,id2label,label2id. - Khi custom model cho NER, ví dụ thêm CRF hoặc head riêng.
- Khi debug shape: luôn kiểm tra hidden states, logits và labels có cùng chiều sequence hay không.
Cần biết
- Body thường chứa phần pretrained weights quan trọng nhất.
- Head mới thêm có thể được khởi tạo ngẫu nhiên và cần fine-tuning.
- Với NER, head chạy trên từng token hidden state; với classification, head thường chạy trên representation cấp sequence.
- Model class chuẩn giúp
Trainer,from_pretrained()vàsave_pretrained()hoạt động nhất quán.