Em dezembro de 2020, a AWS anunciou a disponibilidade geral de JumpStart do Amazon SageMaker, uma capacidade de Amazon Sage Maker que ajuda você a começar de maneira rápida e fácil com o aprendizado de máquina (ML). Em março de 2022, também anunciou o suporte para APIs no JumpStart. O JumpStart fornece ajuste fino e implantação com um clique de uma ampla variedade de modelos pré-treinados em tarefas populares de ML, bem como uma seleção de soluções de ponta a ponta que resolvem problemas comuns de negócios. Esses recursos eliminam o trabalho pesado de cada etapa do processo de ML, simplificando o desenvolvimento de modelos de alta qualidade e reduzindo o tempo de implantação.
Neste post, demonstramos como executar o ajuste automático de modelos com o JumpStart.
SageMaker ajuste automático do modelo
Tradicionalmente, os engenheiros de ML implementam um método de tentativa e erro para encontrar o conjunto certo de hiperparâmetros. A tentativa e erro envolve a execução de vários trabalhos sequencialmente ou em paralelo ao provisionar os recursos necessários para executar o experimento.
Com o SageMaker ajuste automático do modelo, engenheiros de ML e cientistas de dados podem descarregar a tarefa demorada de otimizar seu modelo e deixar o SageMaker executar a experimentação. O SageMaker aproveita a elasticidade da plataforma AWS para executar de forma eficiente e simultânea várias simulações de treinamento em um conjunto de dados e encontrar os melhores hiperparâmetros para um modelo.
O ajuste automático de modelos do SageMaker encontra a melhor versão de um modelo executando muitos trabalhos de treinamento em seu conjunto de dados usando o algoritmo e gamas de hiperparâmetros que você especifica. Em seguida, ele escolhe os valores de hiperparâmetros que resultam em um modelo com o melhor desempenho, conforme medido por um métrico que você escolher.
O ajuste automático do modelo usa um Bayesiano (padrão) ou um acaso estratégia de busca para encontrar os melhores valores para hiperparâmetros. A pesquisa bayesiana trata o ajuste de hiperparâmetros como um regressão problema. Ao escolher os melhores hiperparâmetros para o próximo trabalho de treinamento, ele considera tudo o que sabe sobre o problema até o momento e permite que o algoritmo explore os resultados mais conhecidos.
Neste post, usamos a estratégia de pesquisa Bayesiana padrão para demonstrar as etapas envolvidas na execução do ajuste automático do modelo com o JumpStart usando o Light GBM modelo.
Atualmente, o JumpStart suporta 10 notebooks de exemplo com ajuste automático de modelo. Ele também suporta quatro algoritmos populares para modelagem de dados tabulares. As tarefas e links para seus blocos de anotações de amostra estão resumidos na tabela a seguir.
Visão geral da solução
Este fluxo de trabalho técnico fornece uma visão geral dos diferentes recursos e etapas do Amazon Sagemaker necessários para ajustar automaticamente um modelo JumpStart.
Nas seções a seguir, fornecemos um passo a passo de como executar o ajuste automático de modelo com JumpStart usando o algoritmo LightGBM. Oferecemos um acompanhamento caderno para este passo a passo.
Percorremos as seguintes etapas de alto nível:
- Recupere o modelo pré-treinado do JumpStart e o contêiner de imagens.
- Defina hiperparâmetros estáticos.
- Defina os intervalos de hiperparâmetros ajustáveis.
- Inicialize o ajuste automático do modelo.
- Execute o trabalho de ajuste.
- Implante o melhor modelo em um endpoint.
Recupere o modelo pré-treinado do JumpStart e o contêiner de imagens
Nesta seção, escolhemos o modelo de classificação LightGBM para ajuste fino. Usamos o tipo de instância ml.m5.xlarge no qual o modelo é executado. Em seguida, recuperamos o contêiner do Docker de treinamento, a fonte do algoritmo de treinamento e o modelo pré-treinado. Veja o seguinte código:
training_instance_type = "ml.m5.xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve(
region=None,
framework=None,
model_id=train_model_id,
model_version=train_model_version,
image_scope=train_scope,
instance_type=training_instance_type,
)
# Retrieve the training script
train_source_uri = script_uris.retrieve(
model_id=train_model_id, model_version=train_model_version, script_scope=train_scope
)
# Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(
model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
)
Definir hiperparâmetros estáticos
Agora recuperamos os hiperparâmetros padrão para este modelo LightGBM, conforme pré-configurado pelo JumpStart. Também sobrescrevemos o num_boost_round
hiperparâmetro com um valor personalizado.
# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values
Definir os intervalos de hiperparâmetros ajustáveis
Em seguida, definimos os intervalos de hiperparâmetros para serem otimizado pelo ajuste automático do modelo. Definimos o nome do hiperparâmetro como esperado pelo modelo e então os intervalos de valores a serem tentados para este hiperparâmetro. O ajuste automático do modelo extrai amostras (igual ao max_jobs
parâmetro) do espaço de hiperparâmetros, usando uma técnica chamada busca Bayesiana. Para cada amostra de hiperparâmetro desenhada, o sintonizador cria um trabalho de treinamento para avaliar o modelo com essa configuração. Veja o seguinte código:
hyperparameter_ranges = {
"learning_rate": ContinuousParameter(1e-4, 1, scaling_type="Logarithmic"),
"num_boost_round": IntegerParameter(2, 30),
"early_stopping_rounds": IntegerParameter(2, 30),
"num_leaves": IntegerParameter(10, 50),
"feature_fraction": ContinuousParameter(0, 1),
"bagging_fraction": ContinuousParameter(0, 1),
"bagging_freq": IntegerParameter(1, 10),
"max_depth": IntegerParameter(5, 30),
"min_data_in_leaf": IntegerParameter(5, 50),
}
Inicialize o ajuste automático do modelo
Começamos criando um Estimador objeto com todos os ativos necessários que definem o trabalho de treinamento, como o modelo pré-treinado, a imagem de treinamento e o script de treinamento. Definimos então um HiperparâmetroTuner objeto para interagir com as APIs de ajuste de hiperparâmetro do SageMaker.
A HyperparameterTuner
aceita como parâmetros o objeto Estimador, a métrica de destino com base na qual o melhor conjunto de hiperparâmetros é decidido, o número total de jobs de treinamento (max_jobs
) para iniciar o trabalho de ajuste de hiperparâmetro e o máximo de trabalhos de treinamento paralelo a serem executados (max_parallel_jobs
). As tarefas de treinamento são executadas com o algoritmo LightGBM e os valores de hiperparâmetros que têm o mínimo mlogloss
métrica é escolhida. Para obter mais informações sobre como configurar o ajuste automático do modelo, consulte Práticas recomendadas para ajuste de hiperparâmetros.
# Create SageMaker Estimator instance
tabular_estimator = Estimator(
role=aws_role,
image_uri=train_image_uri,
source_dir=train_source_uri,
model_uri=train_model_uri,
entry_point="transfer_learning.py",
instance_count=1,
instance_type=training_instance_type,
max_run=360000,
hyperparameters=hyperparameters,
output_path=s3_output_location,
) tuner = HyperparameterTuner(
estimator=tabular_estimator,
objective_metric_name="multi_logloss",
hyperparameter_ranges=hyperparameter_ranges,
metric_definitions=[{"Name": "multi_logloss", "Regex": "multi_logloss: ([0-9\.]+)"}],
strategy="Bayesian",
max_jobs=10,
max_parallel_jobs=2,
objective_type="Minimize",
base_tuning_job_name=training_job_name,
)
No código anterior, dizemos ao sintonizador para executar no máximo 10 experimentos (max_jobs
) e apenas dois experimentos simultâneos por vez (max_parallel_jobs
). Ambos os parâmetros mantêm seu custo e tempo de treinamento sob controle.
Execute o trabalho de ajuste
Para iniciar o trabalho de ajuste do SageMaker, chamamos o método fit do objeto de ajuste de hiperparâmetro e passamos o Serviço de armazenamento simples da Amazon (Amazon S3) caminho dos dados de treinamento:
tuner.fit({"training": training_dataset_s3_path}, logs=True)
Enquanto o ajuste automático do modelo procura os melhores hiperparâmetros, você pode monitorar seu progresso no console do SageMaker ou no Amazon CloudWatch. Quando o treinamento é concluído, os artefatos ajustados do melhor modelo são carregados no local de saída do Amazon S3 especificado na configuração de treinamento.
Implante o melhor modelo em um endpoint
Quando o trabalho de ajuste estiver concluído, o melhor modelo foi selecionado e armazenado no Amazon S3. Agora podemos implantar esse modelo chamando o método deploy do HyperparameterTuner
objeto e passando os parâmetros necessários, como o número de instâncias a serem usadas para o endpoint criado, seu tipo, a imagem a ser implantada e o script a ser executado:
tuner.deploy(
initial_instance_count=1,
instance_type=inference_instance_type,
entry_point="inference.py",
image_uri=deploy_image_uri,
source_dir=deploy_source_uri,
endpoint_name=endpoint_name,
enable_network_isolation=True
)
Agora podemos testar o endpoint criado fazendo solicitações de inferência. Você pode acompanhar o restante do processo no anexo caderno.
Conclusão
Com o ajuste automático do modelo no SageMaker, você pode encontrar a melhor versão do seu modelo executando tarefas de treinamento no conjunto de dados fornecido com um dos algoritmos compatíveis. O ajuste automático de modelo permite reduzir o tempo de ajuste de um modelo pesquisando automaticamente a melhor configuração de hiperparâmetros dentro dos intervalos de hiperparâmetros especificados.
Neste post, mostramos o valor de executar o ajuste automático do modelo em um modelo pré-treinado do JumpStart usando APIs do SageMaker. Usamos o algoritmo LightGBM e definimos um máximo de 10 jobs de treinamento. Também fornecemos links para notebooks de exemplo mostrando as estruturas de ML que suportam a otimização do modelo JumpStart.
Para obter mais detalhes sobre como otimizar um modelo JumpStart com ajuste automático de modelo, consulte nosso exemplo caderno.
Sobre o autor
Doug Mbaya é um arquiteto de soluções de parceiro sênior com foco em dados e análises. Doug trabalha em estreita colaboração com os parceiros da AWS, ajudando-os a integrar a solução de dados e análises na nuvem.
Kruthi Jayasimha Rao é um Partner Solutions Architect na equipe Scale-PSA. A Kruthi realiza validações técnicas para Parceiros, permitindo que eles progridam no Caminho do Parceiro.
Giannis Mitropoulos é um engenheiro de desenvolvimento de software para SageMaker Ajuste Automático do Modelo.
Dr. é um Cientista Aplicado Sênior com JumpStart do Amazon SageMaker e Algoritmos integrados do Amazon SageMaker e ajuda a desenvolver algoritmos de aprendizado de máquina. Ele é um pesquisador ativo em aprendizado de máquina e inferência estatística e publicou muitos artigos nas conferências NeurIPS, ICML, ICLR, JMLR e ACL.
- "
- 10
- 100
- 2020
- 2022
- Sobre
- em
- ativo
- Vantagem
- algoritmo
- algoritmos
- Todos os Produtos
- Amazon
- analítica
- APIs
- Ativos
- Automático
- disponibilidade
- AWS
- MELHOR
- construídas em
- negócio
- chamada
- Escolha
- escolhido
- classificação
- Na nuvem
- código
- comum
- conferências
- Configuração
- considera
- cônsul
- Recipiente
- ao controle
- crio
- criado
- cria
- Criar
- Atualmente
- personalizadas
- dados,
- decidido
- demonstrar
- implantar
- implantado
- desenvolvimento
- detalhes
- desenvolver
- Desenvolvimento
- diferente
- Estivador
- facilmente
- eficientemente
- permitindo
- Ponto final
- engenheiro
- Engenheiros
- avaliar
- tudo
- exemplo
- esperado
- experimentar
- Explorar
- Funcionalidades
- encontra
- caber
- Foco
- seguir
- seguinte
- mais distante
- Geral
- altura
- ajuda
- ajuda
- alta qualidade
- Como funciona o dobrador de carta de canal
- Como Negociar
- HTTPS
- imagem
- executar
- INFORMAÇÕES
- integrar
- envolvido
- IT
- Trabalho
- Empregos
- lançamento
- aprendizagem
- facelift
- Links
- localização
- máquina
- aprendizado de máquina
- Fazendo
- Março
- ML
- modelo
- modelos
- Monitore
- mais
- a maioria
- múltiplo
- número
- otimização
- Otimize
- otimizando
- parceiro
- Parceiros
- Passagem
- plataforma
- Popular
- Problema
- problemas
- processo
- fornecer
- fornece
- questão
- rapidamente
- reduzir
- redução
- pedidos
- requeridos
- Recursos
- DESCANSO
- Resultados
- Execute
- corrida
- Cientista
- cientistas
- Pesquisar
- selecionado
- conjunto
- apresentando
- simples
- So
- Software
- desenvolvimento de software
- solução
- Soluções
- RESOLVER
- Espaço
- começo
- começado
- estatístico
- armazenamento
- Estratégia
- ajuda
- Suportado
- suportes
- Target
- tarefas
- Profissionais
- Dados Técnicos:
- teste
- Através da
- tempo
- demorado
- Título
- Training
- julgamento
- usar
- valor
- variedade
- enquanto
- dentro
- trabalho