Khi dùng Mixed Precision, vì sao cần Gradient Scaler để tránh mất mát thông tin trong gradient?

Tác giả: AI VIET NAM (AI VIET NAM)

Keywords: Mixed Precision, Gradient Scaler, FP16, Underflow, AI Training

Mở đầu: vấn đề người học thường gặp khi tìm hiểu Mixed Precision

Nhiều bạn khi bắt đầu tối ưu tốc độ huấn luyện mô hình thường nghe đến Mixed Precision. Khái niệm này khá trực quan: dùng số thực 16 bit (FP16) để tăng tốc tính toán và giảm RAM GPU. Tuy nhiên, nhiều mô hình khi bật FP16 lại bị “khựng”, loss không giảm, hoặc huấn luyện bất ổn.
Một trong những nguyên nhân phổ biến nhất nằm ở việc gradient bị quá nhỏ, dẫn đến bị làm tròn về 0. Đây là lúc Gradient Scaler xuất hiện.


Giải thích bản chất: vì sao cần Gradient Scaler?

Để hiểu điều này, ta quay lại nguyên tắc cốt lõi của đại số số thực trong máy tính.

FP16 có độ chính xác thấp hơn FP32

Số thực 16 bit có biên độ biểu diễn nhỏ, đặc biệt ở vùng giá trị rất bé.
Khi mô hình thực hiện backpropagation, gradient ở các lớp sâu thường có giá trị nhỏ. Nếu gradient này quá nhỏ so với khả năng biểu diễn của FP16, GPU sẽ làm tròn chúng về 0.
Khi gradient bằng 0, quá trình cập nhật trọng số không xảy ra → mô hình không học được.

Gradient Scaler phóng đại gradient trước khi tính toán

Gradient Scaler thực hiện thao tác “scale up”: nhân toàn bộ loss lên một hệ số lớn trước khi backpropagation.

  • Loss tăng → gradient của các lớp cũng tăng tương ứng
  • Giá trị gradient tăng → nằm trong phạm vi biểu diễn của FP16
  • Sau khi tính toán xong, scaler sẽ “scale down” lại về đúng giá trị ban đầu trước khi optimizer cập nhật trọng số

Cơ chế này giúp hạn chế hiện tượng “gradient bị làm tròn về 0”, còn gọi là underflow.


Ví dụ thực tế minh họa

Hãy tưởng tượng một mô hình phân loại ảnh đơn giản.
Trong các lớp gần cuối, gradient có thể nhỏ cỡ 1e-8 hoặc 1e-10.
Nếu dùng FP32, giá trị này vẫn được lưu chính xác.
Nhưng với FP16, giá trị quá nhỏ sẽ bị cắt xuống 0.
Khi dùng Gradient Scaler:

  • Loss được nhân lên, ví dụ ×1000
  • Gradient trở thành 1e-5 → đủ lớn để FP16 biểu diễn
  • GPU tính toán với con số không bị làm tròn
  • Cuối cùng scaler chia lại đúng tỉ lệ

Về mặt toán học, mô hình học giống FP32 nhưng tốc độ và RAM tối ưu hơn.


Góc nhìn khi làm dự án AI/ML

Trong thực tế huấn luyện:

  • Mô hình lớn như ResNet, EfficientNet, Transformer thường xuất hiện gradient rất nhỏ ở các lớp cuối.
  • Dùng Mixed Precision mà không có Gradient Scaler dễ dẫn đến NaN loss hoặc mô hình đứng yên.
  • MLOps khi triển khai pipeline huấn luyện (liên quan đến các module MLOps trong nhóm kiến thức nền) thường mặc định bật Automatic Mixed Precision (AMP) cùng dynamic scaling.

Việc hiểu cơ chế giúp bạn dễ debug hơn khi huấn luyện mô hình lớn.


Liên hệ các nhóm kiến thức nền

Mixed Precision và Gradient Scaling thường xuất hiện khi học theo dòng DL:

  • Ở giai đoạn Machine Learning – Optimization (liên quan module Pre-Deep Learning)
  • Khi tìm hiểu gradient, loss, sai số số học
  • Trong các chương trình Deep Learning 1–2, nơi mô hình nhiều lớp và gradient rất nhỏ
  • Khi đi vào Computer Vision hoặc NLP (module 9–10), Mixed Precision trở thành lựa chọn quen thuộc vì mô hình lớn và dữ liệu nhiều

Đây là các nhóm kiến thức nhiều người đi theo hướng AI/ML đều gặp qua.


Lời khuyên học thuật cho người bắt đầu

Bạn có thể:

  • Thử huấn luyện một mô hình nhỏ với FP16 và tắt/bật Gradient Scaler để thấy sự khác biệt.
  • Quan sát loss, tốc độ huấn luyện và kiểm tra hiện tượng NaN.
  • Ghi log giá trị gradient để hiểu rõ hơn mức độ ảnh hưởng của scaling.

Các thử nghiệm nhỏ giúp hiểu bản chất toán học phía sau mô hình.


Hỏi đáp nhanh về Mixed Precision và Gradient Scaler

Mixed Precision có thể gây mất gradient không?
Có, nếu gradient quá nhỏ và dùng FP16 không đủ độ chính xác.

Gradient Scaler có làm thay đổi kết quả học không?
Không, vì giá trị được đưa về lại đúng tỉ lệ ban đầu.

Có cần dùng Gradient Scaler khi huấn luyện FP32 không?
Không, FP32 đủ khả năng biểu diễn gradient nhỏ.

Mixed Precision có làm mô hình học nhanh hơn không?
Có, do tận dụng tính toán tensor core và giảm bộ nhớ.


FAQ về chương trình AIO

Q1. Con số 0 thì học nổi không?
Ans: Chỉ cần bạn có thời gian học. Điều quan trọng nhất không phải giỏi hay không, mà là có học đều mỗi ngày. Kiến thức – tài liệu – môi trường đã có team lo. Nếu bạn không có thời gian thì nên cân nhắc.

Q2. Ai dạy AIO?
Ans: Đội admin dạy toàn bộ. Admin trực tiếp hướng dẫn và hỗ trợ mọi câu hỏi của bạn trong suốt quá trình học.

Q3. Admin có “xịn” không?
Ans: Admin đều là người làm nghề thật, mỗi người một cách dạy. Quan trọng là bạn cảm thấy hợp cách truyền đạt. Admin không dám nói xịn, chỉ dạy bằng hết sức.

Q4. AIO có gì khác những nơi khác?
Ans: AIO không phải trung tâm. Đây là dự án học tập cộng đồng, được cải tiến qua từng khóa. Tinh thần của AIO: Cùng nhau học – cùng nhau khổ – cùng nhau lớn. Nếu hợp tinh thần đó, bạn sẽ thấy phù hợp.


Tài nguyên học AI: