Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Batch Size

Batch size là số lượng mẫu huấn luyện mà một model xử lý trong mỗi lần cập nhật trọng số. Thông số này quyết định mức sử dụng bộ nhớ GPU, tốc độ huấn luyện và độ nhiễu gradient.

Batch size là số lượng mẫu huấn luyện mà một model xử lý cùng lúc trước khi cập nhật trọng số model. Thay vì đưa toàn bộ dataset huấn luyện qua mạng nơ-ron cùng một lúc, quá trình huấn luyện chia dữ liệu thành các batch. Với mỗi batch, model tạo dự đoán, hàm loss chấm điểm dự đoán, lan truyền ngược tính gradient và optimizer thực hiện một bước cập nhật. Batch size là một hyperparameter đồng thời chi phối ba yếu tố: lượng bộ nhớ GPU cần cho huấn luyện, thời gian chạy của mỗi epoch và mức độ nhiễu của mỗi ước tính gradient.

Batch size ảnh hưởng đến quá trình huấn luyện như thế nào#

Mỗi batch cung cấp cho thuật toán tối ưu hóa một ước tính gradient trên toàn bộ dataset; batch càng lớn thì ước tính càng chính xác. Đoạn mã PyTorch dưới đây đo trực tiếp độ chính xác đó bằng cách tính trung bình gradient từng mẫu trên nhiều batch ngẫu nhiên với mỗi kích thước:

import torch

torch.manual_seed(0)

# Per-sample gradients of a squared-error loss for 10,000 samples
x = torch.randn(10_000)
y = 2 * x + torch.randn(10_000)
w = torch.tensor(0.0)
per_sample_grads = 2 * (w * x - y) * x

# Estimate the gradient from 1,000 random batches at each batch size
for batch_size in (8, 64, 512):
    idx = torch.randint(0, len(x), (1000, batch_size))
    batch_grads = per_sample_grads[idx].mean(dim=1)
    print(f"batch {batch_size:3d}: gradient std {batch_grads.std():.3f}")

Độ phân tán của ước tính gradient giảm từ 2.248 ở batch size 8 xuống 0.771 ở 64 và 0.267 ở 512. Mỗi lần tăng batch size gấp 8 lần, nhiễu giảm khoảng 2.9 lần, gần bằng căn bậc hai của 8, đúng với cách lấy trung bình các mẫu độc lập.

Nhiễu này định hình sự đánh đổi giữa batch nhỏ và lớn:

  • Batch nhỏ (ví dụ: 8 đến 32): Các lần cập nhật nhiễu và nhiều bước trong mỗi epoch. Nhiễu đóng vai trò như regularizer nhẹ, thường giúp stochastic gradient descent (SGD) tổng quát hóa tốt hơn; batch nhỏ cũng phù hợp với phần cứng khiêm tốn, nhưng mỗi epoch mất nhiều thời gian hơn vì GPU hoạt động chưa hết công suất.
  • Batch lớn (ví dụ: từ 256 trở lên): Gradient mượt hơn, ít bước hơn trong mỗi epoch và mức sử dụng phần cứng cao. Batch cực lớn thường hội tụ đến các cực tiểu sắc, khiến khả năng tổng quát hóa kém hơn, như Keskar và cộng sự đã phát hiện. Vì chúng có ít bước hơn mỗi epoch nên cần learning rate lớn hơn tương ứng cùng một giai đoạn warmup. Áp dụng quy tắc tăng tuyến tính này, Goyal và cộng sự đã huấn luyện ResNet-50 trên ImageNet với batch size 8,192 bằng 256 GPU trong một giờ, đồng thời đạt độ chính xác tương đương huấn luyện với batch nhỏ.

Giới hạn bộ nhớ và tích lũy gradient#

Bộ nhớ GPU phải chứa trọng số model, trạng thái optimizer và các activation trung gian cần cho lan truyền ngược; bộ nhớ dành cho activation tăng tuyến tính theo batch size và độ phân giải ảnh. Batch vượt quá dung lượng sẽ khiến quá trình huấn luyện dừng với lỗi hết bộ nhớ (OOM). Huấn luyện bằng độ chính xác hỗn hợp giảm gần một nửa bộ nhớ activation, còn tích lũy gradient đạt batch hiệu dụng lớn hơn bằng cách cộng gradient từ nhiều batch nhỏ trước mỗi lần cập nhật trọng số.

Quá trình huấn luyện Ultralytics YOLO tích hợp sẵn cách này: hệ thống tích lũy gradient cho đến khi xử lý khoảng 64 ảnh, tức batch size danh định nbs; do đó, sau giai đoạn warmup, batch=16 mặc định thực hiện một lần cập nhật trọng số sau mỗi bốn batch. Thiết lập batch=-1 sẽ chạy AutoBatch, chọn batch lớn nhất vừa với khoảng 60% bộ nhớ CUDA còn trống và chuyển về batch size 16 trên thiết bị CPU và Apple MPS.

from ultralytics import YOLO

# Tải model YOLO26n đã tiền huấn luyện
model = YOLO("yolo26n.pt")

# batch=-1 cho phép AutoBatch chọn batch size dựa trên bộ nhớ GPU khả dụng
# Dùng số nguyên (batch=16) để đặt kích thước cố định hoặc số thực (batch=0.70) để đặt tỷ lệ bộ nhớ
results = model.train(data="coco8.yaml", epochs=5, batch=-1)

Trước khi bắt đầu huấn luyện, AutoBatch chạy model YOLO26 với batch size từ 1 đến 16 (tối đa 64 trên GPU có dung lượng từ 16 GB trở lên), khớp đường thẳng với mức sử dụng bộ nhớ đo được rồi giải phương trình để tìm batch size đạt tỷ lệ mục tiêu.

  • Epoch và iteration: Một epoch là một lượt chạy qua toàn bộ dataset, còn một iteration là một lần cập nhật trọng số. Số iteration mỗi epoch bằng kích thước dataset chia cho batch size rồi làm tròn lên; vì vậy, 1.000 ảnh với batch size 100 cần 10 iteration.
  • Mini-batch: Từ đồng nghĩa với batch trong hầu hết tài liệu deep learning. Theo nghĩa chặt chẽ, batch gradient descent dùng toàn bộ dataset cho mỗi lần cập nhật, stochastic gradient descent dùng một mẫu, còn mini-batch gradient descent nằm giữa hai phương pháp này; hầu hết mạng hiện đại được huấn luyện theo cách đó.
  • Batch normalization: Lớp chuẩn hóa activation bằng trung bình và phương sai của batch hiện tại, nên thống kê trở nên không đáng tin cậy khi batch size rất nhỏ. Group Normalization tránh được sự phụ thuộc này và được ghi nhận có lỗi thấp hơn batch normalization 10.6% trên ResNet-50 với ImageNet ở batch size 2.
  • Batch size khi suy luận: Khi triển khai, batching đánh đổi độ trễ suy luận để lấy thông lượng. Gom khung hình từ nhiều camera làm tăng số ảnh xử lý mỗi giây, trong khi mỗi khung hình phải chờ batch được lấp đầy.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning