Ultralytics YOLO 하이퍼파라미터 튜닝 가이드#
Ultralytics YOLO의 하이퍼파라미터 튜닝은 학습률, 손실 가중치, 증강 강도와 같은 설정을 최적화하여 정확도, 정밀도, 재현율과 같은 머신러닝 모델의 성능 지표를 최대화하는 자동화된 반복 검색입니다. 이러한 값을 수동으로 테스트하는 대신, Ultralytics YOLO는 유전 알고리즘을 사용하여 하이퍼파라미터 공간을 탐색하고 여러 번의 짧은 학습 실행을 통해 후보 구성을 변이하고 평가합니다.
Watch: How to Tune Hyperparameters for Better Model Performance 🚀
하이퍼파라미터란 무엇인가요?#
하이퍼파라미터는 알고리즘을 위한 상위 수준의 구조적 설정입니다. 학습 단계 전에 설정되며 학습 중에는 일정하게 유지됩니다. 다음은 Ultralytics YOLO에서 일반적으로 튜닝하는 하이퍼파라미터입니다.
- 학습률
lr0: 손실 함수의 최솟값을 향해 이동할 때 각 반복에서의 단계 크기를 결정합니다. - 배치 크기
batch: 순전파에서 동시에 처리되는 이미지 수입니다. - 에포크 수
epochs: 에포크는 모든 학습 예제에 대해 순전파와 역전파를 한 번씩 완료하는 과정입니다. - 아키텍처 세부 사항: 채널 수, 레이어 수, 활성화 함수 유형 등이 해당합니다. 이러한 설정은 학습 인자가 아니라 모델 YAML 구성에 포함됩니다.
이 네 가지 중 기본 검색 공간에 포함되는 것은 학습률뿐입니다. batch, epochs, 아키텍처는 고정된 상태로 유지됩니다. 튜너는 또한 아래에 나열된 스케줄, 손실 게인, 증강을 변이합니다.
YOLO26에서 사용되는 증강 하이퍼파라미터의 전체 목록은 구성 페이지를 참조하세요.
유전적 진화 및 변이#
Ultralytics YOLO는 하이퍼파라미터를 최적화하기 위해 유전 알고리즘을 사용합니다. 유전 알고리즘은 자연 선택과 유전학의 메커니즘에서 영감을 얻었습니다.
- 선택: 각 반복에서는 적합도에 따라 가중치를 적용하여 적합도가 가장 높은 최대 9개의 구성 중 하나를 선택합니다. 30개의 결과가 쌓이면 모든 결과 중 상위 20%(최대 30개)에서 매개변수 공분산도 추정하며, 엘리트 데이터가 누적될수록 그 영향력이 커집니다.
- 변이: 각 반복에서는 검색 범위에 맞게 정규화된 가우시안 단계로 매개변수의 약 절반을 변이합니다. 공분산이 활성화되면 최대 40%를 신뢰도에 따라 가중된 비율로 상관 단계에 사용하며, 반사 방식을 통해 해당 단계가 범위 내로 돌아오도록 하여 클리핑된 값이 누적되지 않게 합니다. 개선 없이 시도가 누적되면 25회 시도 동안 단계 크기가 최대 20%까지 선형적으로 줄어들고, 새로운 최적 결과가 발견되면 초기화됩니다. 반복 1에는 부모가 없으며 기본 학습 하이퍼파라미터를 기준으로 사용합니다.
하이퍼파라미터 튜닝 준비#
튜닝 프로세스를 시작하기 전에 다음 사항을 확인하는 것이 중요합니다.
- 지표 식별: 내장 튜너(
use_ray=False)는 작업의fitness점수를 기준으로 trial의 순위를 정하고,use_ray=True는 작업 지표를 사용합니다. AP50 또는 F1-score와 같이 검사할 보조 지표를 결정하세요. - 튜닝 예산 설정: 할당할 컴퓨팅 리소스의 규모를 정의하세요. 하이퍼파라미터 튜닝은 계산 집약적일 수 있습니다.
튜닝 루프의 작동 방식#
각 반복에서 내장 튜너는 다음 루프를 반복합니다.
- 하이퍼파라미터 초기화 — Ultralytics YOLO가 설정한 기본 하이퍼파라미터 또는 도메인 지식이나 이전 실험을 바탕으로 한 값 등 합리적인 기준점에서 시작합니다.
- 하이퍼파라미터 변이 —
Tuner클래스는_mutate메서드를 사용하여 기존 세트에서 새로운 하이퍼파라미터 세트를 자동으로 생성합니다. - 모델 학습 — 변이된 하이퍼파라미터를 사용하여 학습한 다음 선택한 지표로 학습 성능을 평가합니다.
- 모델 평가 — 평가 프로세스는 해당 반복의 적합도 점수를 생성합니다. 이 점수를 이전 반복과 비교하여 현재 하이퍼파라미터가 개선되었는지 판단합니다.
- 결과 기록 — 향후 참조를 위해 성능 지표와 해당 하이퍼파라미터를 모두 기록합니다. Ultralytics YOLO는 이러한 결과를 NDJSON 형식으로 자동 저장합니다.
- 반복 — 설정한 반복 횟수에 도달할 때까지 계속하며, 각 반복은 이전 실행에서 얻은 지식을 바탕으로 진행됩니다. 내장 튜너는 모든
iterations을 실행하고, Ray Tune은 각 fit 에포크 후 지표를 보고하므로 ASHA가 유예 기간 후 성능이 낮은 trial을 중지할 수 있습니다.
반복 횟수 및 모집단 크기#
내장 튜너(use_ray=False)에서 iterations은 순차 trial의 총 횟수를 제어하며 기본값은 300입니다. 각 trial은 하나의 하이퍼파라미터 구성으로 하나의 모델을 학습합니다. 예를 들어 iterations=40와 epochs=50을 함께 사용하면 50 에포크 학습을 40회 독립적으로 실행하도록 예약하며, 40개의 후보로 구성된 별도의 모집단을 사용하여 50 에포크를 한 번 실행하는 것이 아닙니다.
내장 유전 알고리즘에는 명시적인 모집단 크기 매개변수가 없습니다. 이전 trial이 존재하면 적합도가 가장 높은 최대 9개의 구성 중에서 선택하고 반복마다 하나의 후보를 변이합니다.
병렬 trial 또는 더 고급 검색 전략을 사용하려면 use_ray=True을 설정하여 Ray Tune을 사용하세요. Ray Tune은 동일하게 기본 300개 trial을 사용하고 iterations을 num_samples로 전달받습니다. 자세한 내용은 Ray Tune 통합 가이드를 참조하세요.
기본 검색 공간#
다음 표에는 YOLO26의 하이퍼파라미터 튜닝을 위한 기본 검색 공간 매개변수가 나와 있습니다. 각 매개변수에는 튜플 (min, max)로 정의된 특정 값 범위가 있습니다.
| 매개변수 | 유형 | 값 범위 | 설명 |
|---|---|---|---|
lr0 | float | (1e-5, 1e-2) | 학습 시작 시의 초기 학습률입니다. 값이 낮으면 학습이 더 안정적이지만 수렴이 느려집니다. |
lrf | float | (0.01, 1.0) | lr0의 비율로 나타낸 최종 학습률 계수입니다. 학습 중 학습률이 감소하는 정도를 제어합니다. |
momentum | float | (0.7, 0.98) | SGD 모멘텀 계수입니다. 값이 높으면 일관된 그래디언트 방향을 유지하는 데 도움이 되며 수렴을 가속할 수 있습니다. |
weight_decay | float | (0.0, 0.001) | 과적합을 방지하기 위한 L2 정규화 계수입니다. 값이 클수록 더 강한 정규화를 적용합니다. |
warmup_epochs | float | (0.0, 5.0) | 선형 학습률 워밍업을 위한 에포크 수입니다. 초기 학습 불안정을 방지하는 데 도움이 됩니다. |
warmup_momentum | float | (0.0, 0.95) | 워밍업 단계의 초기 모멘텀입니다. 최종 모멘텀 값까지 점진적으로 증가합니다. |
box | float | (1.0, 20.0) | 전체 손실 함수에서 BBox 손실의 가중치입니다. 박스 회귀와 분류 사이의 균형을 조정합니다. |
cls | float | (0.1, 4.0) | 전체 손실 함수에서 분류 손실의 가중치입니다. 값이 높을수록 올바른 클래스 예측을 강조합니다. |
cls_pw | float | (0.0, 1.0) | 클래스 불균형을 처리하기 위한 클래스 가중치 지수입니다. 값이 높을수록 희소 클래스에 더 큰 가중치를 부여합니다. |
dfl | float | (0.4, 12.0) | 박스 거리 회귀 항의 가중치입니다. DFL-free YOLO26은 이 게인을 정규화된 박스 거리에 대한 L1 손실에 적용하며, 값이 높을수록 정확한 위치 추정을 강조합니다. |
hsv_h | float | (0.0, 0.1) | HSV 색상 공간에서 무작위 색조 증강 범위입니다. 모델이 색상 변화에 걸쳐 일반화하는 데 도움이 됩니다. |
hsv_s | float | (0.0, 0.9) | HSV 공간에서 무작위 채도 증강 범위입니다. 다양한 조명 조건을 시뮬레이션합니다. |
hsv_v | float | (0.0, 0.9) | 무작위 명도(밝기) 증강 범위입니다. 모델이 다양한 노출 수준을 처리하는 데 도움이 됩니다. |
degrees | float | (0.0, 45.0) | 최대 회전 증강 각도입니다. 모델이 객체 방향에 불변성을 갖도록 돕습니다. |
translate | float | (0.0, 0.9) | 이미지 크기에 대한 비율로 나타낸 최대 이동 증강입니다. 객체 위치 변화에 대한 강건성을 향상합니다. |
scale | float | (0.0, 0.95) | 무작위 스케일링 증강 범위입니다. 모델이 다양한 크기의 객체를 탐지하는 데 도움이 됩니다. |
shear | float | (0.0, 10.0) | 최대 전단 증강 각도입니다. 학습 이미지에 원근감과 유사한 왜곡을 추가합니다. |
perspective | float | (0.0, 0.001) | 무작위 원근 증강 범위입니다. 다양한 시점을 시뮬레이션합니다. |
flipud | float | (0.0, 1.0) | 학습 중 수직 이미지 플립을 적용할 확률입니다. 상공 또는 항공 이미지에 유용합니다. |
fliplr | float | (0.0, 1.0) | 수평 이미지 플립을 적용할 확률입니다. 모델이 객체 방향에 불변성을 갖도록 돕습니다. |
bgr | float | (0.0, 1.0) | 색상 채널을 교환하는 BGR 증강을 사용할 확률입니다. 색상 불변성에 도움이 될 수 있습니다. |
mosaic | float | (0.0, 1.0) | 4개의 이미지를 결합하는 모자이크 증강을 사용할 확률입니다. 작은 객체 탐지에 특히 유용합니다. |
mixup | float | (0.0, 1.0) | 두 이미지를 혼합하는 MixUp 증강을 사용할 확률입니다. 모델의 강건성을 향상할 수 있습니다. |
cutmix | float | (0.0, 1.0) | CutMix 증강을 사용할 확률입니다. 로컬 특징을 유지하면서 이미지 영역을 결합합니다. |
copy_paste | float | (0.0, 1.0) | flip 모드에서는 복사되는 대상 객체의 적격 비율이며, mixup 모드에서는 이를 적용할 확률도 포함합니다. |
close_mosaic | int | (0.0, 10.0) | 완료 전 학습을 안정화하기 위해 마지막 N개 에포크에서 모자이크를 비활성화합니다. 실수로 변이한 다음 정수 에포크 수로 반올림합니다. |
사용자 지정 검색 공간 예제#
다음은 검색 공간을 정의하고 model.tune() 메서드를 사용하여 Tuner 클래스로 COCO8에서 AdamW 옵티마이저를 사용해 YOLO26n을 30 에포크 동안 하이퍼파라미터 튜닝하는 방법입니다. 더 빠른 튜닝을 위해 마지막 에포크를 제외하고 플로팅, 체크포인트 저장, 검증을 건너뜁니다.
이 예제는 시연 목적으로만 제공됩니다. 짧거나 소규모인 튜닝 실행에서 도출한 하이퍼파라미터는 실제 학습에 거의 최적이 아닙니다. 실무에서는 신뢰할 수 있고 전이 가능한 결과를 보장하기 위해 유사한 데이터셋, 에포크, 증강을 포함하여 전체 학습과 비슷한 설정에서 튜닝을 수행해야 합니다. 빠른 튜닝은 파라미터를 더 빠른 수렴이나 일반화되지 않는 단기 검증 성능 향상에 편향시킬 수 있습니다.
from ultralytics import YOLO
# Initialize the YOLO model
model = YOLO("yolo26n.pt")
# Define search space
search_space = {
"lr0": (1e-5, 1e-2),
"degrees": (0.0, 45.0),
}
# Tune hyperparameters on COCO8 for 30 epochs
model.tune(
data="coco8.yaml",
epochs=30,
iterations=300,
optimizer="AdamW",
space=search_space,
plots=False,
save=False,
val=False,
)중단된 하이퍼파라미터 튜닝 세션 재개#
resume=True을 전달하여 중단된 하이퍼파라미터 튜닝 세션을 재개할 수 있습니다. 재개하려면 runs/{task}에서 사용된 디렉터리 name을 선택적으로 전달할 수 있습니다. name이 없으면 문자 그대로 tune라는 이름의 디렉터리를 재개합니다. 이는 가장 최근에 실행된 세션의 이름이 아니라 기본 이름이므로, 사용자 지정 이름으로 시작한 실행에는 name를 전달해야 합니다. 또한 data, epochs, iterations, space를 포함한 이전 학습 인자를 모두 제공해야 합니다.
from ultralytics import YOLO
# Define a YOLO model
model = YOLO("yolo26n.pt")
# Define search space
search_space = {
"lr0": (1e-5, 1e-2),
"degrees": (0.0, 45.0),
}
# Resume previous run
results = model.tune(data="coco8.yaml", epochs=50, iterations=300, space=search_space, resume=True)
# Resume tuning run with name 'tune_exp'
results = model.tune(data="coco8.yaml", epochs=50, iterations=300, space=search_space, name="tune_exp", resume=True)Results#
하이퍼파라미터 튜닝 프로세스를 성공적으로 완료하면 튜닝 결과를 담은 여러 파일과 디렉터리가 생성됩니다. 각 항목은 다음과 같습니다.
파일 구조#
결과 디렉터리 구조는 다음과 같은 형태입니다. train/ 및 train-2/과 같은 학습 디렉터리에는 개별 튜닝 반복이 포함됩니다. 즉, 각각 하나의 하이퍼파라미터 세트로 학습된 하나의 모델이 들어 있습니다. tune/ 디렉터리에는 모든 개별 모델 학습의 튜닝 결과가 포함됩니다.
runs/
└── detect/
├── train/
├── train-2/
├── ...
└── tune/
├── best_hyperparameters.yaml
├── tune_fitness.png
├── tune_results.ndjson
├── tune_scatter_plots.png
└── weights/
├── last.pt
└── best.pt파일 설명#
best_hyperparameters.yaml#
이 YAML 파일에는 튜닝 프로세스 중 발견된 성능이 가장 우수한 하이퍼파라미터가 포함되어 있습니다. 이 파일을 사용하여 최적화된 설정으로 향후 학습을 초기화할 수 있습니다.
-
형식: YAML
-
용도: 하이퍼파라미터 결과
-
예시:
# 558/900 iterations complete ✅ (45536.81s) # Results saved to /usr/src/ultralytics/runs/detect/tune # Best fitness=0.64297 observed at iteration 498 # Best fitness metrics are {'metrics/precision(B)': 0.87247, 'metrics/recall(B)': 0.71387, 'metrics/mAP50(B)': 0.79106, 'metrics/mAP50-95(B)': 0.62651, 'val/box_loss': 2.79884, 'val/cls_loss': 2.72386, 'val/l1_loss': 0.68503, 'fitness': 0.64297} # Best fitness model is /usr/src/ultralytics/runs/detect/tune/weights # Best fitness hyperparameters are printed below. lr0: 0.00269 lrf: 0.00288 momentum: 0.73375 weight_decay: 0.00015 warmup_epochs: 1.22935 warmup_momentum: 0.1525 box: 18.27875 cls: 1.32899 dfl: 0.56016 hsv_h: 0.01148 hsv_s: 0.53554 hsv_v: 0.13636 degrees: 0.0 translate: 0.12431 scale: 0.07643 shear: 0.0 perspective: 0.0 flipud: 0.0 fliplr: 0.08631 mosaic: 0.42551 mixup: 0.0 copy_paste: 0.0
tune_fitness.png#
이 플롯은 반복 횟수에 따른 적합도를 표시합니다. 시간에 따른 유전 알고리즘의 성능을 시각화하는 데 도움이 됩니다.
- 형식: PNG
- 용도: 성능 시각화
플롯에는 다음이 포함됩니다.
- 데이터셋별 반복당 하나의 마커: 단일 데이터셋 실행에서는 반복당 하나의 점이 표시되고, 여러 데이터셋을 사용하는 실행에서는 반복 및 데이터셋별로 하나의 점이 표시됩니다.
- 점선으로 표시된 "평활 평균" 선: 반복별 최상위 적합도 값에 가우시안 평활(
sigma=3)을 적용하여 계산합니다.
tune_results.ndjson#
각 튜닝 반복의 상세 결과를 포함하는 NDJSON 파일입니다. 각 줄은 집계된 적합도, 튜닝된 하이퍼파라미터, 데이터셋별 지표를 포함하는 하나의 JSON 객체입니다. 단일 데이터셋 튜닝과 여러 데이터셋 튜닝은 동일한 파일 형식을 사용합니다.
- 형식: NDJSON
- 용도: 반복별 결과 추적
- 예시:
가독성을 위해 보기 좋게 형식을 지정한 예제를 이어서 보여줍니다. 실제 .ndjson 파일에서는 각 객체가 한 줄에 저장됩니다.
{
"iteration": 1,
"fitness": 0.48628,
"hyperparameters": {
"lr0": 0.01,
"lrf": 0.01,
"momentum": 0.937,
"weight_decay": 0.0005
},
"datasets": {
"coco8": {
"metrics/precision(B)": 0.65666,
"metrics/recall(B)": 0.85,
"metrics/mAP50(B)": 0.85086,
"metrics/mAP50-95(B)": 0.64104,
"val/box_loss": 1.57958,
"val/cls_loss": 1.04986,
"val/l1_loss": 1.32641,
"fitness": 0.64104
},
"coco8-grayscale": {
"metrics/precision(B)": 0.6582,
"metrics/recall(B)": 0.51667,
"metrics/mAP50(B)": 0.59106,
"metrics/mAP50-95(B)": 0.33152,
"val/box_loss": 1.95424,
"val/cls_loss": 1.64059,
"val/l1_loss": 1.70226,
"fitness": 0.33152
}
},
"save_dirs": {
"coco8": "runs/detect/coco8",
"coco8-grayscale": "runs/detect/coco8-grayscale"
}
}최상위 fitness은 데이터셋별 fitness 값의 산술 평균입니다. 단일 데이터셋 튜닝에서는 datasets 딕셔너리에 하나의 항목이 있으며, 해당 항목의 fitness은 최상위 fitness와 같습니다. 완료된 각 반복마다 하나의 JSON 객체가 기록됩니다. 실제 save_dirs 경로는 절대 경로이며, 위에서는 가독성을 위해 축약했습니다.
tune_scatter_plots.png#
이 파일에는 tune_results.ndjson에서 생성된 산점도가 포함되어 있어 다양한 하이퍼파라미터와 성능 지표 간의 관계를 시각화하는 데 도움이 됩니다. 변이는 각 하이퍼파라미터의 구성된 범위를 사용하므로 degrees 및 shear와 같이 기본값이 0인 값에서도 값이 변화할 수 있습니다.
- 형식: PNG
- 용도: 탐색적 데이터 분석
weights/#
이 디렉터리에는 튜닝 실행에서 적합도가 가장 높았던 반복의 저장된 PyTorch 모델이 포함됩니다. 두 파일은 모두 동일한 반복에서 생성됩니다.
last.pt: last.pt는 학습 마지막 에포크의 가중치입니다.best.pt: best.pt는 가장 높은 적합도 점수를 달성한 반복의 가중치입니다.
이러한 결과를 사용하면 향후 모델 학습 및 분석을 위한 더 나은 의사 결정을 내릴 수 있습니다.
결론#
Ultralytics YOLO의 하이퍼파라미터 튜닝은 실행이 간단하면서도 내부적으로 강력하며, 유전 알고리즘에서 적합도 가중 선택과 범위 정규화 변이를 사용합니다. 이 가이드에 설명된 루프를 따르면 모델을 체계적으로 튜닝하여 성능을 향상한 다음, 결과로 생성된 best_hyperparameters.yaml을 재사용하여 향후 학습 실행을 초기화할 수 있습니다. 병렬 trial과 더 고급 검색 알고리즘으로 튜닝을 확장하려면 Ray Tune 통합 가이드를 계속해서 확인하거나, 클라우드 학습을 통해 Ultralytics Platform에서 구성 가능한 하이퍼파라미터와 실시간 지표 추적 기능으로 관리형 작업을 실행하세요.
레이어별 학습률이나 사용자 지정 적합도 지표처럼 어떤 인자에서도 노출되지 않는 설정에는 대신 트레이너를 서브클래싱하세요. 더 깊이 있는 정보를 얻으려면 Tuner 클래스 소스 코드를 살펴보세요. 질문이나 기능 요청이 있으면 GitHub 또는 Discord에서 문의하세요.
FAQ#
lr0매개변수로 초기값을 설정하세요. 일반적인 값의 범위는0.001에서0.01까지입니다. 그런 다음 튜닝을 통해 해당 값을 변이하여 최적값을 찾습니다.model.tune()메서드로 이 과정을 자동화할 수 있습니다. 예시는 다음과 같습니다.예시from ultralytics import YOLO # Initialize the YOLO model model = YOLO("yolo26n.pt") # Tune hyperparameters on COCO8 for 30 epochs model.tune(data="coco8.yaml", epochs=30, iterations=300, optimizer="AdamW", plots=False, save=False, val=False)자세한 내용은 Ultralytics YOLO 구성 페이지를 확인하세요.
Ultralytics YOLO26의 유전 알고리즘은 하이퍼파라미터 공간을 탐색하는 강력한 방법을 제공하여 모델 성능을 크게 최적화할 수 있습니다. 주요 이점은 다음과 같습니다.
- 효율적인 검색: 적합도 가중 선택은 우수한 구성을 유지하면서 범위 정규화 돌연변이를 통해 새로운 후보를 탐색합니다.
- 지역 최솟값 회피: 무작위성을 도입하여 지역 최솟값을 피하고 전역 최적화를 개선하는 데 도움이 됩니다.
- 성능 지표: 작업별 적합도 점수(탐지의 경우 mAP50-95)에 따라 조정됩니다.
유전 알고리즘이 하이퍼파라미터를 최적화하는 방법은 하이퍼파라미터 진화 가이드를 확인하세요.
Ultralytics YOLO의 하이퍼파라미터 튜닝에 필요한 시간은 데이터셋의 크기, 모델 아키텍처의 복잡성, 반복 횟수, 사용 가능한 컴퓨팅 리소스 등 여러 요인에 따라 크게 달라집니다. 예를 들어 COCO8과 같은 데이터셋에서 YOLO26n을 30개 epoch 동안 튜닝하는 데는 하드웨어에 따라 몇 시간에서 며칠이 걸릴 수 있습니다.
튜닝 시간을 효과적으로 관리하려면 하이퍼파라미터 튜닝 준비에서 설명한 것처럼 사전에 명확한 튜닝 예산을 정의하세요. 이를 통해 리소스 할당과 최적화 목표 사이의 균형을 맞출 수 있습니다.
YOLO에서 하이퍼파라미터 튜닝 중 모델 성능을 평가할 때는 다음과 같은 주요 지표를 사용할 수 있습니다.
- AP50: IoU 임계값 0.50에서의 평균 정밀도입니다.
- F1 점수: 정밀도와 재현율의 조화 평균입니다.
- 정밀도 및 재현율: 참 양성을 식별하는 모델의 정확도와 거짓 양성 및 거짓 음성을 구분하는 성능을 나타내는 개별 지표입니다.
이러한 지표는 모델 성능의 다양한 측면을 이해하는 데 도움이 됩니다. 종합적인 개요는 Ultralytics YOLO 성능 지표 가이드를 참조하세요.
예, Ultralytics YOLO26은 고급 하이퍼파라미터 최적화를 위해 Ray Tune과 통합됩니다. Ray Tune은 베이지안 최적화 및 Hyperband와 같은 정교한 검색 알고리즘과 병렬 실행 기능을 제공하여 튜닝 프로세스를 가속화합니다.
YOLO26에서 Ray Tune을 사용하려면
model.tune()메서드 호출에서use_ray=True매개변수를 설정하면 됩니다. 자세한 내용과 예제는 Ray Tune 통합 가이드를 확인하세요.