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 tham số cho đoạn mã khác, sau đó đoạn mã này sẽ thực thi (gọi lại) tham 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), callback là các 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 chính mã nguồn huấn luyện cốt lõi. Chúng đóng vai trò là trình kích hoạt tự động thực hiện các hành động cụ thể ở các giai đoạn khác nhau của quá trình huấn luyện, chẳng hạn như điểm bắt đầu hoặc kết thúc của một epoch, một batch huấn luyện hoặc toàn bộ phiên huấn luyện.
Vai trò của Callbacks trong Machine Learning#
Việc huấn luyện một mạng nơ-ron 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 thành, thường đòi hỏi sự giám sát thủ công. 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 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 cách thức để 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, callback có thể lưu trạng thái hiện tại; nếu mô hình ngừng học, callback có thể tạm dừng quá trình để tiết kiệm tài nguyên. Điều này làm cho quy trình làm việc học máy (ML) trở nên hiệu quả và mạnh mẽ hơn.
Các ứng dụng phổ biến và ví dụ 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 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à early stopping. Callback này theo dõi một chỉ số cụ thể, chẳng hạn như độ mất mát trên dữ liệu xác thực. Nếu độ mất mát không giảm trong một số lượng epoch được thiết lập, callback sẽ dừng quá trình huấn luyện. Điều này ngăn chặn tình trạng overfitting, đảm bảo mô hình khái quát hóa tốt với dữ liệu mới thay vì ghi nhớ dữ liệu huấn luyện.
- Model Checkpointing: Trong các đợt huấn luyện dài, lỗi phần cứng có thể gây thảm họa. Callback checkpointing lưu trọng số mô hình theo các khoảng thời gian đều đặn (ví dụ: mỗi epoch) hoặc chỉ khi mô hình đạt được điểm số "tốt nhất" mới trên các chỉ số như độ chính xác (accuracy) hoặc mean average precision (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 hoạt động hiệu quả nhất.
- Learning Rate Scheduling: Tốc độ học (learning rate) kiểm soát mức độ thay đổi của mô hình để đáp ứng lại sai số ước tính mỗi khi trọng số mô hình được cập nhật. Callback có thể điều chỉnh động tốc độ này, giảm xuống khi quá trình học 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 (Logging and Visualization): 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. Chúng truyền các chỉ số trực tuyến đến các bảng điều khiển như TensorBoard hoặc MLflow, cho phép các nhà khoa học dữ liệu trực quan hóa hàm mất mát (loss function) và các biểu đồ hiệu suất theo thời gian thực.
Triển khai Callbacks với Ultralytics YOLO#
Thư viện Ultralytics hỗ trợ hệ thống callback mạnh mẽ, cho phép người dùng can thiệp vào các sự kiện trong quá trình huấn luyện các mô hình như YOLO26. Điều này đặc biệt hữu ích cho những người dùng quản lý quy trình làm việc trên Ultralytics Platform, những người cần logic ghi nhật ký hoặc điều khiển 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 custom callback in ra một thông bá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)Callbacks so với Hooks#
Tuy 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 các phép toán tensor cụ thể hoặc các lớp mạng nơ-ron để kiểm tra hoặc sửa đổi gradient và đầu ra trong quá trình truyền xuôi hoặc truyền ngược. Ngược lại, callback thường là cácừu tượng hóa cấp cao hơn gắn liền với các sự kiện trong vòng lặp huấn luyện (bắt đầu, kết thúc, xử lý batch) chứ không phải là đồ thị tính toán toán học.
Đọc thêm và Tài nguyên#
Đối với những ai muốn đào sâu sự hiểu biết về cách tối ưu hóa quy trình huấn luyện, việc khám phá tinh chỉnh siêu tham số (hyperparameter tuning) là bước đi logic tiếp theo. 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 (object detection) và phân đoạn thể hiện (instance segmentation) sẽ cung cấp ngữ cảnh lý do tại sao việc kiểm soát huấn luyện chính xác thông qua callback là cần thiết. Đối với việc quản lý các quy trình này ở cấp độ doanh nghiệp, 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.






