OpenArchLabOpen Architecture — From Models to Systems

W3 · Training / inference workflow

Vòng huấn luyện, đánh giá và lưu trạng thái tiếp tục

Vòng lặp điều phối cả quá trình huấn luyện: nạp batch, cộng dồn gradient, cập nhật trọng số, đánh giá định kỳ trên tập kiểm định và lưu checkpoint.

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

1Định nghĩa

Vòng lặp huấn luyện (training loop) là bộ khung lặp đi lặp lại chu trình năm việc trên hàng nghìn batch: lấy batch từ bước dữ liệu, tạo nhãn mục tiêu, chạy forward, tính loss và backward, rồi cập nhật trọng số bằng AdamW. Khi một thiết bị không chứa vừa batch lớn, vòng lặp cộng dồn gradient (gradient accumulation) qua vài micro-batch rồi mới gọi AdamW một lần.

Xen giữa các bước cập nhật, vòng lặp định kỳ dừng việc sửa trọng số để đo loss trên tập kiểm định độc lập và ghi checkpoint xuống đĩa. Cần nhớ: chạy 1.000 hay 100.000 bước chỉ đổi giá trị của các số trong ma trận trọng số đã có, không làm tăng số tham số của mô hình.

Ví dụ đời thường: Vòng lặp huấn luyện giống lịch ôn luyện hằng ngày của một học sinh: làm một xấp bài tập (forward), so đáp án chấm điểm sai (loss), tìm nguyên nhân và sửa cách làm (backward và AdamW). Cuối mỗi tuần làm một đề thi thử chưa từng gặp (kiểm định) và cất sổ ghi chép vào tủ (checkpoint). Khác học sinh, nếu đề thi thử bị rò rỉ vào bài tập hằng ngày thì điểm thi thử không còn đáng tin.

2Luồng

Đây là ô 3E, nơi vòng khép lại. Mũi tên quay ngược lên cột 1 và 2 để lấy batch kế tiếp với trọng số mới. Mũi tên rẽ xuống băng dưới của sơ đồ (ô 5A) mang checkpoint sang phần suy luận.

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
3E3 · Learn from the Error
train step → eval loss → save checkpoint · next batch ↺ · load weights ↓

3E · Loop · Eval · Checkpoint

Vòng điều phối: lặp bước huấn luyện, đánh giá định kỳ, lưu checkpoint, rồi quay lại lấy batch kế.

Nhận gì
Trọng số mới từ ô 3D, cùng dữ liệu kiểm định và bộ đếm bước.
Làm gì, vì sao
Điều phối cả vòng: lấy batch kế, chạy một bước huấn luyện, định kỳ đánh giá (eval) loss trên tập kiểm định không dùng để cập nhật và lưu checkpoint (bản chụp trọng số trên đĩa). Phải lặp hàng nghìn lần vì mỗi bước chỉ cải thiện rất ít.
Ra gì
Hai đường ra: mũi tên đứt nét next batch quay về cột 1 để lấy batch tiếp theo với trọng số mới, và mũi tên load weights mang checkpoint xuống ô 5A cho suy luận.
Ví dụ, cách đọc ô
Đọc nhãn: train step → eval loss → save checkpoint. Nếu loss huấn luyện giảm còn loss kiểm định đi lên thì mô hình có thể đang học thuộc dữ liệu (lab: kiểm định thấp nhất ở bước 50 rồi tăng).
Lưu ý
Checkpoint chỉ trọng số đủ để suy luận, nhưng muốn tiếp tục huấn luyện đúng cần thêm m, v và số bước. Chạy thêm nhiều bước không làm tăng số tham số.
Sơ đồ luồng (5 bước)
  1. Lấy micro-batch và chạy forward, loss

    Dùng batch từ ô 1A/1B và trọng số hiện tại.

  2. Backward và cộng dồn

    Chia loss theo số token hợp lệ, cộng gradient của vài micro-batch.

  3. Cắt chuẩn và AdamW

    Cắt gradient nếu cần, đặt learning rate theo lịch rồi cập nhật trọng số.

  4. Đánh giá định kỳ

    Chạy forward không cập nhật trên tập kiểm định, ghi loss kiểm định.

  5. Lưu checkpoint

    Ghi trọng số (và trạng thái tiếp tục nếu cần); bản weights-only chuyển sang suy luận.

Mã Mermaid
flowchart TD
  step1["Lấy micro-batch và chạy forward, loss"]
  step2["Backward và cộng dồn"]
  step3["Cắt chuẩn và AdamW"]
  step4["Đánh giá định kỳ"]
  step5["Lưu checkpoint"]
  step1 --> step2
  step2 --> step3
  step3 --> step4
  step4 --> step5

