Batch Size Là Gì? Giải Thích Dễ Hiểu Cho Người Mới

Câu trả lời nhanh
Batch Size là số lượng mẫu dữ liệu AI xử lý cùng lúc trước khi cập nhật weights. Batch size ảnh hưởng trực tiếp đến tốc độ training, lượng VRAM cần thiết và khả năng generalization. Giá trị phổ biến nhất là 32, cân bằng giữa tốc độ và chất lượng. Khi tăng batch size cần tăng learning rate tương ứng theo Linear Scaling Rule.

Batch Size là một trong những hyperparameter cơ bản nhất khi train AI, nhưng nó quyết định rất nhiều thứ: từ tốc độ training đến chất lượng của model sau cùng. Bài này sẽ giải thích đơn giản batch size là gì, tác động như thế nào, và cách chọn giá trị phù hợp.

Batch Size Là Gì?

Batch Size trong machine learning xử lý dữ liệu theo lô

Batch Size là số lượng mẫu dữ liệu (samples) được xử lý cùng một lúc trước khi model cập nhật tham số (weights). Ví dụ, nếu bạn có 1.000 ảnh và đặt batch size là 32, model sẽ lấy 32 ảnh đầu tiên, tính toán, cập nhật, rồi lấy 32 ảnh tiếp theo, cho đến khi hết.

Khái niệm này đơn giản như việc chia bài: bạn không đánh hết 1.000 lá bài cùng lúc, mà chia thành từng nhóm nhỏ để xử lý.

Phân Biệt Batch Size, Iteration Và Epoch

Ba khái niệm này hay bị nhầm lẫn:

  • Batch Size: Số mẫu xử lý trong 1 lần forward/backward pass.
  • Iteration: Số lần model cập nhật weights. Với 1.000 samples và batch size 32, sẽ có ~31 iterations.
  • Epoch: Khi model đã duyệt hết toàn bộ dataset 1 lần. 1.000 samples chia thành 32 batch = 1 epoch gồm 31 iterations.

Hiểu rõ 3 khái niệm này giúp bạn tính toán thời gian training chính xác hơn.

Các Loại Batch Size Khác Nhau

Tùy thuộc vào giá trị, batch size được chia thành 3 loại:

  • Full Batch (Batch Gradient Descent): Toàn bộ dataset được dùng cùng lúc. Model cập nhật 1 lần mỗi epoch. Đạt cho dataset nhỏ, nhưng tốn RAM và hiệu quả chậm với data lớn.
  • Mini-batch: Chia thành từng nhóm nhỏ (thường 16, 32, 64, 128). Đây là cách phổ biến nhất trong thực tế.
  • Batch Size = 1 (Stochastic Gradient Descent): Model cập nhật sau mỗi mẫu riêng lẻ. Nhanh trong từng bước nhưng rất nhiều tiếng ồn (noisy).

Trong thực tế, mini-batch là lựa chọn mặc định cho hầu hết các model AI hiện đại.

Batch Size Ảnh Hưởng Nhiều Đến Model Như Thế Nào?

Batch size không chỉ là một con số kỹ thuật, nó ảnh hưởng trực tiếp đến:

1. Tốc độ training: Batch size lớn hơn cho phép tính toán song song tốt hơn trên GPU, nên mỗi iteration sẽ nhanh hơn. Tuy nhiên, số iterations giảm xuống, nhưng mỗi iteration phải xử lý nhiều data hơn.

2. Chất lượng gradient: Batch size nhỏ tạo gradient “nhiễu” hơn (dao động nhiều), nhưng chính dao động này giúp model thoát khỏi local minima. Batch size lớn cho gradient ổn định hơn, nhưng đôi khi dẫn đến quá khớp (overfitting) hoặc kẹt ở giải pháp chưa tốt nhất.

3. Memory (VRAM): Batch size càng lớn, càng tốn VRAM. Đây là lý do chính khi bạn bị lỗi “CUDA out of memory” khi train model.

