Este documento no Google Cloud Framework de arquitetura do Google Cloud: perspectiva de IA e ML fornece princípios e recomendações para ajudar você a otimizar o desempenho das suas cargas de trabalho de IA e ML no Google Cloud. As recomendações neste documento estão alinhadas com o pilar de otimização de desempenho do Well-Architected Framework.
Os sistemas de IA e ML oferecem recursos avançados de automação e tomada de decisões para sua organização. O desempenho desses sistemas pode afetar diretamente fatores importantes para os negócios, como receita, custos e satisfação do cliente. Para aproveitar todo o potencial dos sistemas de IA e ML, é preciso otimizar o desempenho deles com base nas suas metas de negócios e requisitos técnicos. O processo de otimização de desempenho geralmente envolve compensações. Por exemplo, uma escolha de design que forneça o desempenho necessário pode levar a custos mais altos. As recomendações neste documento priorizam o desempenho em relação a outras considerações.
Para otimizar o desempenho de IA e ML, é preciso tomar decisões sobre fatores como a arquitetura do modelo, os parâmetros e a estratégia de treinamento. Ao tomar essas decisões, considere todo o ciclo de vida dos sistemas de IA e ML e o ambiente de implantação deles. Por exemplo, LLMs muito grandes podem ter um desempenho excelente em infraestruturas de treinamento massivas, mas podem não funcionar bem em ambientes com capacidade limitada, como dispositivos móveis.
As recomendações neste documento são mapeadas para os seguintes princípios básicos:
- Estabelecer objetivos de performance e métodos de avaliação
- Realizar e acompanhar experimentos frequentes
- Criar e automatizar a infraestrutura de treinamento e disponibilização
- Combinar as escolhas de design com os requisitos de desempenho
- Vincular métricas de performance às escolhas de design e configuração
Estabelecer objetivos de performance e métodos de avaliação
Sua estratégia e metas de negócios são a base para aproveitar as tecnologias de IA e ML. Traduza suas metas de negócios em indicadores principais de desempenho (KPIs) mensuráveis. Exemplos de KPIs incluem receita total, custos, taxa de conversão, taxa de retenção ou de cancelamento, satisfação do cliente e satisfação do funcionário.
Defina objetivos realistas
De acordo com as práticas recomendadas de engenharia de confiabilidade do site (SRE), os objetivos de um serviço precisam refletir um nível de desempenho que atenda aos requisitos dos clientes típicos. Isso significa que os objetivos de serviço precisam ser realistas em termos de escala e desempenho de recursos.
Objetivos irreais podem levar ao desperdício de recursos para ganhos mínimos de desempenho. Os modelos que oferecem o melhor desempenho podem não levar a resultados de negócios ideais. Esses modelos podem exigir mais tempo e custo para serem treinados e executados.
Ao definir objetivos, diferencie e priorize os objetivos de qualidade e performance:
- Qualidade se refere às características inerentes que determinam o valor de uma entidade. Isso ajuda a avaliar se a entidade atende às suas expectativas e padrões.
- Desempenho se refere à eficiência e eficácia com que uma entidade funciona ou realiza o propósito pretendido.
Os engenheiros de ML podem melhorar as métricas de performance de um modelo durante o processo de treinamento. A Gemini Enterprise Agent Platform oferece um serviço de avaliação que os engenheiros de ML podem usar para implementar o rastreamento padronizado e repetível de métricas de qualidade. A eficiência de previsão de um modelo indica o desempenho dele em produção ou no momento da inferência. Para monitorar o desempenho, use o Cloud Monitoring e o Model Monitoring na Gemini Enterprise Agent Platform. Para selecionar os modelos adequados e decidir como treiná-los, é preciso traduzir as metas de negócios em requisitos técnicos que determinam as métricas de qualidade e performance.
Para entender como definir objetivos realistas e identificar métricas de performance adequadas, considere o seguinte exemplo de um sistema de detecção de fraudes com tecnologia de IA:
- Objetivo de negócio: para um sistema de detecção de fraudes, um objetivo de negócio irrealista é detectar 100% das transações fraudulentas com precisão em um nanossegundo em um pico de tráfego de 100 bilhões de transações por segundo. Um objetivo mais realista é detectar transações fraudulentas com 95% de precisão em 100 milissegundos para 90% das previsões on-line durante o horário comercial dos EUA em um volume de pico de um milhão de transações por segundo.
- Métricas de performance: a detecção de fraudes é um problema de classificação. É possível medir a qualidade de um sistema de detecção de fraudes usando métricas como recall, pontuação F1 e acurácia. Para acompanhar o desempenho ou a velocidade do sistema, meça a latência de inferência. Detectar transações potencialmente fraudulentas pode ser mais valioso do que a precisão. Portanto, uma meta realista pode ser um recall alto com uma latência p90 menor que 100 milissegundos.
Monitorar o desempenho em todas as etapas do ciclo de vida do modelo
Durante a experimentação e o treinamento e após a implantação do modelo, monitore seus KPIs e observe quaisquer desvios dos objetivos de negócio. Uma estratégia de monitoramento abrangente ajuda você a tomar decisões críticas sobre a qualidade do modelo e o uso de recursos, como:
- Decidir quando interromper um job de treinamento.
- Determinar se o desempenho de um modelo está se degradando na produção.
- Melhorar o custo e o tempo de lançamento de novos modelos.
Monitoramento durante a experimentação e o treinamento
O objetivo da fase de experimentação é encontrar a abordagem geral, a arquitetura do modelo e os hiperparâmetros ideais para uma tarefa específica. A experimentação ajuda a determinar de forma iterativa a configuração que oferece o desempenho ideal e como treinar o modelo. O monitoramento ajuda a identificar com eficiência possíveis áreas de melhoria.
Para monitorar a qualidade e a eficiência do treinamento de um modelo, os engenheiros de ML precisam fazer o seguinte:
- Visualizar as métricas de qualidade e desempenho do modelo para cada teste.
- Visualizar gráficos e métricas de modelos, como histogramas de pesos e vieses.
- Representar visualmente os dados de treinamento.
- Criar perfis de algoritmos de treinamento em diferentes hardwares.
Para monitorar a experimentação e o treinamento, considere as seguintes recomendações:
Qualidade do modelo: para visualizar e acompanhar métricas de experimentos, como acurácia, e para visualizar a arquitetura do modelo ou os dados de treinamento, use o TensorBoard. O TensorBoard é um pacote de ferramentas de código aberto compatível com frameworks de ML, como:
- XGBoost
- JAX
- Flax
- PyTorch
- Frameworks baseados em XLA no Cloud TPU para treinamento do Cloud TPU
- TensorFlow
Rastreamento de experimentos: os experimentos na Gemini Enterprise Agent Platform são integrados a instâncias gerenciadas do TensorBoard da Agent Platform de nível empresarial para oferecer suporte ao rastreamento de experimentos. Essa integração permite o armazenamento e o compartilhamento confiáveis de registros e métricas. Para permitir que várias equipes e indivíduos acompanhem os experimentos, recomendamos que você use o princípio de privilégio mínimo.
Eficiência de treinamento e experimentação: a Plataforma de Agentes exporta métricas para o Monitoring e coleta dados de telemetria e registros usando um agente de observabilidade. É possível visualizar as métricas no console do Google Cloud . Como alternativa, crie painéis ou alertas com base nessas métricas usando o Monitoring. Para mais informações, consulte Métricas de monitoramento da plataforma de agentes.
GPUs NVIDIA: o Agente de Operações permite o monitoramento de GPU para o Compute Engine e para outros produtos compatíveis com o Agente de Operações. Também é possível usar o NVIDIA Data Center GPU Manager (DCGM), que é um pacote de ferramentas para gerenciar e monitorar GPUs NVIDIA em ambientes de cluster. O monitoramento de GPUs NVIDIA é particularmente útil para treinar e disponibilizar modelos de aprendizado profundo.
Depuração profunda: para depurar problemas com o código de treinamento ou a configuração de um job de treinamento gerenciado da Gemini Enterprise Agent Platform, inspecione o contêiner de treinamento usando uma sessão de shell interativa.
Monitoramento durante a exibição: previsão de streaming
Depois de treinar um modelo e exportá-lo para o Model Registry na Gemini Enterprise Agent Platform, é possível criar um endpoint da Agent Platform. Esse endpoint fornece um endpoint HTTP para o modelo.
O Model Monitoring na Agent Platform ajuda a identificar grandes mudanças na distribuição de atributos de entrada ou saída. Também é possível monitorar as atribuições de recursos em produção em comparação com uma distribuição de referência. A distribuição de referência pode ser o conjunto de treinamento ou pode ser baseada em distribuições anteriores de tráfego de produção. Uma mudança na distribuição de exibição pode implicar uma redução no desempenho preditivo em comparação com o treinamento.
- Escolha um objetivo de monitoramento: dependendo da sensibilidade de um caso de uso a mudanças nos dados fornecidos ao modelo, é possível monitorar diferentes tipos de objetivos: desvio de atributo de entrada, desvio de saída e atribuição de atributo. O Model Monitoring na Agent Platform v2 permite monitorar modelos implantados em uma plataforma de veiculação gerenciada, como a Agent Platform, e também em serviços auto-hospedados, como o Google Kubernetes Engine (GKE). Além disso, para um rastreamento de performance granular, é possível monitorar parâmetros no nível do modelo, em vez de um endpoint.
- Monitorar a disponibilização de modelos de IA generativa: para garantir a estabilidade e minimizar a latência, principalmente para endpoints de LLM, configure uma pilha de monitoramento robusta. Os modelos do Gemini oferecem métricas integradas, como o tempo para o primeiro token (TTFT), que podem ser acessadas diretamente no Metrics Explorer. Para monitorar a capacidade, a latência e as taxas de erro em todos os modelos doGoogle Cloud , use o painel de observabilidade do modelo.
Monitoramento durante a disponibilização: predição em lote
Para monitorar a predição em lote, execute jobs de avaliação padrão no serviço de avaliação da Agent Platform. O Model Monitoring na Agent Platform é compatível com o monitoramento de inferências em lote. Se você usa o Batch para executar a carga de trabalho de exibição, é possível monitorar o consumo de recursos usando as métricas no Metrics Explorer.
Automatizar a avaliação para garantir a reprodutibilidade e a padronização
Para fazer a transição de modelos de protótipos para sistemas de produção confiáveis, é necessário um processo de avaliação padronizado. Esse processo ajuda a acompanhar o progresso entre iterações, comparar diferentes modelos, detectar e mitigar vieses e garantir que você atenda aos requisitos regulatórios. Para garantir a reprodutibilidade e a escalonabilidade, é preciso automatizar o processo de avaliação.
Para padronizar e automatizar o processo de avaliação do desempenho de ML, conclua as seguintes etapas:
- Defina indicadores quantitativos e qualitativos.
- Escolher as fontes de dados e as técnicas adequadas.
- Padronizar o pipeline de avaliação.
Essas opções são descritas nas seções a seguir.
1. Definir indicadores quantitativos e qualitativos
As métricas baseadas em computação são calculadas usando fórmulas numéricas. As métricas de perda de treinamento podem ser diferentes das métricas de avaliação relevantes para as metas de negócios. Por exemplo, um modelo usado para detecção supervisionada de fraudes pode usar a perda de entropia cruzada para treinamento. No entanto, para avaliar o desempenho da inferência, uma métrica mais relevante pode ser o recall, que indica a cobertura de transações fraudulentas. A Agent Platform oferece um serviço de avaliação para métricas como recall, precisão e área sob a curva de precisão/recall (AuPRC). Para mais informações, consulte Avaliação de modelos na Agent Platform.
Indicadores qualitativos, como a fluência ou o valor de entretenimento do conteúdo gerado, não podem ser calculados de forma objetiva. Para avaliar esses indicadores, use a estratégia de LLM-as-a-judge ou serviços de rotulagem humana, como o Labelbox.
2. Escolher as fontes de dados e técnicas adequadas
Uma avaliação é estatisticamente significativa quando é executada em um determinado volume mínimo de exemplos variados. Escolha os conjuntos de dados e as técnicas que você usa para avaliações usando abordagens como as seguintes:
- Conjunto de dados de referência: use amostras de dados confiáveis, consistentes e precisas que reflitam a distribuição de probabilidade de um modelo em produção.
- LLM-as-a-judge: avalie a saída de um modelo generativo usando um LLM. Essa abordagem é relevante apenas para tarefas em que um LLM pode avaliar um modelo.
- Feedback do usuário: para orientar melhorias futuras, capture o feedback direto do usuário como parte do tráfego de produção.
Dependendo da técnica de avaliação, do tamanho e do tipo de dados de avaliação e da frequência da avaliação, é possível usar o BigQuery ou o Cloud Storage como fontes de dados, inclusive para o serviço de avaliação da Plataforma de Agentes.
- O BigQuery permite usar comandos SQL para executar tarefas de inferência, como processamento de linguagem natural e tradução automática. Para mais informações, consulte Visão geral das soluções específicas para tarefas.
- O Cloud Storage oferece uma solução de armazenamento econômica para grandes conjuntos de dados.
3. Padronizar o pipeline de avaliação
Para automatizar o processo de avaliação, considere os seguintes serviços e ferramentas:
- Serviço de avaliação da Plataforma de Agentes: oferece primitivas prontas para uso para acompanhar o desempenho do modelo como parte do ciclo de vida de ML na Plataforma de Agentes.
- Serviço de avaliação de IA generativa: permite avaliar qualquer aplicativo ou modelo generativo e analisar os resultados da avaliação de acordo com seu julgamento e critérios. Esse serviço também ajuda você a realizar tarefas especializadas, como engenharia de comandos, geração aumentada por recuperação (RAG) e otimização de agentes de IA.
- Ferramenta de avaliação lado a lado automática (AutoSxS) da plataforma de agentes: oferece suporte à avaliação em pares baseada em modelo.
- Kubeflow: fornece componentes especiais para executar avaliações de modelos.
Realizar e acompanhar experimentos frequentes
Para otimizar o desempenho de ML de forma eficaz, você precisa de uma plataforma dedicada, poderosa e interativa para experimentação. A plataforma precisa ter os seguintes recursos:
- Facilitar o desenvolvimento iterativo para que as equipes possam passar da ideia para resultados validados com velocidade, confiabilidade e escala.
- Permita que as equipes descubram com eficiência as configurações ideais que podem ser usadas para acionar jobs de treinamento.
- Fornecer acesso controlado a dados, recursos e ferramentas relevantes para realizar e acompanhar experimentos.
- Oferecer suporte à reprodutibilidade e ao rastreamento de linhagem de dados.
Tratar dados como um serviço
Isole as cargas de trabalho experimentais dos sistemas de produção e configure controles de segurança adequados para seus recursos de dados usando as seguintes técnicas:
| Técnica | Descrição | Vantagens |
|---|---|---|
| Isolamento de recursos | Isole os recursos de ambientes diferentes
em projetos do Google Cloud separados. Por exemplo, provisione os
recursos para ambientes de desenvolvimento, preparo e produção em
projetos separados, como ml-dev, ml-staging e
ml-prod. |
O isolamento de recursos ajuda a evitar que cargas de trabalho experimentais consumam recursos necessários para os sistemas de produção. Por exemplo, se você usar um único projeto para experimentos e produção, um experimento poderá consumir todas as GPUs NVIDIA A100 disponíveis para o treinamento gerenciado da plataforma de agentes. Isso pode causar interrupções no novo treinamento de um modelo de produção crítico. |
| Controle de identidade e acesso | Aplique os princípios de
confiança zero e privilégio mínimo e
use contas de serviço específicas para cargas de trabalho. Conceda acesso usando
papéis predefinidos do Identity and Access Management (IAM), como
Usuário da plataforma de agentes
(roles/aiplatform.user). |
Essa abordagem ajuda a evitar ações acidentais ou mal-intencionadas que podem corromper os experimentos. |
| Segurança de rede | Isole o tráfego de rede usando redes de nuvem privada virtual (VPC) e aplique perímetros de segurança usando o VPC Service Controls. | Essa abordagem ajuda a proteger dados sensíveis e impede que o tráfego experimental afete os serviços de produção. |
| Isolamento de dados | Armazene dados experimentais em buckets separados do Cloud Storage e conjuntos de dados do BigQuery. | O isolamento de dados evita a modificação acidental de dados de produção. Por exemplo, sem o isolamento de dados, um experimento pode alterar inadvertidamente os valores de atributos em uma tabela compartilhada do BigQuery, o que pode levar a uma degradação significativa na acurácia do modelo no ambiente de produção. |
Equipar as equipes com as ferramentas adequadas
Para estabelecer um conjunto selecionado de ferramentas que aceleram todo o ciclo de vida da experimentação, desde a exploração de dados até o treinamento e a análise de modelos, use as seguintes técnicas:
- Prototipagem interativa: para exploração rápida de dados, teste de hipóteses e prototipagem de código, use o Colab Enterprise ou instâncias gerenciadas do JupyterLab no Gemini Enterprise Agent Platform Workbench. Para mais informações, consulte Escolher uma solução de notebook.
- Treinamento de modelo escalonável: execute jobs de treinamento em um serviço gerenciado que oferece suporte a treinamento distribuído e recursos de computação escalonáveis, como GPUs e Cloud TPU. Essa abordagem ajuda a reduzir o tempo de treinamento de dias para horas e permite mais experimentos em paralelo. Para mais informações, consulte Usar componentes especializados para treinamento.
- ML no banco de dados: treine modelos diretamente no BigQuery ML usando SQL. Essa técnica ajuda a eliminar a movimentação de dados e acelera a experimentação para analistas e usuários centrados em SQL.
- Rastreamento de experimentos: crie um histórico pesquisável e comparável de dados de experimentos registrando parâmetros, métricas e artefatos para cada execução de experimento. Para mais informações, consulte Criar um sistema de linhagem de dados e modelos.
- Otimização da IA generativa: para otimizar o desempenho dos aplicativos de IA generativa, é preciso testar comandos, seleção de modelos e ajustes. Para engenharia de comandos rápida, use o Agent Studio na Gemini Enterprise Agent Platform. Para testar modelos de fundação (como o Gemini) e encontrar um modelo adequado para seu caso de uso e suas metas de negócios, use o Model Garden.
Padronize para reprodutibilidade e eficiência
Para garantir que os experimentos consumam recursos de maneira eficiente e produzam resultados consistentes e confiáveis, padronize e automatize os experimentos usando as seguintes abordagens:
- Garanta ambientes consistentes usando contêineres: empacote o código de treinamento e as dependências como contêineres do Docker. Gerencie e disponibilize os contêineres usando o Artifact Registry. Essa abordagem permite reproduzir problemas em máquinas diferentes repetindo experimentos em ambientes idênticos. A plataforma de agentes oferece contêineres pré-criados para treinamento sem servidor.
- Automatizar fluxos de trabalho de ML como pipelines: orquestre o fluxo de trabalho de ML completo como um pipeline codificado usando os pipelines da Gemini Enterprise Agent Platform. Essa abordagem ajuda a garantir a consistência e a reprodutibilidade, além de rastrear automaticamente todos os artefatos e metadados nos metadados de ML da Agent Platform.
- Automatize o provisionamento com a infraestrutura como código (IaC): defina e implante ambientes de experimentação padronizados usando ferramentas de IaC, como o Terraform. Para garantir que todos os projetos sigam um conjunto padronizado de configurações de segurança, rede e governança, use módulos do Terraform.
Criar e automatizar a infraestrutura de treinamento e disponibilização
Para treinar e disponibilizar modelos de IA, configure uma plataforma robusta que ofereça suporte ao desenvolvimento, à implantação e à disponibilização eficientes e confiáveis. Essa plataforma permite que suas equipes melhorem com eficiência a qualidade e o desempenho do treinamento e da veiculação a longo prazo.
Usar componentes especializados para treinamento
Uma plataforma de treinamento confiável ajuda a acelerar o desempenho e oferece uma abordagem padronizada para automatizar tarefas repetitivas no ciclo de vida de ML, desde a preparação de dados até a validação de modelos.
Coleta e preparação de dados
Para um treinamento de modelo eficaz, é preciso coletar e preparar os dados necessários para treinamento, teste e validação. Os dados podem vir de fontes diferentes e ser de tipos diferentes. Também é preciso reutilizar dados relevantes em execuções de treinamento e compartilhar recursos entre as equipes. Para melhorar a repetibilidade da fase de coleta de dados e preparação, considere as seguintes recomendações:
- Melhore a facilidade de descoberta de dados com o Knowledge Catalog.
- Centralize a engenharia de atributos na Feature Store da plataforma de agentes.
- Pré-processar dados usando o Dataflow.
Execução do treinamento
Ao treinar um modelo, você usa dados para criar um objeto de modelo. Para fazer isso, é necessário configurar a infraestrutura e as dependências necessárias do código de treinamento. Também é preciso decidir como persistir os modelos de treinamento, acompanhar o progresso do treinamento, avaliar o modelo e apresentar os resultados. Para melhorar a repetibilidade do treinamento, considere as seguintes recomendações:
- Siga as diretrizes em Automatizar a avaliação para reprodutibilidade e padronização.
- Para enviar jobs de treinamento em um ou mais nós de trabalho sem gerenciar o
provisionamento ou as dependências da infraestrutura, use o recurso
CustomJobno treinamento gerenciado da Agent Platform. Também é possível usar o recursoCustomJobpara jobs de ajuste de hiperparâmetros. - Otimize o goodput de programação usando o Dynamic Workload Scheduler ou reservas para o treinamento gerenciado da plataforma de agentes.
- Registre seus modelos no Model Registry.
Orquestração de treinamento
Implantar cargas de trabalho de treinamento como etapas de um pipeline usando os pipelines da Agent Platform. Esse serviço oferece serviços gerenciados do Kubeflow e do TFX. Defina cada etapa do pipeline como um componente executado em um contêiner. Cada componente funciona como uma função, com parâmetros de entrada e artefatos de saída que se tornam entradas para os componentes subsequentes no pipeline. Para otimizar a eficiência do pipeline, considere as seguintes recomendações:
- Implementar a automação principal:
- Use componentes do Kubeflow Pipelines.
- Use fluxos de controle para designs de pipeline avançados, como portas condicionais.
- Integre a compilação do pipeline como parte do fluxo de CI/CD.
- Execute o pipeline com o Cloud Scheduler.
- Aumentar a velocidade e a eficiência de custos:
- Para aumentar a velocidade das iterações e reduzir custos, use o cache de execução dos pipelines da plataforma de agentes.
- Especifique a configuração da máquina para cada componente com base nos requisitos de recursos de cada etapa.
- Aumentar a robustez:
- Para aumentar a robustez contra problemas temporários sem exigir intervenção manual, configure novas tentativas.
- Para falhar rapidamente e iterar com eficiência, configure uma política de falha.
- Para lidar com falhas, configure notificações por e-mail.
- Implementar governança e rastreamento:
- Para testar diferentes configurações de modelo ou de treinamento, adicione execuções de pipeline a experimentos.
- Monitore registros e métricas dos pipelines da Agent Platform.
- Siga as recomendações em Monitorar o desempenho em todas as etapas do ciclo de vida do modelo.
Usar infraestrutura especializada para previsão
Para reduzir o trabalho de gerenciamento de infraestrutura e implantações de modelos, automatize os fluxos de tarefas repetíveis. Uma abordagem orientada a serviços permite que você se concentre na velocidade e em um tempo de retorno (TTV) mais rápido. Considere as recomendações a seguir.
Implementar a implantação automática
- Depois que um modelo é treinado, use a automação para implantá-lo. Os pipelines da Agent Platform oferecem componentes especializados para implantar modelos em endpoints da Agent Platform. É possível gerenciar a implantação automática usando os fluxos de controle do Kubeflow.
- Para decidir se um modelo deve ser implantado com base em uma avaliação em relação a um conjunto de validação, use os componentes de avaliação do pipeline. É possível automatizar a implantação para inferência em lote usando componentes de predição em lote especializados na Agent Platform.
Aproveitar os recursos de escalonamento gerenciado
- A Agent Platform oferece recursos de inferência em lote e on-line que permitem configurar o comportamento de escalonamento.
- O Cloud Run é compatível com GPUs de escalonamento automático.
Otimizar a latência e a capacidade de processamento nos endpoints da Agent Platform
- Escolha um tipo de máquina apropriado.
- Escolha um tipo de endpoint adequado para seus modelos. Endpoints particulares dedicados podem ajudar a reduzir a latência.
- Se você usa o Feature Store, use a veiculação on-line do Bigtable para disponibilizar valores de atributos com alta capacidade de processamento e baixa latência, e use a Pesquisa Vetorial para disponibilizar embeddings.
Otimizar a utilização de recursos
- Para otimizar a utilização de recursos, é possível compartilhar recursos entre implantações de modelos. Em vez de usar uma VM separada para cada modelo (comportamento padrão), é possível implantar vários modelos em uma única VM.
- Para garantir ou otimizar a disponibilidade de recursos, use reservas, Dynamic Workload Scheduler ou VMs spot.
Otimizar a implantação do modelo
- Para evitar alterações interruptivas, faça uma migração gradual e implemente testes A/B implantando automaticamente vários modelos no mesmo endpoint. A Agent Platform separa a camada de endpoint dos modelos, o que permite dividir o tráfego entre as versões do modelo.
- Para substituir um modelo implantado, use uma estratégia de implantação contínua.
Monitore o desempenho
Para melhorar o desempenho de exibição na produção, observe os registros e as métricas de inferência dos endpoints da plataforma de agentes. Para entender o comportamento dos modelos em produção, você precisa de ferramentas para monitorar a qualidade e o desempenho. O Monitoramento de modelos na Agent Platform v2 permite monitorar várias versões de um modelo e iterar rapidamente.
Combinar as opções de design com os requisitos de desempenho
Ao fazer escolhas de design para melhorar o desempenho, avalie se elas atendem aos requisitos de negócios ou se são desnecessárias e contraproducentes. Para escolher a infraestrutura, os modelos e as configurações adequados, identifique os gargalos de desempenho e avalie como eles estão vinculados às métricas de performance. Por exemplo, mesmo em aceleradores de GPU muito potentes, as tarefas de treinamento podem enfrentar gargalos de desempenho. Esses gargalos podem ser causados por problemas de E/S de dados na camada de armazenamento ou por limitações de desempenho do modelo.
Foco na performance holística do fluxo de ML
À medida que os requisitos de treinamento aumentam em termos de tamanho do modelo e do cluster, a taxa de falha e os custos de infraestrutura podem aumentar. Portanto, o custo da falha pode aumentar de forma quadrática. Não é possível confiar apenas em métricas convencionais de eficiência de recursos, como a utilização de FLOPs do modelo (MFU). Para entender por que a MFU pode não ser um indicador suficiente do desempenho geral do treinamento, analise o ciclo de vida de um job de treinamento típico. O ciclo de vida consiste no seguinte fluxo cíclico:
- Criação de cluster: os nós de trabalho são provisionados.
- Inicialização: o treinamento é inicializado nos nós de trabalho.
- Execução do treinamento: os recursos são usados para propagação para frente ou para trás.
- Interrupção: o processo de treinamento é interrompido durante a criação de checkpoints do modelo ou devido a preempções de nós de trabalho.
Após cada interrupção, o fluxo anterior é repetido.
A etapa de execução do treinamento constitui uma fração do ciclo de vida de um job de ML. Portanto, a utilização de nós de trabalho para a etapa de execução do treinamento não indica a eficiência geral do job. Por exemplo, mesmo que a etapa de execução do treinamento seja executada com 100% de eficiência, a eficiência geral pode ser baixa se as interrupções ocorrerem com frequência ou se demorar muito para retomar o treinamento após as interrupções.
Adotar e acompanhar métricas de goodput
Para garantir a medição e a otimização holísticas do desempenho, mude o foco das métricas convencionais de eficiência de recursos, como MFU, para goodput. O Goodput considera a disponibilidade e a utilização dos clusters e recursos de computação, além de ajudar a medir a eficiência dos recursos em várias camadas.
O foco das métricas de goodput é o progresso geral de um job, e não se ele parece estar ocupado. As métricas de goodput ajudam a otimizar os jobs de treinamento para ganhos gerais tangíveis em produtividade e desempenho.
O goodput oferece uma compreensão granular das possíveis perdas de eficiência com as seguintes métricas:
- O goodput de programação é a fração de tempo em que todos os recursos necessários para treinamento ou exibição estão disponíveis para uso.
- O goodput do ambiente de execução representa a proporção de etapas úteis do treinamento que são concluídas durante um determinado período.
- O goodput do programa é o desempenho máximo do hardware ou a MFU que um job de treinamento pode extrair do acelerador. Isso depende do uso eficiente dos recursos de computação subjacentes durante o treinamento.
Otimizar o goodput de programação
Para otimizar o goodput de programação de uma carga de trabalho, é necessário identificar os requisitos de infraestrutura específicos da carga de trabalho. Por exemplo, a inferência em lote, a inferência de streaming e o treinamento têm requisitos diferentes:
- As cargas de trabalho de inferência em lote podem acomodar algumas interrupções e atrasos na disponibilidade de recursos.
- As cargas de trabalho de inferência de streaming exigem uma infraestrutura sem estado.
- As cargas de trabalho de treinamento exigem compromissos de infraestrutura de longo prazo.
Escolher os modos de obtenção adequados
Na computação em nuvem, a disponibilidade é a capacidade de provisionar recursos quando eles são necessários. O Google Cloud oferece os seguintes modos de disponibilidade:
- VMs sob demanda: você provisiona VMs do Compute Engine quando elas são necessárias e executa as cargas de trabalho nelas. A solicitação de provisionamento está sujeita à disponibilidade de recursos, como GPUs. Se uma quantidade suficiente de um tipo de recurso solicitado não estiver disponível, a solicitação vai falhar.
- VMs spot: você cria VMs usando capacidade de computação não utilizada. As VMs spot são faturadas com um preço com desconto em comparação com as VMs on demand, mas o Google Cloud pode interromper as VMs spot a qualquer momento. Recomendamos que você use VMs spot para cargas de trabalho sem estado que podem falhar normalmente quando as VMs host são interrompidas.
- Reservas: você reserva capacidade como um pool de VMs. As reservas são ideais para cargas de trabalho que precisam de garantia de capacidade. Use reservas para maximizar o goodput de programação, garantindo que os recursos estejam disponíveis quando necessário.
Dynamic Workload Scheduler: esse mecanismo de provisionamento enfileira solicitações de VMs com GPU em um pool dedicado. O Dynamic Workload Scheduler ajuda a evitar as restrições dos outros modos de obtenção:
- Situações de falta de estoque no modo sob demanda.
- Restrição de ausência de estado e risco de preempção de VMs spot.
- Implicações de custo e disponibilidade das reservas.
A tabela a seguir resume os modos de obtenção dos serviços do Google Cloud e fornece links para a documentação relevante:
| Produto | VMs sob demanda | VMs spot | Reservas | Dynamic Workload Scheduler |
|---|---|---|---|---|
| Compute Engine | Criar e iniciar uma instância do Compute Engine | Sobre as VMs spot | Sobre as reservas | Criar um MIG com VMs de GPU |
| GKE | Adicione e gerencie pools de nós | Sobre as VMs spot no GKE | Como consumir recursos zonais reservados | Consumo de GPU, Cloud TPU e H4D com provisionamento de início flexível |
| Lote | Criar e executar um job | Job em lote com VMs spot | Garantir a disponibilidade de recursos usando reservas de VM | Usar GPUs e VMs flex-start |
| Treinamento gerenciado da Agent Platform | Criar um job de treinamento sem servidor | Usar VMs spot para jobs de treinamento | Usar reservas para jobs de treinamento | Programar jobs de treinamento com base na disponibilidade de recursos |
| Plataforma de Agentes | Receba inferências em lote e inferências on-line de modelos treinados de forma personalizada. | Usar VMs spot para inferência | Usar reservas para inferência on-line | Usar VMs flex-start para inferência |
Planejar eventos de manutenção
É possível melhorar o goodput de programação antecipando e planejando a manutenção e os upgrades da infraestrutura.
O GKE permite controlar quando a manutenção automática do cluster pode ser realizada nos clusters. Para mais informações, consulte Janelas de manutenção e exclusões.
O Compute Engine oferece os seguintes recursos:
- Para manter uma instância em execução durante um evento de host, como uma manutenção planejada para o hardware subjacente, o Compute Engine faz uma migração em tempo real da instância para outro host na mesma zona. Para mais informações, consulte Processo de migração em tempo real durante eventos de manutenção.
- Para controlar como uma instância responde quando o host subjacente precisa de manutenção ou tem um erro, é possível definir uma política de manutenção do host para a instância.
Para informações sobre como planejar eventos de host relacionados a grandes clusters de treinamento no Hipercomputador de IA, consulte Gerenciar eventos de host em instâncias de computação.
Otimizar o goodput do ambiente de execução
O processo de treinamento de modelo é frequentemente interrompido por eventos como checkpointing de modelos e preempção de recursos. Para otimizar o goodput de ambiente de execução, é preciso garantir que o sistema retome o treinamento e a inferência de maneira eficiente depois que a infraestrutura necessária estiver pronta e após qualquer interrupção.
Durante treinamento de modelo, os pesquisadores de IA usam pontos de verificação para acompanhar o progresso e minimizar o aprendizado perdido devido a preempções de recursos. Modelos maiores tornam as interrupções de checkpoint mais longas, o que afeta ainda mais a eficiência geral. Após as interrupções, o aplicativo de treinamento precisa ser reiniciado em todos os nós do cluster. Essas reinicializações podem levar algum tempo porque os artefatos necessários precisam ser recarregados.
Para otimizar o goodput do ambiente de execução, use as seguintes técnicas:
| Técnica | Descrição |
|---|---|
| Implementar checkpoints automáticos. | A criação frequente de checkpoints permite acompanhar o progresso do treinamento em um nível granular. No entanto, o processo de treinamento é interrompido para cada checkpoint, o que reduz o goodput do ambiente de execução. Para minimizar as interrupções, é possível configurar o checkpoint automático, em que o sinal SIGTERM do host aciona a criação de um checkpoint. Essa abordagem limita as interrupções de checkpoint para quando o host precisa de manutenção. Lembre-se de que algumas falhas de hardware podem não acionar sinais SIGTERM. Portanto, é preciso encontrar um equilíbrio adequado entre a criação de checkpoints automática e os eventos SIGTERM. É possível configurar o checkpoint automático usando as seguintes técnicas:
|
| Use estratégias adequadas de carregamento de contêineres. | Em um cluster do GKE, antes que os nós possam retomar os jobs de treinamento, pode levar algum tempo para concluir o carregamento dos artefatos necessários, como dados ou checkpoints de modelo. Para reduzir o tempo necessário para recarregar dados e retomar o treinamento, use as seguintes técnicas:
|
| Use o cache de compilação. | Se o treinamento exigir uma pilha baseada em compilação, verifique se é possível usar um cache de compilação. Quando você usa um cache de compilação, o gráfico de computação não é recompilado após cada interrupção do treinamento. As reduções resultantes no tempo e no custo são particularmente benéficas quando você usa o Cloud TPU. O JAX permite armazenar o cache de compilação em um bucket do Cloud Storage e usar os dados armazenados em cache em caso de interrupções. |
Otimizar o goodput do programa
O goodput do programa representa o pico de utilização de recursos durante o treinamento, que é a maneira convencional de medir a eficiência do treinamento e da disponibilização. Para melhorar o goodput do programa, você precisa de uma estratégia de distribuição otimizada, uma sobreposição eficiente de computação e comunicação, acesso otimizado à memória e pipelines eficientes.
Para otimizar o goodput do programa, use as seguintes estratégias:
| Estratégia | Descrição |
|---|---|
| Use as opções de personalização no nível do framework. | Frameworks ou compiladores como o Accelerated Linear Algebra (XLA) fornecem muitos componentes essenciais do goodput do programa. Para otimizar ainda mais o desempenho, é possível personalizar componentes fundamentais do gráfico de computação. Por exemplo, o Pallas é compatível com kernels personalizados para Cloud TPU e GPUs. |
| Descarregar a memória para a DRAM do host. | Para treinamento em grande escala, que requer uma memória significativamente alta dos aceleradores, é possível transferir parte do uso da memória para a DRAM do host. Por exemplo, o JAX e o XLA permitem transferir ativações de modelo da passagem direta para a memória do host em vez de usar a memória do acelerador. Com essa estratégia, é possível melhorar o desempenho do treinamento aumentando a capacidade do modelo ou o tamanho do lote. |
| Aproveite a quantização durante o treinamento. | É possível melhorar a eficiência do treinamento e o goodput do programa aproveitando a quantização do modelo durante o treinamento. Essa estratégia reduz a precisão dos gradientes ou pesos durante determinadas etapas do treinamento. Portanto, o goodput do programa melhora. No entanto, essa estratégia pode exigir mais esforço de engenharia durante o desenvolvimento do modelo. Para saber mais, acesse os recursos a seguir: |
| Implementar o paralelismo. | Para aumentar a utilização dos recursos de computação disponíveis, use estratégias de paralelismo no nível do modelo durante o treinamento e ao carregar dados. Para informações sobre paralelismo de modelos, consulte:
Para alcançar o paralelismo de dados, use ferramentas como as seguintes:
|
Foco nos requisitos específicos da carga de trabalho
Para garantir que seus esforços de otimização de desempenho sejam eficazes e holísticos, você precisa combinar as decisões de otimização com os requisitos específicos das suas cargas de trabalho de treinamento e inferência. Escolher modelos de IA adequados e usar estratégias relevantes de otimização de comandos. Selecione frameworks e ferramentas adequados com base nos requisitos das suas cargas de trabalho.
Identificar requisitos específicos da carga de trabalho
Avalie os requisitos e as restrições das suas cargas de trabalho nas seguintes áreas:
| Área | Descrição |
|---|---|
| Requisitos de tarefas e qualidade | Defina a tarefa principal da carga de trabalho e o valor de referência de desempenho. Responda a perguntas como:
|
| Contexto de veiculação | Analise o ambiente operacional em que você planeja implantar o modelo. O contexto de veiculação geralmente tem um impacto significativo nas decisões de design. Considere os seguintes fatores:
|
| Habilidades e economia da equipe | Avalie o valor comercial de comprar a solução em comparação com o custo e a complexidade de criá-la e mantê-la. Determine se sua equipe tem as habilidades especializadas necessárias para o desenvolvimento de modelos personalizados ou se um serviço gerenciado pode oferecer um tempo de retorno mais rápido. |
Escolher um modelo adequado
Se uma API ou um modelo aberto puder oferecer o desempenho e a qualidade necessários, use essa API ou modelo.
Para tarefas específicas de modalidade, como reconhecimento óptico de caracteres (OCR), rotulagem e moderação de conteúdo, escolha APIs de ML como as seguintes:
Para aplicativos de IA generativa, considere modelos do Google, como Gemini, Imagen e Veo.
Conheça o Model Garden e escolha entre uma coleção selecionada de modelos de fundação e específicos de tarefas do Google. O Model Garden também oferece modelos abertos, como o Gemma, e modelos de terceiros, que podem ser executados na Agent Platform ou implantados em ambientes de execução como o GKE.
Se uma tarefa puder ser concluída usando uma API de ML ou um modelo de IA generativa, considere a complexidade da tarefa. Para tarefas complexas, modelos grandes, como o Gemini, podem oferecer um desempenho melhor do que modelos menores.
Melhorar a qualidade com comandos melhores
Para melhorar a qualidade dos seus comandos em grande escala, use o otimizador de comandos da Agent Platform. Não é necessário reescrever manualmente as instruções e os comandos do sistema. O otimizador de comandos aceita as seguintes abordagens:
- Otimização zero-shot: uma abordagem de baixa latência que melhora um único comando ou instrução do sistema em tempo real.
- Otimização baseada em dados: uma abordagem avançada que melhora os comandos avaliando as respostas de um modelo a comandos de amostra em relação a métricas de avaliação específicas.
Para mais diretrizes de otimização de comandos, consulte Visão geral das estratégias de comandos.
Melhorar o desempenho de endpoints de ML e IA generativa
Para melhorar a latência ou a capacidade de processamento (tokens por segundo) para endpoints de ML e IA generativa, considere as seguintes recomendações:
- Armazene os resultados em cache usando o Memorystore.
- Para APIs de IA generativa, use as seguintes técnicas:
- Armazenamento em cache de contexto: reduza a latência de solicitações que contêm conteúdo repetido.
- Capacidade de Processamento Provisionada: melhore a capacidade de processamento dos endpoints do Gemini reservando capacidade de processamento.
- Para modelos auto-hospedados, considere os seguintes frameworks de inferência
otimizados:
Framework Notebooks e guias Contêineres vLLM otimizados no Model Garden Implantar modelos abertos com contêineres pré-criados Inferência baseada em GPU no GKE Inferência baseada em Cloud TPU
Usar soluções e ajustes com pouco código
Se os modelos pré-treinados não atenderem aos seus requisitos, use as soluções a seguir para melhorar o desempenho deles em domínios específicos:
- O AutoML é uma solução com pouco código para melhorar os resultados de inferência com o mínimo de esforço técnico para uma ampla variedade de tarefas. O AutoML permite criar modelos otimizados em várias dimensões: arquitetura, desempenho e estágio de treinamento (por meio de checkpointing).
- O ajuste ajuda você a alcançar uma geração mais estável e de maior qualidade, além de menor latência com comandos mais curtos e sem muitos dados. Recomendamos que você comece o ajuste usando os valores padrão para hiperparâmetros. Para mais informações, consulte Sobre o ajuste supervisionado para o Gemini.
Otimizar o treinamento autogerenciado
Em alguns casos, é possível treinar novamente um modelo ou gerenciar totalmente um job de ajuste. Essa abordagem requer habilidades avançadas e mais tempo, dependendo do modelo, do framework e dos recursos usados.
Aproveite as opções de framework otimizadas para desempenho, como as seguintes:
Use imagens ou contêineres de aprendizado profundo, que incluem as dependências de software mais recentes e bibliotecas específicas doGoogle Cloud.
Execute treinamento de modelo com o Ray no Google Cloud:
- O Ray na Gemini Enterprise Agent Platform permite que você use o framework de treinamento distribuído do Ray no Compute Engine ou no GKE e simplifica a sobrecarga de gerenciamento do framework.
- É possível autogerenciar o Ray no GKE com o KubeRay implantando o operador do Ray em um cluster atual.
Implante cargas de trabalho de treinamento em um cluster de computação provisionado usando o Cluster Toolkit de código aberto. Para provisionar clusters com desempenho provisionado de maneira eficiente, use blueprints baseados em YAML. Gerencie os clusters usando programadores como Slurm e GKE.
Treine arquiteturas de modelo padrão usando receitas otimizadas para GPU.
Crie arquiteturas e estratégias de treinamento que otimizem o desempenho usando as seguintes técnicas:
- Implemente o treinamento distribuído na Agent Platform ou nos frameworks descritos anteriormente. O treinamento distribuído permite o paralelismo de modelos e de dados, o que pode ajudar a aumentar o tamanho do conjunto de dados de treinamento e do modelo, além de reduzir o tempo de treinamento.
- Para treinamento de modelo de forma eficiente e analisar diferentes configurações de desempenho, execute a criação de checkpoints em intervalos adequados. Para mais informações, consulte Otimizar o goodput do ambiente de execução.
Otimizar a veiculação autogerenciada
Para a veiculação autogerenciada, você precisa de operações de inferência eficientes e uma alta capacidade de processamento (número de inferências por unidade de tempo).
Para otimizar o modelo para inferência, considere as seguintes abordagens:
Quantização: reduza o tamanho do modelo representando os parâmetros em um formato de menor precisão. Essa abordagem ajuda a reduzir o consumo de memória e a latência. No entanto, a quantização após o treinamento pode mudar a qualidade do modelo. Por exemplo, a quantização após o treinamento pode causar uma redução na acurácia.
- A quantização pós-treinamento (PTQ) é uma tarefa repetível. Os principais frameworks de ML, como PyTorch e TensorFlow, são compatíveis com a PTQ.
- É possível orquestrar a PTQ usando um pipeline no Agent Platform Pipelines.
- Para estabilizar o desempenho do modelo e se beneficiar de reduções no tamanho do modelo, use o Qwix.
Paralelismo de tensor: melhore a capacidade de inferência distribuindo a carga computacional entre várias GPUs.
Otimização de memória: aumente a capacidade de processamento e otimize o armazenamento em cache de atenção, os tamanhos de lote e os tamanhos de entrada.
Use frameworks otimizados para inferência, como os seguintes:
- Para modelos generativos, use um framework aberto, como MaxText, MaxDiffusion ou vLLM.
- Execute imagens de contêiner pré-criadas na Agent Platform para previsões e explicações. Se você escolher o TensorFlow, use o ambiente de execução otimizado do TensorFlow. Esse ambiente de execução permite uma inferência mais eficiente e de menor custo do que os contêineres pré-criados que usam o TensorFlow de código aberto.
- Execute inferência de vários hosts usando o Pathways.
- Aproveite o servidor de inferência NVIDIA Triton para a plataforma de agentes.
- Simplifique a implantação de cargas de trabalho de inferência no GKE usando configurações otimizadas para LLM. Para mais informações, consulte Analisar o desempenho e os custos da disponibilização de modelos com o guia de início rápido do GKE Inference.
Otimizar o consumo de recursos com base em metas de performance
A otimização de recursos ajuda a acelerar o treinamento, iterar com eficiência, melhorar a qualidade do modelo e aumentar a capacidade de disponibilização.
Escolher tipos de processador apropriados
A escolha da plataforma de computação pode ter um impacto significativo na eficiência de treinamento de um modelo.
- Os modelos de aprendizado profundo têm um bom desempenho em GPUs e Cloud TPU porque exigem grandes quantidades de memória e computação de matriz paralela. Para mais informações sobre cargas de trabalho adequadas para CPUs, GPUs e Cloud TPU, consulte Quando usar o Cloud TPU.
- As VMs otimizadas para computação são ideais para cargas de trabalho de HPC.
Otimizar o treinamento e a disponibilização em GPUs
Para otimizar o desempenho das cargas de trabalho de treinamento e inferência implantadas em GPUs, considere as seguintes recomendações:
| Recomendação | Descrição |
|---|---|
| Selecione as especificações de memória adequadas. | Ao escolher tipos de máquina de GPU, selecione as especificações de memória
com base nos seguintes fatores:
|
| Avaliar os requisitos de largura de banda de núcleo e memória. | Além do tamanho da memória, considere outros requisitos, como o número de núcleos Tensor e a largura de banda da memória. Esses fatores influenciam a velocidade do acesso aos dados e dos cálculos no chip. |
| Escolha os tipos de máquina de GPU adequados. | O treinamento e a disponibilização podem precisar de tipos de máquina de GPU diferentes.
Recomendamos que você use tipos de máquina grandes para treinamento e tipos de máquina menores e econômicos para inferência. Para detectar problemas de utilização de recursos, use ferramentas de monitoramento, como o agente NVIDIA DCGM, e ajuste os recursos adequadamente. |
| Aproveite o compartilhamento de GPU no GKE. | Dedicar uma GPU completa a um único contêiner pode ser uma abordagem ineficiente em alguns casos. Para ajudar você a superar essa ineficiência, o GKE é compatível com as seguintes estratégias de compartilhamento de GPU:
Para maximizar a utilização de recursos, recomendamos que você use uma combinação adequada dessas estratégias. Por exemplo, ao virtualizar uma GPU H100 grande usando as estratégias de compartilhamento de tempo de GPU e GPU de várias instâncias, a plataforma de disponibilização pode escalonar verticalmente e horizontalmente com base no tráfego. Os recursos de GPU são reutilizados em tempo real com base na carga nos contêineres do modelo. |
| Otimizar o roteamento e o balanceamento de carga. | Ao implantar vários modelos em um cluster, use o
GKE Inference Gateway
para otimizar o roteamento e o balanceamento de carga. O gateway de inferência estende
os mecanismos de roteamento da
API Kubernetes Gateway usando
os seguintes recursos:
|
| Compartilhe recursos para endpoints da Agent Platform. | É possível configurar vários endpoints da plataforma de agentes para usar um pool comum de recursos. Para mais informações sobre esse recurso e as limitações dele, consulte Compartilhar recursos entre implantações. |
Otimizar o treinamento e a disponibilização no Cloud TPU
A Cloud TPU oferece chips do Google que ajudam a resolver desafios de grande escala para algoritmos de ML. Esses chips oferecem desempenho ideal para cargas de trabalho de treinamento e inferência de IA. Em comparação com as GPUs, a Cloud TPU oferece maior eficiência para treinamento e disponibilização de aprendizado profundo. Para informações sobre os casos de uso adequados para o Cloud TPU, consulte Quando usar o Cloud TPU. O Cloud TPU é compatível com frameworks de ML como TensorFlow, PyTorch e JAX.
Para otimizar o desempenho da Cloud TPU, use as seguintes técnicas, descritas no guia de desempenho da Cloud TPU:
- Maximize o tamanho do lote para cada unidade de memória do Cloud TPU.
- Verifique se os recursos do Cloud TPU não estão ociosos. Por exemplo, implemente leituras de dados paralelas.
- Otimizar o compilador XLA. Ajuste as dimensões do tensor conforme necessário e evite o preenchimento. O XLA otimiza automaticamente o desempenho da execução de grafos usando ferramentas como fusão e transmissão.
Otimizar o treinamento no Cloud TPU e a disponibilização em GPUs
A Cloud TPU é compatível com o treinamento eficiente. As GPUs oferecem versatilidade e maior disponibilidade para cargas de trabalho de inferência. Para combinar os pontos fortes do Cloud TPU e das GPUs, é possível treinar modelos no Cloud TPU e disponibilizá-los em GPUs. Essa abordagem pode ajudar a reduzir os custos gerais e acelerar o desenvolvimento, principalmente para modelos grandes. Para informações sobre os locais em que os tipos de máquina do Cloud TPU e da GPU estão disponíveis, consulte Regiões e zonas do Cloud TPU e Locais da GPU.
Otimizar a camada de armazenamento
A camada de armazenamento da infraestrutura de treinamento e disponibilização é essencial para o desempenho. Os jobs de treinamento e as cargas de trabalho de inferência envolvem as seguintes atividades relacionadas ao armazenamento:
- Carregar e processar dados.
- Criar checkpoints do modelo durante o treinamento.
- Recarregar binários para retomar o treinamento após preempções de nós.
- Carregar o modelo de maneira eficiente para processar a inferência em grande escala.
Os fatores a seguir determinam os requisitos de capacidade de armazenamento, largura de banda e latência:
- Tamanho do modelo
- Volume do conjunto de dados de treinamento
- Frequência de checkpoints
- Padrões de escalonamento
Se os dados de treinamento estiverem no Cloud Storage, será possível reduzir a latência de carregamento de dados usando o armazenamento em cache de arquivos no Cloud Storage FUSE. O Cloud Storage FUSE permite ativar um bucket do Cloud Storage em nós de computação que têm discos SSD locais. Para saber como melhorar o desempenho do Cloud Storage FUSE, consulte Práticas recomendadas de ajuste de desempenho.
Um conector do PyTorch para o Cloud Storage oferece alto desempenho para leituras e gravações de dados. Esse conector é particularmente útil para treinamento com grandes conjuntos de dados e para criar checkpoints de modelos grandes.
O Compute Engine é compatível com vários tipos de disco permanente. Com o Google Cloud Hyperdisk ML, é possível provisionar a capacidade de processamento e as IOPS necessárias com base nas necessidades de treinamento. Para otimizar o desempenho do disco, comece redimensionando os discos e, em seguida, considere mudar o tipo de máquina. Para mais informações, consulte Otimizar o desempenho do disco permanente. Para testar o desempenho de leitura e gravação e a latência na camada de armazenamento, use ferramentas como o Testador de E/S flexível (FIO, na sigla em inglês).
Para mais informações sobre como escolher e otimizar serviços de armazenamento para suas cargas de trabalho de IA e ML, consulte Visão geral dos serviços de armazenamento para cargas de trabalho de IA e ML no Hipercomputador de IA.
Otimizar a camada de rede
Para otimizar o desempenho das cargas de trabalho de IA e ML, configure suas redes VPC para fornecer largura de banda adequada e capacidade máxima com latência mínima. Recomendações:
| Recomendação | Técnicas sugeridas para implementação |
|---|---|
| Otimizar redes VPC. |
|
| Coloque as VMs mais perto umas das outras. | |
| Configure as VMs para que elas sejam compatíveis com velocidades de rede mais altas. |
|
Vincular métricas de performance às escolhas de design e configuração
Para inovar, solucionar problemas e investigar problemas de desempenho, é preciso estabelecer uma ligação clara entre as escolhas de design e os resultados de desempenho. Você precisa de um registro confiável da linhagem de recursos de ML, implantações, saídas de modelo e as configurações e entradas correspondentes que produziram as saídas.
Criar um sistema de linhagem de dados e modelos
Para melhorar o desempenho de maneira confiável, é necessário rastrear cada versão do modelo até os dados, o código e as configurações exatos usados para produzi-lo. À medida que você escalona um modelo, esse rastreamento se torna difícil. Você precisa de um sistema de linhagem que automatize o processo de rastreamento e crie um registro claro e que possa ser consultado para cada experimento. Esse sistema permite que suas equipes identifiquem e reproduzam com eficiência as escolhas que levam aos modelos com desempenho ideal.
Para conferir e analisar a linhagem de artefatos de pipeline para cargas de trabalho na Agent Platform, use o Agent Platform ML Metadata ou o Knowledge Catalog. As duas opções permitem registrar eventos ou artefatos para atender aos requisitos de governança, consultar os metadados e recuperar informações quando necessário. Esta seção fornece uma visão geral das duas opções. Para informações detalhadas sobre as diferenças entre os metadados de ML da Agent Platform e o Knowledge Catalog, consulte Rastrear a linhagem de artefatos de pipeline.
Implementação padrão: metadados de ML da plataforma de agentes
A primeira execução de pipeline ou experimento na Agent Platform cria um serviço de metadados de ML padrão da Agent Platform. Os parâmetros e os metadados de artefato que o pipeline consome e gera são registrados automaticamente em um repositório de metadados de ML da Agent Platform. O modelo de dados usado para organizar e conectar os metadados armazenados contém os seguintes elementos:
- Contexto: um grupo de artefatos e execuções que representa uma execução de experimentação.
- Execução: uma etapa em um fluxo de trabalho, como validação de dados ou treinamento de modelo.
- Artefato: uma entidade, um objeto ou um dado de entrada ou saída que um fluxo de trabalho produz e consome.
- Evento: uma relação entre um artefato e uma execução.
Por padrão, os metadados de ML da Agent Platform capturam e rastreiam todos os artefatos de entrada e saída de uma execução de pipeline. Ele integra esses artefatos com Experimentos na Agent Platform, Model Registry e conjuntos de dados gerenciados da Agent Platform.
O registro automático é um recurso integrado ao treinamento gerenciado da Agent Platform para registrar dados automaticamente em experimentos na Agent Platform. Para acompanhar os experimentos de forma eficiente e otimizar o desempenho, use as integrações integradas entre os Experimentos na Agent Platform e o serviço de metadados de ML associado da Agent Platform.
O ML Metadata da Agent Platform oferece uma sintaxe de filtragem e operadores para executar consultas sobre artefatos, execuções e contextos. Quando necessário, suas equipes podem recuperar com eficiência informações sobre o link de registro de um modelo e o conjunto de dados ou a avaliação dele para uma execução de experimento específica. Esses metadados podem ajudar a acelerar a descoberta de opções que otimizam o desempenho. Por exemplo, é possível comparar execuções de pipeline, comparar modelos e comparar execuções de experimentos. Para mais informações, incluindo exemplos de consultas, consulte Analisar metadados.
Implementação alternativa: Knowledge Catalog
O Knowledge Catalog descobre metadados de recursos doGoogle Cloud , incluindo artefatos da Agent Platform. Também é possível integrar uma fonte de dados personalizada.
O Knowledge Catalog pode ler metadados em várias regiões e repositórios de toda a organização, enquanto o ML Metadata da Agent Platform é um recurso específico do projeto. Em comparação com os metadados de ML da Agent Platform, o Knowledge Catalog exige mais esforço de configuração. No entanto, o Knowledge Catalog pode ser apropriado quando você precisa de integração com seu portfólio de dados mais amplo no Google Cloud e com repositórios de toda a organização.
O Knowledge Catalog descobre e coleta metadados de projetos em que a API Data Lineage está ativada. Os metadados no catálogo são organizados usando um modelo de dados que consiste em projetos, grupos de entrada, entradas e aspectos. O Knowledge Catalog fornece uma sintaxe específica que pode ser usada para descobrir artefatos. Se necessário, é possível mapear artefatos de metadados para o Knowledge Catalog.
Usar ferramentas de explicabilidade
O comportamento de um modelo de IA se baseia nos dados usados para treiná-lo. Esse comportamento é codificado como parâmetros em funções matemáticas. Entender exatamente por que um modelo tem um determinado desempenho pode ser difícil. No entanto, esse conhecimento é fundamental para a otimização do desempenho.
Por exemplo, considere um modelo de classificação de imagens em que os dados de treinamento contêm apenas imagens de carros vermelhos. O modelo pode aprender a identificar o rótulo "carro" com base na cor do objeto, em vez de usar os atributos espaciais e de forma do objeto. Quando o modelo é testado com imagens que mostram carros de cores diferentes, o desempenho dele pode ser prejudicado. As seções a seguir descrevem as ferramentas que podem ser usadas para identificar e diagnosticar esses problemas.
Detectar vieses nos dados
Na fase de análise exploratória de dados (EDA, na sigla em inglês) de um projeto de ML, você identifica problemas com os dados, como conjuntos de dados não balanceados e vieses.
Em sistemas de produção, é comum retreinar modelos e realizar experimentos com diferentes conjuntos de dados. Para padronizar os dados e comparar os experimentos, recomendamos uma abordagem sistemática para a EDA que inclua as seguintes características:
- Automação: à medida que o conjunto de treinamento aumenta, o processo de EDA precisa ser executado automaticamente em segundo plano.
- Ampla cobertura: quando você adiciona novos recursos, a EDA precisa revelar insights sobre eles.
Muitas tarefas de EDA são específicas para o tipo de dados e o contexto de negócios. Para automatizar o processo de EDA, use o BigQuery ou um serviço gerenciado de processamento de dados, como o Dataflow. Para mais informações, consulte Classificação em dados desequilibrados e Métricas de viés nos dados para a plataforma de agentes.
Entender as características e o comportamento do modelo
Além de entender a distribuição de dados nos conjuntos de treinamento e validação e os vieses deles, é preciso entender as características e o comportamento de um modelo no momento da previsão. Para entender o comportamento do modelo, use as seguintes ferramentas:
| Ferramenta | Descrição | Finalidades |
|---|---|---|
| Explicações baseadas em exemplos | É possível usar explicações baseadas em exemplos ou a pesquisa de vizinho mais próximo para entender uma previsão encontrando os exemplos mais semelhantes nos dados de treinamento. Essa abordagem se baseia no princípio de que entradas semelhantes produzem saídas semelhantes. |
|
| Explicações baseadas em atributos | Para previsões baseadas em dados tabulares ou imagens, as explicações baseadas em atributos mostram o quanto cada atributo afeta uma previsão quando comparada a um valor de referência. As técnicas de explicabilidade e as explicações tabulares fornecem métodos de atribuição de recursos dependendo do tipo de modelo e da tarefa. Os métodos geralmente dependem de amostragem e análise de sensibilidade para medir o quanto a saída muda em resposta a mudanças em um atributo de entrada. |
|
| Ferramenta What-If | A Ferramenta What-If foi desenvolvida pela iniciativa People + AI Research (PAIR) do Google para ajudar você a entender e visualizar o comportamento de modelos de imagem e tabulares. Para ver exemplos de uso da ferramenta, consulte as demonstrações da Ferramenta What-If na Web. |
|
Colaboradores
Autores:
- Benjamin Sadik | Engenheiro de clientes especialista em IA e ML
- Filipe Gracio, PhD | Engenheiro de clientes, especialista em IA/ML
Outros colaboradores:
- Daniel Lees | Arquiteto de segurança do Cloud
- Kumar Dhanagopal | Desenvolvedor de soluções para vários produtos