O blog da AWS
Implementação do algoritmo LightGbm no Amazon SageMaker
Por Maria Gaska, Arquiteta de Soluções Especialista em AI/ML
No Amazon SageMaker existem três modalidades de treinamento: algoritmos totalmente gerenciados, frameworks ou algoritmos compatíveis com o modo de script e a possibilidade de trazer seu próprio contêiner.
Este último será o caso quando queremos implementar um modelo LightGBM usando o serviço de treinamento do SageMaker.
Neste artigo vamos trabalhar com o conhecido dataset do Titanic, onde o objetivo é prever as chances de um passageiro sobreviver ou não dadas suas características. Para resolver esse problema, criaremos um pipeline de inferência que permite completar dados ausentes, fazer one-hot encoding de variáveis categóricas e, finalmente, treinar um modelo preditivo usando LightGBM. O código completo deste exemplo pode ser encontrado aqui.
Passo 1: Selecione o kernel e instale bibliotecas
Este projeto pode ser desenvolvido usando uma instância de notebook do Amazon SageMaker do tipo ml.m5.xlarge. Ao selecionar o kernel CondaPython3 você encontrará as bibliotecas de aprendizado de máquina mais comuns já instaladas. As versões dos pacotes podem ser consultadas usando o seguinte código.
!pip freeze
Outro ponto importante é garantir que você esteja usando a versão mais recente do SDK do SageMaker (2.x.x.) e para isso você pode precisar fazer uma atualização do SDK.
! pip install --upgrade sagemaker
Usando o SDK do SageMaker, você pode configurar os parâmetros iniciais.
sess = sage.Session() role = get_execution_role() prefix = 'lgb-model'
Passo 2: Escreva o Dockerfile
Para aproveitar o serviço de treinamento do SageMaker, precisamos construir um contêiner com os métodos necessários para treinar um modelo quando o contêiner é invocado com o parâmetro train e criar um microsserviço quando o contêiner é invocado com o parâmetro serve. O microsserviço implementa uma API com os métodos GET e POST nos caminhos /ping e /invocations, respectivamente. O treinamento e hospedagem do modelo podem ser feitos em contêineres separados, mas neste caso desenvolveremos toda a funcionalidade em um único contêiner.
Passo 3: Crie o arquivo com a funcionalidade de treinamento
Observe que a pasta lgb será a pasta de trabalho do contêiner. Aqui você deve colocar a funcionalidade necessária para executar o treinamento e inferência. Um arquivo Python chamado apenas “train” será o ponto de entrada quando o SageMaker invocar a execução do contêiner com o parâmetro train. Neste script você deve ler o(s) arquivo(s) de treinamento (se o volume de dados for grande, é conveniente dividir os dados), o modelo é executado, um score de cross validation é impresso e o modelo serializado (neste caso com a biblioteca pickle) é salvo no local que o SageMaker fornece como parâmetro.
O Amazon SageMaker internamente levará esse modelo serializado, compactará ele em formato “tar.gz” e o colocará em um local do S3 associado ao trabalho de treinamento que o produziu. Todos os logs impressos a partir deste script serão armazenados no CloudWatch e associados ao trabalho de treinamento. Eles podem ser visualizados no console do Amazon SageMaker.
Passo 4: Crie a funcionalidade de predict
Passo 5: Crie a imagem Docker localmente e faça upload para o Elastic Container Registry
Uma vez que o Dockerfile estiver completo, vamos compilá-lo localmente e enviá-lo para o ECR associado à nossa conta:
Passo 6: Treinamento e implantação usando o SDK do Amazon SageMaker
Em seguida, usaremos o SDK do Amazon SageMaker para treinar o modelo e implantá-lo em um endpoint capaz de fornecer previsões em tempo real.
Passo 7: Avaliação do modelo
Uma vez que a criação do endpoint for concluída, podemos usar o endpoint para fazer inferências. Para isso, vamos executar o processo de inferência sobre o dataset de holdout que criamos no início.
Os resultados devem ser semelhantes à média obtida na avaliação com cross-validation.
Passo 8: Limpeza dos recursos criados
É importante excluir o endpoint quando ele não será mais usado porque a infraestrutura que o suporta tem um custo enquanto estiver disponível.
predictor.delete_endpoint()
Conclusão
O Amazon SageMaker permite combinar a funcionalidade de um serviço de treinamento e inferência gerenciado, oferecendo flexibilidade suficiente para usar qualquer linguagem de programação, framework ou biblioteca, desde que as especificações necessárias sejam respeitadas ao desenvolver seu próprio contêiner.
Esse artigo foi traduzido do Blog da AWS em Espanhol.
Sobre a autora
Maria Gaska é Arquiteta de Soluções na AWS há quase dois anos. Em seu papel, ele ajuda os clientes a determinar a melhor arquitetura para seus vários aplicativos e encontrar os melhores algoritmos para resolver problemas de Machine Learning e IA. Antes da AWS, ela trabalhou como desenvolvedora de modelos de aprendizado profundo em uma startup focada em NLP e chatbots e como professora em tempo integral em uma escola de programação em um curso de ciência de dados.
Sobre o revisor
Marcelo Cunha é um Arquiteto de Soluções da AWS especialista em AI/ML. Em sua função, ele ajuda os clientes a criar soluções de ML para resolver os seus desafios de negócio utilizando a plataforma AWS. De uma família de médicos e profissionais da saúde, ele também tem interesse em aplicações de ML nesse setor.