OpenArchLabOpen Architecture — From Models to Systems

W3 · Training / inference workflow

Hàm mất mát: model gán bao nhiêu xác suất cho đáp án đúng

Chấm điểm bảng logits của mô hình so với token đáp án bằng cross-entropy, rồi lấy trung bình trên các vị trí hợp lệ thành một con số duy nhất để bắt đầu backward.

LESSON ID wf-loss GROUP Kiến trúc huấn luyện
Mục lục bài học

1Định nghĩa

Hàm mất mát (loss) là phép chấm điểm cho biết bảng điểm logits của mô hình ở cuối lượt forward lệch khỏi đáp án thật bao nhiêu. Tại mỗi vị trí hợp lệ, hệ thống đổi logits thành xác suất bằng softmax, lấy xác suất mô hình gán cho đúng token đáp án trong bước tạo nhãn mục tiêu, rồi lấy giá trị âm của logarit xác suất đó. Phép chấm này gọi là cross-entropy hay negative log-likelihood.

Nếu mô hình gán xác suất càng cao cho token đúng thì loss càng gần 0; nếu gán xác suất rất thấp thì loss vọt lên. Điểm phạt của các vị trí được tính theo loss mask rồi lấy trung bình thành một số thực duy nhất, và số đó là điểm khởi phát của bước lan truyền ngược để biết cần sửa trọng số theo hướng nào.

Ví dụ đời thường: Hàm mất mát giống thước chấm điểm của người tập bắn cung: mũi tên cắm giữa hồng tâm (mô hình tự tin đúng) thì điểm phạt gần 0, mũi tên lệch càng xa thì điểm phạt càng lớn. Khác bia bắn, ở đây điểm phạt đo theo mức tự tin mà mô hình đặt vào đáp án đúng, nên một mô hình đoán 'chắc chắn' mà sai bị phạt nặng hơn một mô hình còn do dự.

2Luồng

Đây là ô 3A, nơi hai nhánh gặp nhau: logits đến từ cột 2, labels và mask đến từ ô 1B. Mũi tên ra chỉ mang một số thực (loss) cùng gradient của nó theo logits, đi tiếp vào ô 3B.

Sơ đồ kiến trúc huấn luyện · 22 ô (1A → 5C)

Kiến trúc huấn luyện LLM · Ánh xạ với Bài Lab tổng hợp

Thứ tự đọc: 1A → 1B ở cột 1, 2A → 2D ở cột 2, 3A → 3E ở cột 3; mũi tên next batch từ 3E quay về cột 1 và mũi tên load weights đi xuống băng 5 (5A → 5C). Cột 4 không phải bước kế tiếp: 4A, 4B tiết kiệm bộ nhớ, còn 4C–4G là các phương pháp huấn luyện thay thế nhau. Di chuột hoặc bấm vào từng ô để đọc pop-over.

Sơ đồ kiến trúc huấn luyện LLM gồm 22 ô từ 1A đến 5C
3A3 · Learn from the Error
−log p(correct token) · mean over labeled positions

3A · Cross-Entropy Loss

Chấm điểm bảng logits so với đáp án và gói thành một con số loss duy nhất.

Nhận gì
Logits [T, V] từ ô 2D (điểm số của mọi token ở mỗi vị trí) và nhãn đúng từ ô 1B.
Làm gì, vì sao
Đổi logits thành xác suất, lấy −log p(token đúng) ở mỗi vị trí được chấm rồi lấy trung bình, ra MỘT số. Loss càng thấp nghĩa là mô hình gán xác suất càng cao cho đáp án.
Ra gì
Một số loss và gradient theo logits (xác suất trừ one-hot), đi xuống ô 3B.
Ví dụ, cách đọc ô
Nếu mô hình đoán đều trên 23 token thì loss là ln 23 ≈ 3.14. Nếu p(đáp án) = 0.1735 thì loss = −ln 0.1735 ≈ 1.752.
Lưu ý
Loss thấp không có nghĩa câu trả lời đúng, hữu ích hay an toàn. Các vị trí bị mặt nạ loss che (ô 1C) không được tính.
Sơ đồ luồng (4 bước)
  1. Logits ở mọi vị trí

    Bảng điểm shape (B, T, V) từ ô 2D.

  2. Lấy đáp án và mask

    Labels và loss mask từ ô 1B cho biết token đúng và vị trí nào được chấm.

  3. Log-softmax rồi tra đáp án

    Tính ln xác suất của token đúng ở từng vị trí hợp lệ, đổi dấu thành loss.

  4. Trung bình thành một số

    Chia tổng loss cho số vị trí hợp lệ; số này mở đầu cho backward.

Mã Mermaid
flowchart TD
  step1["Logits ở mọi vị trí"]
  step2["Lấy đáp án và mask"]
  step3["Log-softmax rồi tra đáp án"]
  step4["Trung bình thành một số"]
  step1 --> step2
  step2 --> step3
  step3 --> step4

3Giải pháp

Vị trí trên sơ đồ: ô 3A "Cross-entropy loss" ở đầu cột 3 · Học từ sai số. Đầu vào đến từ hai hướng: logits từ ô 2D (forward) và labels cùng loss mask từ ô 1B (nhãn mục tiêu). Đầu ra là một con số và gradient của nó đối với logits, chuyển sang ô 3B (backward).

Vấn đề cần giải. Ta cần một thước đo duy nhất cho biết 'dự đoán lần này tệ đến đâu' để tối ưu: thước đo phải thấp khi mô hình tin đúng đáp án và cao khi tin sai, và phải trơn (có đạo hàm) để biết hướng sửa.

Khái niệm tối thiểu. Tại một vị trí, logits z là V số. Softmax: p_k = e^(z_k) chia cho tổng các e^(z_j), cho V xác suất cộng lại bằng 1. Loss tại vị trí đó = −ln(p_đáp_án). Để tránh tràn số khi e^z quá lớn, log-softmax trừ trước số lớn nhất: ln p_k = (z_k − max) − ln(tổng e^(z_j − max)).

Ví dụ có số (minh họa, tính tay, tiếp tục từ bài forward). Logits tại vị trí “ăn” là [0,2; 0,7; 0,1; 0,2; 0,6; 0,1; 0,7] cho [pad, mèo, chó, ăn, cá, ngủ, eos], đáp án là cá (chỉ số 4). e^z = [1,221; 2,014; 1,105; 1,221; 1,822; 1,105; 2,014], tổng = 10,503. Xác suất của cá = 1,822 / 10,503 = 0,1735. Loss = −ln 0,1735 = 1,752 nat. Kiểm tra với cách ổn định: trừ max 0,7 được tổng e^(z − max) = 5,2155, ln của nó = 1,6516, nên ln p(cá) = (0,6 − 0,7) − 1,6516 = −1,7516; cùng kết quả.

Cách đọc con số 1,752. Một mô hình hoàn toàn chưa học, gán xác suất bằng nhau 1/7 cho mọi token, sẽ có loss = ln 7 = 1,946. Con số 1,752 thấp hơn một chút vì cá được cho điểm cao hơn mức trung bình. Mốc ln V là mốc ‘đoán mò’ để so sánh: loss ban đầu của mô hình chưa học thường nằm gần ln V; nếu cao hơn nhiều, nên nghi ngờ lỗi khởi tạo hoặc căn chỉnh nhãn. Hai điểm tham chiếu khác: xác suất 0,10 cho loss 2,303 và xác suất 0,80 cho loss 0,223.

Trung bình có mask. Giả sử một khối có bốn vị trí với loss lần lượt 1,75; 0,90; 0,20 và một vị trí là token đệm (mask 0). Đúng là (1,75 + 0,90 + 0,20) / 3 = 0,95. Nếu lỡ chia cho cả bốn vị trí, được 0,7125: nhỏ đi giả tạo và còn phụ thuộc vào bao nhiêu token đệm có trong batch. Perplexity tương ứng với loss trung bình 0,95 là e^0,95 ≈ 2,59; đọc là ‘như đang chọn đều giữa khoảng 2,6 token’, nhưng chỉ có nghĩa khi cùng tokenizer và cùng tập kiểm định.

Điều có thể và không thể kết luận. Loss giảm trên tập huấn luyện nghĩa là mô hình gán xác suất cao hơn cho đáp án trong dữ liệu đó. Loss thấp trên tập kiểm định mới nói lên khả năng tổng quát hóa trên dữ liệu kiểu đó. Loss thấp không đồng nghĩa với câu trả lời hữu ích hay đúng sự thật, và không so sánh được giữa hai mô hình dùng tokenizer khác nhau hoặc mask khác nhau.

Thực thi. Dùng hàm cross-entropy nhận thẳng logits; nếu thư viện đã gộp softmax thì đừng softmax thêm lần nữa. Chuẩn hóa theo số token hợp lệ, đặc biệt khi độ dài các batch khác nhau. Đường gộp (fused) có thể giảm tensor trung gian nhưng trước khi tối ưu phải so loss và gradient với bản tham chiếu, vì cách lấy trung bình và mask khác nhau làm đổi phép tính. Chi tiết về sai số số học nằm ở độ chính xác và sai số. Những bài toán khác cũng dùng ý tưởng này nhưng với đáp án mềm, ví dụ distillation (học từ phân phối của mô hình giáo viên).

Để tính loss trên logits thật và xem đạo hàm theo logits, mở giai đoạn 4 · Cross-entropy loss của Bài Lab tổng hợp. Hãy đoán trước loss khởi đầu so với ln V rồi đối chiếu.

4Profiling

  • Loss huấn luyện và loss kiểm định

    Kiểm tra tính đúng trước: tính loss của một vị trí bằng tay như ví dụ rồi so với hàm thư viện, và kiểm tra loss khởi đầu gần ln V. Sau đó theo dõi loss huấn luyện và loss kiểm định cùng objective và cùng mask. Chỉ tiến bộ trên tập huấn luyện không cho thấy khả năng tổng quát hóa; nếu loss huấn luyện giảm mà loss kiểm định tăng thì có dấu hiệu học thuộc, nhưng cần thêm bằng chứng (ví dụ đối chiếu dữ liệu trùng) trước khi kết luận nguyên nhân.

  • Giá trị không hữu hạn và số vị trí hợp lệ

    Ghi số lần xuất hiện NaN hoặc vô cực (Inf) và số token đã góp vào loss của mỗi batch. Một lỗi mask có thể làm loss trông đẹp nhưng mô hình học sai; số vị trí hợp lệ bằng 0 cũng làm phép chia lỗi. Số này nên khớp với kỳ vọng từ ô 1B.

  • Độ lệch do kiểu số

    Khi huấn luyện bằng kiểu số ít bit, so loss với phiên bản tính bằng kiểu số rộng hơn trên cùng một batch. Sai khác nhỏ là bình thường; sai khác lớn gợi ý nên tính softmax và log bằng kiểu số rộng hơn. Không kết luận về chất lượng từ độ lệch này.

Mẹo đo lường: ghim số liệu trên workload thật, ghi cả p50/p95/p99 thay vì chỉ trung bình, và luôn ghi lại điều kiện chạy (batch, cache, đồng thời, phần cứng) trước và sau khi tối ưu. Số đo thiếu điều kiện chạy thì không so sánh được.

5Ví dụ

Xác suất 0,10 và 0,80

Loss của một vị trí có xác suất đáp án 0,10 khoảng 2,303 nat; với xác suất 0,80 loss khoảng 0,223, thấp hơn vì mô hình tự tin hơn vào đáp án đúng. Tự kiểm tra: xác suất 1 cho loss bằng bao nhiêu? Đáp án: −ln 1 = 0, mô hình tin tuyệt đối và đúng. Xác suất rất nhỏ như 0,001 cho loss khoảng 6,91.

Batch có nhiều token đệm

Không lấy trung bình trên cả vị trí đệm. Với bốn vị trí, ba hợp lệ có loss 1,75; 0,90; 0,20: đúng là 0,95, sai (chia cho 4) là 0,7125. Nếu chia sai, loss và gradient phụ thuộc độ dài phần đệm, làm hai batch khác nhau trông như có chất lượng khác nhau dù mô hình giống nhau.

Tự kiểm tra: loss không cùng đơn vị

Mô hình A dùng tokenizer cắt thành 100 token cho một đoạn và đạt loss trung bình 2,0 nat mỗi token; mô hình B cắt thành 150 token và đạt loss 1,5 nat mỗi token. Hỏi B có tốt hơn không? Chưa kết luận được: tổng loss cho cả đoạn là 200 so với 225, nên trên cùng đoạn văn A còn thấp hơn. Cần so trên cùng đơn vị (ví dụ trên mỗi ký tự hoặc mỗi đoạn) trước khi so mô hình.

6Thuật ngữ

Softmax và log-softmax
Softmax biến V logits thành xác suất dương cộng lại bằng 1; log-softmax tính trực tiếp logarit của xác suất theo công thức ổn định số học, tránh tràn số.
Cross-entropy
Với một đáp án đúng, bằng −ln(xác suất mô hình gán cho token đúng). Xác suất càng cao, loss càng gần 0.
Nat
Đơn vị của loss khi dùng logarit tự nhiên ln; loss tính theo bit nếu dùng logarit cơ số 2.
Perplexity
exp của loss trung bình. Đọc là 'mô hình phân vân như đang chọn đều giữa chừng ấy token'; không phải độ chính xác (accuracy).
Loss trung bình có mask
Tổng loss của các vị trí có loss mask bằng 1 chia cho số vị trí đó, không chia cho tổng số vị trí kể cả đệm.
Glossary (6)
Tokenizer
Bộ cắt văn bản thành token và tra bảng từ vựng; loss phụ thuộc cách cắt, nên không so loss giữa hai tokenizer khác nhau như hai đơn vị giống nhau.
Mask
Quy tắc 0/1; ở bài này là loss mask: 1 nghĩa là vị trí được chấm, 0 nghĩa là bỏ qua.
Forward pass
Lượt tính cho ra logits; loss chỉ là bước chấm điểm sau nó.
Backward pass
Lượt tính gradient từ loss ngược về mọi tham số; bài kế tiếp.
Batch
Nhóm B khối token xử lý cùng lúc; loss được tính trung bình trên các vị trí hợp lệ của cả batch.
Xác suất
Số từ 0 đến 1; các xác suất của mọi token ở một vị trí cộng lại bằng 1.

7Bài liên quan

8Nguồn