Efficient Hyperparameter Tuning with Ray Tune and YOLO11
Le réglage des hyperparamètres est essentiel pour atteindre des performances optimales du modèle en découvrant l’ensemble optimal d’hyperparamètres. Cela implique de mener des essais avec différents hyperparamètres et d’évaluer les performances de chaque essai.
Accelerate Tuning with Ultralytics YOLO11 and Ray Tune
Ultralytics YOLO11 incorporates Ray Tune for hyperparameter tuning, streamlining the optimization of YOLO11 model hyperparameters. With Ray Tune, you can utilize advanced search strategies, parallelism, and early stopping to expedite the tuning process.
Ray Tune
Ray Tune is a hyperparameter tuning library designed for efficiency and flexibility. It supports various search strategies, parallelism, and early stopping strategies, and seamlessly integrates with popular machine learning frameworks, including Ultralytics YOLO11.
Intégration avec Weights & Biases
YOLO11 also allows optional integration with Weights & Biases for monitoring the tuning process.
Installation
Pour installer les paquets nécessaires, exécute :
Installation
Utilisation
Utilisation
tune()
Paramètres de la méthode
Le tune()
method in YOLO11 provides an easy-to-use interface for hyperparameter tuning with Ray Tune. It accepts several arguments that allow you to customize the tuning process. Below is a detailed explanation of each parameter:
Paramètre | Type | Description | Valeur par défaut |
---|---|---|---|
data |
str |
The dataset configuration file (in YAML format) to run the tuner on. This file should specify the training and validation data paths, as well as other dataset-specific settings. | |
space |
dict, optional |
A dictionary defining the hyperparameter search space for Ray Tune. Each key corresponds to a hyperparameter name, and the value specifies the range of values to explore during tuning. If not provided, YOLO11 uses a default search space with various hyperparameters. | |
grace_period |
int, optional |
The grace period in epochs for the ASHA scheduler in Ray Tune. The scheduler will not terminate any trial before this number of epochs, allowing the model to have some minimum training before making a decision on early stopping. | 10 |
gpu_per_trial |
int, optional |
Le nombre de GPU à allouer par essai pendant le réglage. Cela permet de gérer l'utilisation de GPU , en particulier dans les environnements multiGPU . S'il n'est pas fourni, l'accordeur utilisera tous les GPU disponibles. | Aucun |
iterations |
int, optional |
Le nombre maximum d'essais à effectuer pendant la mise au point. Ce paramètre permet de contrôler le nombre total de combinaisons d'hyperparamètres testées, en veillant à ce que le processus de réglage ne s'exécute pas indéfiniment. | 10 |
**train_args |
dict, optional |
Arguments supplémentaires à transmettre au train() method during tuning. These arguments can include settings like the number of training epochs, batch size, and other training-specific configurations. |
{} |
En personnalisant ces paramètres, tu peux affiner le processus d'optimisation des hyperparamètres en fonction de tes besoins spécifiques et des ressources informatiques disponibles.
Espace de recherche par défaut Description
The following table lists the default search space parameters for hyperparameter tuning in YOLO11 with Ray Tune. Each parameter has a specific value range defined by tune.uniform()
.
Paramètre | Plage de valeurs | Description |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
Initial learning rate |
lrf |
tune.uniform(0.01, 1.0) |
Facteur du taux d'apprentissage final |
momentum |
tune.uniform(0.6, 0.98) |
L'Ă©lan |
weight_decay |
tune.uniform(0.0, 0.001) |
DĂ©croissance du poids |
warmup_epochs |
tune.uniform(0.0, 5.0) |
Époques d'échauffement |
warmup_momentum |
tune.uniform(0.0, 0.95) |
L'Ă©lan de l'Ă©chauffement |
box |
tune.uniform(0.02, 0.2) |
Boîte perte de poids |
cls |
tune.uniform(0.2, 4.0) |
Perte de poids de la classe |
hsv_h |
tune.uniform(0.0, 0.1) |
Plage d'augmentation de la teinte |
hsv_s |
tune.uniform(0.0, 0.9) |
Plage d'augmentation de la saturation |
hsv_v |
tune.uniform(0.0, 0.9) |
Valeur (luminosité) plage d'augmentation |
degrees |
tune.uniform(0.0, 45.0) |
Plage d'augmentation de la rotation (degrés) |
translate |
tune.uniform(0.0, 0.9) |
Plage d'augmentation de la traduction |
scale |
tune.uniform(0.0, 0.9) |
Plage d'augmentation de l'Ă©chelle |
shear |
tune.uniform(0.0, 10.0) |
Plage d'augmentation du cisaillement (degrés) |
perspective |
tune.uniform(0.0, 0.001) |
Plage d'augmentation de la perspective |
flipud |
tune.uniform(0.0, 1.0) |
Probabilité d'augmentation du flip vertical |
fliplr |
tune.uniform(0.0, 1.0) |
Probabilité d'augmentation du retournement horizontal |
mosaic |
tune.uniform(0.0, 1.0) |
Probabilité d'augmentation de la mosaïque |
mixup |
tune.uniform(0.0, 1.0) |
Probabilité d'augmentation de la confusion |
copy_paste |
tune.uniform(0.0, 1.0) |
Probabilité d'augmentation du copier-coller |
Exemple d'espace de recherche personnalisé
In this example, we demonstrate how to use a custom search space for hyperparameter tuning with Ray Tune and YOLO11. By providing a custom search space, you can focus the tuning process on specific hyperparameters of interest.
Utilisation
In the code snippet above, we create a YOLO model with the "yolo11n.pt" pretrained weights. Then, we call the tune()
en spécifiant la configuration du jeu de données avec "coco8.yaml". Nous fournissons un espace de recherche personnalisé pour le taux d'apprentissage initial. lr0
en utilisant un dictionnaire avec la clé "lr0" et la valeur tune.uniform(1e-5, 1e-1)
. Enfin, nous transmettons des arguments de formation supplémentaires, tels que le nombre d'époques, directement à la méthode de réglage sous la forme suivante epochs=50
.
Traitement des résultats de l'accord des rayons
Après avoir effectué une expérience de réglage des hyperparamètres avec Ray Tune, tu voudras peut-être effectuer diverses analyses sur les résultats obtenus. Ce guide te guidera à travers les flux de travail courants pour le traitement et l'analyse de ces résultats.
Chargement des résultats d'une expérience de syntonisation à partir d'un répertoire
Après avoir effectué l'expérience de réglage avec tuner.fit()
Tu peux charger les résultats à partir d'un répertoire. C'est utile, surtout si tu effectues l'analyse après que le script d'apprentissage initial s'est arrêté.
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()
Analyse de base au niveau de l'expérience
Obtiens une vue d'ensemble de la façon dont les essais se sont déroulés. Tu peux rapidement vérifier s'il y a eu des erreurs pendant les essais.
Analyse de base au niveau du procès
Accède aux configurations des hyperparamètres des essais individuels et aux dernières mesures rapportées.
for i, result in enumerate(result_grid):
print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")
Tracer l'historique complet des mesures rapportées pour un essai
Tu peux tracer l'historique des mesures rapportées pour chaque essai afin de voir comment les mesures ont évolué au fil du temps.
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()
Résumé
Dans cette documentation, nous avons abordé les flux de travail courants permettant d'analyser les résultats des expériences réalisées avec Ray Tune à l'aide de Ultralytics. Les étapes clés comprennent le chargement des résultats de l'expérience à partir d'un répertoire, l'exécution d'une analyse de base au niveau de l'expérience et de l'essai et le traçage des métriques.
Pour aller plus loin, consulte la page de documentation de Ray Tune sur l'analyse des résultats pour tirer le meilleur parti de tes expériences de réglage des hyperparamètres.
FAQ
How do I tune the hyperparameters of my YOLO11 model using Ray Tune?
To tune the hyperparameters of your Ultralytics YOLO11 model using Ray Tune, follow these steps:
-
Installe les paquets nécessaires :
-
Load your YOLO11 model and start tuning:
Cela permet d'utiliser les stratégies de recherche avancées et le parallélisme de Ray Tune pour optimiser efficacement les hyperparamètres de ton modèle. Pour plus d'informations, consulte la documentation de Ray Tune.
What are the default hyperparameters for YOLO11 tuning with Ray Tune?
Ultralytics YOLO11 uses the following default hyperparameters for tuning with Ray Tune:
Paramètre | Plage de valeurs | Description |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
Taux d'apprentissage initial |
lrf |
tune.uniform(0.01, 1.0) |
Facteur du taux d'apprentissage final |
momentum |
tune.uniform(0.6, 0.98) |
L'Ă©lan |
weight_decay |
tune.uniform(0.0, 0.001) |
DĂ©croissance du poids |
warmup_epochs |
tune.uniform(0.0, 5.0) |
Époques d'échauffement |
box |
tune.uniform(0.02, 0.2) |
Boîte perte de poids |
cls |
tune.uniform(0.2, 4.0) |
Perte de poids de la classe |
hsv_h |
tune.uniform(0.0, 0.1) |
Plage d'augmentation de la teinte |
translate |
tune.uniform(0.0, 0.9) |
Plage d'augmentation de la traduction |
Ces hyperparamètres peuvent être personnalisés pour répondre à tes besoins spécifiques. Pour obtenir une liste complète et plus de détails, reporte-toi au guide de réglage des hyperparamètres.
How can I integrate Weights & Biases with my YOLO11 model tuning?
To integrate Weights & Biases (W&B) with your Ultralytics YOLO11 tuning process:
-
Installe W&B :
-
Modifie ton script de réglage :
Cette configuration te permettra de surveiller le processus de réglage, de suivre les configurations des hyperparamètres et de visualiser les résultats dans W&B.
Why should I use Ray Tune for hyperparameter optimization with YOLO11?
Ray Tune offre de nombreux avantages pour l'optimisation des hyperparamètres :
- Stratégies de recherche avancées : Utilise des algorithmes tels que l'optimisation bayésienne et HyperOpt pour une recherche efficace des paramètres.
- Parallélisme : Prend en charge l'exécution parallèle de plusieurs essais, ce qui accélère considérablement le processus de réglage.
- Arrêt précoce : Utilise des stratégies telles que ASHA pour mettre fin aux essais peu performants de manière anticipée, ce qui permet d'économiser des ressources informatiques.
Ray Tune seamlessly integrates with Ultralytics YOLO11, providing an easy-to-use interface for tuning hyperparameters effectively. To get started, check out the Efficient Hyperparameter Tuning with Ray Tune and YOLO11 guide.
How can I define a custom search space for YOLO11 hyperparameter tuning?
To define a custom search space for your YOLO11 hyperparameter tuning with Ray Tune:
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)
Cela permet de personnaliser la gamme d'hyperparamètres tels que le taux d'apprentissage initial et l'élan à explorer pendant le processus de réglage. Pour les configurations avancées, reporte-toi à la section Exemple d'espace de recherche personnalisé.