3Giải pháp

Vị trí trên sơ đồ: ô 3E "Vòng lặp, eval, checkpoint" ở cuối cột 3 · Học từ sai số. Nó bao quanh các ô 1A đến 3D: mỗi lần lặp đi hết cột 1, 2, 3 rồi quay lại. Đồng thời nó là cửa ra của phần huấn luyện: checkpoint được lưu ở đây là thứ mà băng dưới của sơ đồ (Checkpoint → Inference, ô 5A bắt đầu từ tiếp nhận yêu cầu) nạp lại.

Vấn đề cần giải. Một lần cập nhật chỉ cải thiện mô hình rất ít. Cần lặp hàng nghìn lần, biết mình đang tiến bộ thật hay chỉ học thuộc, và lưu kết quả sao cho dùng lại được: hoặc để phục vụ suy luận, hoặc để tiếp tục khi tiến trình bị ngắt.

Khái niệm tối thiểu. Step là một lần cập nhật trọng số. Epoch là một lượt đi hết dữ liệu. Micro-batch là phần batch vừa bộ nhớ. Effective batch = micro-batch nhân số lần cộng dồn nhân số thiết bị. Kiểm định (validation) là dữ liệu chỉ dùng để đo.

Ví dụ có số (minh họa, tính tay). Tập huấn luyện có 1.024 khối, mỗi khối 512 token. Micro-batch = 8 khối, cộng dồn 4 lần, một thiết bị: effective batch = 8 × 4 = 32 khối, tức 32 × 512 = 16.384 token cho mỗi lần cập nhật. Một epoch có 1.024 / 8 = 128 micro-batch và 1.024 / 32 = 32 lần cập nhật. Sau 100 lần cập nhật, mô hình đã đi qua dữ liệu khoảng 100 / 32 ≈ 3,1 epoch.

Một step gồm những gì. (1) Với mỗi trong 4 micro-batch: forward, loss, backward; loss được chuẩn hóa theo số token hợp lệ của cả effective batch để các micro-batch không bị đóng góp sai trọng số. (2) Cắt chuẩn gradient nếu vượt ngưỡng. (3) Đặt learning rate theo lịch (warmup rồi giảm dần). (4) AdamW cập nhật và xóa gradient. (5) Cứ mỗi vài chục step, chạy đánh giá: chỉ forward trên tập kiểm định, không backward, không cập nhật, rồi ghi loss kiểm định. (6) Cứ mỗi vài trăm step, lưu checkpoint.

Cách đọc đồ thị loss. Nếu cả loss huấn luyện và kiểm định cùng giảm: mô hình đang học điều tổng quát. Nếu loss huấn luyện giảm còn kiểm định đi ngang hoặc tăng: dấu hiệu học thuộc dữ liệu huấn luyện, nhưng cần thêm bằng chứng như kiểm tra trùng lặp dữ liệu. Nếu cả hai đi ngang ngay từ đầu: nghi ngờ learning rate, lỗi nhãn hoặc mask. Không kết luận mô hình tốt chỉ vì loss giảm: chỉ biết nó dự đoán token kế tiếp tốt hơn trên dữ liệu kiểu đó.

Hai loại checkpoint. Weights-only: trọng số cùng cấu hình mô hình và tokenizer, đủ để phục vụ suy luận. Resume checkpoint: thêm m và v của AdamW, bước hiện tại, trạng thái lịch learning rate, trạng thái ngẫu nhiên và vị trí trong dữ liệu. Với mô hình một tỉ tham số (minh họa, tùy recipe), trọng số 16 bit chiếm khoảng 2 GB, còn bản để tiếp tục với trọng số chính 32 bit cộng m và v 32 bit lên khoảng 12 GB. Nạp trọng số mà bỏ m, v không tương đương tiếp tục từ checkpoint đầy đủ.

Thực thi. Lưu manifest và tiến độ nhất quán với trạng thái mô hình; checkpoint có thể ghi nền nếu cài đặt bảo đảm ảnh chụp nhất quán. Đừng chỉ xác nhận tệp được ghi: hãy thử nạp lại và tiếp tục vài bước để chắc chắn. Ghi lại thời gian đánh giá và thời gian lưu để thấy chi phí phụ. Đọc thêm về checkpoint và artifact cũng như cách kiểm tra chất lượng sau thay đổi. Các phương pháp khác nhau như pretraining và fine-tuning dùng cùng khung vòng lặp này, chỉ khác dữ liệu và mask.

