Callback
Khám phá cách các callback tối ưu hóa việc đào tạo Ultralytics YOLO26. Tìm hiểu cách triển khai dừng sớm (early stopping), checkpointing và ghi nhật ký tùy chỉnh để nâng cao các luồng công việc AI của bạn.
Trong lĩnh vực kỹ thuật phần mềm và trí tuệ nhân tạo (AI), một callback là một đoạn mã thực thi được truyền dưới dạng đối số cho mã khác, sau đó đoạn mã này sẽ thực thi (gọi lại) đối số đó tại một thời điểm nhất định. Trong bối cảnh cụ thể của các framework học sâu (DL), các callback là những công cụ thiết yếu cho phép lập trình viên tùy chỉnh hành vi của vòng lặp huấn luyện mô hình mà không cần sửa đổi mã huấn luyện cốt lõi. Chúng đóng vai trò như các trình kích hoạt tự động thực hiện các hành động cụ thể tại nhiều giai đoạn khác nhau trong quá trình huấn luyện, chẳng hạn như khi bắt đầu hoặc kết thúc một epoch, một batch huấn luyện hoặc toàn bộ phiên huấn luyện.
Link to this sectionVai trò của Callbacks trong Machine Learning#
Việc huấn luyện một mạng thần kinh (nn) phức tạp có thể mất hàng giờ hoặc thậm chí hàng ngày. Nếu không có callback, quá trình huấn luyện về cơ bản là một "hộp đen" chạy cho đến khi hoàn tất và thường yêu cầu sự giám sát thủ công. Các callback mang lại khả năng quan sát và kiểm soát, cho phép hệ thống tự điều chỉnh dựa trên các chỉ số hiệu suất theo thời gian thực.
Khi sử dụng các thư viện cấp cao như PyTorch hoặc TensorFlow, các callback cung cấp cách để chèn logic vào thuật toán tối ưu hóa. Ví dụ, nếu một mô hình đang học tốt, một callback có thể lưu trạng thái hiện tại; nếu quá trình học dừng lại, callback có thể tạm dừng để tiết kiệm tài nguyên. Điều này giúp luồng công việc học máy (ML) trở nên hiệu quả và mạnh mẽ hơn.
Link to this sectionCác ứng dụng phổ biến và ví dụ thực tế#
Callbacks rất linh hoạt và có thể được sử dụng cho hàng loạt nhiệm vụ trong quá trình giám sát mô hình và tối ưu hóa.
- Early Stopping: Một trong những cách sử dụng phổ biến nhất là dừng sớm (early stopping). Callback này giám sát một chỉ số cụ thể, chẳng hạn như độ mất mát (loss) trên dữ liệu kiểm thử (validation data). Nếu độ mất mát không còn giảm trong một số epoch nhất định, callback sẽ dừng quá trình huấn luyện. Điều này ngăn ngừa quá khớp (overfitting), đảm bảo mô hình khái quát hóa tốt trên dữ liệu mới thay vì ghi nhớ dữ liệu huấn luyện (training data).
- Model Checkpointing: Trong các đợt huấn luyện dài, lỗi phần cứng có thể gây ra hậu quả nghiêm trọng. Một callback checkpointing sẽ lưu trọng số mô hình (model weights) theo các khoảng thời gian định kỳ (ví dụ: mỗi epoch) hoặc chỉ khi mô hình đạt được điểm "tốt nhất" mới trên các chỉ số như độ chính xác (accuracy) hoặc độ chính xác trung bình trung bình (mAP). Điều này đảm bảo bạn luôn có một phiên bản đã lưu của mô hình có hiệu suất tốt nhất.
- Lập lịch tốc độ học (Learning Rate Scheduling): Tốc độ học (learning rate) kiểm soát mức độ thay đổi của mô hình để phản ứng lại sai số ước tính mỗi khi trọng số mô hình được cập nhật. Một callback có thể điều chỉnh tốc độ này một cách linh hoạt, giảm nó xuống khi quá trình học bị chững lại để giúp mô hình hội tụ về một giải pháp tối ưu, một kỹ thuật thường được gọi là giảm tốc độ học (learning rate decay).
- Ghi nhật ký và Trực quan hóa: Các callback thường xuyên được sử dụng để tích hợp với các công cụ theo dõi thử nghiệm (experiment tracking). Chúng truyền các chỉ số tới các bảng điều khiển như TensorBoard hoặc MLflow, cho phép các chuyên gia dữ liệu trực quan hóa các hàm mất mát (loss functions) và biểu đồ hiệu suất theo thời gian thực.
Link to this sectionTriển khai Callbacks với Ultralytics YOLO#
The Ultralytics library supports a robust callback system, allowing users to hook into events during the training of models like YOLO26. This is particularly useful for users managing workflows on the Ultralytics Platform who need custom logging or control logic.
Dưới đây là một ví dụ ngắn gọn về cách định nghĩa và đăng ký một callback tùy chỉnh để in tin nhắn vào cuối mỗi epoch huấn luyện bằng cách sử dụng Python API:
from ultralytics import YOLO
# Define a custom callback function
def on_train_epoch_end(trainer):
"""Callback function to execute at the end of each training epoch."""
print(f"Epoch {trainer.epoch + 1} complete. Current Fitness: {trainer.fitness}")
# Load the YOLO26 model (latest generation)
model = YOLO("yolo26n.pt")
# Register the custom callback to the model
model.add_callback("on_train_epoch_end", on_train_epoch_end)
# Train the model with the callback active
model.train(data="coco8.yaml", epochs=3)Link to this sectionCallbacks so với Hooks#
While related, it is helpful to distinguish callbacks from hooks. In frameworks like PyTorch, hooks are generally lower-level functions attached to specific tensor operations or neural network layers to inspect or modify gradients and outputs during the forward or backward pass. In contrast, callbacks are typically higher-level abstractions tied to the training loop events (start, end, batch processing) rather than the mathematical computation graph itself.
Link to this sectionĐọc thêm và Tài nguyên#
Đối với những ai muốn hiểu sâu hơn về cách tối ưu hóa quy trình huấn luyện, việc khám phá điều chỉnh siêu tham số (hyperparameter tuning) là bước tiếp theo hợp lý. Ngoài ra, việc hiểu các tác vụ thị giác máy tính (CV) cơ bản như phát hiện đối tượng (object detection) và phân đoạn đối tượng (instance segmentation) sẽ cung cấp bối cảnh về lý do tại sao việc kiểm soát huấn luyện chính xác thông qua callback lại cần thiết. Đối với quản lý cấp doanh nghiệp cho các quy trình này, Ultralytics Platform cung cấp các giải pháp tích hợp tự động hóa nhiều hành vi dựa trên callback này.






