Yolo Tầm nhìn Thâm Quyến
Thâm Quyến
Tham gia ngay
Bảng chú giải thuật ngữ

Gọi lại

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.

Cách thức hoạt động của hàm gọi 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.

Ứng dụng phổ biến trong AI

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) .

  • Dừng sớm : Một trong những ứng dụng quan trọng nhất là ngăn ngừa quá khớp . Lệnh gọi lại dừng sớm sẽ theo dõi tỷ lệ lỗi trên dữ liệu xác thực . Nếu hiệu suất của mô hình trì trệ hoặc giảm sút sau một số kỷ nguyên nhất định, lệnh gọi lại sẽ dừng huấn luyện ngay lập tức, giúp tiết kiệm thời gian và chi phí điện toán đám mây .
  • Lập lịch Tốc độ Học Động: Việc điều chỉnh kích thước bước của thuật toán tối ưu hóa là rất quan trọng để hội tụ. Các lệnh gọi lại có thể giảm tốc độ học khi phát hiện điểm dừng, cho phép mô hình ổn định ở một giải pháp tối ưu hơn.
  • Kiểm tra điểm kiểm tra mô hình: Để đảm bảo phiên bản tốt nhất của mô hình được bảo toàn, lệnh gọi lại điểm kiểm tra sẽ lưu trạng thái hệ thống bất cứ khi nào một số liệu quan trọng, chẳng hạn như Độ chính xác trung bình ( mAP ) , được cải thiện. Điều này rất quan trọng đối với các phiên đào tạo dài trên các tập dữ liệu lớn như ImageNet hoặc COCO .
  • Ghi nhật ký thử nghiệm: Việc tích hợp với các công cụ trực quan hóa như TensorBoard , ClearML hoặc MLflow thường được xử lý thông qua các lệnh gọi lại. Các công cụ này ghi lại đường cong mất mát, mức sử dụng phần cứng hệ thống và các dự đoán mẫu để phân tích sau.

Triển khai Gọi lại Tùy chỉnh

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)

Phân biệt với các khái niệm liên quan

Để 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.

  • Hook : Mặc dù "callback" và "hook" thường được dùng thay thế cho nhau, hook thường đề cập đến vị trí trong mã mà một hàm bên ngoài có thể được gắn vào (điểm chặn). Callback là hàm cụ thể do người dùng cung cấp để được thực thi tại hook đó.
  • Điều chỉnh siêu tham số : Các lệnh gọi lại hỗ trợ việc điều chỉnh (ví dụ: thông qua bộ lập lịch tốc độ học hoặc tích hợp với các thư viện như Ray Tune ), nhưng chúng không phải là quá trình điều chỉnh thực sự. Điều chỉnh liên quan đến việc tìm kiếm các giá trị cấu hình tối ưu, trong khi các lệnh gọi lại là cơ chế áp dụng các thay đổi hoặc theo dõi tiến trình trong quá trình tìm kiếm đó.
  • Tăng cường dữ liệu : Tăng cường sửa đổi dữ liệu đầu vào trước khi nó đến mạng. Trong khi một số pipeline nâng cao sử dụng callback để điều chỉnh cường độ tăng cường một cách linh hoạt (ví dụ: xác suất mosaic trong YOLOv5 ), tăng cường tiêu chuẩn thường là một phần của pipeline tải dữ liệu chứ không phải là một sự kiện vòng lặp huấn luyện.

Lợi ích thực tế

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ọ.

Tham gia Ultralytics cộng đồng

Tham gia vào tương lai của AI. Kết nối, hợp tác và phát triển cùng với những nhà đổi mới toàn cầu

Tham gia ngay