Batch Size
Tìm hiểu cách kích thước lô (batch size) ảnh hưởng đến tốc độ và độ chính xác đào tạo học máy. Khám phá các ràng buộc phần cứng và tối ưu hóa Ultralytics YOLO26 bằng AutoBatch.
Trong lĩnh vực machine learning và đặc biệt là deep learning, Batch Size (kích thước lô) đề cập đến số lượng ví dụ huấn luyện được sử dụng trong một lần lặp huấn luyện mô hình. Thay vì đưa toàn bộ training data vào mạng thần kinh cùng lúc—điều thường không khả thi về mặt tính toán do giới hạn bộ nhớ—tập dữ liệu được chia thành các tập con nhỏ hơn gọi là batch. Mô hình xử lý một batch, tính toán sai số và cập nhật model weights nội bộ thông qua backpropagation trước khi chuyển sang batch tiếp theo. Siêu tham số này đóng vai trò then chốt trong việc quyết định cả tốc độ huấn luyện lẫn sự ổn định của quá trình học.
Link to this sectionĐộng lực học của quá trình huấn luyện với các Batch#
Việc lựa chọn batch size thay đổi về căn bản cách thuật toán tối ưu hóa, thường là một biến thể của stochastic gradient descent, điều hướng không gian hàm mất mát.
- Batch Size nhỏ: Sử dụng số lượng nhỏ (ví dụ: 8 hoặc 16) tạo ra các cập nhật "nhiễu". Mặc dù ước tính gradient kém chính xác hơn đối với toàn bộ tập dữ liệu, nhưng nhiễu này đôi khi giúp mô hình thoát khỏi các cực tiểu địa phương, có khả năng dẫn đến khả năng tổng quát hóa tốt hơn. Tuy nhiên, các batch nhỏ hơn đòi hỏi nhiều lần cập nhật hơn trên mỗi epoch, điều này có thể làm chậm quá trình huấn luyện xét về thời gian thực do chi phí vận hành.
- Batch Size lớn: Một batch lớn hơn (ví dụ: 128 hoặc 256) cung cấp ước tính chính xác hơn về gradient, dẫn đến sự hội tụ mượt mà hơn của loss function. Nó cho phép song song hóa quy mô lớn trên phần cứng hiện đại, tăng tốc đáng kể việc tính toán. Tuy nhiên, nếu batch quá lớn, mô hình có thể rơi vào các cực tiểu nhọn, không tối ưu, dẫn đến overfitting và giảm khả năng tổng quát hóa cho dữ liệu mới.
Link to this sectionCác hàm ý về phần cứng và bộ nhớ#
Các kỹ sư thường phải chọn batch size dựa trên những hạn chế của phần cứng thay vì ưu tiên thuần túy về lý thuyết. Các mô hình deep learning, đặc biệt là các kiến trúc lớn như Transformer hoặc mạng tích chập nâng cao, được lưu trữ trong VRAM của GPU.
Khi sử dụng NVIDIA CUDA để tăng tốc, VRAM phải chứa các tham số mô hình, batch dữ liệu đầu vào và các đầu ra kích hoạt trung gian cần thiết cho việc tính toán gradient. Nếu batch size vượt quá bộ nhớ khả dụng, quá trình huấn luyện sẽ bị treo với lỗi "Out of Memory" (OOM). Các kỹ thuật như huấn luyện mixed precision thường được áp dụng để giảm mức tiêu thụ bộ nhớ, cho phép sử dụng batch size lớn hơn trên cùng một phần cứng.
Link to this sectionPhân biệt các khái niệm liên quan#
Để cấu hình huấn luyện hiệu quả, điều cần thiết là phân biệt batch size với các thuật ngữ thời gian khác trong vòng lặp huấn luyện.
- Batch Size so với Epoch: Một epoch đại diện cho một lần truyền hoàn chỉnh qua toàn bộ tập dữ liệu huấn luyện. Batch size xác định dữ liệu được chia thành bao nhiêu phần trong epoch đó. Ví dụ, nếu bạn có 1.000 hình ảnh và batch size là 100, sẽ mất 10 lần lặp để hoàn thành một epoch.
- Batch Size so với Iteration: Một iteration (hoặc bước) là hành động xử lý một batch và cập nhật các trọng số. Tổng số iteration trong quá trình huấn luyện là số batch trên mỗi epoch nhân với tổng số epoch.
- Batch Size so với Batch Normalization: Mặc dù có tên gọi giống nhau, Batch Normalization là một loại lớp cụ thể giúp chuẩn hóa đầu vào của lớp dựa trên giá trị trung bình và phương sai của batch hiện tại. Kỹ thuật này phụ thuộc rất nhiều vào batch size; nếu batch size quá nhỏ (ví dụ: 2), các ước tính thống kê trở nên không đáng tin cậy, có khả năng làm giảm hiệu suất.
Link to this sectionCác ứng dụng trong thực tế#
Điều chỉnh batch size là một công việc cần thiết thường xuyên khi triển khai các giải pháp thị giác máy tính trong nhiều ngành công nghiệp khác nhau.
-
Hình ảnh y tế độ phân giải cao: Trong lĩnh vực AI in healthcare, các chuyên gia thường làm việc với dữ liệu thể tích 3D như ảnh chụp MRI hoặc CT. Các tệp này cực kỳ dày đặc và tốn nhiều bộ nhớ. Để thực hiện các tác vụ như medical image analysis hoặc image segmentation phức tạp mà không làm treo hệ thống, các kỹ sư thường giảm batch size xuống một con số rất nhỏ, đôi khi chỉ là batch bằng 1. Ở đây, ưu tiên là xử lý chi tiết độ phân giải cao thay vì tốc độ huấn luyện thô.
-
Kiểm soát chất lượng công nghiệp: Ngược lại, trong AI in manufacturing, tốc độ là tối quan trọng. Các hệ thống tự động kiểm tra sản phẩm trên băng chuyền cần xử lý hàng ngàn hình ảnh mỗi giờ. Trong quá trình inference, các kỹ sư có thể gộp các luồng dữ liệu camera đầu vào thành các batch lớn hơn để tối đa hóa hiệu suất sử dụng của các thiết bị edge AI, đảm bảo thông lượng cao cho việc phát hiện lỗi theo thời gian thực.
Link to this sectionCấu hình Batch Size trong Python#
Khi sử dụng Ultralytics Python package, việc cài đặt batch size rất đơn giản. Bạn có thể chỉ định một số nguyên cố định hoặc sử dụng cài đặt động batch=-1, tính năng này tận dụng AutoBatch feature để tự động tính toán batch size tối đa mà phần cứng của bạn có thể xử lý an toàn.
The following example demonstrates how to train a YOLO26 model—the latest standard for speed and accuracy—using a specific batch setting.
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train on the COCO8 dataset
# batch=16 is manually set.
# Alternatively, use batch=-1 for auto-tuning based on available GPU memory.
results = model.train(data="coco8.yaml", epochs=5, batch=16)Để quản lý các thí nghiệm quy mô lớn và trực quan hóa cách các batch size khác nhau ảnh hưởng đến các chỉ số huấn luyện của bạn, các công cụ như Ultralytics Platform cung cấp một môi trường toàn diện để ghi nhật ký và so sánh các lần chạy. Việc thực hiện hyperparameter tuning phù hợp cho batch size thường là bước cuối cùng để đạt được hiệu suất tốt nhất từ mô hình của bạn.






