Efficient Hyperparameter Tuning with Ray Tune and YOLO11
O ajuste de hiperparâmetros é vital para atingir o desempenho máximo do modelo, descobrindo o conjunto ideal de hiperparâmetros. Isso envolve a execução de testes com diferentes hiperparâmetros e a avaliação do desempenho de cada teste.
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.
Integração com Weights & Biases
YOLO11 also allows optional integration with Weights & Biases for monitoring the tuning process.
Instalação
Para instalar os pacotes necessários, executa:
Instalação
Utilização
Utilização
tune()
Parâmetros do método
O 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:
Parâmetro | Tipo | Descrição | Valor por defeito |
---|---|---|---|
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 |
O número de GPUs a alocar por tentativa durante o ajuste. Isso ajuda a gerenciar o uso do GPU , particularmente em ambientes com váriosGPU . Se não for fornecido, o sintonizador usará todas as GPUs disponíveis. | Não tens |
iterations |
int, optional |
O número máximo de tentativas a serem executadas durante o ajuste. Este parâmetro ajuda a controlar o número total de combinações de hiperparâmetros testadas, garantindo que o processo de ajuste não seja executado indefinidamente. | 10 |
**train_args |
dict, optional |
Argumentos adicionais para passar para o train() method during tuning. These arguments can include settings like the number of training epochs, batch size, and other training-specific configurations. |
{} |
Ao personalizar estes parâmetros, podes afinar o processo de otimização de hiperparâmetros para se adequar às tuas necessidades específicas e aos recursos computacionais disponíveis.
Espaço de pesquisa predefinido Descrição
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()
.
Parâmetro | Intervalo de valores | Descrição |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
Initial learning rate |
lrf |
tune.uniform(0.01, 1.0) |
Fator de taxa de aprendizagem final |
momentum |
tune.uniform(0.6, 0.98) |
Momentum |
weight_decay |
tune.uniform(0.0, 0.001) |
Diminuição do peso |
warmup_epochs |
tune.uniform(0.0, 5.0) |
Épocas de aquecimento |
warmup_momentum |
tune.uniform(0.0, 0.95) |
Aquecimento |
box |
tune.uniform(0.02, 0.2) |
Caixa perda de peso |
cls |
tune.uniform(0.2, 4.0) |
Perda de peso por classe |
hsv_h |
tune.uniform(0.0, 0.1) |
Gama de aumento de tonalidade |
hsv_s |
tune.uniform(0.0, 0.9) |
Gama de aumento da saturação |
hsv_v |
tune.uniform(0.0, 0.9) |
Valor (brilho) intervalo de aumento |
degrees |
tune.uniform(0.0, 45.0) |
Amplitude de aumento da rotação (graus) |
translate |
tune.uniform(0.0, 0.9) |
Gama de aumentos de tradução |
scale |
tune.uniform(0.0, 0.9) |
Escala de aumento de escala |
shear |
tune.uniform(0.0, 10.0) |
Intervalo de aumento de cisalhamento (graus) |
perspective |
tune.uniform(0.0, 0.001) |
Gama de aumentos de perspetiva |
flipud |
tune.uniform(0.0, 1.0) |
Probabilidade de aumento da rotação vertical |
fliplr |
tune.uniform(0.0, 1.0) |
Probabilidade de aumento da rotação horizontal |
mosaic |
tune.uniform(0.0, 1.0) |
Probabilidade de aumento do mosaico |
mixup |
tune.uniform(0.0, 1.0) |
Probabilidade de aumento da mistura |
copy_paste |
tune.uniform(0.0, 1.0) |
Copia e cola a probabilidade de aumento |
Exemplo de espaço de pesquisa personalizado
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.
Utilização
In the code snippet above, we create a YOLO model with the "yolo11n.pt" pretrained weights. Then, we call the tune()
especificando a configuração do conjunto de dados com "coco8.yaml". Fornecemos um espaço de pesquisa personalizado para a taxa de aprendizagem inicial lr0
utilizando um dicionário com a chave "lr0" e o valor tune.uniform(1e-5, 1e-1)
. Finalmente, passamos argumentos de treino adicionais, como o número de épocas, diretamente para o método tune como epochs=50
.
Processamento dos resultados da afinação de raios
Depois de executar uma experiência de ajuste de hiperparâmetros com o Ray Tune, podes querer efetuar várias análises dos resultados obtidos. Este guia irá guiar-te através de fluxos de trabalho comuns para processar e analisar esses resultados.
Carregar resultados de experiências de afinação a partir de um diretório
Depois de executar a experiência de afinação com tuner.fit()
podes carregar os resultados a partir de um diretório. Isto é útil, especialmente se estiveres a efetuar a análise depois de o script de treino inicial ter saído.
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()
Análise básica ao nível da experiência
Obtém uma visão geral do desempenho dos ensaios. Podes verificar rapidamente se houve algum erro durante os ensaios.
Análise básica do nível de julgamento
Acede a configurações de hiperparâmetros de ensaios individuais e às últimas métricas comunicadas.
for i, result in enumerate(result_grid):
print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")
Traçando todo o histórico de métricas relatadas para um estudo
Podes traçar o histórico das métricas comunicadas para cada ensaio para ver como as métricas evoluíram ao longo do tempo.
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()
Resumo
Nesta documentação, abordámos fluxos de trabalho comuns para analisar os resultados de experiências executadas com o Ray Tune utilizando Ultralytics. Os principais passos incluem o carregamento dos resultados da experiência a partir de um diretório, a realização de análises básicas ao nível da experiência e ao nível do ensaio e a representação gráfica de métricas.
Explora mais, consultando a página de documentos Analisar resultados do Ray Tune para tirar o máximo partido das tuas experiências de ajuste de hiperparâmetros.
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:
-
Instala os pacotes necessários:
-
Load your YOLO11 model and start tuning:
Utiliza as estratégias de pesquisa avançadas e o paralelismo do Ray Tune para otimizar eficazmente os hiperparâmetros do seu modelo. Para obter mais informações, consulta a documentação do 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:
Parâmetro | Intervalo de valores | Descrição |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
Taxa de aprendizagem inicial |
lrf |
tune.uniform(0.01, 1.0) |
Fator de taxa de aprendizagem final |
momentum |
tune.uniform(0.6, 0.98) |
Momentum |
weight_decay |
tune.uniform(0.0, 0.001) |
Diminuição do peso |
warmup_epochs |
tune.uniform(0.0, 5.0) |
Épocas de aquecimento |
box |
tune.uniform(0.02, 0.2) |
Caixa perda de peso |
cls |
tune.uniform(0.2, 4.0) |
Perda de peso por classe |
hsv_h |
tune.uniform(0.0, 0.1) |
Gama de aumento de tonalidade |
translate |
tune.uniform(0.0, 0.9) |
Gama de aumentos de tradução |
Esses hiperparâmetros podem ser personalizados para atender às tuas necessidades específicas. Para obter uma lista completa e mais detalhes, consulte o guia Ajuste de hiperparâmetros.
How can I integrate Weights & Biases with my YOLO11 model tuning?
To integrate Weights & Biases (W&B) with your Ultralytics YOLO11 tuning process:
-
Instala a W&B:
-
Modifica o teu guião de afinação:
Esta configuração permitir-te-á monitorizar o processo de afinação, seguir as configurações dos hiperparâmetros e visualizar os resultados em W&B.
Why should I use Ray Tune for hyperparameter optimization with YOLO11?
O Ray Tune oferece inúmeras vantagens para a otimização de hiperparâmetros:
- Estratégias de pesquisa avançadas: Utiliza algoritmos como o Bayesian Optimization e o HyperOpt para uma pesquisa eficiente de parâmetros.
- Paralelismo: Suporta a execução paralela de vários ensaios, acelerando significativamente o processo de afinação.
- Interrompe precocemente: Utiliza estratégias como o ASHA para terminar precocemente ensaios com fraco desempenho, poupando recursos computacionais.
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)
Personaliza o intervalo de hiperparâmetros, como a taxa de aprendizado inicial e o momento a ser explorado durante o processo de ajuste. Para configurações avançadas, consulta a secção Exemplo de espaço de pesquisa personalizado.