Apresentando o Amazon SageMaker Serverless Inference Benchmarking Toolkit PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Apresentando o kit de ferramentas de benchmarking de inferência sem servidor do Amazon SageMaker

Inferência sem servidor do Amazon SageMaker é uma opção de inferência desenvolvida especificamente que facilita a implantação e o dimensionamento de modelos de aprendizado de máquina (ML). Ele fornece um modelo de pagamento conforme o uso, ideal para serviços onde as invocações de endpoint são pouco frequentes e imprevisíveis. Ao contrário de um endpoint de hospedagem em tempo real, que é apoiado por uma instância de longa execução, os recursos de computação para endpoints sem servidor são provisionados sob demanda, eliminando assim a necessidade de escolher tipos de instância ou gerenciar políticas de escalabilidade.

A arquitetura de alto nível a seguir ilustra como funciona um endpoint sem servidor. Um cliente invoca um endpoint, que é apoiado pela infraestrutura gerenciada pela AWS.

No entanto, os endpoints sem servidor são propensos a inicializações a frio na ordem de segundos e, portanto, são mais adequados para cargas de trabalho intermitentes ou imprevisíveis.

Para ajudar a determinar se um endpoint sem servidor é a opção de implantação correta do ponto de vista de custo e desempenho, desenvolvemos o Kit de ferramentas de benchmarking de inferência sem servidor SageMaker, que testa diferentes configurações de endpoint e compara a melhor com uma instância de hospedagem em tempo real comparável.

Nesta postagem, apresentamos o kit de ferramentas e fornecemos uma visão geral de sua configuração e resultados.

Visão geral da solução

Você pode baixar o kit de ferramentas e instalá-lo no GitHub repo. Começar é fácil: basta instalar a biblioteca, criar um Modelo do SageMakere forneça o nome do seu modelo junto com um arquivo formatado em linhas JSON contendo um conjunto de amostra de parâmetros de invocação, incluindo o corpo da carga útil e o tipo de conteúdo. Uma função de conveniência é fornecida para converter uma lista de exemplos de argumentos de invocação em um arquivo de linhas JSON ou um arquivo pickle para cargas binárias, como imagens, vídeo ou áudio.

Instale o kit de ferramentas

Primeiro instale a biblioteca de benchmarking em seu ambiente Python usando pip:

pip install sm-serverless-benchmarking

Você pode executar o seguinte código a partir de um Estúdio Amazon SageMaker instância, Instância de notebook SageMaker, ou qualquer instância com acesso programático para a AWS e o apropriado Gerenciamento de acesso e identidade da AWS (IAM). As permissões necessárias do IAM estão documentadas no GitHub repo. Para obter orientações adicionais e exemplos de políticas para IAM, consulte Como Amazon SageMaker funciona com IAM. Este código executa um benchmark com um conjunto padrão de parâmetros em um modelo que espera uma entrada CSV com dois registros de exemplo. É uma boa prática fornecer um conjunto representativo de exemplos para analisar o desempenho do ponto final com diferentes cargas de entrada.

from sm_serverless_benchmarking import benchmark
from sm_serverless_benchmarking.utils import convert_invoke_args_to_jsonl
model_name = ""
example_invoke_args = [
        {'Body': '1,2,3,4,5', "ContentType": "text/csv"},
        {'Body': '6,7,8,9,10', "ContentType": "text/csv"}
        ]
example_args_file = convert_invoke_args_to_jsonl(example_invoke_args,
output_path=".")
r = benchmark.run_serverless_benchmarks(model_name, example_args_file)

Além disso, você pode executar o benchmark como um trabalho de processamento do SageMaker, o que pode ser uma opção mais confiável para benchmarks de execução mais longa com um grande número de invocações. Veja o seguinte código:

from sm_serverless_benchmarking.sagemaker_runner import run_as_sagemaker_job
run_as_sagemaker_job(
                    role="",
                    model_name="",
                    invoke_args_examples_file="",
                    )

Observe que isso incorrerá em custo adicional de execução de uma instância ml.m5.large do SageMaker Processing durante o benchmark.

Ambos os métodos aceitam vários parâmetros para configurar, como uma lista de configurações de memória para benchmark e o número de vezes que cada configuração será invocada. Na maioria dos casos, as opções padrão devem ser suficientes como ponto de partida, mas consulte o GitHub repo para obter uma lista completa e descrições de cada parâmetro.

Configuração de benchmarking

Antes de nos aprofundarmos no que o benchmark faz e quais resultados ele produz, é importante entender alguns conceitos-chave quando se trata de configurar endpoints sem servidor.

Tem duas opções principais de configuração: MemorySizeInMB e MaxConcurrency. MemorySizeInMB configura a quantidade de memória alocada para a instância e pode ser 1024 MB, 2048 MB, 3072 MB, 4096 MB, 5120 MB ou 6144 MB. O número de vCPUs também aumenta proporcionalmente à quantidade de memória alocada. O MaxConcurrency O parâmetro ajusta quantas solicitações simultâneas um endpoint é capaz de atender. Com um MaxConcurrency de 1, um endpoint sem servidor só pode processar uma única solicitação por vez.

Para resumir, o MemorySizeInMB parâmetro fornece um mecanismo para escalabilidade vertical, permitindo ajustar a memória e os recursos de computação para atender modelos maiores, enquanto MaxConcurrency fornece um mecanismo para escalabilidade horizontal, permitindo que seu endpoint processe mais solicitações simultâneas.

O custo de operação de um endpoint é amplamente determinado pelo tamanho da memória e não há custo associado ao aumento da simultaneidade máxima. No entanto, há um limite de conta por região para a simultaneidade máxima em todos os endpoints. Referir-se Endpoints e cotas do SageMaker para os limites mais recentes.

Resultados de benchmarking

Diante disso, o objetivo de avaliar um endpoint sem servidor é determinar a configuração de tamanho de memória mais econômica e confiável e a simultaneidade máxima mínima que pode lidar com os padrões de tráfego esperados.

Por padrão, a ferramenta executa dois benchmarks. O primeiro é um benchmark de estabilidade, que implanta um endpoint para cada uma das configurações de memória especificadas e invoca cada endpoint com as cargas úteis de amostra fornecidas. O objetivo deste benchmark é determinar a configuração MemorySizeInMB mais eficaz e estável. O benchmark captura as latências de invocação e calcula o custo esperado por invocação para cada endpoint. Em seguida, ele compara o custo com uma instância de hospedagem em tempo real semelhante.

Quando o benchmarking for concluído, a ferramenta gera vários resultados no intervalo especificado. result_save_path diretório com a seguinte estrutura de diretórios:

├── benchmarking_report
├── concurrency_benchmark_raw_results
├── concurrency_benchmark_summary_results
├── cost_analysis_summary_results
├── stability_benchmark_raw_results
├── stability_benchmark_summary_results

A benchmarking_report diretório contém um relatório consolidado com todos os resultados resumidos que descrevemos nesta postagem. Diretórios adicionais contêm saídas brutas e intermediárias que podem ser usadas para análises adicionais. Consulte o GitHub repo para obter uma descrição mais detalhada de cada artefato de saída.

Vamos examinar alguns resultados reais de benchmarking para um endpoint que atende a um modelo TensorFlow MobileNetV2 de visão computacional. Se você quiser reproduzir este exemplo, consulte o cadernos de exemplo diretório no repositório GitHub.

A primeira saída do relatório consolidado é uma tabela de resumo que fornece as métricas de latência mínima, média, média e máxima para cada MemorySizeInMB configuração bem-sucedida do tamanho da memória. Conforme mostrado na tabela a seguir, a latência média de invocação (invocation_latency_mean) continuou a melhorar à medida que a configuração da memória foi aumentada para 3072 MB, mas parou de melhorar depois disso.

Apresentando o Amazon SageMaker Serverless Inference Benchmarking Toolkit PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Além das estatísticas descritivas de alto nível, é fornecido um gráfico que mostra a distribuição da latência conforme observada pelo cliente para cada uma das configurações de memória. Novamente, podemos observar que a configuração de 1024 MB não tem tanto desempenho quanto as outras opções, mas não há uma diferença substancial no desempenho nas configurações de 2048 e superiores.

Apresentando o Amazon SageMaker Serverless Inference Benchmarking Toolkit PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Amazon CloudWatch métricas associadas a cada configuração de endpoint também são fornecidas. Uma métrica importante aqui é ModelSetupTime, que mede quanto tempo levou para carregar o modelo quando o endpoint foi invocado em um estado frio. A métrica nem sempre pode aparecer no relatório quando um endpoint é iniciado em estado quente. A cold_start_delay está disponível para especificar o número de segundos de suspensão antes de iniciar o benchmark em um endpoint implantado. Definir esse parâmetro para um número mais alto, como 600 segundos, deve aumentar a probabilidade de uma invocação de estado frio e melhorar as chances de capturar essa métrica. Além disso, é muito mais provável que essa métrica seja capturada com o benchmark de invocação simultânea, que discutiremos mais adiante nesta seção.

A tabela a seguir mostra as métricas capturadas pelo CloudWatch para cada configuração de memória.

Apresentando o Amazon SageMaker Serverless Inference Benchmarking Toolkit PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

O próximo gráfico mostra as compensações de desempenho e custo de diferentes configurações de memória. Uma linha mostra o custo estimado de invocar o endpoint 1 milhão de vezes e a outra mostra a latência média de resposta. Essas métricas podem informar sua decisão sobre qual configuração de endpoint é mais econômica. Neste exemplo, vemos que a latência média se estabiliza após 2048 MB, enquanto o custo continua a aumentar, indicando que para este modelo uma configuração de tamanho de memória de 2048 seria a mais ideal.

Apresentando o Amazon SageMaker Serverless Inference Benchmarking Toolkit PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

O resultado final do benchmark de custo e estabilidade é uma configuração de memória recomendada, juntamente com uma tabela que compara o custo de operação de um endpoint sem servidor com uma instância de hospedagem SageMaker comparável. Com base nos dados coletados, a ferramenta determinou que a configuração de 2048 MB é a ideal para este modelo. Embora a configuração 3072 forneça latência cerca de 10 milissegundos melhor, isso acarreta um aumento de 30% no custo, de US$ 4.55 para US$ 5.95 por 1 milhão de solicitações. Além disso, o resultado mostra que um endpoint sem servidor proporcionaria economias de até 88.72% em relação a uma instância de hospedagem em tempo real comparável quando há menos de 1 milhão de solicitações de invocação mensais, e atinge o ponto de equilíbrio com um endpoint em tempo real após 8.5 milhões de solicitações.

Apresentando o Amazon SageMaker Serverless Inference Benchmarking Toolkit PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

O segundo tipo de benchmark é opcional e testa vários MaxConcurency configurações sob diferentes padrões de tráfego. Este benchmark geralmente é executado usando o valor ideal MemorySizeInMB configuração do benchmark de estabilidade. Os dois parâmetros principais para este benchmark são uma lista de MaxConcurency configurações para testar junto com uma lista de multiplicadores de cliente, que determinam o número de clientes simultâneos simulados com os quais o endpoint é testado.

Por exemplo, definindo o concurrency_benchmark_max_conc parameter para [4, 8] e concurrency_num_clients_multiplier para [1, 1.5, 2], dois endpoints são lançados: um com MaxConcurency de 4 e o outro 8. Cada endpoint é então comparado com um (MaxConcurency multiplicador x) número de clientes simultâneos simulados, que para o endpoint com uma simultaneidade de 4 se traduz em benchmarks de teste de carga com 4, 6 e 8 clientes simultâneos.

A primeira saída deste benchmark é uma tabela que mostra as métricas de latência, exceções de limitação e métricas de transações por segundo (TPS) associadas a cada MaxConcurrency configuração com diferentes números de clientes simultâneos. Essas métricas ajudam a determinar o apropriado MaxConcurrency configuração para lidar com a carga de tráfego esperada. Na tabela a seguir, podemos ver que um endpoint configurado com uma simultaneidade máxima de 8 foi capaz de lidar com até 16 clientes simultâneos com apenas duas exceções de limitação de 2,500 invocações feitas a uma média de 24 transações por segundo.

Apresentando o Amazon SageMaker Serverless Inference Benchmarking Toolkit PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

O próximo conjunto de resultados fornece um gráfico para cada MaxConcurrency configuração que mostra a distribuição da latência sob diferentes cargas. Neste exemplo, podemos ver que um endpoint com um MaxConcurrency a configuração 4 foi capaz de processar com êxito todas as solicitações com até 8 clientes simultâneos com um aumento mínimo na latência de invocação.

Apresentando o Amazon SageMaker Serverless Inference Benchmarking Toolkit PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

A saída final fornece uma tabela com métricas do CloudWatch para cada MaxConcurrency configuração. Ao contrário da tabela anterior que mostra a distribuição da latência para cada configuração de memória, que nem sempre pode exibir a inicialização a frio ModelSetupTime métrica, é muito mais provável que essa métrica apareça nesta tabela devido ao maior número de solicitações de invocação e a uma maior MaxConcurrency.

Apresentando o Amazon SageMaker Serverless Inference Benchmarking Toolkit PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Conclusão

Nesta postagem, apresentamos o SageMaker Serverless Inference Benchmarking Toolkit e fornecemos uma visão geral de sua configuração e resultados. A ferramenta pode ajudá-lo a tomar uma decisão mais informada em relação à inferência sem servidor, testando a carga de diferentes configurações com padrões de tráfego realistas. Experimente o kit de ferramentas de benchmarking com seus próprios modelos para ver por si mesmo o desempenho e a economia de custos que você pode esperar ao implantar um endpoint sem servidor. Consulte o GitHub repo para documentação adicional e cadernos de exemplo.

Recursos adicionais


Sobre os autores

Apresentando o Amazon SageMaker Serverless Inference Benchmarking Toolkit PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Simon Zamarin é arquiteto de soluções de AI / ML cujo foco principal é ajudar os clientes a extrair valor de seus ativos de dados. Em seu tempo livre, Simon gosta de passar o tempo com a família, lendo ficção científica e trabalhando em vários projetos de casa DIY.

Apresentando o Amazon SageMaker Serverless Inference Benchmarking Toolkit PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Dhawal Patel é Arquiteto Principal de Machine Learning na AWS. Ele trabalhou com organizações que vão de grandes empresas a startups de médio porte em problemas relacionados à computação distribuída e inteligência artificial. Ele se concentra em aprendizado profundo, incluindo domínios de PNL e visão computacional. Ele ajuda os clientes a obter inferência de modelo de alto desempenho no SageMaker.

Apresentando o Amazon SageMaker Serverless Inference Benchmarking Toolkit PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Rishabah Ray Chaudhury é gerente de produto sênior do Amazon SageMaker, com foco em inferência de aprendizado de máquina. Ele é apaixonado por inovar e criar novas experiências para clientes de machine learning na AWS para ajudar a dimensionar suas cargas de trabalho. Nas horas vagas gosta de viajar e cozinhar. Você pode encontrá-lo em LinkedIn.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS