Nửa chính xác
Khám phá cách độ chính xác một nửa (FP16) tăng tốc AI với tốc độ tính toán nhanh hơn, giảm mức sử dụng bộ nhớ và triển khai mô hình hiệu quả.
Half-precision, còn được gọi là FP16, là một định dạng số dấu phẩy động sử dụng 16 bit bộ nhớ để biểu diễn một số, trái ngược với các định dạng 32 bit single-precision (FP32) hoặc 64 bit double-precision (FP64) phổ biến hơn. Trong bối cảnh học sâu , việc sử dụng half-precision làm giảm đáng kể dung lượng bộ nhớ và yêu cầu tính toán của một mô hình. Sự đánh đổi này đi kèm với việc giảm phạm vi số và độ chính xác. Tuy nhiên, các kỹ thuật hiện đại, đặc biệt là huấn luyện độ chính xác hỗn hợp , đã biến FP16 trở thành nền tảng của học máy (ML) hiệu quả bằng cách cho phép huấn luyện và suy luận nhanh hơn với tác động tối thiểu đến độ chính xác của mô hình.
Cách thức hoạt động của Half-Precision
Việc chuyển đổi từ FP32 sang FP16 giúp giảm một nửa dung lượng bộ nhớ cần thiết để lưu trữ trọng số và kích hoạt mô hình. Điều này cho phép xử lý các mô hình lớn hơn, kích thước lô lớn hơn hoặc đào tạo trên GPU với ít bộ nhớ hơn. Hơn nữa, các GPU hiện đại, chẳng hạn như GPU sử dụng NVIDIA Tensor Core , được thiết kế đặc biệt để thực hiện các phép toán ma trận 16 bit với tốc độ cao hơn nhiều so với các phép toán 32 bit.
Thách thức chính với FP16 là phạm vi số hạn chế của nó, điều này có thể dẫn đến các vấn đề như mất gradient trong quá trình huấn luyện. Để khắc phục điều này, độ chính xác một nửa gần như luôn được triển khai bằng cách sử dụng phương pháp độ chính xác hỗn hợp. Chiến lược này bao gồm việc thực hiện hầu hết các phép tính trong FP16 để tăng tốc độ, nhưng sử dụng FP32 một cách chiến lược cho các hoạt động quan trọng, chẳng hạn như cập nhật trọng số và một số phép tính hàm mất mát , để duy trì tính ổn định về mặt số học. Các nền tảng học sâu như PyTorch và TensorFlow cung cấp hỗ trợ tích hợp cho việc huấn luyện độ chính xác hỗn hợp tự động.
Ứng dụng và Ví dụ
Phương pháp bán chính xác, chủ yếu thông qua các kỹ thuật chính xác hỗn hợp, được sử dụng rộng rãi:
- Tăng tốc đào tạo mô hình: Việc đào tạo các mô hình học sâu lớn, chẳng hạn như phân loại hình ảnh hoặc xử lý ngôn ngữ tự nhiên (NLP) , có thể được tăng tốc đáng kể bằng cách sử dụng độ chính xác hỗn hợp, giúp giảm thời gian và chi phí đào tạo. Các nền tảng như Ultralytics HUB thường sử dụng những tối ưu hóa này trong các buổi đào tạo đám mây .
- Tối ưu hóa suy luận phát hiện đối tượng: Các mô hình như Ultralytics YOLO11 có thể được xuất sang các định dạng như ONNX hoặc TensorRT với độ chính xác FP16 để suy luận thời gian thực nhanh hơn. Điều này rất quan trọng đối với các ứng dụng cần thông lượng cao, chẳng hạn như hệ thống an ninh phân tích nhiều nguồn cấp dữ liệu video hoặc kiểm soát chất lượng trên dây chuyền sản xuất tốc độ cao.
- Triển khai trên các thiết bị hạn chế về tài nguyên: Dung lượng bộ nhớ và chi phí tính toán thấp của các mô hình FP16 khiến chúng phù hợp để triển khai trên các nền tảng AI biên như NVIDIA Jetson hoặc các thiết bị di động sử dụng các khuôn khổ như TensorFlow Lite hoặc Core ML của Apple .
- Đào tạo các mô hình ngôn ngữ lớn (LLM): Kích thước khổng lồ của các mô hình như GPT-3 và các mô hình nền tảng khác đòi hỏi phải sử dụng định dạng 16 bit để đưa các mô hình vào bộ nhớ và hoàn thành quá trình đào tạo trong khung thời gian hợp lý.
Định dạng bán chính xác so với các định dạng khác
- Bfloat16 (BF16): Một định dạng 16 bit thay thế do Google phát triển, Bfloat16 phân bổ nhiều bit hơn cho số mũ và ít bit hơn cho phần mantissa so với FP16. Điều này mang lại cho nó cùng dải động như FP32, giúp nó chống chịu tốt hơn với hiện tượng tràn dưới và tràn trên, nhưng độ chính xác thấp hơn. Định dạng này được sử dụng rộng rãi trong các TPU của Google . Bạn có thể tìm hiểu thêm về nó trên Blog Google Cloud AI .
- Lượng tử hóa mô hình: Mặc dù cả hai đều là kỹ thuật tối ưu hóa mô hình , lượng tử hóa mô hình thường chuyển đổi trọng số dấu phẩy động (FP32 hoặc FP16) sang định dạng số nguyên bit thấp hơn, phổ biến nhất là số nguyên 8 bit (INT8). Điều này có thể mang lại tốc độ nhanh hơn nữa, đặc biệt là trên CPU và một số bộ tăng tốc, nhưng thường đòi hỏi một quy trình hiệu chuẩn cẩn thận hơn, chẳng hạn như Huấn luyện Nhận biết Lượng tử hóa (QAT) để tránh làm giảm đáng kể hiệu suất mô hình.
- Single-Precision (FP32): Đây là định dạng mặc định trong hầu hết các khung học sâu. Nó cung cấp độ chính xác cao và dải động rộng, rất mạnh mẽ cho việc huấn luyện. Tuy nhiên, nó chậm hơn và tốn nhiều bộ nhớ hơn so với half-precision, khiến nó kém lý tưởng hơn khi triển khai các mô hình lớn hoặc cho các ứng dụng yêu cầu tốc độ tối đa. Sự đánh đổi giữa các định dạng này là một cân nhắc quan trọng, như được thể hiện trong nhiều so sánh mô hình khác nhau.