Khám phá vai trò thiết yếu của các callback trong machine learning — các công cụ giám sát, kiểm soát và tự động hóa quá trình đào tạo mô hình để cải thiện độ chính xác, tính linh hoạt và hiệu quả.
Trong học máy (ML) , callback là một hàm hoặc khối mã đa năng được thiết kế để chạy tự động ở các giai đoạn cụ thể của quy trình tính toán. Trong bối cảnh huấn luyện mạng nơ-ron (NN) , callback đóng vai trò như "móc nối" tương tác với vòng đời huấn luyện để thực hiện các hành động như ghi nhật ký số liệu, lưu kết quả trung gian hoặc điều chỉnh các tham số điều khiển. Bằng cách tách các tác vụ phụ trợ này khỏi vòng lặp huấn luyện chính, các nhà phát triển có thể tạo ra các quy trình làm việc dạng mô-đun, dễ đọc và có thể tùy chỉnh cao mà không cần sửa đổi thuật toán cốt lõi.
Một quy trình huấn luyện điển hình lặp lại một tập dữ liệu trong một số lần lặp nhất định, được gọi là epoch (kỷ nguyên ). Trong chu kỳ này, hệ thống thực hiện các lần lặp tiến để đưa ra dự đoán và lan truyền ngược để cập nhật trọng số mô hình . Các lệnh gọi lại can thiệp vào các "sự kiện" được xác định trước trong vòng lặp này—chẳng hạn như bắt đầu huấn luyện, kết thúc một lô hoặc hoàn thành một kỷ nguyên.
Đối tượng Trainer trong các khuôn khổ như Ultralytics quản lý các sự kiện này. Khi một sự kiện cụ thể xảy ra, trình huấn luyện sẽ thực thi bất kỳ hàm gọi lại nào đã đăng ký, truyền cho chúng trạng thái hiện tại của mô hình. Cơ chế này là nền tảng của MLOps hiện đại, cho phép quan sát theo thời gian thực và can thiệp tự động.
Lệnh gọi lại là không thể thiếu để tối ưu hóa hiệu suất và sử dụng tài nguyên trong học sâu (DL) .
Các ultralytics thư viện cung cấp một API đơn giản để đính kèm các lệnh gọi lại tùy chỉnh vào các mô hình như
YOLO11. Điều này cho phép người dùng đưa logic cụ thể, chẳng hạn như in cập nhật trạng thái hoặc tương tác với API bên ngoài, trực tiếp vào quy trình đào tạo.
Ví dụ sau đây minh họa cách thêm lệnh gọi lại đơn giản để in thông báo xác nhận vào cuối mỗi kỷ nguyên đào tạo:
from ultralytics import YOLO
def on_train_epoch_end(trainer):
"""Callback function to print the current epoch number after it finishes."""
print(f"Custom Callback: Epoch {trainer.epoch + 1} completed successfully.")
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Register the custom callback for the 'on_train_epoch_end' event
model.add_callback("on_train_epoch_end", on_train_epoch_end)
# Train the model with the registered callback
model.train(data="coco8.yaml", epochs=2)
Để sử dụng lệnh gọi lại một cách hiệu quả, cần phân biệt chúng với các thuật ngữ tương tự trong kỹ thuật phần mềm và khoa học dữ liệu.
Việc sử dụng callback trực tiếp chuyển thành các tác nhân và ứng dụng AI mạnh mẽ và hiệu quả hơn. Ví dụ, trong xe tự hành , các mô hình đào tạo đòi hỏi phải xử lý một lượng lớn dữ liệu cảm biến. Callback cho phép các kỹ sư tự động chụp nhanh các mô hình hoạt động tốt nhất trong các trường hợp khó mà không cần giám sát thủ công. Tương tự, trong phân tích hình ảnh y tế , callback có thể kích hoạt cảnh báo hoặc ghi nhật ký mở rộng nếu mô hình bắt đầu ghi nhớ dữ liệu bệnh nhân (quá khớp) thay vì học các tính năng tổng quát, đảm bảo độ tin cậy cao cho việc triển khai lâm sàng.
Bằng cách tận dụng các lệnh gọi lại, các nhà phát triển sử dụng các khung như PyTorch hoặc TensorFlow có thể xây dựng các hệ thống tự điều chỉnh giúp tiết kiệm thời gian, giảm lỗi và tối đa hóa hiệu suất của các giải pháp thị giác máy tính (CV) của họ.