Compartilhar via


Princípios de design para cargas de trabalho de IA no Azure

Este artigo descreve os princípios básicos para cargas de trabalho de IA no Azure com foco nos aspectos de IA de uma arquitetura. É essencial considerar todos os pilares do Azure Well-Architected Framework coletivamente, incluindo suas compensações. Aplique cada pilar aos requisitos funcionais e não funcionais da carga de trabalho.

Confiabilidade

As cargas de trabalho de IA em execução no Azure devem considerar muitos dos mesmos requisitos de confiabilidade que outras classes de cargas de trabalho. Considerações específicas para treinamento de modelo, hospedagem e inferência são particularmente importantes e são abordadas principalmente nesse princípio. As práticas descritas aqui são além das práticas recomendadas de design padrão para aplicativos de nuvem e devem ser integradas adequadamente.

Examine os princípios de design de confiabilidade para obter uma compreensão fundamental dos conceitos descritos aqui.

Princípio de design Considerações
Mitigar pontos únicos de falha. Depender de uma única instância para componentes críticos pode levar a problemas significativos. Para evitar problemas, crie redundância em todos os componentes críticos. Use plataformas com tolerância a falhas internas e recursos de alta disponibilidade. Implante várias instâncias ou nós para implementar a redundância.
Realize a análise do modo de falha.

Aproveite os padrões de design bem conhecidos.
Analise regularmente possíveis modos de falha nos componentes do sistema e crie resiliência contra essas falhas. Use padrões de design conhecidos para isolar partes do sistema e evitar falhas em cascata. Por exemplo, o Padrão Bulkhead pode ajudar na isolação de falhas. Mecanismos de nova tentativa e disjuntores podem lidar com erros transitórios, como solicitações de limitação.
Equilibre os objetivos de confiabilidade entre os componentes dependentes. Certifique-se de que o ponto de extremidade de inferência, ou modelo, e o armazenamento de dados estejam alinhados em termos de confiabilidade. Os componentes do aplicativo devem permanecer disponíveis mesmo em condições inesperadas, como um aumento no número de usuários simultâneos. O workload também deve ter a capacidade de fazer failover para sistemas de backup em caso de falhas. Se um componente falhar, ele afetará a confiabilidade do outro.

Da mesma forma, como as APIs de camada de serviço são recursos críticos de produção, elas devem seguir os mesmos padrões de confiabilidade que outros fluxos de carga de trabalho de alta crítica. Se essas APIs exigirem alta disponibilidade, a plataforma de hospedagem deverá oferecer suporte a zonas de disponibilidade ou a um design multirregional para garantir operação e resiliência contínuas.
Design para confiabilidade operacional. Mantenha a confiabilidade das respostas do modelo garantindo que as atualizações sejam frequentes e oportunas. Decida se usar dados recentes ou se dados um pouco mais antigos são suficientes. Equilibre a necessidade de informações atualizadas com a praticidade da frequência de atualização. Automatize o treinamento online devido aos requisitos de frequência e confiabilidade. Justifique o treinamento offline por meio de uma análise de custo-benefício e execute-o usando recursos mais baratos.
Design para uma experiência de usuário confiável. Use o teste de carga para avaliar como sua carga de trabalho lida com o estresse e projete sua interface do usuário para gerenciar as expectativas do usuário em relação aos tempos de resposta. Implemente elementos de interface do usuário que informem os usuários sobre possíveis tempos de espera e adote princípios de design de nuvem assíncronos para lidar com intermitência, latência ou falhas.

Segurança

Os modelos geralmente usam dados de produção confidenciais para produzir resultados relevantes. Portanto, você deve usar medidas de segurança robustas em todas as camadas da arquitetura. Implemente o design seguro de aplicativos no início do ciclo de vida, criptografe os dados em repouso e em trânsito e siga os padrões de conformidade do setor. As avaliações de segurança regulares são cruciais para identificar e atenuar vulnerabilidades. Mecanismos avançados de detecção de ameaças garantem respostas rápidas a possíveis ameaças.

