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á cách các hàm gọi lại tối ưu hóa Ultralytics Khóa đào tạo YOLO26. Học cách triển khai dừng sớm, tạo điểm kiểm tra và ghi nhật ký tùy chỉnh để nâng cao quy trình làm 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) , hàm gọi lại (callback ) là một đoạn mã có thể thực thi được, được truyền làm đối số cho mã khác, và mã đó sẽ thực thi (gọi lại) đối số vào 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) , hàm gọi lại là công cụ thiết yếu cho phép các nhà phát triể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 hoạt động như các 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ư 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.

Vai trò của hàm gọi lại trong học máy

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í nhiều ngày. Nếu không có các hàm gọi lại (callback), quá trình huấn luyện về cơ bản là một "hộp đen" hoạt động cho đến khi hoàn thành, thường đòi hỏi sự giám sát thủ công. Các hàm gọi lại 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 , các hàm gọi lại (callback) cung cấp một cách để chèn logic vào thuật toán tối ưu hóa . Ví dụ, nếu mô hình đang học tốt, hàm gọi lại có thể lưu trạng thái hiện tại; nếu nó ngừng học, hàm gọi lại có thể 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 của máy học (ML) hiệu quả và mạnh mẽ hơn.

Các ứng dụng phổ biến và ví dụ thực tế

Các hàm gọi lại rất linh hoạt và có thể được sử dụng cho nhiều nhiệm vụ khác nhau trong quá trình giám sát và tối ưu hóa mô hình .

  • Dừng sớm: Một trong những cách sử dụng phổ biến nhất là dừng sớm . Hàm gọi lại này giám sát một chỉ số cụ thể, chẳng hạn như tổn thất dữ liệu xác thực . Nếu tổn thất ngừng giảm trong một số epoch nhất định, hàm gọi lại sẽ dừng quá trình huấn luyện. Điều này ngăn ngừa hiện tượng quá khớp , đảm bảo mô hình tổng quát hóa tốt với dữ liệu mới thay vì chỉ ghi nhớ dữ liệu huấn luyện .
  • Lưu trạng thái mô hình: Trong các chu kỳ huấn luyện dài, lỗi phần cứng có thể gây ra hậu quả nghiêm trọng. Chức năng lưu trạng thái sẽ lưu trọng số của mô hình theo định kỳ (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 hoặc độ chính xác 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 hoạt động tốt nhất.
  • Lập lịch tốc độ học: Tốc độ học kiểm soát mức độ thay đổi của mô hình khi phản hồi lại lỗi ước tính mỗi khi trọng số của mô hình được cập nhật. Một hàm gọi lại có thể điều chỉnh tốc độ này một cách linh hoạt, giảm tốc độ khi quá trình học đạt đến điểm bão hòa để 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à suy giảm tốc độ học .
  • Ghi nhật ký và trực quan hóa: Các hàm gọi lại thường đượ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 tải các chỉ số đế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 các hàm mất mát và biểu đồ hiệu suất trong thời gian thực.

Triển khai các hàm gọi lại với Ultralytics YOLO

Cái Ultralytics Thư viện hỗ trợ một hệ thống gọi lại 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 Nền tảng Ultralytics những người cần ghi nhật ký tùy chỉnh hoặc logic điều khiển.

Dưới đây là một ví dụ ngắn gọn về cách định nghĩa và đăng ký một hàm callback tùy chỉnh để in ra một thông báo vào cuối mỗi chu kỳ huấn luyện bằng cách sử dụng API Python :

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)

Hàm gọi lại (Callbacks) so với các điểm nhấn (Hooks)

Mặc dù có liên quan, nhưng việc phân biệt giữa callback và hook là rất hữu ích. Trong các framework như... PyTorch Các hook thường là các hàm cấp thấp đượ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 tiến hoặc truyền ngược. Ngược lại, các hàm gọi lại (callback) thường là các trừu tượng cấp cao hơn được gắn với các sự kiện của vòng lặp huấn luyện (bắt đầu, kết thúc, xử lý theo lô) 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 hiểu sâu hơn về cách tối ưu hóa quy trình huấn luyện, việc tìm hiểu về điều chỉnh siêu tham số là bước tiếp theo hợp lý. Thêm vào đó, 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ượngphân đoạn đối tượng 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 các hàm gọi lại là cần thiết. Để quản lý các quy trình này ở cấp doanh nghiệp, Nền tảng Ultralytics 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 hàm gọi lại này.

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