Callback
Khám phá cách callback tối ưu hóa quá trình huấn luyện Ultralytics YOLO26. Tìm hiểu cách triển khai early stopping, checkpointing và logging tùy chỉnh để nâng cao workflow AI.
Trong lĩnh vực kỹ thuật phần mềm và trí tuệ nhân tạo (AI), callback là một đoạn mã có thể thực thi được truyền làm đối số cho đoạn mã khác; đoạn mã đó sẽ thực thi (gọi lại) đối số này 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), callback là những công cụ thiết yếu cho phép developer tùy chỉnh hành vi của vòng lặp đào tạo model mà không cần sửa đổi chính mã đào tạo cốt lõi. Chúng hoạt động như các trigger tự động, thực hiện những hành động cụ thể tại nhiều giai đoạn khác nhau của quá trình đào tạo, chẳng hạn như khi bắt đầu hoặc kết thúc một epoch, một batch đào tạo hoặc toàn bộ phiên đào tạo.
Vai trò của Callback trong Machine Learning#
Việc đào tạo một mạng neural 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 đào tạo 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 giám sát thủ công. Callback bổ sung 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 metric hiệu năng theo thời gian thực.
Khi sử dụng các thư viện cấp cao như PyTorch hoặc TensorFlow, callback cung cấp một phương thức để chèn logic vào thuật toán tối ưu hóa. Ví dụ, nếu model đang học tốt, callback có thể lưu trạng thái hiện tại; nếu model ngừng học, callback có thể dừng quá trình để tiết kiệm tài nguyên. Điều này giúp workflow machine learning (ML) hiệu quả và mạnh mẽ hơn.
Các ứng dụng phổ biến và ví dụ trong thực tế#
Callback rất linh hoạt và có thể được sử dụng cho nhiều tác vụ trong quá trình giám sát model và tối ưu hóa.
- Early Stopping: Một trong những cách sử dụng phổ biến nhất là early stopping. Callback này giám sát một metric cụ thể, chẳng hạn như loss trên dữ liệu validation. Nếu loss không giảm trong một số epoch được thiết lập, callback sẽ dừng quá trình đào tạo. Điều này ngăn overfitting, đảm bảo model có khả năng tổng quát hóa tốt trên dữ liệu mới thay vì ghi nhớ dữ liệu đào tạo.
- Model Checkpointing: Trong các lần đào tạo kéo dài, sự cố phần cứng có thể gây hậu quả nghiêm trọng. Callback checkpointing lưu trọng số model theo các khoảng thời gian đều đặn (ví dụ: sau mỗi epoch) hoặc chỉ khi model đạt được điểm "tốt nhất" mới trên các metric như độ chính xác hoặc độ chính xác trung bình (mAP). Điều này đảm bảo bạn luôn có phiên bản đã lưu của model có hiệu năng tốt nhất.
- Learning Rate Scheduling: learning rate kiểm soát mức độ model thay đổi để phản hồi với lỗi ước tính mỗi khi trọng số model được cập nhật. Callback có thể điều chỉnh động learning rate này, giảm learning rate khi quá trình học bị chững lại để giúp model hội tụ đến nghiệm tối ưu; kỹ thuật này thường được gọi là learning rate decay.
- Logging và Visualization: Callback thường được sử dụng để tích hợp với các công cụ theo dõi experiment. Chúng truyền metric đến các dashboard như TensorBoard hoặc MLflow, cho phép data scientist trực quan hóa hàm loss và biểu đồ hiệu năng theo thời gian thực.
Triển khai Callback với Ultralytics YOLO#
Thư viện Ultralytics hỗ trợ một hệ thống callback mạnh mẽ, cho phép người dùng kết nối với các event trong quá trình đào tạo các model như YOLO26. Điều này đặc biệt hữu ích cho những người dùng quản lý workflow trên Ultralytics Platform và cần logic logging hoặc logic kiểm soát tùy chỉnh.
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 thông báo ở cuối mỗi epoch đào tạo bằ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)Callback và Hook#
Mặc dù có liên quan, việc phân biệt callback với hook là rất hữu ích. Trong các framework như PyTorch, hook thường là các hàm ở cấp thấp hơn, được gắn vào những phép toán tensor hoặc layer mạng neural cụ thể để kiểm tra hoặc sửa đổi gradient và output trong lượt truyền xuôi hoặc truyền ngược. Ngược lại, callback thường là các abstraction ở cấp cao hơn, gắn với các event của vòng lặp đào tạo (bắt đầu, kết thúc, xử lý batch) thay vì chính đồ thị tính toán toán học.
Tài liệu đọc thêm và tài nguyên#
Đối với những người muốn hiểu sâu hơn về cách tối ưu hóa workflow đào tạo, khám phá tinh chỉnh hyperparameter 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) nền tảng như phát hiện đối tượng và phân đoạn instance sẽ cung cấp bối cảnh để hiểu vì sao cần kiểm soát chính xác quá trình đào tạo thông qua callback. Đối với việc quản lý các quy trình này ở cấp enterprise, Ultralytics Platform cung cấp các giải pháp tích hợp giúp tự động hóa nhiều hành vi do callback điều khiển.