princípios de segurança são fundamentais para soluções de IA para proteger a integridade dos dados, a integridade do design e a privacidade do usuário. Como proprietário da carga de trabalho, você é responsável por criar confiança e proteger informações confidenciais para garantir uma experiência segura do usuário.

Princípio de design Considerações
Ganhe a confiança do usuário. Integre a segurança de conteúdo em todos os estágios do ciclo de vida usando código personalizado, ferramentas apropriadas e controles de segurança eficazes.

Remova informações pessoais e confidenciais desnecessárias em todos os pontos de armazenamento de dados, como armazenamentos de dados agregados, índices de pesquisa, caches e aplicativos. Mantenha esse nível de segurança de forma consistente em toda a arquitetura.

Certifique-se de que a moderação completa de conteúdo inspecione os dados em ambas as direções e filtre conteúdo inadequado e ofensivo.
Proteja os dados em repouso, em trânsito e em uso de acordo com os requisitos de confidencialidade da carga de trabalho. No mínimo, use a criptografia no nível da plataforma com chaves gerenciadas pela Microsoft ou gerenciadas pelo cliente em todos os armazenamentos de dados usados na arquitetura. Avalie onde você precisa de níveis mais altos de criptografia e use criptografia dupla, se necessário.

Verifique se todo o tráfego usa HTTPS para criptografia. Decida sobre os pontos de terminação TLS em cada salto.

O próprio modelo deve ser protegido para impedir que os invasores extraam informações confidenciais usadas durante o treinamento. Essa proteção requer o nível mais alto de medidas de segurança. Considere o uso de criptografia homomórfica que permite a inferência de dados criptografados.
Invista em um gerenciamento de acesso robusto para preservar as identidades (usuário e sistema) que acessam o sistema. Implemente controle de acesso baseado em função ou controle de acesso baseado em atributo para planos de dados e controle.

Mantenha a segmentação de identidade adequada para proteger a privacidade. apenas permitindo o acesso ao conteúdo que eles estão autorizados a exibir.
Proteja a integridade do projeto por meio da segmentação. Forneça rede privada para acesso a repositórios centralizados para imagens de contêiner, dados e ativos de código.

Ao compartilhar a infraestrutura com outras cargas de trabalho cria segmentação, por exemplo, ao hospedar seu servidor de inferência no Serviço de Kubernetes do Azure, isole o pool de nós de outras APIs ou de qualquer outra carga de trabalho.
Realize testes de segurança. Desenvolva um plano de teste detalhado que inclua testes para detectar comportamentos antiéticos sempre que mudanças forem introduzidas no sistema.

Integre componentes de IA em seus testes de segurança existentes. Por exemplo, incorpore o endpoint de inferência em seus testes de rotina junto com outros endpoints públicos.

Considere a realização de testes no sistema ativo, como testes de penetração ou exercícios de equipe vermelha, para identificar e resolver possíveis vulnerabilidades de forma eficaz.
Reduza a superfície de ataque impondo o acesso estrito do usuário e o design da API. Exigir autenticação para todos os pontos de extremidade de inferência, incluindo chamadas de sistema para sistema. Evite pontos de extremidade anônimos.

Prefira o design de API restrito ao custo da flexibilidade do lado do cliente.

Vantagens e desvantagens. O fornecimento da mais alta segurança tem compensações em termos de custo e precisão porque a capacidade de analisar, inspecionar ou registrar os dados criptografados é limitada. As verificações de segurança de conteúdo e a obtenção de explicabilidade também podem ser desafiadoras em ambientes altamente seguros.

As seguintes áreas de design fornecem detalhes sobre os princípios e considerações anteriores:

Otimização de custos

O pilar de Otimização de Custos visa maximizar o investimento, mas não necessariamente reduzir custos. Cada escolha arquitetônica acarreta impactos financeiros diretos e indiretos. Entenda os custos vinculados a várias opções, incluindo decisões de construção versus compra, seleções de tecnologia, modelos de cobrança, licenciamento, treinamento e despesas operacionais. Maximize seu investimento na camada selecionada e reavalie continuamente os modelos de cobrança. Avalie continuamente os custos associados a mudanças na arquitetura, necessidades de negócios, processos e estrutura da equipe.

