Yolo 비전 선전
선전
지금 참여하기
용어집

콜백

콜백이 Ultralytics 훈련을 어떻게 최적화하는지 알아보세요. 조기 종료, 체크포인트 저장, 맞춤형 로깅을 구현하여 AI 워크플로우를 향상시키는 방법을 배워보세요.

소프트웨어 공학 및 인공지능(AI)콜백은 실행 가능한 코드 조각으로, 다른 코드에 인자로 전달되며 주어진 시점에 해당 인자를 실행(콜백)할 것으로 기대됩니다. 딥 러닝(DL) 개발자가 모델의 동작을 맞춤 설정할 수 있게 하는 핵심 도구입니다. 모델 훈련 루프의 동작을 핵심 훈련 코드 자체를 수정하지 않고도 맞춤화할 수 있게 해주는 필수 도구입니다. 이들은 훈련 과정의 다양한 단계(예: 에포크 시작 또는 종료)에서 특정 작업을 수행하는 자동화된 트리거 역할을 합니다. 에포크, 훈련 배치, 또는 전체 훈련 세션의 시작 또는 종료 시점과 같은 훈련 과정의 다양한 단계에서 특정 작업을 수행하는 자동화된 트리거 역할을 합니다.

머신 러닝에서 콜백의 역할

복잡한 신경망 훈련 훈련에는 몇 시간에서 며칠이 소요될 수 있습니다. 콜백 없이 훈련 과정은 완료될 때까지 실행되는 '블랙박스'와 같아 수동 감독이 필요한 경우가 많습니다. 콜백은 관측 가능성과 제어 기능을 도입하여 시스템이 실시간 성능 지표를 기반으로 자체 조절할 수 있게 합니다.

PyTorch와 같은 고수준 라이브러리를 사용할 때 PyTorch 이나 TensorFlow를 사용할 때, 콜백은 최적화 알고리즘에 로직을 주입하는 방법을 제공합니다. 예를 들어, 모델이 잘 학습하고 있다면 콜백이 현재 상태를 저장할 수 있습니다; 학습이 멈추면 콜백이 리소스를 절약하기 위해 프로세스를 중단할 수 있습니다. 이는 머신 러닝(ML) 워크플로우를 보다 효율적이고 견고하게 만듭니다.

일반적인 응용 분야 및 실제 사례

콜백은 다용도로 활용 가능하며 모델 모니터링 과정에서 다양한 작업에 사용될 수 있습니다. 모델 모니터링 및 최적화 과정에서 다양한 작업에 활용될 수 있습니다.

  • 조기 종료: 가장 흔한 용도 중 하나는 조기 중지입니다. 이 콜백은 검증 데이터 손실과 같은 특정 메트릭을 모니터링합니다. 손실이 설정된 에포크 수 동안 감소하지 않으면 콜백이 훈련을 중단합니다. 이는 과적합을 방지하여 모델이 훈련 데이터하는 것을 방지합니다.
  • 모델 체크포인트: 긴 훈련 과정에서 하드웨어 장애는 치명적일 수 있습니다. 체크포인트 콜백은 모델 가중치를 정기적으로 (예: 매 에포크마다) 또는 모델이 정확도 또는 평균 정밀도(mAP)과 같은 지표에서 새로운 "최고" 점수를 달성할 때만 수행할 수 있습니다. 이를 통해 항상 최고 성능 모델의 저장된 버전을 확보할 수 있습니다.
  • 학습률 스케줄링: 학습률 모델 가중치가 업데이트될 때마다 추정된 오차에 반응하여 모델이 얼마나 변화하는지를 제어합니다. 콜백은 이 속도를 동적으로 조정할 수 있으며, 학습이 정체될 때 이를 감소시켜 모델이 최적의 해에 수렴하도록 돕습니다. 이 기법은 흔히 학습률 감쇠이라고 부릅니다.
  • 로깅 및 시각화: 콜백은 실험 추적과 통합하기 위해 자주 사용됩니다. 실험 추적 도구와의 통합에 사용됩니다. 콜백은 TensorBoard 또는 MLflow와 같은 대시보드로 스트리밍하여 데이터 과학자가 손실 함수 및 성능 그래프를 실시간으로 시각화할 수 있도록 합니다.

Ultralytics YOLO 활용한 콜백 구현

Ultralytics 강력한 콜백 시스템을 지원하여 사용자가 모델 훈련 중 발생하는 이벤트에 연결할 수 있도록 합니다. YOLO26과 같은 모델 훈련 중 발생하는 이벤트에 연결할 수 있습니다. 이는 특히 Ultralytics 에서 사용자 지정 로깅이나 제어 로직이 필요한 경우에 특히 유용합니다.

아래는 Python 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)

콜백 vs. 훅

비록 관련이 있지만, 콜백과 훅(hook)구분하는 것이 유용합니다. PyTorch 같은 프레임워크에서 훅은 일반적으로 특정 텐서에 연결되는 저수준 함수입니다. tensor 연산이나 신경망 레이어에 부착되어 전파(forward pass) 또는 역전파(backward pass) 과정에서 기울기 및 출력을 검사하거나 수정합니다. 반면 콜백은 일반적으로 훈련 루프에 연결된 상위 수준의 추상화입니다. 훈련 루프 이벤트(시작, 종료, 배치 처리)에 연결된 고수준 추상화입니다.

추가 읽기 및 리소스

훈련 워크플로우 최적화 방법에 대한 이해를 심화하고자 하는 분들을 위해, 하이퍼파라미터 튜닝 은 논리적인 다음 단계입니다. 또한, 기반이 되는 컴퓨터 비전(CV) 작업들, 예를 들어 물체 탐지 객체 탐지인스턴스 분할 콜백을 통한 정밀한 훈련 제어의 필요성에 대한 맥락을 제공할 것입니다. 이러한 프로세스의 기업급 관리를 위해 Ultralytics 플랫폼은 Ultralytics 은 이러한 콜백 기반 동작의 상당 부분을 자동화하는 통합 솔루션을 제공합니다.

Ultralytics 커뮤니티 가입

AI의 미래에 동참하세요. 글로벌 혁신가들과 연결하고, 협력하고, 성장하세요.

지금 참여하기