Khám phá cách độ chính xác nửa (FP16) tăng tốc AI với khả năng 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 là một định dạng số nhị phân dấu phẩy động chiếm 16 bit trong bộ nhớ máy tính, thường được gọi là FP16. Trong lĩnh vực học sâu đang phát triển nhanh chóng, định dạng này đóng vai trò là một giải pháp thay thế mạnh mẽ cho định dạng 32 bit độ chính xác đơn (FP32) tiêu chuẩn thường được sử dụng cho các phép tính số. Bằng cách giảm số bit cần thiết để biểu diễn mỗi số, half-precision làm giảm đáng kể áp lực băng thông bộ nhớ và yêu cầu lưu trữ cho các trọng số và kích hoạt mô hình . Hiệu quả này cho phép các nhà nghiên cứu và kỹ sư huấn luyện các mạng nơ-ron lớn hơn hoặc triển khai các mô hình trên phần cứng với tài nguyên hạn chế mà không làm giảm đáng kể độ chính xác của các dự đoán.
Tiêu chuẩn IEEE 754 định nghĩa cấu trúc của số dấu phẩy động, trong đó FP16 phân bổ 1 bit cho dấu, 5 bit cho số mũ và 10 bit cho phân số (mantissa). Cách biểu diễn nhỏ gọn này trái ngược với FP32, sử dụng 8 bit cho số mũ và 23 bit cho phân số. Ưu điểm chính của việc sử dụng FP16 trong thị giác máy tính và các tác vụ AI khác là tăng tốc các phép toán. Các bộ tăng tốc phần cứng hiện đại, chẳng hạn như NVIDIA Tensor Cores , được thiết kế đặc biệt để thực hiện phép nhân ma trận ở độ chính xác bán phần với tốc độ cao hơn đáng kể so với các phép toán độ chính xác đơn.
Tuy nhiên, số lượng bit giảm đồng nghĩa với dải động nhỏ hơn và độ chính xác thấp hơn. Điều này có thể dẫn đến sự bất ổn định về số, chẳng hạn như hiện tượng gradient biến mất , khi các số trở nên quá nhỏ khiến máy tính không thể biểu diễn rõ ràng từ số không. Để giảm thiểu điều này, các nhà phát triển thường sử dụng các chiến lược độ chính xác hỗn hợp , chuyển đổi linh hoạt giữa FP16 và FP32 trong quá trình huấn luyện để duy trì sự ổn định đồng thời tận dụng tốc độ của độ chính xác bán phần.
Độ chính xác một nửa rất phổ biến trong quy trình làm việc AI hiện đại, đặc biệt là trong các tình huống đòi hỏi thông lượng cao hoặc độ trễ thấp.
Các khung như PyTorch và các thư viện như
ultralytics giúp việc tận dụng độ chính xác một nửa trở nên dễ dàng. Ví dụ sau đây minh họa cách xuất YOLO11 mô hình cho TensorRT định dạng sử dụng FP16, một phương pháp phổ biến để tối ưu hóa tốc độ suy luận trên NVIDIA GPU.
from ultralytics import YOLO
# Load a pretrained YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to TensorRT engine with half-precision enabled
# The 'half=True' argument ensures weights are converted to FP16
model.export(format="engine", half=True)
Để hiểu được độ chính xác một nửa, cần phải phân biệt nó với các kỹ thuật tối ưu hóa liên quan có trong bảng thuật ngữ:
Bằng cách nắm vững các định dạng này, các nhà phát triển có thể đảm bảo chiến lược triển khai mô hình của họ được tối ưu hóa cho các yêu cầu về phần cứng và hiệu suất cụ thể của dự án.