Revisar os princípios de otimização de custo com foco na otimização de tarifas e uso.

Princípio de design Considerações
Determine os direcionadores de custo fazendo um exercício abrangente de modelagem de custos. Considere os principais fatores da plataforma de dados e aplicativos:
- Volume de dados. Estime a quantidade de dados que você indexará e processará. Volumes maiores podem aumentar os custos de armazenamento e processamento.
- Número de consultas. Preveja a frequência e a complexidade das consultas. Volumes de consulta mais altos podem aumentar os custos, especialmente se exigirem recursos computacionais significativos.
- Taxa de transferência. Avalie a taxa de transferência esperada, que afeta a camada de desempenho necessária. Demandas de rendimento mais altas podem levar a custos mais altos.
- Custos de dependência. Pode haver custos ocultos nas dependências. Por exemplo, ao calcular o custo de um índice, inclua o custo do conjunto de habilidades, que faz parte do processamento de dados, mas fora do escopo do índice.
Pague pelo que pretende usar. Escolha uma solução de tecnologia que atenda às suas necessidades sem incorrer em despesas desnecessárias. Se recursos avançados não forem necessários, considere opções mais econômicas e ferramentas de código aberto.

Considere a frequência de uso. Prefira opções de computação elástica para ferramentas de orquestração para minimizar os custos de utilização porque elas estão always on. Evite a computação sem servidor para operações em tempo integral devido ao possível escalonamento de custos.

Não pague por camadas mais altas sem usar sua capacidade total. Verifique se a camada escolhida está alinhada com seus padrões de uso de produção para otimizar os gastos. Use preços padrão para tarefas regulares e preços spot para treinamento altamente interruptível. Use a computação baseada em GPU apenas para funções de carga de trabalho de IA para reduzir custos.

Teste e faça o parâmetro de comparação extensivo de seu treinamento e ajuste fino para encontrar a versão ideal do produto que equilibre performance e custo.
Use o que você paga. Minimize o desperdício. Monitore as métricas de utilização de perto. As cargas de trabalho de IA podem ser caras e os custos podem aumentar rapidamente se os recursos não forem desligados, reduzidos ou desalocados quando não estiverem em uso.

Otimize o sistema para escrever uma vez, leia muitos para evitar gastos excessivos com armazenamento de dados. Os dados de treinamento não precisam da capacidade de resposta instantânea de um banco de dados de produção.

O teste de estresse de um ponto de extremidade de inferência do Serviço OpenAI do Azure pode ser caro devido às cobranças por cada chamada. Para reduzir os custos, use PTUs não utilizadas do OpenAI do Azure em um ambiente de teste ou simule o ponto de extremidade de inferência.

Atividades como análise exploratória de dados (EDA), treinamento de modelo e ajuste fino normalmente não são executadas em tempo integral. Prefira uma plataforma que você possa parar quando ela não estiver em uso. Por exemplo, os trabalhos EDA geralmente são interativos, portanto, os usuários precisam ser capazes de iniciar VMs e interrompê-las enquanto executam trabalhos.

Defina as responsabilidades de custo nas equipes de operações. Eles devem garantir que os custos permaneçam dentro dos parâmetros esperados monitorando e gerenciando ativamente a utilização de recursos.
Otimize os custos operacionais. O treinamento online pode ser caro devido à sua natureza frequente. Automatizar esse processo ajuda a manter a consistência e minimiza os custos de erros humanos. Use dados um pouco mais antigos para treinar e atrasar atualizações, quando possível, para reduzir ainda mais as despesas sem afetar significativamente a precisão do modelo.

Para treinamento offline, avalie se você pode usar recursos mais baratos, como hardware offline.

Em geral, exclua dados de repositórios de recursos para reduzir a desordem e os custos de armazenamento dos recursos.

Compensação: otimização de custo e eficiência de desempenho. O balanceamento do custo com o desempenho no gerenciamento de banco de dados envolve considerar as compensações. O design de índice eficiente acelera as consultas, mas pode aumentar os custos devido ao gerenciamento de metadados e ao tamanho do índice. Da mesma forma, particionar tabelas grandes pode melhorar o desempenho da consulta e reduzir a carga de armazenamento, mas incorre em custos extras. Por outro lado, técnicas que evitam indexação excessiva podem reduzir custos, mas podem afetar o desempenho se não forem gerenciadas corretamente.

Vantagens e desvantagens: otimização de custos e excelência operacional. Há vantagens e desvantagens nas duas abordagens principais para o treinamento de modelos. O treinamento no ambiente de desenvolvimento com dados de produção completos pode reduzir os custos computacionais treinando o modelo uma vez e promovendo apenas o artefato. Medidas de segurança rigorosas para lidar com dados de produção em ambientes inferiores são necessárias. O processo pode ser complexo e com uso intensivo de recursos. Por outro lado, treinar o modelo em cada ambiente aprimora a estabilidade e a confiabilidade por meio de análise e teste de código completos, mas os custos computacionais aumentam devido a várias execuções de treinamento.

Excelência operacional

O principal objetivo da excelência operacional é fornecer funcionalidades com eficiência em todo o ciclo de vida de desenvolvimento. Você deve estabelecer processos repetíveis que dão suporte à metodologia de design de experimentação e geram resultados para melhorar o desempenho do modelo. A excelência operacional também se trata de observar a precisão sustentada dos modelos ao longo do tempo, implementar práticas eficazes de monitoramento e governança para minimizar riscos e desenvolver processos de gerenciamento de alterações para se adaptar a descompassos de modelo.

Embora todos os princípios de Excelência Operacional se apliquem a cargas de trabalho de IA, priorize a automação e o monitoramento como estratégias operacionais fundamentais.

Princípio de design Considerações
Promova uma mentalidade de aprendizado e experimentação contínuos ao longo dos ciclos de vida de desenvolvimento de aplicativos, manipulação de dados e gerenciamento de modelos de IA. As operações de carga de trabalho devem se basear em metodologias comprovadas pelo setor, como DevOps, DataOps, MLOps e GenAIOps.

A colaboração antecipada entre as equipes de operações, desenvolvimento de aplicativos e dados é essencial para estabelecer um entendimento mútuo do desempenho aceitável do modelo. As equipes de operações fornecem sinais de qualidade e alertas acionáveis. As equipes de aplicativos e dados ajudam a diagnosticar e resolver problemas com eficiência.
Escolha tecnologias que minimizem a carga operacional. Ao escolher soluções de plataforma, prefira PaaS (plataforma como serviço) em vez de opções autogeridas para simplificar o design, automatizar a orquestração de fluxo de trabalho e facilitar as operações de manutenção após a implementação inicial.
Crie um sistema de monitoramento automatizado que dê suporte à funcionalidade de alerta e inclua registro em log e auditoria. Devido à natureza não determinística da IA, as medidas de qualidade são importantes para estabelecer no início do ciclo de vida. Trabalhe com cientistas de dados para definir métricas de qualidade e visualizar insights contínuos em painéis abrangentes.

Acompanhe experimentos por meio de ferramentas que podem capturar detalhes como versões de código, ambientes, parâmetros, execuções e resultados.

Implemente alertas acionáveis com informações suficientes para que os operadores respondam rapidamente.
Automatize a detecção e a mitigação do decaimento do modelo. Use testes automatizados para avaliar o desvio ao longo do tempo. Verifique se o sistema de monitoramento envia alertas quando as respostas começam a se desviar dos resultados esperados e começam a fazê-lo regularmente. Use ferramentas que podem descobrir e atualizar automaticamente novos modelos.

Adapte-se a novos casos de uso ajustando o processamento de dados e a lógica de treinamento do modelo, conforme necessário.
Pratique implantações seguras. Escolha entre implantações lado a lado ou atualizações in-loco para minimizar o tempo de inatividade. Implemente um teste completo antes da implantação para garantir que o modelo esteja configurado corretamente e atenda a metas, expectativas do usuário e padrões de qualidade. Sempre planeje operações de emergência, independentemente da estratégia de implantação.
Avalie continuamente a experiência do usuário em produção. Permitir que os usuários da carga de trabalho forneçam comentários sobre sua experiência e obtenham consentimento para compartilhar partes ou toda a conversa deles em um log associado para solução de problemas. Considere a quantidade de interação do usuário viável, compatível, segura e útil para capturar. Use os dados diligentemente para avaliar o desempenho da carga de trabalho com interações reais do usuário.

As seguintes áreas de design fornecem detalhes sobre os princípios e considerações anteriores:

Eficiência de desempenho

O objetivo da avaliação de desempenho do modelo de IA é determinar a eficácia com que um modelo realiza as tarefas pretendidas. A avaliação envolve avaliar várias métricas, como exatidão, precisão e imparcialidade. O desempenho dos componentes da plataforma e do aplicativo que dão suporte ao modelo é crucial.

O desempenho do modelo também é influenciado pela eficiência de operações como acompanhamento de experimentos e processamento de dados. Aplique princípios de performance eficiente para ajudar a medir a performance em relação a um padrão de qualidade aceitável, que é fundamental para detectar degradação ou decadência. Para manter a carga de trabalho, incluindo componentes de IA, são necessários processos automatizados para monitoramento e avaliação contínuos.

Princípio de design Considerações
Estabeleça benchmarks de desempenho. Realize testes de desempenho rigorosos em diferentes áreas arquitetônicas e defina metas aceitáveis. Essa avaliação contínua deve fazer parte de seus processos operacionais, não apenas um teste único.

O benchmarking se aplica ao desempenho de previsão. Comece com uma linha de base para entender o desempenho inicial do modelo e reavaliar continuamente para garantir que ele atenda às expectativas.
Avalie as necessidades de recursos para atender às metas de desempenho. Entenda as características de carga para escolher a plataforma certa e os recursos do tamanho certo. Considere esses dados para o planejamento da capacidade de operar em escala.

Por exemplo, use o teste de carga para determinar a plataforma de computação ideal e a versão do produto. A computação com otimização de GPU de alto desempenho geralmente é necessária para treinamento de modelo e ajuste fino. As versões de produto de uso geral são adequadas para ferramentas de orquestração.

Da mesma forma, escolha uma plataforma de dados que lide com eficiência com a ingestão de dados, gerencie gravações simultâneas e mantenha o desempenho de gravação individual sem degradação.

Servidores de inferência diferentes têm várias características de desempenho que afetam o desempenho do modelo em runtime. Selecione um servidor que atenda às expectativas básicas.
Colete e analise métricas de desempenho e identifique gargalos.

Avalie a telemetria do pipeline de dados para garantir que as metas de performance para operações de rendimento e leitura/gravação sejam atingidas.
Para o índice de pesquisa, considere métricas como a latência da consulta, a taxa de transferência e a precisão dos resultados. À medida que o volume de dados aumenta, as taxas de erro não devem aumentar.

Analise a telemetria dos componentes de código, como o orquestrador, que coleta dados de chamadas de serviço. Analise esses dados para ajudá-lo a entender o tempo gasto no processamento local versus chamadas de rede e identificar a latência potencial em outros componentes.

Avalie a experiência da interface do usuário usando métricas de envolvimento para determinar se os usuários estão positivamente envolvidos ou frustrados. O aumento do tempo em uma página pode indicar um deles. Recursos multimodal, como respostas de voz ou vídeo, podem experimentar latência significativa, o que leva a tempos de resposta mais longos.
Melhore continuamente o desempenho do parâmetro de comparação usando medidas de qualidade da produção. A coleta e a análise automatizadas de métricas de desempenho, alertas e retreinamento de modelos são necessárias para manter a eficácia do modelo.

Vantagens e desvantagens. Ao considerar os recursos da plataforma, certifique-se de equilibrar o custo e a performance. Por exemplo, as versões de GPU são caras, portanto, monitore continuamente a subutilização e ajuste os recursos conforme necessário. Após os ajustes, teste a utilização de recursos para garantir um equilíbrio entre o custo dos recursos da plataforma e suas operações e o desempenho esperado de acordo com a linha de base. Para estratégias de otimização de custo, consulte Recomendações para otimizar os custos de componente.

As seguintes áreas de design fornecem detalhes sobre os princípios e considerações anteriores:

Próxima etapa