Thuật ngữ

Gọi lại

Khám phá vai trò thiết yếu của lệnh gọi lại trong học máy—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ả.

Xe lửa YOLO mô hình đơn giản
với Ultralytics TRUNG TÂM

Tìm hiểu thêm

Callback là các hàm hoặc tập hợp các hàm được thực thi ở các giai đoạn cụ thể trong quá trình thực thi một quy trình lớn hơn, chẳng hạn như đào tạo mô hình học máy. Trong bối cảnh AI và ML, các callback cung cấp một cơ chế mạnh mẽ để giám sát các trạng thái nội bộ, ảnh hưởng đến hành vi của vòng lặp đào tạo và tự động hóa các hành động mà không cần sửa đổi mã cốt lõi của khuôn khổ đào tạo. Chúng hoạt động như các móc vào đường ống đào tạo, cho phép các nhà phát triển đưa logic tùy chỉnh vào các điểm được xác định trước như đầu hoặc cuối của một kỷ nguyên, lô hoặc toàn bộ quy trình đào tạo.

Hiểu về Callback trong Machine Learning

Trong quá trình đào tạo mô hình, nhiều sự kiện khác nhau diễn ra tuần tự: bắt đầu đào tạo, một thời đại bắt đầu, một lô được xử lý, xác thực diễn ra, một kỷ nguyên kết thúc và cuối cùng, quá trình đào tạo kết thúc. Các lệnh gọi lại cho phép bạn kích hoạt các hành động cụ thể liên quan đến các sự kiện này. Ví dụ, bạn có thể muốn lưu trọng số của mô hình bất cứ khi nào độ chính xác xác thực được cải thiện, hãy ghi số liệu vào một công cụ trực quan hóa như Bảng TensorBoardhoặc dừng đào tạo sớm nếu mô hình ngừng cải thiện. Các khuôn khổ như Keras và các thư viện như ultralytics Python gói sử dụng nhiều lệnh gọi lại để cung cấp tính linh hoạt và khả năng mở rộng.

Gọi lại trong Ultralytics

Các Ultralytics công cụ đào tạo cung cấp một hệ thống các cuộc gọi lại được kích hoạt tại nhiều thời điểm khác nhau trong đào tạo, xác thực, dự đoán, Và xuất khẩu các quá trình. Những sự kiện này bao gồm on_train_start, on_epoch_end, on_fit_epoch_end (bao gồm xác thực), on_batch_end, on_train_endvà nhiều thứ khác. Người dùng có thể xác định các lệnh gọi lại tùy chỉnh để thực hiện các hành động như ghi nhật ký chi tiết, gửi thông báo hoặc tương tác với các nền tảng như Ultralytics HUB.

from ultralytics import YOLO
from ultralytics.engine.callbacks import BaseCallback

# Define a simple custom callback

class MyCallback(BaseCallback):
def on_epoch_end(self, trainer): # This code will run at the end of each epoch
print(f"Epoch {trainer.epoch + 1} finished.") # Example: Access metrics like validation loss
if trainer.metrics:
val_loss = trainer.metrics.get('val/loss', None) # Example metric key, adjust as needed
if val_loss is not None:
print(f"Validation loss: {val_loss:.4f}")

# Load a model

model = YOLO('yolov8n.yaml').load('yolov8n.pt') # build from YAML and transfer weights

# Initialize your callback

my_callback = MyCallback()

# Add the callback to the training process

# Note: Direct addition via API might vary; often done via configuration or extending Trainer

# For demonstration, assume a mechanism exists like adding to a list or overriding methods.

# In Ultralytics, callbacks are often managed internally or via specific integrations.

# A conceptual example of how one might use it if Trainer exposed callbacks directly:

# trainer.add_callback(my_callback) # Hypothetical method

# Train the model (the callback methods are triggered automatically by the Trainer)

# The actual mechanism involves the Trainer checking for registered callbacks for specific events.

try: # This is a simplified representation. Callbacks are typically integrated deeper. # We can simulate adding callback logic by overriding trainer methods or using signals if available. # The Ultralytics framework automatically handles registered internal and integration callbacks. # To add custom behaviour like this, you might need to modify the source or use provided extension points.
print("Training started (callback logic would be triggered internally)...") # Example: Manually trigger for demonstration if needed for testing callback logic # my_callback.on_epoch_end(trainer_mock_object)
results = model.train(data='coco128.yaml', epochs=3, imgsz=640) # Training triggers internal events
print("Training finished.")

except Exception as e:
print(f"An error occurred: {e}")

# Example of using an existing integration callback (e.g., TensorBoard)

# This is usually enabled via arguments or configuration:

# results = model.train(data='coco128.yaml', epochs=3, imgsz=640, tensorboard=True)


Ứng dụng trong thế giới thực

Các lệnh gọi lại cho phép thực hiện nhiều chức năng hữu ích trong quá trình phát triển mô hình ML:

  • Model Checkpointing: Tự động lưu mô hình (hoặc chỉ trọng số của mô hình) theo định kỳ hoặc bất cứ khi nào hiệu suất trên tập dữ liệu xác thực được cải thiện. Điều này đảm bảo bạn không mất tiến trình và có thể truy xuất phiên bản tốt nhất của mô hình. Các khuôn khổ thường cung cấp các lệnh gọi lại tích hợp cho việc này.
  • Dừng sớm: Theo dõi một số liệu cụ thể (ví dụ: mất xác thực hoặc độ chính xác ) và dừng quá trình đào tạo nếu số liệu ngừng cải thiện trong một số kỷ nguyên được xác định trước (kiên nhẫn). Điều này ngăn ngừa quá trình lắp quá mức và tiết kiệm tài nguyên tính toán.
  • Lên lịch tốc độ học: Điều chỉnh tốc độ học một cách động trong quá trình đào tạo. Ví dụ, giảm tốc độ học khi mô hình đạt đến ngưỡng cải thiện có thể giúp mô hình hội tụ hiệu quả hơn.
  • Ghi nhật ký và trực quan hóa: Gửi nhật ký và số liệu (như mất mát và độ chính xác) đến các công cụ giám sát như TensorBoard hoặc các nền tảng đám mây như Weights & Biases để trực quan hóa thời gian thực và theo dõi thử nghiệm. Ultralytics cung cấp khả năng tích hợp liền mạch cho W&BComet ML .
  • Giám sát tài nguyên: Theo dõi việc sử dụng phần cứng ( GPU / CPU sử dụng, bộ nhớ) trong quá trình đào tạo để xác định điểm nghẽn hoặc tối ưu hóa việc phân bổ tài nguyên, đặc biệt quan trọng trong môi trường điện toán đám mây .

Callback là cơ bản để tạo ra các quy trình học máy linh hoạt, tự động và có thể quan sát được, cho phép các nhà phát triển mở rộng và tùy chỉnh các quy trình đào tạo một cách hiệu quả. Chúng hơi khác so với các trình lắng nghe sự kiện phần mềm chung ở chỗ được tích hợp chặt chẽ vào các giai đoạn vòng đời cụ thể của đào tạo và đánh giá ML.

Đọc tất cả