Để chạy vòng lặp trên mô hình nhỏ, theo dõi loss huấn luyện và kiểm định rồi lưu checkpoint, mở giai đoạn 7 · Vòng lặp, eval, checkpoint của Bài Lab tổng hợp. Trước khi chạy hãy đoán loss kiểm định có thể thấp hơn loss huấn luyện không và vì sao.

4Profiling

  • Token và step

    Ghi effective batch, số token hợp lệ và số lần cập nhật để so tiến bộ học giữa các lần chạy. Với ví dụ, 16.384 token mỗi cập nhật và 32 cập nhật mỗi epoch. Hai lần chạy chỉ so được khi cùng effective batch, cùng lịch learning rate và cùng dữ liệu; nếu khác, hãy nêu rõ khác điểm nào.

  • Kiểm định và chi phí lưu

    Đo loss kiểm định, thời gian mỗi lần đánh giá, thời gian mỗi lần lưu checkpoint và thời gian tiếp tục sau khi nạp. Kiểm tra cả việc đánh giá không đổi trọng số (so trọng số trước và sau). Các chi phí này là cố định theo lần, nên chọn tần suất cân bằng giữa an toàn và thời gian.

  • Tiếp tục có đúng không

    Chạy N bước liền, rồi chạy N/2 bước, lưu, nạp, chạy N/2 bước còn lại; hai đường loss phải trùng trong sai số nếu mọi trạng thái được khôi phục. Nếu lệch, kiểm tra m, v, lịch learning rate, nguồn ngẫu nhiên và vị trí dữ liệu.

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ụ

Tiến trình bị ngắt

Tiến trình dừng ở step 70. Nếu nạp checkpoint ở step 60 chỉ có trọng số, bộ tối ưu bắt đầu lại từ m = 0, v = 0 và learning rate lại từ đầu lịch. Nếu vị trí trong dữ liệu không được khôi phục, một số batch bị lặp hoặc bỏ sót. Do đó cần resume checkpoint đầy đủ và nên kiểm thử đường tiếp tục từ sớm.

Xuất mô hình để phục vụ

Chọn một checkpoint (thường theo loss kiểm định tốt nhất hoặc bản cuối), đóng gói cùng tokenizer và cấu hình; không cần nạp m, v vào dịch vụ suy luận. Tự kiểm tra: vì sao bản có loss kiểm định thấp nhất chưa chắc là bản trả lời hữu ích nhất? Vì loss đo dự đoán token kế tiếp, không đo mức hữu ích, đúng sự thật hay an toàn; cần kiểm tra chất lượng bổ sung.

Tự kiểm tra: đếm bước

Tập có 2.048 khối, micro-batch 16, cộng dồn 2, một thiết bị. Effective batch là bao nhiêu và một epoch có mấy lần cập nhật? Đáp án: 16 × 2 = 32 khối; 2.048 / 32 = 64 lần cập nhật mỗi epoch.

6Thuật ngữ

Step (update) và epoch
Một step là một lần cập nhật trọng số; một epoch là một lượt đi qua toàn bộ dữ liệu huấn luyện. Một epoch gồm nhiều step.
Micro-batch và effective batch
Micro-batch là phần batch chạy được vừa bộ nhớ; effective batch = micro-batch nhân số lần cộng dồn nhân số thiết bị, là số khối thực sự đóng góp cho một lần cập nhật.
Gradient clipping
Thu nhỏ gradient nếu chuẩn tổng của nó vượt một ngưỡng, để một batch bất thường không làm trọng số nhảy xa.
Validation set
Dữ liệu chỉ dùng để đo, không dùng cho các cập nhật; đo xong không được dùng ngược lại để sửa trọng số.
Resume checkpoint
Bản lưu đủ để tiếp tục huấn luyện: trọng số, m và v của bộ tối ưu, bước, lịch learning rate, trạng thái ngẫu nhiên và vị trí dữ liệu.
Weights-only checkpoint
Bản lưu chỉ gồm trọng số (cùng cấu hình và tokenizer) đủ để phục vụ suy luận nhưng không đủ để tiếp tục huấn luyện đang dở.
Glossary (6)
Model weights
Các số học được; thứ cần lưu để dùng lại mô hình.
Tokenizer
Bộ chuyển văn bản thành token ID; phải lưu cùng checkpoint vì ID chỉ có nghĩa với đúng bảng từ vựng đó.
Overhead
Chi phí phụ như thời gian đánh giá và lưu file, không phải phép tính huấn luyện chính.
Forward pass
Lượt tính xuôi; khi đánh giá chỉ chạy forward, không backward.
Backward pass
Lượt tính gradient; chỉ chạy khi huấn luyện.
Batch
Nhóm khối token xử lý cùng lúc trong một lượt tính.

7Bài liên quan

8Nguồn