Este documento do Google Cloud Framework bem arquitetado: perspectiva de IA e ML fornece princípios e recomendações para ajudar você a otimizar a performance das cargas de trabalho de IA e ML no Google Cloud. As recomendações neste documento estão alinhadas ao pilar de otimização de performance 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 a performance deles com base nas metas de negócios e nos requisitos técnicos. O processo de otimização de performance geralmente envolve concessões. Por exemplo, uma escolha de design que oferece o desempenho necessário pode gerar custos mais altos. As recomendações neste documento priorizam a performance em vez de outras considerações.
Para otimizar a performance de IA e ML, é preciso tomar decisões sobre fatores como arquitetura, parâmetros e estratégia de treinamento do modelo. 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 enormes, mas não 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
- Executar e acompanhar experimentos frequentes
- Criar e automatizar a infraestrutura de treinamento e veiculação
- Correlacionar as opções de design aos requisitos de performance
- Vincular métricas de performance a 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. Transforme 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 rotatividade, satisfação do cliente e satisfação dos funcionários.
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 performance de recursos.
Objetivos irrealistas podem levar ao desperdício de recursos para ganhos mínimos de performance. Os modelos com melhor desempenho podem não gerar os melhores resultados comerciais. Esses modelos podem exigir mais tempo e custo para treinamento e execução.
Ao definir objetivos, diferencie e priorize os de qualidade e desempenho:
- Qualidade se refere às características inerentes que determinam o valor de uma entidade. Isso ajuda você a avaliar se a entidade atende às suas expectativas e padrões.
- Performance se refere à eficiência e eficácia com que uma entidade funciona ou realiza a finalidade pretendida.
Os engenheiros de ML podem melhorar as métricas de desempenho de um modelo durante o processo de treinamento. A Vertex AI 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 na produção ou no momento da inferência. Para monitorar a performance, use o Cloud Monitoring e o Vertex AI Model Monitoring. Para selecionar modelos adequados e decidir como treiná-los, é preciso traduzir metas de negócios em requisitos técnicos que determinam métricas de qualidade e desempenho.
Para entender como definir objetivos realistas e identificar métricas de performance adequadas, considere o exemplo a seguir de um sistema de detecção de fraude com tecnologia de IA:
- Objetivo de negócios: para um sistema de detecção de fraudes, um objetivo de negócios 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 de trabalho dos EUA em um volume máximo de um milhão de transações por segundo.
- Métricas de performance: a detecção de fraude é 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, é possível medir 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 inferior a 100 milissegundos.
Monitore a performance 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 desvios dos objetivos de negócios. Uma estratégia de monitoramento abrangente ajuda você a tomar decisões importantes 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á diminuindo na produção.
- Melhorar o custo e o tempo de lançamento no mercado de novos modelos.
Monitoramento durante a experimentação e o treinamento
O objetivo da etapa de experimentação é encontrar a abordagem, a arquitetura do modelo e os hiperparâmetros gerais ideais para uma tarefa específica. A experimentação ajuda você a determinar de forma iterativa a configuração que oferece desempenho ideal e como treinar o modelo. O monitoramento ajuda você 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:
- Visualize as métricas de qualidade e desempenho do modelo para cada teste.
- Visualize gráficos e métricas do modelo, 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:
| Aspecto de monitoramento | Recomendação |
|---|---|
| Qualidade do modelo | Para visualizar e acompanhar métricas de experimentos, como acurácia, e visualizar a arquitetura do modelo ou os dados de treinamento, use o TensorBoard. O TensorBoard é um conjunto de ferramentas de código aberto compatível com frameworks de ML, como:
|
| Rastreamento de experimentos | O Vertex AI Experiments se integra a instâncias gerenciadas do TensorBoard da Vertex AI 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 pessoas acompanhem experimentos, recomendamos que você use o princípio do menor privilégio. |
| Eficiência de treinamento e experimentação | A Vertex AI 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 Vertex AI. |
| GPUs NVIDIA | O Agente de operações ativa o monitoramento de GPU para o Compute Engine e para outros produtos compatíveis com o Agente de operações. Você também pode 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 é especialmente útil para treinar e veicular modelos de aprendizado profundo. |
| Depuração avançada | Para depurar problemas com o código de treinamento ou a configuração de um job do Vertex AI Training, inspecione o contêiner de treinamento usando uma sessão de shell interativa. |
Monitoramento durante a veiculação: previsão de streaming
Depois de treinar um modelo e exportá-lo para o Vertex AI Model Registry, é possível criar um endpoint da Vertex AI. Esse endpoint fornece um endpoint HTTP para o modelo.
O Model Monitoring ajuda a identificar grandes mudanças na distribuição de atributos de entrada ou saída. Também é possível monitorar atribuições de recursos em produção quando comparadas a uma distribuição de base. A distribuição de base pode ser o conjunto de treinamento ou se basear em distribuições anteriores de tráfego de produção. Uma mudança na distribuição de veiculação pode implicar uma redução na performance preditiva 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. Com o Model Monitoring v2, é possível monitorar modelos implantados em uma plataforma de exibição gerenciada, como a Vertex AI, e também em serviços auto-hospedados, como o Google Kubernetes Engine (GKE). Além disso, para um acompanhamento granular da performance, é possível monitorar parâmetros no nível do modelo em vez de um endpoint.
- Monitore a veiculaçã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, na sigla em inglês), que podem ser acessadas diretamente no Metrics Explorer. Para monitorar a capacidade, a latência e as taxas de erro em todos os modelosGoogle Cloud , use o painel de observabilidade do modelo.
Monitoramento durante a disponibilização: previsão em lote
Para monitorar a previsão em lote, execute jobs de avaliação padrão no serviço de avaliação da Vertex AI. O Model Monitoring oferece suporte ao monitoramento de inferências em lote. Se você usa o Batch para executar sua carga de trabalho de serviço, é possível monitorar o consumo de recursos usando as métricas no Metrics Explorer.
Automatizar a avaliação para reprodutibilidade e 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 nas iterações, comparar diferentes modelos, detectar e reduzir o viés e garantir o atendimento aos requisitos regulamentares. Para garantir a reprodutibilidade e a escalonabilidade, é necessário automatizar o processo de avaliação.
Para padronizar e automatizar o processo de avaliação da performance de ML, siga estas etapas:
- Defina indicadores quantitativos e qualitativos.
- Escolha as fontes de dados e técnicas adequadas.
- Padronize 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 de fraude supervisionada pode usar a perda de entropia cruzada para treinamento. No entanto, para avaliar a performance da inferência, uma métrica mais relevante pode ser o recall, que indica a cobertura de transações fraudulentas. A Vertex AI oferece um serviço de avaliação para métricas como recall, precisão e área sob a curva de recall e precisão (AuPRC, na sigla em inglês). Para mais informações, consulte Avaliação de modelos na Vertex AI.
Os indicadores qualitativos, como a fluidez 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 LLM-as-a-judge ou serviços de rotulagem humana, como o Labelbox.
2. Escolher 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 com abordagens como estas:
- Conjunto de dados de ouro: 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 Vertex AI.
- Com o BigQuery, é possível 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 Vertex AI: fornece primitivos prontos para uso para rastrear o desempenho do modelo como parte do ciclo de vida de ML na Vertex AI.
- Serviço de avaliação de IA generativa: permite avaliar qualquer modelo ou aplicativo generativo e comparar os resultados da avaliação com seu julgamento e critérios. Esse serviço também ajuda você a realizar tarefas especializadas, como engenharia de comando, 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 Vertex AI: oferece suporte à avaliação em pares baseada em modelo.
- Kubeflow: fornece componentes especiais para executar avaliações de modelos.
Executar e acompanhar experimentos frequentes
Para otimizar a performance de ML de maneira eficaz, você precisa de uma plataforma dedicada, eficiente e interativa para experimentação. A plataforma precisa ter as seguintes capacidades:
- Facilite o desenvolvimento iterativo para que as equipes possam passar da ideia aos resultados validados com rapidez, 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 à rastreamento de linhagem de dados e reprodutibilidade.
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 diferentes ambientes
em projetos 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 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 Vertex AI Training. Isso pode causar interrupções no retreinamento 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 da carga de trabalho. Conceda acesso usando
papéis predefinidos do Identity and Access Management (IAM), como
Usuário da Vertex AI
(roles/aiplatform.user). |
Essa abordagem ajuda a evitar ações acidentais ou maliciosas 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 com os controles de serviço da VPC. | 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 recursos 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 acelere todo o ciclo de vida da experimentação, desde a análise de dados até o treinamento e a análise de modelos, use as seguintes técnicas:
- Prototipagem interativa: para análise de dados rápida, teste de hipóteses e prototipagem de código, use o Colab Enterprise ou instâncias gerenciadas do JupyterLab no Vertex AI Workbench. Para mais informações, consulte Escolher uma solução de notebook.
- Treinamento de modelos 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 TPUs. Essa abordagem ajuda a reduzir o tempo de treinamento de dias para horas e permite mais experimentos paralelos. 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 focados em SQL.
- Monitoramento 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.
- Otimizar a IA generativa: para otimizar o desempenho dos aplicativos de IA generativa, é necessário testar comandos, seleção de modelos e ajuste fino. Para engenharia de comandos rápida, use o Vertex AI Studio. Para testar modelos de fundação (como o Gemini) e encontrar um modelo adequado para seu caso de uso e metas de negócios, use o Model Garden.
Padronize para aumentar a reprodutibilidade e a 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 seu código de treinamento e 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 Vertex AI oferece contêineres pré-criados para treinamento sem servidor.
- Automatizar fluxos de trabalho de ML como pipelines: orquestre o fluxo de trabalho de ML de ponta a ponta como um pipeline codificado usando o Vertex AI Pipelines. Essa abordagem ajuda a manter a consistência, garantir a reprodutibilidade e rastrear automaticamente todos os artefatos e metadados no Vertex ML Metadata.
- Automatizar o provisionamento com infraestrutura como código (IaC): defina e implante ambientes de teste 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. Com essa plataforma, suas equipes podem melhorar a qualidade e o desempenho do treinamento e da exibiçã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 repetíveis no ciclo de vida do ML, desde a preparação de dados até a validação de modelos.
Coleta e preparação de dados: para um treinamento eficaz do modelo, é necessário coletar e preparar os dados necessários para treinamento, teste e validação. Os dados podem vir de diferentes fontes e ser de diferentes tipos. Você também precisa reutilizar dados relevantes em execuções de treinamento e compartilhar recursos entre equipes. Para melhorar a repetibilidade da fase de coleta e preparação de dados, considere as seguintes recomendações:
- Melhore a capacidade de descoberta de dados com o Dataplex Universal Catalog.
- Centralize a engenharia de atributos na Vertex AI Feature Store.
- Pré-processe os dados usando o Dataflow.
Execução de treinamento: ao treinar um modelo, você usa dados para criar um objeto de modelo. Para isso, configure a infraestrutura e as dependências necessárias do código de treinamento. Você também precisa 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 worker sem gerenciar o provisionamento ou as dependências da infraestrutura subjacente, use o recurso
CustomJobno Vertex AI Training. Também é possível usar o recursoCustomJobpara jobs de ajuste de hiperparâmetros. - Otimize a taxa de transferência de agendamento usando o Dynamic Workload Scheduler ou reservas para o Vertex AI Training.
- Registre seus modelos no Vertex AI Model Registry.
Orquestração de treinamento: implante cargas de trabalho de treinamento como etapas de um pipeline usando o Vertex AI Pipelines. Esse serviço oferece serviços gerenciados do Kubeflow e do TFX. Defina cada etapa do pipeline como um componente que é 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 recomendações na tabela a seguir:
Meta Recomendações Implemente a automação principal. - Use componentes do Kubeflow Pipelines.
- Use Fluxos de controle para designs de pipeline avançados, como gates 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 o custo, use o cache de execução do Vertex AI Pipelines.
- 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.
Implemente a governança e o acompanhamento. - Para testar diferentes configurações de modelo ou de treinamento, adicione execuções de pipeline aos experimentos.
- Monitore registros e métricas do Vertex AI Pipelines.
- Siga as recomendações em Monitore o desempenho em todas as etapas do ciclo de vida do modelo.
Usar infraestrutura especializada para previsão
Para reduzir o trabalho de gerenciar implantações de infraestrutura e 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 seguintes recomendações:
| Recomendação | Técnicas |
|---|---|
| Implemente a implantação automática. |
|
| Aproveite os recursos de escalonamento gerenciado. |
|
| Otimize a latência e a capacidade de transferência nos endpoints da Vertex AI. |
|
| Otimizar a utilização de recursos. |
|
| Otimizar a implantação do modelo. |
|
| Monitorar o desempenho |
|
Correlacionar opções de design com requisitos de performance
Ao fazer escolhas de design para melhorar a performance, avalie se elas atendem aos requisitos da empresa ou são desnecessárias e contraproducentes. Para escolher a infraestrutura, os modelos e as configurações adequados, identifique gargalos de desempenho e avalie como eles estão vinculados às métricas de desempenho. Por exemplo, mesmo em aceleradores de GPU muito potentes, as tarefas de treinamento podem ter 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 o MFU pode não ser um indicador suficiente da performance geral do treinamento, examine 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 direta ou indireta.
- Interrupção: o processo de treinamento é interrompido durante a criação de pontos de verificação do modelo ou devido a remoçõ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 uma medição e otimização de performance holísticas, mude o foco das métricas convencionais de eficiência de recursos, como MFU, para o goodput. O goodput considera a disponibilidade e a utilização dos seus clusters e recursos de computação, ajudando 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 performance.
O goodput oferece uma compreensão detalhada 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 de pico do hardware ou a MFU que um job de treinamento pode extrair do acelerador. Isso depende da utilização 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 específicos de infraestrutura dela. 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 infraestrutura sem estado.
- As cargas de trabalho de treinamento exigem compromissos de infraestrutura de longo prazo.
Escolher os modos de capacidade de obtenção adequados
Na computação em nuvem, a obtenção é a capacidade de provisionar recursos quando eles são necessários. Google Cloud oferece os seguintes modos de obtenção:
- 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 não houver uma quantidade suficiente de um tipo de recurso solicitado, a solicitação vai falhar.
- VMs spot: você cria VMs usando capacidade de computação não utilizada. As VMs spot são faturadas a um preço com desconto em comparação com as VMs on demand, mas Google Cloud podem interromper as VMs spot a qualquer momento. Recomendamos o uso de VMs spot para cargas de trabalho sem estado que podem falhar normalmente quando as VMs host são preemptivas.
- 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 tecnologia de GPU em um pool dedicado. O Dynamic Workload Scheduler ajuda a evitar as restrições dos outros modos de capacidade 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 capacidade de obtenção para serviços Google Cloude fornece links para a documentação relevante:
| Produto | VMs sob demanda | VMs spot | Reservas | Programador dinâmico de cargas de trabalho |
|---|---|---|---|---|
| Compute Engine | Criar e iniciar uma instância do Compute Engine | Sobre as VMs do Spot | Sobre as reservas | Criar um MIG com VMs de GPU |
| GKE | Adicione e gerencie pools de nós | Sobre as Spot VMs no GKE | Como consumir recursos por zona reservados | Consumo de GPU, TPU e H4D com provisionamento de início flexível |
| Cloud Batch | Criar e executar um job | Job em lote com VMs spot | Garantir a disponibilidade de recursos usando reservas de VM | Usar GPUs e VMs de início flexível |
| Vertex AI Training | 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 |
| Vertex AI | Receba inferências em lote e on-line de modelos treinados de forma personalizada. | Usar VMs spot para inferência | Usar reservas para inferência on-line | Usar VMs de início flexível 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 de infraestrutura.
O GKE permite controlar quando a manutenção automática do cluster pode ser realizada nos seus 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 manutenção planejada do hardware subjacente, o Compute Engine executa 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 o planejamento de eventos de host relacionados a grandes clusters de treinamento no AI Hypercomputer, 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 criação de pontos de verificação de modelos e substituição de recursos. Para otimizar o goodput de ambiente de execução, é necessário 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 o checkpointing para acompanhar o progresso e minimizar a perda de aprendizado devido a remoções de recursos. Tamanhos de modelo maiores aumentam a duração das interrupções de checkpointing, o que afeta ainda mais a eficiência geral. Após interrupções, o aplicativo de treinamento precisa ser reiniciado em todos os nós do cluster. Esses reinícios podem levar algum tempo porque os artefatos necessários precisam ser recarregados.
Para otimizar o goodput de tempo de execução, use as seguintes técnicas:
| Técnica | Descrição |
|---|---|
| Implemente checkpoints automáticos. | Com checkpoints frequentes, é possível acompanhar o progresso do treinamento em um nível granular. No entanto, o processo de treinamento é interrompido para cada checkpoint, o que reduz o throughput útil de tempo de execução. Para minimizar as interrupções, você pode 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 checkpointing a quando o host precisa de manutenção. Lembre-se de que algumas falhas de hardware podem não acionar sinais SIGTERM. Portanto, encontre um equilíbrio adequado entre eventos de checkpoint automático e 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 pontos de verificação do modelo. Para reduzir o tempo necessário para recarregar dados e retomar o treinamento, use as seguintes técnicas:
Para mais informações sobre como reduzir o tempo de recarga de dados, consulte Dicas e truques para reduzir a latência de inicialização a frio no GKE. |
| Usar 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 de tempo e custo são particularmente benéficas quando você usa TPUs. Com o JAX, é possível 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 a utilização máxima 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 opções de personalização no nível da estrutura. | Frameworks ou compiladores como o Accelerated Linear Algebra (XLA) fornecem muitos componentes importantes do goodput do programa. Para otimizar ainda mais o desempenho, personalize os componentes fundamentais do gráfico de computação. Por exemplo, o Pallas é compatível com kernels personalizados para TPUs e GPUs. |
| Descarregar a memória para a DRAM do host. | Para treinamento em grande escala, que exige memória significativamente alta dos aceleradores, é possível descarregar parte do uso de memória para a DRAM do host. Por exemplo, a XLA permite descarregar ativações de modelo da transmissão direta para a memória do host em vez de usar a memória do acelerador. Com essa estratégia, é possível melhorar a performance do treinamento aumentando a capacidade do modelo ou o tamanho do lote. |
| Use a quantização durante o treinamento. | Você pode melhorar a eficiência do treinamento e a taxa de transferência de dados usando 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: |
| Implemente 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 modelo, consulte:
Para alcançar o paralelismo de dados, use ferramentas como:
|
Foco em requisitos específicos da carga de trabalho
Para garantir que seus esforços de otimização de performance sejam eficazes e abrangentes, é necessário corresponder as decisões de otimização aos requisitos específicos das cargas de trabalho de treinamento e inferência. Escolha modelos de IA adequados e use estratégias relevantes de otimização de comandos. Selecione as ferramentas e estruturas adequadas 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 tarefa e qualidade | Defina a tarefa principal da carga de trabalho e o valor de referência de performance. Responda a perguntas como:
|
| Contexto de veiculação | Analise o ambiente operacional em que você planeja implantar o modelo. O contexto de exibição costuma ter 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 relação ao custo e à complexidade de criar e manter. 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 valorização 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.
Acesse 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 Vertex AI ou implantados em tempos 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 dela. 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 Vertex AI. Não é necessário reescrever manualmente instruções e comandos do sistema. O otimizador de comandos é compatível com 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 com métricas de avaliação específicas.
Para mais diretrizes de otimização de comandos, consulte Visão geral das estratégias de solicitação.
Melhorar a performance dos endpoints de ML e IA generativa
Para melhorar a latência ou a capacidade (tokens por segundo) dos 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: reduz 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.
- 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 TPU
Usar soluções e ajustes com pouco código
Se os modelos pré-treinados não atenderem aos seus requisitos, você poderá melhorar a performance deles em domínios específicos usando as seguintes soluções:
- O AutoML é uma solução com poucos códigos para melhorar os resultados de inferência com o mínimo de esforço técnico em uma ampla variedade de tarefas. Com o AutoML, é possível criar modelos otimizados em várias dimensões: arquitetura, desempenho e estágio de treinamento (por checkpointing).
- Ajustar ajuda você a alcançar maior qualidade, geração mais estável e menor latência com comandos mais curtos e sem muitos dados. Recomendamos que você comece a ajustar usando os valores padrão para hiperparâmetros. Para mais informações, consulte Ajuste refinado supervisionado para o Gemini: um guia de práticas recomendadas.
Otimizar o treinamento autogerenciado
Em alguns casos, você pode decidir treinar novamente um modelo ou gerenciar totalmente um trabalho de ajuste refinado. Essa abordagem exige habilidades avançadas e mais tempo, dependendo do modelo, da estrutura e dos recursos usados.
Aproveite as opções de framework otimizadas para performance, 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 o treinamento de modelo com o Ray em Google Cloud:
- Com o Ray na Vertex AI, é possível levar o framework de treinamento distribuído do Ray para o Compute Engine ou o GKE, simplificando a sobrecarga de gerenciamento do framework.
- É possível autogerenciar o Ray no GKE com o KubeRay implantando o operador 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 otimizados para performance de maneira eficiente, use modelos baseados em YAML. Gerencie os clusters usando programadores como Slurm e GKE.
Treine arquiteturas de modelos padrão usando receitas otimizadas para GPU.
Crie arquiteturas e estratégias de treinamento que otimizem a performance usando as seguintes técnicas:
- Implemente o treinamento distribuído na Vertex AI 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 um treinamento eficiente do modelo e para explorar diferentes configurações de desempenho, execute o checkpointing em intervalos adequados. Para mais informações, consulte Otimizar o goodput de tempo de execução.
Otimizar a veiculação autogerenciada
Para o serviço autogerenciado, você precisa de operações de inferência eficientes e uma alta capacidade (número de inferências por unidade de tempo).
Para otimizar seu modelo para inferência, considere as seguintes abordagens:
Quantização: reduza o tamanho do modelo representando os parâmetros dele 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, oferecem suporte à PTQ.
- É possível orquestrar a PTQ usando um pipeline no Vertex AI Pipelines.
- Para estabilizar o desempenho do modelo e aproveitar as reduções no tamanho dele, use o Qwix.
Paralelismo de tensor: melhore a taxa de transferência 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:
- Para modelos generativos, use um framework aberto como MaxText, MaxDiffusion ou vLLM.
- Execute imagens de contêineres pré-criados na Vertex AI 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 com modelos grandes no GKE usando a API LeaderWorkerSet (LWS).
- Use o servidor de inferência NVIDIA Triton para a Vertex AI.
- 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 exibição de modelos com o guia de início rápido do GKE Inference.
Otimizar o consumo de recursos com base nas 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 veiculação.
Escolher tipos de processador adequados
A escolha da plataforma de computação pode ter um impacto significativo na eficiência do treinamento de um modelo.
- Os modelos de aprendizado profundo têm bom desempenho em GPUs e TPUs 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 TPUs, consulte Quando usar TPUs.
- As VMs otimizadas para computação são ideais para cargas de trabalho de HPC.
Otimizar treinamento e disponibilização em GPUs
Para otimizar a performance 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áquinas com GPU, selecione as especificações de memória com base nos seguintes fatores:
|
| Avalie 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 de tensor e a largura de banda da memória. Esses fatores influenciam a velocidade do acesso a dados e dos cálculos no chip. |
| Escolha tipos de máquinas com GPU adequados. | O treinamento e a veiculação podem precisar de tipos de máquinas com GPU diferentes.
Recomendamos usar tipos de máquinas grandes para treinamento e tipos 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 oferece suporte às seguintes estratégias de compartilhamento de GPU:
Para maximizar a utilização de recursos, recomendamos usar uma combinação adequada dessas estratégias. Por exemplo, ao virtualizar uma GPU H100 grande usando o compartilhamento de tempo de GPU e estratégias de GPU de várias instâncias, a plataforma de serviço pode escalonar verticalmente e diminuir a escala com base no tráfego. Os recursos de GPU são reutilizados em tempo real com base na carga dos contêineres de modelo. |
| Otimize o roteamento e o balanceamento de carga. | Ao implantar vários modelos em um cluster, é possível usar o
GKE Inference Gateway
para roteamento e balanceamento de carga otimizados. O Inference Gateway estende
os mecanismos de roteamento da
API Kubernetes Gateway usando
os seguintes recursos:
|
| Compartilhe recursos para endpoints da Vertex AI. | É possível configurar vários endpoints da Vertex AI para usar um pool comum de recursos. Para mais informações sobre esse recurso e as limitações dele, consulte Compartilhar recursos em implantações. |
Otimizar o treinamento e a veiculação em TPUs
As TPUs são 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. Quando comparadas às GPUs, as TPUs oferecem maior eficiência para treinamento e veiculação de aprendizado profundo. Para informações sobre os casos de uso adequados para TPUs, consulte Quando usar TPUs. As TPUs são compatíveis com frameworks de ML, como TensorFlow, PyTorch e JAX.
Para otimizar o desempenho da 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 da TPU.
- Verifique se as TPUs não estão inativas. Por exemplo, implemente leituras paralelas de dados.
- Otimize o compilador XLA. Ajuste as dimensões do tensor conforme necessário e evite o padding. O XLA otimiza automaticamente o desempenho da execução de gráficos usando ferramentas como fusão e transmissão.
Otimizar o treinamento em TPUs e a disponibilização em GPUs
As TPUs oferecem suporte a treinamento eficiente. As GPUs oferecem versatilidade e maior disponibilidade para cargas de trabalho de inferência. Para combinar os pontos fortes das TPUs e GPUs, é possível treinar modelos em TPUs 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áquinas de TPU e GPU estão disponíveis, consulte Regiões e zonas de TPU e Locais de GPU.
Otimizar a camada de armazenamento
A camada de armazenamento da infraestrutura de treinamento e disponibilização é fundamental para o desempenho. Os jobs de treinamento e as cargas de trabalho de inferência envolvem as seguintes atividades relacionadas ao armazenamento:
- Carregando e processando dados.
- Criação de pontos de verificação do modelo durante o treinamento.
- Recarregar binários para retomar o treinamento após remoções de nós.
- Carregar o modelo de maneira eficiente para processar inferências em grande escala.
Os seguintes fatores determinam seus requisitos de capacidade de armazenamento, largura de banda e latência:
- Tamanho do modelo
- Volume do conjunto de dados de treinamento
- Frequência de checkpoint
- Padrões de escalonamento
Se os dados de treinamento estiverem no Cloud Storage, é 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 com discos SSD locais. Para informações sobre 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 leitura e gravação de dados. Esse conector é especialmente útil para treinamento com grandes conjuntos de dados e para criação de pontos de verificação 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 e os IOPS necessários com base nas necessidades de treinamento. Para otimizar o desempenho do disco, comece redimensionando os discos e considere mudar o tipo de máquina. Para mais informações, consulte Otimizar o desempenho do disco permanente. Para testar a carga do desempenho e da latência de leitura e gravação na camada de armazenamento, use ferramentas como o Testador de E/S flexível (FIO).
Para mais informações sobre como escolher e otimizar serviços de armazenamento para suas cargas de trabalho de IA e ML, consulte a seguinte documentação:
- Serviços de armazenamento do Hipercomputador de IA
- Planejar armazenamento para cargas de trabalho de IA e ML em Google Cloud
Otimizar a camada de rede
Para otimizar o desempenho das cargas de trabalho de IA e ML, configure as redes VPC para oferecer largura de banda adequada e capacidade máxima com latência mínima. Considere as seguintes recomendações:
| Recomendação | Técnicas sugeridas para implementação |
|---|---|
| Otimize as redes VPC. |
|
| Coloque as VMs mais perto umas das outras. | |
| Configure as VMs para oferecer suporte a velocidades de rede mais altas. |
|
Vincular métricas de performance a opções de design e configuração
Para inovar, solucionar problemas e investigar questões de desempenho, é necessário estabelecer uma relaçã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 modelos e das configurações e entradas correspondentes que produziram as saídas.
Criar um sistema de linhagem de dados e modelos
Para melhorar o desempenho de forma confiável, é necessário rastrear cada versão do modelo até os dados, o código e as configurações exatas que foram usados para produzir o modelo. À medida que você dimensiona 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. Com esse sistema, suas equipes podem identificar e reproduzir com eficiência as escolhas que levam aos modelos de melhor desempenho.
Para conferir e analisar a linhagem de artefatos de pipeline para cargas de trabalho na Vertex AI, use o Vertex ML Metadata ou o Catálogo universal do Dataplex. Com as duas opções, é possível registrar eventos ou artefatos para atender aos requisitos de governança e consultar os metadados e recuperar informações quando necessário. Esta seção oferece uma visão geral das duas opções. Para informações detalhadas sobre as diferenças entre o Vertex ML Metadata e o Dataplex Universal Catalog, consulte Rastrear a linhagem de artefatos de pipeline.
Implementação padrão: Vertex AI ML Metadata
A primeira execução de pipeline ou experimento na Vertex AI cria um serviço padrão do Vertex ML Metadata. Os parâmetros e metadados de artefato que o pipeline consome e gera são registrados automaticamente em um repositório do Vertex ML Metadata. 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 experimento.
- 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, o Vertex ML Metadata captura e rastreia todos os artefatos de entrada e saída de uma execução de pipeline. Ele integra esses artefatos com os Experimentos da Vertex AI, o Model Registry e os conjuntos de dados gerenciados da Vertex AI.
O registro automático é um recurso integrado do Vertex AI Training para registrar dados automaticamente nos experimentos da Vertex AI. Para rastrear experimentos de forma eficiente e otimizar o desempenho, use as integrações integradas entre o Vertex AI Experiments e o serviço associado Vertex ML Metadata.
O Vertex ML Metadata 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 a performance. Por exemplo, você pode comparar execuções de pipeline, comparar modelos e comparar execuções de experimentos. Para mais informações, incluindo exemplos de consultas, consulte Analisar metadados de Vertex ML.
Implementação alternativa: Dataplex Universal Catalog
O Dataplex Universal Catalog descobre metadados de recursos doGoogle Cloud , incluindo artefatos da Vertex AI. Também é possível integrar uma fonte de dados personalizada.
O Dataplex Universal Catalog pode ler metadados em várias regiões e lojas de toda a organização, enquanto o Vertex ML Metadata é um recurso específico do projeto. Em comparação com o Vertex ML Metadata, o Dataplex Universal Catalog exige mais esforço de configuração. No entanto, o Dataplex Universal Catalog pode ser adequado quando você precisa de integração com seu portfólio de dados mais amplo no Google Cloud e com lojas em toda a organização.
O Dataplex Universal 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 entradas, entradas e aspectos. O Dataplex Universal Catalog oferece uma sintaxe específica que pode ser usada para descobrir artefatos. Se necessário, você pode mapear artefatos do Vertex ML Metadata para o Dataplex Universal Catalog.
Usar ferramentas de explicabilidade
O comportamento de um modelo de IA se baseia nos dados usados para treinar o modelo. Esse comportamento é codificado como parâmetros em funções matemáticas. Entender exatamente por que um modelo funciona de uma determinada maneira pode ser difícil. No entanto, esse conhecimento é essencial para a otimização da performance.
Por exemplo, considere um modelo de classificação de imagens em que os dados de treinamento contêm imagens apenas de carros vermelhos. O modelo pode aprender a identificar o rótulo "carro" com base na cor do objeto em vez dos atributos espaciais e de forma dele. Quando o modelo é testado com imagens que mostram carros de cores diferentes, o desempenho dele pode diminuir. As seções a seguir descrevem 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) de um projeto de ML, você identifica problemas com os dados, como conjuntos de dados com classes desequilibradas e vieses.
Em sistemas de produção, é comum treinar modelos novamente e executar experimentos com diferentes conjuntos de dados. Para padronizar os dados e comparar os experimentos, recomendamos uma abordagem sistemática da EDA que inclua as seguintes características:
- Automação: à medida que um conjunto de treinamento aumenta, o processo de EDA precisa ser executado automaticamente em segundo plano.
- Cobertura ampla: ao adicionar 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 comercial. 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 de dados para a Vertex AI.
Entender as características e o comportamento do modelo
Além de entender a distribuição dos dados nos conjuntos de treinamento e validação e os vieses deles, é necessário compreender 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 | Você pode usar explicações baseadas em exemplos na Vertex Explainable AI 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 geram 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 comparado a um valor de referência. A Vertex AI oferece diferentes métodos de atribuição de atributos, dependendo do tipo de modelo e da tarefa. Os métodos geralmente dependem da amostragem e da 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) (em inglês) do Google para ajudar você a entender e visualizar o comportamento de modelos de imagens e tabelas. Para exemplos de uso da ferramenta, consulte 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