Afinação eficiente de hiperparâmetros com Ray Tune e YOLO11
A afinação de hiperparâmetros é vital para atingir o desempenho máximo do modelo, descobrindo o conjunto ótimo de hiperparâmetros. Isto envolve a execução de ensaios com diferentes hiperparâmetros e a avaliação do desempenho de cada ensaio.
Acelerar a afinação com Ultralytics YOLO11 e Ray Tune
Ultralytics YOLO11 incorpora o Ray Tune para ajuste de hiperparâmetros, simplificando a otimização dos hiperparâmetros do modelo YOLO11 . Com o Ray Tune, é possível utilizar estratégias de pesquisa avançadas, paralelismo e paragem antecipada para acelerar o processo de afinação.
Ray Tune
Ray Tune é uma biblioteca de ajuste de hiperparâmetros concebida para ser eficiente e flexível. Suporta várias estratégias de pesquisa, paralelismo e estratégias de paragem antecipada, e integra-se perfeitamente com estruturas populares de aprendizagem automática, incluindo Ultralytics YOLO11 .
Integração com Weights & Biases
YOLO11 permite também a integração opcional com Weights & Biases para monitorizar o processo de afinação.
Instalação
Para instalar os pacotes necessários, execute:
Instalação
Utilização
Utilização
tune()
Parâmetros do método
O tune()
em YOLO11 fornece uma interface fácil de usar para o ajuste de hiperparâmetros com o Ray Tune. Aceita vários argumentos que lhe permitem personalizar o processo de afinação. Segue-se uma explicação pormenorizada de cada parâmetro:
Parâmetro | Tipo | Descrição | Valor por defeito |
---|---|---|---|
data |
str |
O ficheiro de configuração do conjunto de dados (em formato YAML) para executar o sintonizador. Esse arquivo deve especificar os caminhos de dados de treinamento e validação, bem como outras configurações específicas do conjunto de dados. | |
space |
dict, optional |
Um dicionário que define o espaço de pesquisa de hiperparâmetros para o Ray Tune. Cada chave corresponde a um nome de hiperparâmetro e o valor especifica o intervalo de valores a explorar durante o ajuste. Se não for fornecido, YOLO11 usa um espaço de pesquisa padrão com vários hiperparâmetros. | |
grace_period |
int, optional |
O período de carência em épocas para o programador ASHA no Ray Tune. O programador não terminará nenhum ensaio antes deste número de épocas, permitindo que o modelo tenha algum treino mínimo antes de tomar uma decisão sobre a paragem antecipada. | 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. | Nenhum |
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 afinação não é executado indefinidamente. | 10 |
**train_args |
dict, optional |
Argumentos adicionais para passar para o train() durante a afinação. Estes argumentos podem incluir definições como o número de épocas de treino, tamanho do lotee outras configurações específicas da formação. |
{} |
Ao personalizar estes parâmetros, pode afinar o processo de otimização do hiperparâmetro para se adequar às suas necessidades específicas e aos recursos computacionais disponíveis.
Espaço de pesquisa predefinido Descrição
A tabela a seguir lista os parâmetros padrão do espaço de pesquisa para o ajuste de hiperparâmetros em YOLO11 com Ray Tune. Cada parâmetro tem um intervalo de valores específico definido por tune.uniform()
.
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) |
Momento |
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) |
Momento 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 |
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) |
Gama 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 viragem 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) |
Probabilidade de aumento de copiar-colar |
Exemplo de espaço de pesquisa personalizado
Neste exemplo, demonstramos como usar um espaço de pesquisa personalizado para ajuste de hiperparâmetros com Ray Tune e YOLO11. Ao fornecer um espaço de pesquisa personalizado, pode concentrar o processo de afinação em hiperparâmetros específicos de interesse.
Utilização
No trecho de código acima, criamos um modelo YOLO com os pesos pré-treinados "yolo11n.pt". De seguida, chamamos o 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 de resultados de afinação de raios
Depois de executar uma experiência de ajuste de hiperparâmetros com o Ray Tune, poderá querer efetuar várias análises dos resultados obtidos. Este guia o guiará por 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 efetuar a experiência de afinação com tuner.fit()
pode carregar os resultados a partir de um diretório. Isto é útil, especialmente se estiver a efetuar a análise após o script de formação 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
Obter uma visão geral do desempenho dos ensaios. Pode verificar rapidamente se houve algum erro durante os ensaios.
Análise básica a nível do ensaio
Aceder 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
Pode 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.
Explore mais, consultando a página de documentos Analisar resultados do Ray Tune para tirar o máximo partido das suas experiências de ajuste de hiperparâmetros.
FAQ
Como posso ajustar os hiperparâmetros do meu modelo YOLO11 utilizando o Ray Tune?
Para ajustar os hiperparâmetros do seu modelo Ultralytics YOLO11 utilizando o Ray Tune, siga estes passos:
-
Instalar os pacotes necessários:
-
Carregue o seu modelo YOLO11 e comece a afinar:
Isto utiliza as estratégias de pesquisa avançadas e o paralelismo do Ray Tune para otimizar eficientemente os hiperparâmetros do seu modelo. Para obter mais informações, consulte a documentação do Ray Tune.
Quais são os hiperparâmetros predefinidos para YOLO11 afinação com o Ray Tune?
Ultralytics YOLO11 utiliza os seguintes hiperparâmetros predefinidos para afinação com o 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) |
Momento |
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 suas necessidades específicas. Para obter uma lista completa e mais detalhes, consulte o guia Ajuste de hiperparâmetros.
Como posso integrar Weights & Biases com a minha afinação do modelo YOLO11 ?
Para integrar Weights & Biases (W&B) no seu processo de afinação Ultralytics YOLO11 :
-
Instalar a W&B:
-
Modificar o guião de afinação:
Esta configuração permitir-lhe-á monitorizar o processo de afinação, seguir as configurações dos hiperparâmetros e visualizar os resultados em W&B.
Por que razão devo utilizar o Ray Tune para a otimização de hiperparâmetros com YOLO11?
O Ray Tune oferece inúmeras vantagens para a otimização de hiperparâmetros:
- Estratégias de pesquisa avançadas: Utiliza algoritmos como a Otimização Bayesiana e o HyperOpt para uma pesquisa de parâmetros eficiente.
- Paralelismo: Suporta a execução paralela de vários ensaios, acelerando significativamente o processo de afinação.
- Interrupção antecipada: Utiliza estratégias como o ASHA para terminar precocemente ensaios com fraco desempenho, poupando recursos computacionais.
O Ray Tune integra-se perfeitamente com Ultralytics YOLO11 , fornecendo uma interface fácil de utilizar para afinar hiperparâmetros de forma eficaz. Para começar, consulte o guia Efficient Hyperparameter Tuning with Ray Tune e YOLO11.
Como é que posso definir um espaço de pesquisa personalizado para YOLO11 afinação de hiperparâmetros?
Para definir um espaço de pesquisa personalizado para o seu YOLO11 ajuste de hiperparâmetros com o 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)
Isso 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, consulte a secção Exemplo de espaço de pesquisa personalizado.