레이 튠을 통한 효율적인 하이퍼파라미터 튜닝 및 YOLO11
하이퍼파라미터 튜닝은 최적의 하이퍼파라미터 세트를 발견하여 최고의 모델 성능을 달성하는 데 필수적입니다. 여기에는 다양한 하이퍼파라미터로 테스트를 실행하고 각 테스트의 성능을 평가하는 작업이 포함됩니다.
Ultralytics YOLO11 및 레이 튠으로 튜닝을 가속화하세요.
Ultralytics YOLO11 는 하이퍼파라미터 튜닝을 위한 레이 튠을 통합하여 YOLO11 모델 하이퍼파라미터의 최적화를 간소화합니다. 레이 튠을 사용하면 고급 검색 전략, 병렬 처리, 조기 중지를 활용하여 튜닝 프로세스를 신속하게 진행할 수 있습니다.
레이 튠
레이 튠은 효율성과 유연성을 위해 설계된 하이퍼파라미터 튜닝 라이브러리입니다. 다양한 검색 전략, 병렬 처리, 조기 중지 전략을 지원하며 Ultralytics YOLO11 을 비롯한 인기 있는 머신 러닝 프레임워크와 원활하게 통합됩니다.
다음과의 통합 Weights & Biases
YOLO11 와 선택적으로 통합하여 Weights & Biases 와 선택적으로 통합할 수도 있습니다.
설치
필요한 패키지를 설치하려면 실행합니다:
설치
사용법
사용법
tune()
메서드 매개변수
그리고 tune()
메서드( YOLO11 )는 레이 튜닝을 통한 하이퍼파라미터 튜닝을 위한 사용하기 쉬운 인터페이스를 제공합니다. 튜닝 프로세스를 사용자 지정할 수 있는 여러 인수를 사용할 수 있습니다. 아래는 각 파라미터에 대한 자세한 설명입니다:
매개변수 | 유형 | 설명 | 기본값 |
---|---|---|---|
data |
str |
튜너를 실행할 데이터 세트 구성 파일(YAML 형식)입니다. 이 파일에는 학습 및 유효성 검사 데이터 경로와 기타 데이터 세트별 설정이 지정되어야 합니다. | |
space |
dict, optional |
레이 튠의 하이퍼파라미터 검색 공간을 정의하는 사전입니다. 각 키는 하이퍼파라미터 이름에 해당하며, 값은 튜닝 중에 탐색할 값의 범위를 지정합니다. 제공하지 않으면 YOLO11 다양한 하이퍼파라미터가 포함된 기본 검색 공간을 사용합니다. | |
grace_period |
int, optional |
레이 튠에서 ASHA 스케줄러의 에포크 단위 유예 기간입니다. 스케줄러는 이 에포크 수 이전에는 어떤 시험도 종료하지 않으므로 모델이 조기 중단을 결정하기 전에 최소한의 훈련을 할 수 있습니다. | 10 |
gpu_per_trial |
int, optional |
튜닝 중 평가판당 할당할 GPU 수입니다. 이는 특히 다중GPU 환경에서 GPU 사용량을 관리하는 데 도움이 됩니다. 제공되지 않으면 튜너는 사용 가능한 모든 GPU를 사용합니다. | 없음 |
iterations |
int, optional |
튜닝 중에 실행할 최대 트라이얼 횟수입니다. 이 매개변수는 테스트되는 총 하이퍼파라미터 조합 수를 제어하여 튜닝 프로세스가 무한정 실행되지 않도록 하는 데 도움이 됩니다. | 10 |
**train_args |
dict, optional |
에 전달할 추가 인수는 train() 메서드를 사용할 수 있습니다. 이러한 인수는 훈련 에포크 수와 같은 설정을 포함할 수 있습니다, 배치 크기및 기타 교육별 구성을 설정할 수 있습니다. |
{} |
이러한 파라미터를 사용자 지정하면 특정 요구 사항과 사용 가능한 컴퓨팅 리소스에 맞게 하이퍼파라미터 최적화 프로세스를 미세 조정할 수 있습니다.
기본 검색 공간 설명
다음 표에는 Ray Tune을 사용한 하이퍼파라미터 튜닝을 위한 기본 검색 공간 매개변수( YOLO11 )가 나와 있습니다. 각 매개변수에는 다음과 같이 정의된 특정 값 범위가 있습니다. tune.uniform()
.
매개변수 | 값 범위 | 설명 |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
초기 학습률 |
lrf |
tune.uniform(0.01, 1.0) |
최종 학습률 계수 |
momentum |
tune.uniform(0.6, 0.98) |
모멘텀 |
weight_decay |
tune.uniform(0.0, 0.001) |
체중 감소 |
warmup_epochs |
tune.uniform(0.0, 5.0) |
워밍업 에포크 |
warmup_momentum |
tune.uniform(0.0, 0.95) |
워밍업 모멘텀 |
box |
tune.uniform(0.02, 0.2) |
박스 감량 무게 |
cls |
tune.uniform(0.2, 4.0) |
클래스 감량 체중 |
hsv_h |
tune.uniform(0.0, 0.1) |
색조 확대 범위 |
hsv_s |
tune.uniform(0.0, 0.9) |
채도 증강 범위 |
hsv_v |
tune.uniform(0.0, 0.9) |
값(밝기) 확대 범위 |
degrees |
tune.uniform(0.0, 45.0) |
회전 확대 범위(도) |
translate |
tune.uniform(0.0, 0.9) |
번역 증강 범위 |
scale |
tune.uniform(0.0, 0.9) |
확장 범위 확대 |
shear |
tune.uniform(0.0, 10.0) |
전단 증강 범위(도) |
perspective |
tune.uniform(0.0, 0.001) |
원근 증강 범위 |
flipud |
tune.uniform(0.0, 1.0) |
수직 뒤집기 확대 확률 |
fliplr |
tune.uniform(0.0, 1.0) |
수평 뒤집기 확대 확률 |
mosaic |
tune.uniform(0.0, 1.0) |
모자이크 확대 확률 |
mixup |
tune.uniform(0.0, 1.0) |
믹스업 증강 확률 |
copy_paste |
tune.uniform(0.0, 1.0) |
복사-붙여넣기 확대 확률 |
사용자 지정 검색 공간 예제
이 예에서는 레이 튠과 YOLO11 을 사용하여 하이퍼파라미터 튜닝을 위한 사용자 지정 검색 공간을 사용하는 방법을 보여줍니다. 사용자 지정 검색 공간을 제공하면 관심 있는 특정 하이퍼파라미터에 튜닝 프로세스를 집중할 수 있습니다.
사용법
위의 코드 스니펫에서는 미리 학습된 가중치를 사용하여 YOLO 모델을 생성합니다. 그런 다음 tune()
메서드에 "coco8.yaml"로 데이터 세트 구성을 지정합니다. 초기 학습률에 대한 사용자 정의 검색 공간을 제공합니다. lr0
키 "lr0"과 값 tune.uniform(1e-5, 1e-1)
. 마지막으로, 에포크 수와 같은 추가 훈련 인수를 다음과 같이 튠 메서드에 직접 전달합니다. epochs=50
.
레이 튠 결과 처리
레이 튜닝으로 하이퍼파라미터 튜닝 실험을 실행한 후에는 얻은 결과에 대해 다양한 분석을 수행해야 할 수 있습니다. 이 가이드에서는 이러한 결과를 처리하고 분석하는 일반적인 워크플로를 안내합니다.
디렉토리에서 튜닝 실험 결과 로드
튜닝 실험을 실행한 후 tuner.fit()
를 사용하면 디렉토리에서 결과를 로드할 수 있습니다. 이 기능은 특히 초기 교육 스크립트가 종료된 후 분석을 수행하는 경우에 유용합니다.
experiment_path = f"{storage_path}/{exp_name}"
print(f"Loading results from {experiment_path}...")
restored_tuner = tune.Tuner.restore(experiment_path, trainable=train_mnist)
result_grid = restored_tuner.get_results()
기본 실험 수준 분석
평가판이 어떻게 수행되었는지에 대한 개요를 확인하세요. 평가판 중에 오류가 있었는지 빠르게 확인할 수 있습니다.
기본 평가판 수준 분석
개별 평가판 하이퍼파라미터 구성 및 마지막으로 보고된 지표에 액세스합니다.
for i, result in enumerate(result_grid):
print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")
평가판에 대해 보고된 지표의 전체 기록 플로팅하기
각 평가판에 대해 보고된 지표의 기록을 플로팅하여 시간이 지남에 따라 지표가 어떻게 변화했는지 확인할 수 있습니다.
import matplotlib.pyplot as plt
for i, result in enumerate(result_grid):
plt.plot(
result.metrics_dataframe["training_iteration"],
result.metrics_dataframe["mean_accuracy"],
label=f"Trial {i}",
)
plt.xlabel("Training Iterations")
plt.ylabel("Mean Accuracy")
plt.legend()
plt.show()
요약
이 문서에서는 Ultralytics 을 사용하여 레이 튠으로 실행한 실험의 결과를 분석하는 일반적인 워크플로우를 다루었습니다. 주요 단계에는 디렉토리에서 실험 결과를 로드하고, 기본 실험 수준 및 시험 수준 분석을 수행하고, 메트릭을 플로팅하는 것이 포함됩니다.
레이튠의 결과 분석 문서 페이지에서 하이퍼파라미터 튜닝 실험을 최대한 활용하기 위한 자세한 내용을 살펴보세요.
자주 묻는 질문
레이 튠을 사용하여 YOLO11 모델의 하이퍼파라미터를 조정하려면 어떻게 해야 하나요?
레이 튜닝을 사용하여 Ultralytics YOLO11 모델의 하이퍼파라미터를 튜닝하려면 다음 단계를 따르세요:
-
필요한 패키지를 설치합니다:
-
YOLO11 모델을 로드하고 튜닝을 시작합니다:
레이 튠의 고급 검색 전략과 병렬 처리를 활용하여 모델의 하이퍼파라미터를 효율적으로 최적화합니다. 자세한 내용은 레이 튠 설명서를 참조하세요.
레이 튠을 사용한 YOLO11 튜닝의 기본 하이퍼파라미터는 무엇인가요?
Ultralytics YOLO11 는 레이 튠 튜닝에 다음과 같은 기본 하이퍼파라미터를 사용합니다:
매개변수 | 값 범위 | 설명 |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
초기 학습률 |
lrf |
tune.uniform(0.01, 1.0) |
최종 학습률 계수 |
momentum |
tune.uniform(0.6, 0.98) |
모멘텀 |
weight_decay |
tune.uniform(0.0, 0.001) |
체중 감소 |
warmup_epochs |
tune.uniform(0.0, 5.0) |
워밍업 에포크 |
box |
tune.uniform(0.02, 0.2) |
박스 감량 무게 |
cls |
tune.uniform(0.2, 4.0) |
클래스 감량 체중 |
hsv_h |
tune.uniform(0.0, 0.1) |
색조 확대 범위 |
translate |
tune.uniform(0.0, 0.9) |
번역 증강 범위 |
이러한 하이퍼파라미터는 특정 요구사항에 맞게 사용자 지정할 수 있습니다. 전체 목록과 자세한 내용은 하이퍼파라미터 튜닝 가이드를 참조하세요.
YOLO11 모델 튜닝에 Weights & Biases 을 통합하려면 어떻게 해야 하나요?
Weights & Biases (W&B)를 Ultralytics YOLO11 튜닝 프로세스와 통합하려면:
-
W&B를 설치합니다:
-
튜닝 스크립트를 수정합니다:
이 설정을 통해 튜닝 프로세스를 모니터링하고, 하이퍼파라미터 구성을 추적하고, W&B에서 결과를 시각화할 수 있습니다.
하이퍼파라미터 최적화를 위해 레이 튠을 사용해야 하는 이유 YOLO11?
레이 튠은 하이퍼파라미터 최적화를 위한 다양한 이점을 제공합니다:
- 고급 검색 전략: 효율적인 매개변수 검색을 위해 베이지안 최적화 및 HyperOpt와 같은 알고리즘을 활용합니다.
- 병렬 처리: 여러 번의 시험 실행을 병렬로 지원하여 튜닝 프로세스의 속도를 크게 높입니다.
- 조기 종료: ASHA와 같은 전략을 사용하여 실적이 저조한 실험을 조기에 종료하여 컴퓨팅 리소스를 절약합니다.
레이 튠은 하이퍼파라미터를 효과적으로 튜닝할 수 있는 사용하기 쉬운 인터페이스를 제공하여 Ultralytics YOLO11 원활하게 통합됩니다. 시작하려면 하이퍼파라미터 튜닝 가이드를 확인하세요.
YOLO11 하이퍼파라미터 튜닝을 위한 사용자 지정 검색 공간을 정의하려면 어떻게 해야 하나요?
레이 튜닝으로 YOLO11 하이퍼파라미터 튜닝을 위한 사용자 지정 검색 공간을 정의하려면:
from ray import tune
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
search_space = {"lr0": tune.uniform(1e-5, 1e-1), "momentum": tune.uniform(0.6, 0.98)}
result_grid = model.tune(data="coco8.yaml", space=search_space, use_ray=True)
이렇게 하면 튜닝 프로세스 중에 탐색할 초기 학습 속도 및 운동량과 같은 하이퍼파라미터의 범위를 사용자 지정할 수 있습니다. 고급 구성에 대해서는 사용자 지정 검색 공간 예제 섹션을 참조하세요.