Half-Precision
Tìm hiểu cách độ chính xác bán phần (FP16) tăng tốc AI. Khám phá cách tối ưu hóa Ultralytics YOLO26 để suy luận nhanh hơn và giảm bộ nhớ trên GPU và thiết bị biên.
Độ chính xác bán phần, thường được ký hiệu là FP16, là một định dạng dữ liệu dấu phẩy động chiếm 16 bit bộ nhớ máy tính, khác với định dạng độ chính xác đơn (FP32) tiêu chuẩn sử dụng 32 bit. Trong bối cảnh trí tuệ nhân tạo và học máy, độ chính xác bán phần là một kỹ thuật tối ưu hóa quan trọng được sử dụng để tăng tốc quá trình huấn luyện và suy luận của model, đồng thời giảm đáng kể mức tiêu thụ bộ nhớ. Bằng cách lưu trữ các giá trị số—chẳng hạn như trọng số model của mạng thần kinh và các gradient—bằng ít bit hơn, các nhà phát triển có thể nạp các model lớn hơn vào đơn vị xử lý đồ họa GPU hoặc chạy các model hiện có nhanh hơn nhiều. Mức tăng hiệu quả này là yếu tố cần thiết để triển khai các kiến trúc hiện đại, phức tạp như YOLO26 trên các thiết bị hạn chế về tài nguyên mà không làm ảnh hưởng đáng kể đến độ chính xác.
Link to this sectionCơ chế của các định dạng dấu phẩy động#
Để hiểu về độ chính xác bán phần, việc đối chiếu nó với độ chính xác đầy đủ sẽ hữu ích. Một số dấu phẩy động 32-bit tiêu chuẩn (FP32) dành nhiều bit hơn cho số mũ và phần định trị, cung cấp dải động rất rộng và độ chính xác số cao. Tuy nhiên, các model học sâu vốn có khả năng chịu đựng tốt với các lỗi số nhỏ. Mạng thần kinh thường có thể học hiệu quả ngay cả với dải động và độ chi tiết giảm đi từ định dạng 16-bit.
Chuyển sang độ chính xác bán phần giúp giảm một nửa yêu cầu về băng thông bộ nhớ. Điều này cho phép sử dụng kích thước batch lớn hơn trong quá trình huấn luyện, có thể ổn định các cập nhật gradient và đẩy nhanh quy trình huấn luyện tổng thể. Các bộ tăng tốc phần cứng hiện đại, chẳng hạn như Tensor Cores của NVIDIA, được tối ưu hóa đặc biệt để thực hiện phép nhân ma trận ở định dạng FP16 với tốc độ cao hơn đáng kể so với FP32.
Link to this sectionNhững lợi ích chính trong các quy trình công việc AI#
Việc áp dụng độ chính xác bán phần mang lại một số ưu điểm thiết thực cho các kỹ sư AI:
- Giảm chiếm dụng bộ nhớ: Các model chỉ yêu cầu một nửa lượng VRAM, cho phép nhà phát triển huấn luyện các mạng lớn hơn hoặc sử dụng dữ liệu huấn luyện có độ phân giải cao hơn trên cùng một phần cứng.
- Suy luận nhanh hơn: Đối với các ứng dụng thời gian thực như phương tiện tự hành hoặc phân tích video, FP16 có thể tăng gấp đôi thông lượng (số khung hình trên giây), giúp giảm độ trễ suy luận.
- Hiệu quả năng lượng: Việc xử lý ít bit hơn đòi hỏi ít năng lượng hơn, điều này rất quan trọng đối với các thiết bị edge AI và điện thoại di động nơi thời lượng pin là một yếu tố hạn chế.
- Huấn luyện độ chính xác hỗn hợp: Nhiều framework hiện đại sử dụng độ chính xác hỗn hợp, trong đó model giữ một bản sao chính của trọng số ở định dạng FP32 để đảm bảo tính ổn định nhưng thực hiện các phép tính nặng ở định dạng FP16. Điều này mang lại "lợi ích kép"—vừa đảm bảo tốc độ, vừa duy trì độ ổn định khi hội tụ.
Link to this sectionCác ứng dụng trong thực tế#
Độ chính xác bán phần rất phổ biến trong các hệ thống AI cấp sản xuất. Dưới đây là hai ví dụ cụ thể:
-
Phát hiện đối tượng thời gian thực trên các thiết bị biên: Hãy xem xét một hệ thống camera an ninh đang chạy Ultralytics YOLO26 để phát hiện kẻ đột nhập. Việc triển khai model ở định dạng FP16 cho phép nó chạy mượt mà trên các chip nhúng như NVIDIA Jetson hoặc Raspberry Pi AI Kit. Tải tính toán giảm giúp hệ thống xử lý các luồng video ở chế độ suy luận thời gian thực mà không bị lag, điều này rất quan trọng cho việc cảnh báo kịp thời.
-
Triển khai Large Language Model (LLM): Các model AI tạo sinh như GPT-4 hoặc các biến thể Llama có hàng tỷ tham số. Việc nạp các model này ở độ chính xác đầy đủ (FP32) sẽ đòi hỏi lượng bộ nhớ máy chủ khổng lồ vốn thường quá tốn kém. Bằng cách chuyển đổi các model này sang FP16 (hoặc thậm chí các định dạng thấp hơn), các nhà cung cấp đám mây có thể phục vụ model nền tảng cho hàng ngàn người dùng cùng lúc, giúp các dịch vụ như chatbot và tạo nội dung tự động trở nên khả thi về mặt kinh tế.
Link to this sectionĐộ chính xác bán phần so với Lượng tử hóa#
Mặc dù cả hai kỹ thuật đều nhằm mục đích giảm kích thước model, nhưng việc phân biệt giữa 'Độ chính xác bán phần' và lượng tử hóa model là rất quan trọng.
- Độ chính xác bán phần (FP16): Giảm độ rộng bit từ 32 xuống 16 nhưng vẫn giữ dữ liệu dưới dạng số dấu phẩy động. Nó duy trì dải động hợp lý và thường là lựa chọn mặc định cho huấn luyện GPU và suy luận.
- Lượng tử hóa (INT8): Chuyển đổi số dấu phẩy động thành số nguyên (thường là 8-bit). Điều này mang lại tốc độ và tiết kiệm bộ nhớ lớn hơn nữa nhưng đôi khi có thể dẫn đến sự sụt giảm đáng chú ý hơn về độ chính xác nếu không được thực hiện cẩn thận (ví dụ: thông qua huấn luyện nhận thức lượng tử hóa). FP16 nhìn chung an toàn hơn để bảo toàn hiệu suất model, trong khi INT8 được sử dụng cho việc tối ưu hóa cực hạn.
Link to this sectionTriển khai Độ chính xác bán phần với Ultralytics#
Thư viện ultralytics giúp việc sử dụng độ chính xác bán phần trở nên đơn giản. Trong quá trình dự đoán, model có thể tự động chuyển sang độ chính xác bán phần nếu phần cứng hỗ trợ, hoặc có thể được yêu cầu một cách rõ ràng.
Dưới đây là một ví dụ Python minh họa cách nạp một model YOLO26 và thực hiện suy luận bằng độ chính xác bán phần. Lưu ý rằng việc chạy với half=True thường yêu cầu một GPU hỗ trợ CUDA.
import torch
from ultralytics import YOLO
# Check if CUDA (GPU) is available, as FP16 is primarily for GPU acceleration
device = "cuda" if torch.cuda.is_available() else "cpu"
# Load the latest YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on an image with half-precision enabled
# The 'half=True' argument tells the engine to use FP16
results = model.predict("https://ultralytics.com/images/bus.jpg", device=device, half=True)
# Print the device and precision status
print(f"Inference device: {results[0].orig_img.shape}, Speed: {results[0].speed}")Đối với người dùng quản lý bộ dữ liệu và quy trình huấn luyện, Nền tảng Ultralytics xử lý nhiều trong số các tối ưu hóa này một cách tự động trên đám mây, giúp tinh giản quá trình từ dán nhãn dữ liệu đến triển khai model đã được tối ưu hóa.
Link to this sectionĐọc thêm và Tài nguyên#
Để tìm hiểu thêm về các định dạng số và tác động của chúng đối với AI, hãy tham khảo Tài liệu về Hiệu suất Học sâu của NVIDIA liên quan đến Tensor Cores. Để có hiểu biết rộng hơn về cách các tối ưu hóa này phù hợp với vòng đời phát triển, hãy đọc về vận hành học máy (MLOps).
Ngoài ra, những ai quan tâm đến sự đánh đổi giữa các chiến lược tối ưu hóa khác nhau có thể tìm hiểu về tỉa model (loại bỏ các kết nối thay vì giảm độ chính xác bit), hoặc khám phá Tiêu chuẩn IEEE cho Số học Dấu phẩy động (IEEE 754) để biết các thông số kỹ thuật của số học kỹ thuật số. Việc hiểu những nguyên tắc cơ bản này giúp đưa ra các quyết định sáng suốt khi xuất model sang các định dạng như ONNX hoặc TensorRT cho các môi trường sản xuất.






