Thuật ngữ

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ả.

Xe lửa YOLO mô hình đơn giản
với Ultralytics TRUNG TÂM

Tìm hiểu thêm

Half-precision, về mặt kỹ thuật được gọi là FP16 (Floating-Point 16-bit), là một định dạng số sử dụng 16 bit để 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 lĩnh vực trí tuệ nhân tạo (AI) và đặc biệt là học sâu (DL) , việc tận dụng half-precision đã trở thành một kỹ thuật quan trọng để tối ưu hóa quá trình đào tạo và suy luận mô hình, cân bằng hiệu quả tính toán với độ chính xác số. Nó cho phép các mô hình chạy nhanh hơn và tiêu thụ ít bộ nhớ hơn, giúp AI phức tạp khả thi trên nhiều loại phần cứng hơn.

Half-Precision là gì?

Số dấu phẩy động được sử dụng để biểu diễn số thực trong máy tính, xấp xỉ chúng trong một số bit cố định. Tiêu chuẩn IEEE 754 định nghĩa các định dạng phổ biến, bao gồm FP16 và FP32. Số FP16 sử dụng 1 bit cho dấu, 5 bit cho số mũ (xác định phạm vi) và 10 bit cho phần có nghĩa hoặc phần thập phân (xác định độ chính xác). Để so sánh, FP32 sử dụng 1 bit dấu, 8 bit số mũ và 23 bit có nghĩa. Việc giảm bit này có nghĩa là FP16 có phạm vi số nhỏ hơn đáng kể và độ chính xác thấp hơn FP32. Để biết tổng quan cơ bản về cách các định dạng này hoạt động, hãy xem phần cơ bản về số học dấu phẩy động .

Lợi ích của độ chính xác một nửa

Việc sử dụng FP16 mang lại một số lợi thế trong quy trình học sâu:

  • Giảm sử dụng bộ nhớ: Trọng số mô hình , kích hoạt và gradient được lưu trữ trong FP16 chỉ cần một nửa bộ nhớ so với FP32. Điều này cho phép sử dụng các mô hình lớn hơn, kích thước lô lớn hơn hoặc triển khai trên các thiết bị có bộ nhớ hạn chế.
  • Tính toán nhanh hơn: Phần cứng hiện đại, chẳng hạn như GPU NVIDIA với Tensor Core và bộ xử lý chuyên dụng như Google TPU , có thể thực hiện các hoạt động FP16 nhanh hơn nhiều so với các hoạt động FP32.
  • Thông lượng được cải thiện và độ trễ thấp hơn: Sự kết hợp giữa yêu cầu băng thông bộ nhớ giảm và tính toán nhanh hơn dẫn đến thông lượng cao hơn trong quá trình đào tạo và độ trễ suy luận thấp hơn, cho phép suy luận theo thời gian thực cho các ứng dụng đòi hỏi khắt khe.

Nhược điểm tiềm ẩn

Mặc dù có lợi, nhưng việc chỉ sử dụng FP16 đôi khi có thể dẫn đến các vấn đề:

  • Phạm vi số giảm: Phạm vi số mũ nhỏ hơn khiến số FP16 dễ bị tràn số (trở nên quá lớn) hoặc tràn số (trở nên quá nhỏ, thường là bằng 0).
  • Độ chính xác thấp hơn: Số lượng bit quan trọng giảm có nghĩa là độ chính xác thấp hơn, đôi khi có thể ảnh hưởng đến độ chính xác cuối cùng của các mô hình nhạy cảm nếu không được quản lý cẩn thận.
  • Các vấn đề về gradient: Trong quá trình đào tạo, các giá trị gradient nhỏ có thể tràn xuống 0 trong FP16, cản trở việc học. Điều này có thể làm trầm trọng thêm các vấn đề như gradient biến mất .

Nửa chính xác so với các khái niệm liên quan

Điều quan trọng là phải phân biệt FP16 với các định dạng và kỹ thuật số khác:

  • Single-Precision (FP32): Định dạng mặc định trong nhiều khuôn khổ học máy (ML) như PyTorchTensorFlow . Cung cấp sự cân bằng tốt giữa phạm vi và độ chính xác cho hầu hết các tác vụ nhưng tốn nhiều tài nguyên hơn FP16.
  • Độ chính xác kép (FP64): Cung cấp độ chính xác rất cao nhưng yêu cầu gấp đôi bộ nhớ và tài nguyên tính toán của FP32. Được sử dụng chủ yếu trong tính toán khoa học, hiếm khi trong học sâu.
  • Mixed Precision : Đây là cách phổ biến nhất mà FP16 được sử dụng trong học sâu. Nó liên quan đến việc sử dụng chiến lược cả FP16 và FP32 trong quá trình đào tạo hoặc suy luận. Thông thường, các hoạt động tính toán chuyên sâu như tích chập và nhân ma trận được thực hiện trong FP16 để tăng tốc độ, trong khi các hoạt động quan trọng như cập nhật trọng số hoặc một số phép giảm nhất định được giữ trong FP32 để duy trì độ ổn định và độ chính xác về mặt số. Các kỹ thuật như tỷ lệ mất mát giúp giảm thiểu các vấn đề tràn dữ liệu. Xem bài báo Đào tạo Mixed-Precision gốc hoặc hướng dẫn từ PyTorch AMPTensorFlow Mixed Precision . Ultralytics các mô hình thường tận dụng độ chính xác hỗn hợp; xem các mẹo để đào tạo mô hình .
  • BFloat16 (BF16): Một định dạng 16 bit khác, chủ yếu được phát triển bởi Google . Nó sử dụng 8 bit mũ (giống như FP32, cung cấp phạm vi rộng) nhưng chỉ có 7 bit significand (độ chính xác thấp hơn FP16). Nó đặc biệt hữu ích để đào tạo các mô hình ngôn ngữ lớn (LLM) . Tìm hiểu thêm về BFloat16 .
  • Lượng tử hóa mô hình : Các kỹ thuật làm giảm độ chính xác của mô hình hơn nữa, thường là xuống số nguyên 8 bit (INT8) hoặc ít hơn. Điều này mang lại hiệu quả tối đa cho việc triển khai trên các thiết bị biên nhưng thường yêu cầu hiệu chuẩn cẩn thận hoặc Đào tạo có nhận thức về lượng tử hóa (QAT) để duy trì độ chính xác. Xem phần giới thiệu về lượng tử hóa trên PyTorch .

Ứ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:

  1. Tăng tốc đào tạo mô hình: Đào tạo các mô hình học sâu lớn, chẳng hạn như mô hì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 các tối ưu hóa này.
  2. 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 (sử dụng các công cụ được mô tả trong tài liệu chế độ xuất ) sang các định dạng như ONNX hoặc TensorRT với độ chính xác FP16 để suy luận nhanh hơn. Điều này rất quan trọng đối với các ứng dụng cần hiệu suất thời gian thực, chẳng hạn như xe tự hành hoặc hệ thống giám sát video trực tiếp.
  3. Triển khai trên các thiết bị hạn chế 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 điện toán biên như NVIDIA Jetson hoặc các thiết bị di động sử dụng các nền tảng như TensorFlow Lite hoặc Core ML .
  4. Đà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 kiến trúc mới hơn đòi hỏi phải sử dụng định dạng 16 bit (FP16 hoặc BF16) để đưa các mô hình vào bộ nhớ và hoàn tất quá trình đào tạo trong khung thời gian hợp lý.

Tóm lại, half-precision (FP16) là một công cụ quan trọng trong bộ công cụ tối ưu hóa học sâu, cho phép tính toán nhanh hơn và giảm sử dụng bộ nhớ. Mặc dù có những hạn chế về phạm vi và độ chính xác, nhưng chúng thường được quản lý hiệu quả bằng các kỹ thuật mixed-precision, khiến nó trở nên không thể thiếu để đào tạo các mô hình lớn và triển khai các ứng dụng AI hiệu quả.

Đọc tất cả
OSZAR »