BFloat16 (BF16)
Khám phá BFloat16 (BF16) cho deep learning. Tìm hiểu cách định dạng 16-bit này giúp tăng tốc độ và hiệu suất huấn luyện trong các model như Ultralytics YOLO26.
BFloat16, hay Brain Floating Point, là một định dạng số máy tính 16-bit được tối ưu hóa mạnh mẽ cho các ứng dụng machine learning. Được phát triển ban đầu bởi Google Brain team, nó đại diện cho một phương pháp chuyên biệt để xử lý hiệu quả các mảng model weights và gradient khổng lồ. Không giống như số dấu phẩy động 32-bit (FP32) tiêu chuẩn, các thuộc tính toán học của BFloat16 phân bổ 8 bit cho số mũ và 7 bit cho phần phân số (mantissa). Cấu trúc độc đáo này cung cấp phạm vi động chính xác tương đương FP32 nhưng với độ chính xác thấp hơn, giúp giảm một nửa dung lượng bộ nhớ cần thiết cho các kiến trúc deep learning phức tạp mà không gặp phải sự mất ổn định số học thường thấy trong các định dạng 16-bit cũ hơn.
Link to this sectionBFloat16 so với Float16 (FP16): Những khác biệt chính#
Khi so sánh các định dạng bán chính xác, sự khác biệt giữa BF16 và FP16 tiêu chuẩn (dựa trên IEEE Standard for Floating-Point Arithmetic) là rất quan trọng đối với các kỹ sư AI.
FP16 sử dụng 5 bit cho số mũ và 10 bit cho phần mantissa. Cấu trúc này mang lại cho FP16 độ chính xác số học cao hơn nhưng phạm vi động hẹp hơn đáng kể. Do đó, các quy trình huấn luyện FP16 thường đòi hỏi các kỹ thuật điều chỉnh loss phức tạp để ngăn chặn tình trạng gradient underflow—một kịch bản mà các cập nhật gradient nhỏ bị chuyển thành số không. Số mũ 8-bit của BFloat16 giải quyết vấn đề này bằng cách khớp với phạm vi động của FP32. Điều này có nghĩa là các nhà phát triển có thể dễ dàng áp dụng BF16 vào các neural networks mà không cần điều chỉnh các siêu tham số hoặc điều chỉnh loss, biến nó thành định dạng ưu tiên để ổn định quá trình huấn luyện các large language models (LLMs) khổng lồ. Các thông số kỹ thuật số chi tiết có thể được tìm hiểu thêm trên trang BFloat16 của Wikipedia.
Link to this sectionLợi ích đối với việc huấn luyện Deep Learning#
Các nghiên cứu gần đây về BFloat16 cho huấn luyện deep learning nhấn mạnh cách nó tăng tốc đáng kể quy trình huấn luyện tổng thể. Bằng cách giảm băng thông bộ nhớ cần thiết để tìm nạp và lưu trữ các tensor, BFloat16 cho phép các kỹ sư tăng gấp đôi batch sizes hoặc mở rộng lên các foundation models với hàng tỷ tham số trên phần cứng hiện có. Thú vị là, việc giảm nhẹ độ chính xác mantissa hoạt động như một kỹ thuật regularization nhẹ trong quá trình huấn luyện, đôi khi có thể cải thiện khả năng tổng quát hóa của model đối với dữ liệu chưa từng thấy. Hiện tại, đây là xương sống của các chế độ mixed precision hiện đại.
Link to this sectionKhả năng tương thích phần cứng và thực thi#
Để tận dụng tối đa lợi ích tốc độ của BFloat16, cần có sự hỗ trợ phần cứng chuyên dụng. Nó đạt được hiệu suất cao trên Cloud TPUs và được tăng tốc nguyên bản trên các GPU NVIDIA hiện đại bắt đầu từ kiến trúc NVIDIA Ampere (như dòng RTX 30, A100 và các card chuyên dụng cho máy trạm như RTX A6000) cho đến các thế hệ NVIDIA Hopper và Blackwell mới hơn.
Sử dụng các framework với PyTorch Automatic Mixed Precision (AMP), các nhà phát triển có thể sử dụng torch.autocast để tự động định tuyến các phép toán được hỗ trợ thông qua các BF16 Tensor Cores chuyên dụng. Điều này tối đa hóa lưu lượng xử lý trong khi giảm thiểu inference latency.
Link to this sectionCác ứng dụng AI trong thực tế#
BFloat16 đang nhanh chóng trở thành tiêu chuẩn công nghiệp trên nhiều lĩnh vực:
- Generative AI và LLMs: Các tổ chức nghiên cứu huấn luyện các model tạo sinh mới nhất của OpenAI hoặc Claude của Anthropic đều huấn luyện các mạng tiên tiến sử dụng BFloat16. Hơn nữa, họ sử dụng BF16 cho bộ nhớ đệm KV trong quá trình inference. Định dạng này rất quan trọng để ngăn chặn tình trạng cạn kiệt bộ nhớ trong các môi trường cloud computing khi phục vụ hàng triệu yêu cầu trò chuyện đồng thời.
- Computer Vision độ phân giải cao: Khi xử lý luồng video 4K hoặc hình ảnh vệ tinh lớn, giới hạn VRAM rất chặt chẽ. Bằng cách triển khai các kiến trúc tiên tiến như Ultralytics YOLO26 sử dụng BFloat16, các hệ thống an ninh hoặc sản xuất tự động có thể đạt được khả năng object detection tốc độ cao trên các thiết lập edge AI bị giới hạn phần cứng, chẳng hạn như NVIDIA Jetson devices, trong khi vẫn duy trì các yêu cầu độ chính xác nghiêm ngặt.
Link to this sectionTriển khai BFloat16 với Ultralytics#
Gói ultralytics, được hỗ trợ bởi PyTorch, giúp việc thực thi các model trong BFloat16 trở nên đặc biệt đơn giản. Dưới đây là một ví dụ ngắn gọn minh họa cách tải model và thực hiện inference bên trong block ngữ cảnh autocast BF16.
import torch
from ultralytics import YOLO
# Initialize the latest Ultralytics YOLO26 nano model
model = YOLO("yolo26n.pt")
# Verify that the active GPU architecture supports BFloat16
if torch.cuda.is_available() and torch.cuda.is_bf16_supported():
# Use PyTorch autocast to run inference purely in BFloat16
with torch.autocast(device_type="cuda", dtype=torch.bfloat16):
results = model.predict("https://ultralytics.com/images/bus.jpg")
print("Inference completed successfully using BFloat16 precision.")Đối với các đội ngũ muốn mở rộng quy mô các tối ưu hóa này một cách dễ dàng, Ultralytics Platform tự động quản lý các định dạng chính xác trên các cloud training pipelines phức tạp, đảm bảo người dùng đạt được tốc độ và độ chính xác tốt nhất có thể mà không cần quản lý code phần cứng cấp thấp.