4. Khả năng tổng quát (Generalization): Nghiên cứu cho thấy batch size nhỏ (32-128) thường giúp model generalize tốt hơn trên data mới so với batch size rất lớn (512+).

Cách Chọn Batch Size Phù Hợp

Không có một con số “đúng” cho mọi trường hợp, nhưng đây là các nguyên tắc thực tế:

  • Bắt đầu với 32: Đây là giá trị “mặc định vàng” mà nhiều nghiên cứu đề xuất. Nó cân bằng giữa tốc độ và chất lượng.
  • Nếu GPU lớn (12GB+ VRAM): Thử tăng lên 64 hoặc 128, đặc biệt với model nhỏ.
  • Nếu GPU nhỏ: Giảm xuống 16 hoặc 8. Vẫn train được, chỉ chậm hơn một chút.
  • Nếu train model ngôn ngữ (NLP): Batch size thường nhỏ hơn (8-32) vì sequence dài tốn nhiều memory.
  • Nếu train model ảnh (CV): Có thể dùng batch size lớn hơn (64-256) vì mỗi ảnh chiếm ít memory hơn text sequence.

Một cách phổ biến là dùng Gradient Accumulation: train với batch size nhỏ nhưng tính toán gradient nhiều lần trước khi cập nhật, để mô phỏng batch size lớn hơn mà không cần thêm VRAM.

Batch Size Và Learning Rate

Đây là mối liên quan rất quan trọng nhưng hay bị bỏ qua: khi tăng batch size, bạn cũng cần tăng learning rate. Quy tắc thumb là Linear Scaling Rule: tăng batch size gấp đôi thì cũng tăng learning rate gấp đôi.

Ví dụ, nếu bạn đang dùng batch size 32 với learning rate 0.001, thì khi chuyển sang batch size 64, thử learning rate 0.002.

Tuy nhiên, đây chỉ là hướng dẫn, không phải công thức chắc chắn. Luôn nên validate trên data của riêng mình.

Ví Dụ Thực Tế

Giả sử bạn train một model phân loại ảnh với dataset 50.000 ảnh:

  • Batch size 16: 3.125 iterations/epoch. Training chậm, gradient nhiễu, nhưng model có thể generalize tốt.
  • Batch size 64: 781 iterations/epoch. Cân bằng tốt giữa tốc độ và chất lượng. Phù hợp cho hầu hết trường hợp.
  • Batch size 512: 97 iterations/epoch. Training nhanh, GPU khai thác tốt, nhưng cần điều chỉnh learning rate và có nguy cơ cao overfitting.

Lỗi Thường Gặp Khi Chọn Batch Size

1. Dùng batch size quá lớn với GPU nhỏ: Gây ra lỗi OOM (Out of Memory). Giải pháp: giảm batch size hoặc dùng gradient accumulation.

2. Không điều chỉnh learning rate: Tăng batch size nhưng giữ nguyên learning rate sẽ làm training chậm hồi hoặc bị kẹt (stuck).

3. Batch size = 1 cho model lớn: Training sẽ rất chậm và bất ổn. Chỉ nên dùng khi bắt buộc, còn lại thì mini-batch tốt hơn nhiều.

Tóm Lại

Batch Size là số mẫu dữ liệu được xử lý trước khi model cập nhật weights. Nó ảnh hưởng đến tốc độ, ổn định, memory và khả năng generalization của model. Giá trị phổ biến nhất là 32, phù hợp cho hầu hết các trường hợp. Khi điều chỉnh batch size, nhớ cập nhật learning rate tương ứng. Đây là một hyperparameter cần test thử, không nên copy-paste mà cần hiểu bài toán của mình để chọn giá trị tốt nhất.

ThienLv

Mình là Thien, người tạo ra blog này. Ban ngày làm marketing, ban đêm cày tiền online và chơi với AI. Blog này là nơi mình ghi lại những gì mình thử qua — tool nào xịn, chiến thuật nào chạy được, cái gì thất bại. Mình không giỏi nhất, nhưng mình thích chia sẻ thật. Chill với một ly cafe đá là lý tưởng nhất.

Xem tất cả bài viết →

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *