A Exafunction oferece suporte ao AWS Inferentia para desbloquear o melhor desempenho de preço para inferência de aprendizado de máquina PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Exafunction oferece suporte ao AWS Inferentia para obter o melhor desempenho de preço para inferência de aprendizado de máquina

Em todos os setores, os modelos de machine learning (ML) estão se aprofundando, os fluxos de trabalho estão se tornando mais complexos e as cargas de trabalho estão operando em escalas maiores. Esforços e recursos significativos são investidos para tornar esses modelos mais precisos, uma vez que esse investimento resulta diretamente em melhores produtos e experiências. Por outro lado, fazer com que esses modelos funcionem de forma eficiente na produção é uma tarefa nada trivial e muitas vezes esquecida, apesar de ser fundamental para atingir as metas de desempenho e orçamento. Neste post abordamos como Exafunction e Inferência da AWS trabalhem juntos para desbloquear uma implantação fácil e econômica para modelos de ML em produção.

Exafunção é uma start-up focada em permitir que as empresas executem ML em escala da maneira mais eficiente possível. Um de seus produtos é ExaDeploy, uma solução SaaS fácil de usar para atender cargas de trabalho de ML em escala. O ExaDeploy orquestra com eficiência suas cargas de trabalho de ML em recursos mistos (aceleradores de CPU e hardware) para maximizar a utilização de recursos. Ele também cuida do escalonamento automático, colocação de computação, problemas de rede, tolerância a falhas e muito mais, para garantir uma implantação eficiente e confiável. Baseado em AWS Inferentia Instâncias do Amazon EC2 Inf1 são desenvolvidos especificamente para oferecer o menor custo por inferência na nuvem. O ExaDeploy agora oferece suporte a instâncias Inf1, o que permite aos usuários obter economias baseadas em hardware de aceleradores e economias baseadas em software de virtualização otimizada de recursos e orquestração em escala.

Visão geral da solução

Como o ExaDeploy resolve a eficiência da implantação

Para garantir a utilização eficiente dos recursos de computação, você precisa considerar a alocação adequada de recursos, escalonamento automático, colocalização de computação, custo de rede e gerenciamento de latência, tolerância a falhas, controle de versão e reprodutibilidade e muito mais. Em escala, quaisquer ineficiências afetam materialmente os custos e a latência, e muitas grandes empresas abordaram essas ineficiências através da criação de equipes e conhecimentos internos. No entanto, não é prático para a maioria das empresas assumir esta sobrecarga financeira e organizacional de construir software generalizável que não seja a competência central desejada pela empresa.

O ExaDeploy foi projetado para resolver esses problemas de eficiência de implantação, incluindo aqueles observados em algumas das cargas de trabalho mais complexas, como aquelas em veículos autônomos e aplicativos de processamento de linguagem natural (PNL). Em algumas grandes cargas de trabalho de ML em lote, o ExaDeploy reduziu os custos em mais de 85% sem sacrificar a latência ou a precisão, com tempo de integração tão baixo quanto um dia de trabalho. Foi comprovado que o ExaDeploy escala automaticamente e gerencia milhares de instâncias simultâneas de recursos de aceleradores de hardware sem qualquer degradação do sistema.

Os principais recursos do ExaDeploy incluem:

  • Funciona na sua nuvem: nenhum dos seus modelos, entradas ou saídas sai da sua rede privada. Continue a usar os descontos do seu provedor de nuvem.
  • Recursos aceleradores compartilhados: o ExaDeploy otimiza os aceleradores usados, permitindo que vários modelos ou cargas de trabalho compartilhem recursos do acelerador. Ele também pode identificar se diversas cargas de trabalho estão implantando o mesmo modelo e, em seguida, compartilhar o modelo entre essas cargas de trabalho, otimizando assim o acelerador usado. Seus recursos de rebalanceamento automático e drenagem de nós maximizam a utilização e minimizam custos.

A Exafunction oferece suporte ao AWS Inferentia para desbloquear o melhor desempenho de preço para inferência de aprendizado de máquina PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

  • Modelo de implantação escalonável sem servidor: o ExaDeploy é dimensionado automaticamente com base na saturação de recursos do acelerador. Reduza dinamicamente para 0 ou até milhares de recursos.
  • Suporte para uma variedade de tipos de computação: você pode descarregar modelos de aprendizado profundo de todas as principais estruturas de ML, bem como código C++ arbitrário, kernels CUDA, operações personalizadas e funções Python.
  • Registro e versionamento de modelo dinâmico: novos modelos ou versões de modelos podem ser registrados e executados sem a necessidade de reconstruir ou reimplementar o sistema.
  • Execução ponto a ponto: os clientes se conectam diretamente aos recursos do acelerador remoto, o que permite baixa latência e alto rendimento. Eles podem até armazenar o estado remotamente.
  • Execução assíncrona: o ExaDeploy oferece suporte à execução assíncrona de modelos, o que permite aos clientes paralelizar a computação local com o trabalho de recursos do acelerador remoto.
  • Pipelines remotos tolerantes a falhas: ExaDeploy permite que os clientes componham dinamicamente cálculos remotos (modelos, pré-processamento, etc.) em pipelines com garantia de tolerância a falhas. O sistema ExaDeploy lida com falhas de pods ou nós com recuperação e reprodução automáticas, para que os desenvolvedores nunca precisem pensar em garantir a tolerância a falhas.
  • Monitoramento pronto para uso: ExaDeploy fornece métricas Prometheus e painéis Grafana para visualizar o uso de recursos do acelerador e outras métricas do sistema.

ExaDeploy suporta AWS Inferentia

As instâncias Inf2 do Amazon EC1 baseadas no AWS Inferentia são projetadas para cargas de trabalho de inferência específicas de aprendizado profundo. Essas instâncias fornecem taxa de transferência de até 2.3x e economia de custos de até 70% em comparação com a geração atual de instâncias de inferência de GPU.

O ExaDeploy agora oferece suporte ao AWS Inferentia e, juntos, eles liberam o aumento de desempenho e economia de custos alcançados por meio da aceleração de hardware desenvolvida especificamente e da orquestração otimizada de recursos em escala. Vejamos os benefícios combinados do ExaDeploy e do AWS Inferentia considerando uma carga de trabalho de ML moderna muito comum: cargas de trabalho de computação mista em lote.

Características hipotéticas da carga de trabalho:

  • 15 ms de pré-processamento/pós-processamento somente da CPU
  • Inferência de modelo (15 ms em GPU, 5 ms em AWS Inferentia)
  • 10 clientes, cada um faz solicitação a cada 20 ms
  • O custo relativo aproximado de CPU:Inferentia:GPU é 1:2:4 (com base na definição de preço sob demanda do Amazon EC2 para c5.xlarge, inf1.xlarge e g4dn.xlarge)

A tabela abaixo mostra como cada uma das opções se configura:

instalação Recursos necessários Custo Latência
GPU sem ExaDeploy 2 CPUs, 2 GPUs por cliente (total de 20 CPUs, 20 GPUs) 100 30 ms
GPU com ExaDeploy 8 GPUs compartilhadas entre 10 clientes, 1 CPU por cliente 42 30 ms
AWS Inferentia sem ExaDeploy 1 CPU, 1 AWS Inferentia por cliente (total de 10 CPU, 10 Inferentia) 30 20 ms
AWS Inferentia com ExaDeploy 3 AWS Inferentia compartilhado entre 10 clientes, 1 CPU por cliente 16 20 ms

Exemplo de ExaDeploy no AWS Inferentia

Nesta seção, abordamos as etapas de configuração do ExaDeploy por meio de um exemplo com nós inf1 em um modelo BERT PyTorch. Vimos uma taxa de transferência média de 1140 amostras/seg para o modelo bert-base, o que demonstra que pouca ou nenhuma sobrecarga foi introduzida pelo ExaDeploy para este modelo único, cenário de carga de trabalho única.

Passo 1: Configurar um Serviço Amazon Elastic Kubernetes Cluster (Amazon EKS)

Um cluster Amazon EKS pode ser criado com nosso Módulo Terraform AWS. Para nosso exemplo, usamos um inf1.xlarge para AWS Inferentia.

Passo 2: Configurar ExaDepoy

