용어집

콜백

정확성, 유연성, 효율성을 개선하기 위해 모델 학습을 모니터링, 제어, 자동화하는 도구인 머신러닝에서 콜백의 필수적인 역할에 대해 알아보세요.

YOLO 모델을 Ultralytics HUB로 간단히
훈련

자세히 알아보기

콜백은 머신 러닝 모델 학습과 같은 대규모 프로세스를 실행하는 동안 특정 단계에서 실행되는 함수 또는 함수 집합입니다. AI 및 ML의 맥락에서 콜백은 내부 상태를 모니터링하고, 학습 루프의 동작에 영향을 미치며, 학습 프레임워크의 핵심 코드를 수정하지 않고도 작업을 자동화할 수 있는 강력한 메커니즘을 제공합니다. 콜백은 훈련 파이프라인의 후크 역할을 하여 개발자가 에포크, 배치 또는 전체 훈련 프로세스의 시작 또는 종료와 같이 미리 정의된 지점에서 사용자 지정 로직을 삽입할 수 있도록 합니다.

머신 러닝의 콜백 이해

모델 훈련 중에는 훈련 시작, 훈련 시작, 훈련 종료 등 다양한 이벤트가 순차적으로 발생합니다. epoch 가 시작되고, 배치가 처리되고, 유효성 검사가 수행되고, 에포크가 종료되고, 마지막으로 교육이 종료됩니다. 콜백을 사용하면 이러한 이벤트에 연결된 특정 작업을 트리거할 수 있습니다. 예를 들어, 유효성 검사 정확도가 향상될 때마다 모델의 가중치를 저장하고, 다음과 같은 시각화 도구에 메트릭을 기록할 수 있습니다. 텐서보드로 설정하거나 모델 개선이 멈추면 훈련을 조기에 중단하세요. 다음과 같은 프레임워크 Keras 및 다음과 같은 라이브러리 ultralytics Python 패키지는 유연성과 확장성을 제공하기 위해 콜백을 많이 활용합니다.

Ultralytics 콜백

Ultralytics 교육 엔진은 교육 중 다양한 지점에서 트리거되는 콜백 시스템을 제공합니다. 교육, 유효성 검사, 예측내보내기 프로세스. 이러한 이벤트에는 다음이 포함됩니다. on_train_start, on_epoch_end, on_fit_epoch_end (유효성 검사 포함), on_batch_end, on_train_end등 다양한 콜백을 사용할 수 있습니다. 사용자는 사용자 지정 콜백을 정의하여 상세 로깅, 알림 전송 또는 다음과 같은 플랫폼과의 상호 작용과 같은 작업을 수행할 수 있습니다. 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)


실제 애플리케이션

콜백을 사용하면 ML 모델 개발 중에 여러 가지 유용한 기능을 사용할 수 있습니다:

  • 모델 체크포인트: 주기적으로 또는 유효성 검사 데이터 세트의 성능이 향상될 때마다 모델(또는 가중치만)을 자동으로 저장합니다. 이렇게 하면 진행 상황을 잃지 않고 최상의 모델 버전을 검색할 수 있습니다. 프레임워크는 종종 이를 위한 기본 콜백을 제공합니다.
  • 조기 중지: 특정 지표(예: 유효성 검사 손실 또는 정확도)를 모니터링하고 미리 정의된 기간(인내) 동안 지표가 개선되지 않으면 학습 프로세스를 중지합니다. 이렇게 하면 과적합을 방지하고 계산 리소스를 절약할 수 있습니다.
  • 학습 속도 스케줄링: 학습 중 학습 속도를 동적으로 조정하는 기능입니다. 예를 들어, 모델의 개선이 정체될 때 학습 속도를 줄이면 모델이 더 효과적으로 수렴하는 데 도움이 될 수 있습니다.
  • 로깅 및 시각화: 로그 및 메트릭(예: 손실 및 정확도)을 TensorBoard와 같은 모니터링 도구 또는 다음과 같은 클라우드 플랫폼으로 전송합니다. Weights & Biases 와 같은 클라우드 플랫폼으로 로그를 전송하여 실시간 시각화 및 실험 추적을 할 수 있습니다. Ultralytics W&BComet ML을 위한 원활한 통합을 제공합니다.
  • 리소스 모니터링: 교육 중 하드웨어 사용률GPUCPU 사용량, 메모리)을 추적하여 병목 현상을 파악하거나 리소스 할당을 최적화하는 것으로, 특히 클라우드 컴퓨팅 환경에서 중요합니다.

콜백은 유연하고 자동화되며 관찰 가능한 머신 러닝 워크플로우를 만드는 데 기본이 되며, 개발자가 트레이닝 프로세스를 효율적으로 확장하고 사용자 지정할 수 있게 해줍니다. 일반적인 소프트웨어 이벤트 리스너와 약간 다른 점은 ML 트레이닝 및 평가의 특정 수명 주기 단계에 긴밀하게 통합되어 있다는 점입니다.

모두 보기