Execute o ajuste automático de modelos com o Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Execute o ajuste automático de modelos com o Amazon SageMaker JumpStart

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.

Tarefa Modelos pré-treinados Suporta conjunto de dados personalizado Estruturas Suportadas Notebooks de exemplo
Classificação de imagens sim sim PyTorch, TensorFlow Introdução ao JumpStart - Classificação de imagens
Detecção de Objetos sim sim PyTorch, TensorFlow, MXNet Introdução ao JumpStart – Detecção de Objetos
Segmentação Semântica sim sim MXNet Introdução ao JumpStart – Segmentação semântica
Classificação de Texto sim sim TensorFlow Introdução ao JumpStart – Classificação de texto
Classificação de pares de frases sim sim TensorFlow, rosto abraçado Introdução ao JumpStart – Classificação de pares de sentenças
Resposta a Perguntas sim sim PyTorch Introdução ao JumpStart - Resposta a perguntas
Classificação Tabular sim sim LightGBM, CatBoost, XGBoost, Aprendiz Linear Introdução ao JumpStart – Classificação Tabular – LightGBM, CatBoost
Introdução ao JumpStart – Classificação Tabular – XGBoost, Linear Learner
Regressão Tabular sim sim LightGBM, CatBoost, XGBoost, Aprendiz Linear Introdução ao JumpStart – Regressão Tabular – LightGBM, CatBoost
Introdução ao JumpStart – Regressão Tabular – XGBoost, Linear Learner

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.

Execute o ajuste automático de modelos com o Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

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:

  1. Recupere o modelo pré-treinado do JumpStart e o contêiner de imagens.
  2. Defina hiperparâmetros estáticos.
  3. Defina os intervalos de hiperparâmetros ajustáveis.
  4. Inicialize o ajuste automático do modelo.
  5. Execute o trabalho de ajuste.
  6. 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

Execute o ajuste automático de modelos com o Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.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.

Execute o ajuste automático de modelos com o Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.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.

Execute o ajuste automático de modelos com o Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Giannis Mitropoulos é um engenheiro de desenvolvimento de software para SageMaker Ajuste Automático do Modelo.

Execute o ajuste automático de modelos com o Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.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.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS