O blog da AWS

Otimizando Custos de Machine Learning do Amazon SageMaker

Por Rafael Almeida, arquiteto de soluções na AWS 

Introdução

O surgimento e popularização da nuvem nos últimos anos possibilitou que modelos de machine learning e inteligência artificial avançassem a passos largos, ganhando cada vez mais espaço dentro das organizações. Visando facilitar o dia-a-dia dos cientistas de dados, o Amazon SageMaker surge como um serviço de ponta a ponta de machine learning, com ferramentas capazes de auxiliar na construção e manutenção de modelos desde sua concepção até seu monitoramento.

Por se tratar de uma série com várias etapas, o ciclo de vida de construção de modelos de AI/ML abrangem várias oportunidades de otimização de custos. Pensando nisso, este blog post visa listar algumas dessas opções para cada uma das fases de implementação de machine learning utilizando o Amazon SageMaker.

Estruturação das Métricas de Negócio

Utilize serviços gerenciados de inteligência artificial

Devido às suas funcionalidades, o Amazon SageMaker é indicado para times que possuem pessoas com conhecimento em ciência de dados e/ou experiência no processamento de dados, treinamento e disponibilização de modelos para inferência. No entanto, a AWS oferece uma série de serviços que torna a construção de aplicações com inteligência artificial mais simples. Estes serviços contam muitas vezes com modelos pré-treinados para vários casos de uso, como chatbots, extração e classificação de texto, reconhecimento de imagem, além de outros serviços voltados para áreas de negócio específicas, como a área industrial e de saúde. Utilizar estas ferramentas é simples, uma vez que é possível integrá-las à sua aplicação através de chamadas de API. Na imagem abaixo, é possível ver a pilha de serviços de machine learning e inteligência artificial da AWS. Caso queira conhecê-los melhor individualmente, você pode conferir este link.

Utilizar serviços gerenciados pode ser uma ótima opção para reduzir custos, uma vez que eles podem ser aplicados por times de desenvolvedores que não necessariamente possuem um conhecimento profundo em ciência de dados. Além disso, mesmo aquelas organizações que possuem pessoas especializadas nesta área, os serviços gerenciados de AI podem ser utilizados para o desenvolvimento de aplicações de forma ágil, contando com um go to market mais rápido.

Utilize funcionalidades gerenciadas pelo Amazon SageMaker

O Amazon SageMaker, em conjunto com o SageMaker Studio, torna o gerenciamento das diferentes etapas da construção de modelos de machine learning muito mais usual, o que ocasiona em custos menores em grande parte dos casos. O Total Cost of Ownership (TCO) é uma das principais métricas para comparar custos de implementação entre soluções diferentes. Em geral, o TCO do SageMaker ao longo de um período de três anos tende a ser 54% mais baixo do que outras opções baseadas na nuvem, como o uso direto de instâncias EC2 auto-gerenciáveis e clusters do EKS.

Uma das principais razões é o fato do Amazon SageMaker ser um serviço gerenciado, simplificando processos de construção, gerenciamento e manutenção. O Amazon SageMaker é capaz de executar modelos em clusters com o auto-scaling habilitado e distribuído em múltiplas availability zones, visando a alta disponibilidade. Ele também possui funcionalidades próprias de segurança e governança. Em contrapartida, o gerenciamento de instâncias do Amazon EC2 demanda que seja realizado pelo usuário, bem como o escalonamento, recuperação de falhas, atualizações, dentre outros pormenores. Já o EKS, apesar de ter o gerenciamento e disponibilização mais simples que instâncias EC2, ele demanda um custo adicional para gerenciar o seu cluster, ajustar a performance a partir de configurações de memória, rede e processamento, além de demandar que itens de segurança sejam configurados da forma correta. É possível obter mais detalhes desta análise a partir deste link.

Elaboração do Problema de ML

Mantenha recursos de computação e de armazenamento próximos

As instâncias do SageMaker são disponibilizadas em múltiplos locais ao redor do planeta. Ao utilizar os recursos de computação para executar workloads de machine learning, priorize sempre por escolher opções próximas à localização dos seus dados, de forma a evitar custos extras de data transfer entre regiões. Por exemplo, caso seus dados estejam armazenados em um bucket do Amazon S3 na região de São Paulo (sa-east-1), execute seus clusters nesta mesma região.

Utilize algoritmos built-in do Amazon SageMaker

A AWS oferece uma série de algoritmos pré-construídos e modelos pré-treinados que auxiliam cientistas de dados a construir seus modelos de forma mais rápida e eficiente. O Amazon SageMaker JumpStart provê esses e outros recursos, como templates de soluções previamente desenvolvidas para diferentes casos de uso e notebooks que podem ser reaproveitados para inúmeras situações.

Ademais, o Amazon SageMaker disponibiliza alguns dos principais frameworks de ML mais utilizados pelo mercado de forma otimizada utilizando instâncias EC2, como o TensorFlow, PyTorch, MXNet, Keras e Theano. Dessa forma, é possível utilizar estes frameworks e contar com imagens prontas para uso.

Processamento de Dados

Utilize o Amazon SageMaker Ground Truth para rotulagem de dados

A rotulagem de dados, apesar de ser uma etapa essencial para inúmeros modelos de machine learning, tende a ser dispendiosa em termos financeiros e de tempo. Ela muitas vezes demanda que times internos das empresas sejam alocados para essa tarefa antes que um modelo seja treinado e validado. Isso impede que estas pessoas foquem em construir mais modelos, desenvolver novas aplicações e gerar mais valor ao negócio.

Neste sentido, o Amazon SageMaker Ground Truth automatiza o processo de rotulagem de dados, que pode ser realizado tanto por pessoas especializadas nesta tarefa através do Amazon Mechanical Turk, empresas terceiras ou até mesmo funcionários internos de uma organização. Esta capacidade vai ainda além com o Amazon SageMaker Ground Truth Plus, uma vez que com ele não é necessário criar aplicações para a rotulagem ou gerenciar a força de trabalho a ser utilizada por conta própria. Com o Amazon SageMaker Ground Truth Plus é possível de reduzir custos de rotulagem em até 40%.

Utilize o Amazon SageMaker Data Wrangler para processar dados

A preparação de dados é uma das etapas mais trabalhosas no ciclo de desenvolvimento de modelos de ML, uma vez que cada dataset precisa ser analisado individualmente para que as transformações necessárias sejam aplicadas respeitando suas particularidades. Além disso, é crucial que esta fase seja executada com muito cuidado, uma vez que o dataset a ser utilizado no treinamento e validação de modelos poderá determinar a qualidade do modelo que será obtido.

Sendo assim, o Amazon SageMaker Data Wrangler torna mais rápido que cientistas de dados importem, preparem, transformem e analisem dados a partir da interface gráfica da console do Amazon SageMaker Studio. O serviço possibilita maior agilidade graças à capacidade de aplicar diversas transformações de forma rápida, além de poder utilizar scripts de transformação em Python que podem ser replicados em outros casos de uso. Ele também habilita que se reutilize as transformações criadas com o Amazon SageMaker Data Wrangler em um pipeline de machine learning.

Desenvolvimento dos Modelos

Utilize o Spot Training

As instâncias spot são capacidades ociosas de instâncias EC2 que são oferecidas pela AWS a um preço mais baixo do que o modelo sob demanda, com descontos que podem chegar a até 90% em alguns casos. As instâncias spot são oferecidas neste modelo enquanto haja disponibilidade das instâncias escolhidas neste formato, podendo ser interrompidas caso a demanda por elas aumente ou quando o seu suprimento diminua, provendo um aviso de interrupção de dois minutos ao cliente. Sendo assim, ela é recomendada para workloads não críticos e que sejam flexíveis à família utilizada e a quando possam ser iniciadas e encerradas. Para mais informações, sugere-se a leitura da documentação oficial.

O Amazon SageMaker torna possível que se utilize instâncias spot para as etapas de treinamento e tuning de hiperparâmetros de modelos de machine learning. É possível configurar checkpoints para os jobs de treinamento, copiando dados locais para o Amazon S3. Caso haja uma interrupção, o SageMaker copia os dados armazenados no S3 novamente para novas instâncias, possibilitando que o job continue do último checkpoint ao invés de ser reiniciado.

Utilize o SageMaker Savings Plan

O Savings Plan é um modelo flexível de precificação de recursos de compute na AWS, no qual descontos são oferecidos na utilização desses serviços sobre o valor de execução sob demanda.

É possível usufruir do Savings Plan em instâncias qualificáveis do SageMaker, independentemente da família (por exemplo, ml.m5, ml.c5, etc), tamanho (por exemplo, ml.c5.large, ml.c5.xlarge, etc), região (por exemplo, us-east-1, us-east-2, etc) e componente (por exemplo, notebook, treinamento, etc). Mais detalhes sobre sua aplicação e demais requisitos podem ser obtidos na documentação do Savings Plan.

Obtenha recomendações com o Amazon SageMaker Inference Recommender

O Amazon SageMaker Inference Recommender é uma funcionalidade que facilita o processo de right sizing de instâncias para inferências em tempo real, otimizando a performance e o custo para executar seus respectivos endpoints. O Inference Recommender auxilia na seleção de tipos de instâncias e demais parâmetros, como quantidade de instâncias, parâmetros do container, otimizações no modelo, dentre outros fatores. Para utilizá-lo, é necessário registrar o modelo no SageMaker Model Registry juntamente com seu container e seus artefatos. É preciso também usar a SDK da AWS em Python (Boto3) para analisar informações como dados de performance, utilização de recursos, configurações do endpoint, coletar métricas de uso, dentre outras ações.

Opte por treinamentos locais para pequenos experimentos

O Amazon SageMaker possibilita que se treine modelos reaproveitando as mesmas instâncias usadas para executar os notebooks através do modo local. Isso faz com que modelos com datasets pequenos sejam treinados sem que se aloque um cluster gerenciado somente para esta tarefa. Isso pode ser viável tanto em termos financeiros, uma vez que se utilizará menos recursos na nuvem, quanto em tempo, pois não é necessário aguardar que um cluster seja disponibilizado para cada experimento.

Encerre automaticamente recursos que não estiverem em uso

Outra forma de reduzir custos com o Amazon SageMaker é desligando recursos que não estiverem em uso. Isso pode ser feito a partir de Lifecycle Configuration scripts, capazes de encerrar notebooks automaticamente a partir de uma extensão do Amazon SageMaker Studio, sendo possível também validar se demais usuários mantêm ou não a extensão instalada.

As Lifecycle Configurations são shell scripts executados pelo Amazon Sagemaker durante determinados eventos, como a criação e inicialização de notebooks. Esta funcionalidade pode ser usada para desligar recursos após um tempo ocioso pré-estabelecido. Isso é feito com a instalação de uma extensão do Amazon SageMaker Studio pelo script. É possível acessar o script a partir deste repositório do GitHub. Durante a instalação, o limite de tempo de ociosidade é definido por linha de comando.

Este outro repositório detalha como disponibilizar os recursos necessários para checar se outros usuários mantêm ou não a extensão de auto-shutdown instalada. De forma geral, uma função Lambda é acionada periodicamente por uma CloudWatch event rule que verifica a conformidade da instalação a partir dos usuários de um domínio do Amazon SageMaker. Os perfis dos usuários são então roteados a um tópico do Amazon SNS para que administradores e demais pessoas sejam notificadas. Este blog post detalha como isso pode ser feito.

Disponibilização dos Modelos

Adote Multi-Model Endpoints

À medida que projetos de machine learning ganham escala, mais modelos podem ser criados para atender cada caso de uso em específico de um negócio. No entanto, isso pode tornar o gerenciamento mais complexo e gerar custos extras para executar cada um destes modelos, sendo que muitos deles podem não ser usados com frequência, mas que mesmo assim precisam estar disponíveis de forma contínua, caso sejam requisitados.

Para estes casos, uma alternativa é usar o Amazon SageMaker Multi-Model Endpoints. Ele torna possível que diferentes modelos, que utilizam recursos semelhantes, compartilhem de uma mesma instância e de um mesmo endpoint. Isso facilita o gerenciamento de modelos em escala e reduz os custos da infraestrutura demandada por eles, uma vez que nem sempre todos esses modelos terão que permanecer em memória o tempo todo. Este blog post exemplifica como configurar multi-model endpoints e discute situações em que os custos de disponibilização de modelos podem ser reduzidos em mais de 90%.

Adote Multi-Container Endpoints

Os Multi-Container Endpoints são mais indicados para casos de uso em que é necessário disponibilizar modelos e frameworks diferentes em um único endpoint do Amazon SageMaker. No total, até 15 containers diferentes podem ser mantidos em um mesmo endpoint. Os containers podem ser executados em sequência ou individualmente. Esta é uma opção muito indicada para algumas situações, como:

  • Disponibilização de modelos de frameworks diferentes que não possuem tráfego suficiente para usufruir da total capacidade da instância;
  • Disponibilização de modelos de um mesmo framework, mas que usam algoritmos de machine learning diferentes;
  • Comparação entre soluções similares utilizando versões diferentes de frameworks para testes A/B

Em certos casos, a utilização de multi-container endpoints pode chegar a até 90% de economia, assim como é detalhado neste blog post.

Monitoramento

Utilize tags para monitorar o custo de recursos do Amazon SageMaker

Assim como em outros serviços da AWS, é possível alocar tags em recursos do Amazon SageMaker e utilizá-las para facilitar o seu gerenciamento, organização e monitoramento. As tags podem ser usadas para identificar quais itens estão sendo usados por diferentes áreas de negócio de uma organização e os ambientes de deployment (como desenvolvimento, homologação e produção, por exemplo). Além disso, cost allocation tags podem ser usadas para monitorar custos com maior profundidade. Uma vez rotulados, os detalhes de consumo destes recursos podem ser exibidos na console de Billing da AWS.

Conclusão

Como é possível observar, a AWS oferece várias formas de otimizar custos ao longo de todo o ciclo de vida de modelos de machine learning que utilizam o Amazon SageMaker. Isso é importante pois, independentemente se você está começando a utilizar o serviço ou se já é um usuário de longa data, muito provavelmente haverá uma forma de otimizar seus recursos.

A otimização de custos é um dos pilares do Well-Architected Framework. Ele lista algumas boas práticas que podem ser aplicadas para aprimorar o uso de serviços na AWS. Em paralelo a ele, a AWS também divulga um conjunto de sugestões voltado para workloads de machine learning em específico. Caso queira obter mais informações para aprimorar sua utilização em cada um dos pilares, acesse à documentação oficial do Well-Architected Framework – Machine Learning Lens.

Sobre o autor

Rafael Almeida é arquiteto de soluções na AWS e atua no segmento de Small and Medium Business (SMB), amparando clientes diversos em suas jornadas na AWS na construção de seus ambientes visando performance, segurança, confiabilidade, excelência operacional e custos otimizados. Suas principais áreas de interesse são AI/ML e IoT.