A segunda etapa é configurar o ExaDeploy. Em geral, a implantação do ExaDeploy em instâncias inf1 é simples. A configuração segue principalmente o mesmo procedimento das instâncias da unidade de processamento gráfico (GPU). A principal diferença é alterar a tag do modelo de GPU para AWS Inferentia e recompilar o modelo. Por exemplo, migrar de instâncias g4dn para inf1 usando as interfaces de programação de aplicativos (APIs) do ExaDeploy exigiu a alteração de apenas aproximadamente 10 linhas de código.

  • Um método simples é usar Exafunction Módulo Terraform AWS Kubernetes or gráfico de leme. Eles implantam os principais componentes do ExaDeploy para execução no cluster do Amazon EKS.
  • Compile o modelo em um formato serializado (por exemplo, TorchScript, modelos salvos TF, ONNX, etc.). Para AWS Inferentia, seguimos Neste tutorial.
  • Registre o modelo compilado no repositório de módulos do ExaDeploy.
    with exa.ModuleRepository(MODULE_REPOSITORY_ADDRESS) as repo:
       repo.register_py_module(
           "BertInferentia",
           module_class="TorchModule",
           context_data=BERT_NEURON_TORCHSCRIPT_AS_BYTES,
           config={
               "_torchscript_input_names": ",".join(BERT_INPUT_NAMES).encode(),
               "_torchscript_output_names": BERT_OUTPUT_NAME.encode(),
               "execution_type": "inferentia".encode(),
           },
       )

  • Prepare os dados para o modelo (ou seja, não ExaDeploy-specific).
    tokenizer = transformers.AutoTokenizer.from_pretrained(
       "bert-base-cased-finetuned-mrpc"
    )
    
    batch_encoding = tokenizer.encode_plus(
       "The company Exafunction is based in the Bay Area",
       "Exafunction’s headquarters are situated in Mountain View",
       max_length=MAX_LENGTH,
       padding="max_length",
       truncation=True,
       return_tensors="pt",
    )

  • Execute o modelo remotamente do cliente.
    with exa.Session(
       scheduler_address=SCHEDULER_ADDRESS,
       module_tag="BertInferentia",
       constraint_config={
           "KUBERNETES_NODE_SELECTORS": "role=runner-inferentia",
           "KUBERNETES_ENV_VARS": "AWS_NEURON_VISIBLE_DEVICES=ALL",
       },
    ) as sess:
       bert = sess.new_module("BertInferentia")
       classification_logits = bert.run(
           **{
               key: value.numpy()
               for key, value in batch_encoding.items()
           }
       )[BERT_OUTPUT_NAME].numpy()
    
       # Assert that the model classifies the two statements as paraphrase.
       assert classification_logits[0].argmax() == 1

ExaDeploy e AWS Inferentia: melhores juntos

O AWS Inferentia está ampliando os limites do rendimento para inferência de modelos e oferecendo o menor custo por inferência na nuvem. Dito isto, as empresas precisam da orquestração adequada para aproveitar os benefícios de preço-desempenho do Inf1 em grande escala. O atendimento de ML é um problema complexo que, se abordado internamente, requer experiência que está distante dos objetivos da empresa e muitas vezes atrasa os prazos dos produtos. ExaDeploy, que é a solução de software de implantação de ML da Exafunction, emergiu como líder do setor. Ele atende até mesmo as cargas de trabalho de ML mais complexas, ao mesmo tempo que fornece experiências de integração tranquilas e suporte de uma equipe de classe mundial. Juntos, o ExaDeploy e o AWS Inferentia proporcionam maior desempenho e economia de custos para cargas de trabalho de inferência em escala.

Conclusão

Nesta postagem, mostramos como Exafunction oferece suporte ao AWS Inferentia para ML de desempenho. Para obter mais informações sobre a construção de aplicativos com Exafunction, visite Exafunção. Para conhecer as práticas recomendadas sobre a criação de cargas de trabalho de aprendizagem profunda no Inf1, visite Instâncias Inf2 do Amazon EC1.


Sobre os autores

Nicholas Jiang, engenheiro de software, Exafunction

Jonathan Ma, engenheiro de software, Exafunction

Prem Nair, engenheiro de software, Exafunction

Anshul Ramachandran, engenheiro de software, Exafunction

Shruti Koparkar, gerente sênior de marketing de produto, AWS

Carimbo de hora:

Mais de Aprendizado de máquina da AWS