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 đề cập đến số lượng mẫu huấn luyện được sử dụng trong một lần lặp của quá trình huấn luyện model. Thay vì đưa toàn bộ training data vào mạng nơ-ron cùng một lúc—vốn thường là bất 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à các batch. Model xử lý một batch, tính toán sai số, và cập nhật model weights bên trong của nó thông qua backpropagation trước khi chuyển sang batch tiếp theo. Siêu tham số này đóng vai trò quyết định trong việc xác định cả tốc độ huấn luyện và độ ổn định của quá trình học.
Độ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 làm thay đổi cơ 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ớน: 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, giúp tăng tốc đáng kể quá trình tính toán. Tuy nhiên, nếu batch quá lớn, model có thể rơi vào các điểm cực tiểu sắc nhọn, dưới tối ưu, dẫn đến overfitting và giảm khả năng tổng quát hóa sang dữ liệu mới.
Cá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 các giới hạn phần cứng thay vì chỉ dựa vào sở thích lý thuyết. Các model deep learning, đặc biệt là các kiến trúc lớn như Transformer hoặc các mạng tích chập nâng cao, được lưu trữ trong VRAM của một GPU.
Khi sử dụng NVIDIA CUDA để tăng tốc, VRAM phải chứa các tham số của model, 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ẽ gặp sự cố 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 sử dụng bộ nhớ, cho phép batch size lớn hơn trên cùng một phần cứng.
Phâ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 vs. Epoch: Một epoch thể hiện một lần chạy 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 vs. Iteration: Một lần lặp (hoặc bước) là hành động xử lý một batch và cập nhật weights. Tổng số lần lặp trong quá trình huấn luyện là số lượng batch trong mỗi epoch nhân với tổng số lượng epoch.
- Batch Size vs. Batch Normalization: Mặc dù có chung tên gọi, Batch Normalization là một loại layer cụ thể giúp chuẩn hóa các đầu ra của layer 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ê sẽ trở nên kém tin cậy, có khả năng làm giảm hiệusuất.
Cá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.
-
Chẩn đoán hình ảnh y tế độ trung thực cao: Trong lĩnh vực AI in healthcare, các kỹ sư thường làm việc với dữ liệu thể tích 3D như quét 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 sập hệ thống, các kỹ sư thường giảm batch size xuống một số rất nhỏ, đôi khi thậm 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à yếu tố 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 nghìn hình ảnh mỗi giờ. Trong quá trình inference, các kỹ sư có thể gộp các luồng camera đầu vào thành các batch lớn hơn để tối đa hóa việc tận dụng các thiết bị edge AI, đảm bảo thông lượng cao cho việc phát hiện lỗi thời gian thực.
Cấu hình Batch Size trong Python#
Khi sử dụng Ultralytics Python package, việc thiết lập 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ận dụng tính nă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.
Ví dụ sau đây minh họa cách huấn luyện một YOLO26 model—tiêu chuẩn mới nhất về tốc độ và độ chính xác—sử dụng một cài đặt batch cụ thể.
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 số liệu 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 hyperparameter tuning đúng cách cho batch size thường là bước cuối cùng để khai thác hiệu suất tốt nhất từ model của bạn.






