Yolo Tầm nhìn Thâm Quyến
Thâm Quyến
Tham gia ngay
Bảng chú giải thuật ngữ

Độ chính xác nửa

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.

Cơ học của độ chính xác nửa vời

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.

Ứng dụng thực tế trong AI

Độ 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.

  1. Triển khai AI biên : Khi triển khai mô hình lên các thiết bị AI biên như máy bay không người lái, camera thông minh hoặc điện thoại di động, bộ nhớ và thời lượng pin là những hạn chế lớn. Việc chuyển đổi một mô hình như YOLO11 sang FP16 giúp giảm kích thước mô hình khoảng 50%, cho phép nó phù hợp với bộ nhớ RAM hạn chế của các hệ thống nhúng như NVIDIA Jetson hoặc Raspberry Pi . Điều này giúp giảm độ trễ suy luận , cho phép phản hồi theo thời gian thực trong các ứng dụng như điều hướng tự động.
  2. Đào tạo Mô hình Quy mô Lớn : Việc đào tạo các kiến trúc khổng lồ, chẳng hạn như Mô hình Ngôn ngữ Lớn (LLM) hoặc mô hình tầm nhìn nền tảng, đòi hỏi phải xử lý hàng terabyte dữ liệu. Việc sử dụng FP16 cho phép các trung tâm dữ liệu tăng gấp đôi kích thước lô dữ liệu trong bộ nhớ GPU , rút ngắn đáng kể chu kỳ đào tạo. Hiệu quả này rất quan trọng cho việc thử nghiệm nhanh chóng và lặp lại trên các kiến trúc thế hệ tiếp theo như YOLO26 sắp ra mắt.

Triển khai độ chính xác một nửa với Ultralytics

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)

Phân biệt các thuật ngữ liên quan

Để 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ữ:

  • Độ chính xác một nửa so với Độ chính xác hỗn hợp : Trong khi độ chính xác một nửa đề cập cụ thể đến định dạng dữ liệu 16 bit, độ chính xác hỗn hợp là một kỹ thuật đào tạo kết hợp FP16 cho tính toán nặng và FP32 cho tích lũy nhạy cảm (như cập nhật trọng số) để ngăn ngừa mất thông tin.
  • Lượng tử hóa bán chính xác so với lượng tử hóa mô hình : Lượng tử hóa bán chính xác duy trì biểu diễn dấu chấm động, chỉ đơn giản là giảm độ rộng bit. Lượng tử hóa thường chuyển đổi trọng số sang định dạng số nguyên, chẳng hạn như INT8 (số nguyên 8 bit), mang lại khả năng nén và tốc độ cao hơn nhưng đòi hỏi các kỹ thuật hiệu chuẩn cẩn thận như Huấn luyện Nhận biết Lượng tử hóa (QAT) để tránh làm giảm độ chính xác.
  • Half-Precision so với Bfloat16 : Bfloat16 (Brain Floating Point) là một định dạng 16-bit thay thế thường được sử dụng trên TPU . Định dạng này giữ nguyên số mũ 8-bit của FP32 để duy trì dải động nhưng lại hy sinh độ chính xác của phân số, giúp nó thường ổn định hơn trong quá trình huấn luyện so với IEEE FP16 tiêu chuẩn mà không cần phải điều chỉnh tỷ lệ mất mát.

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.

Tham gia Ultralytics cộng đồng

Tham gia vào tương lai của AI. Kết nối, hợp tác và phát triển cùng với những nhà đổi mới toàn cầu

Tham gia ngay