Operações de carga de trabalho de IA no Azure
Quando você cria e faz a transição de suas cargas de trabalho de IA para produção, é importante que suas equipes de operações estejam totalmente equipadas para dar suporte a essas cargas de trabalho como fariam com qualquer outra carga de trabalho de produção. Como suas equipes de operações podem ter experiência limitada com tecnologias de IA, é essencial treiná-las nessas tecnologias e integrar as cargas de trabalho de IA em seus fluxos de trabalho no início do processo. Reúna as equipes de operações e dados no início do desenvolvimento da carga de trabalho de IA para promover a compreensão mútua dos processos de cada equipe. Essa colaboração inicial é crucial porque ambas as equipes precisam trabalhar em estreita colaboração para apoiar a carga de trabalho de IA de forma eficaz. As equipes de dados dependem das equipes de operações para fornecer sinais de integridade confiáveis e alertas acionáveis. As equipes de operações dependem das equipes de dados para ajudar a diagnosticar possíveis problemas e resolver problemas reais de acordo com os padrões operacionais. Essa parceria ajuda a garantir um desempenho suave e eficiente do sistema.
Este guia fornece recomendações sobre como desenvolver mecanismos e práticas operacionais para melhorar o suporte para cargas de trabalho de IA. Ele enfatiza a colaboração eficiente entre as equipes de operações e dados.
Recomendações
Aqui está o resumo das recomendações fornecidas neste artigo.
Recomendação | Descrição |
---|---|
Monitore todos os aspectos de sua carga de trabalho. | Embora muitas preocupações gerais de monitoramento e observabilidade também se apliquem a cargas de trabalho de IA, há considerações específicas que você precisa trabalhar para garantir que toda a sua carga de trabalho seja monitorada adequadamente em todos os momentos. Para criar sua estratégia de monitoramento e observabilidade, talvez seja necessário trabalhar com diferentes equipes para obter o conhecimento certo e cobrir todos os modos e métricas relevantes. ▪ Amplie a plataforma de observabilidade |
Aplique práticas de implantação seguras à sua carga de trabalho de IA. | Tome medidas para garantir o mais alto nível de segurança em torno de dados de produção confidenciais e alinhe as abordagens de implantação com os requisitos de tempo de inatividade zero. Use as ferramentas apropriadas quando necessário e enfatize não reinventar ferramentas e processos que já existem. Muitas vezes, você poderá usar serviços estabelecidos para alcançar um alto nível de eficiência e, ao mesmo tempo, permitir implantações seguras. ▪ Inclua componentes de carga de trabalho de IA em suas práticas de implantação segura |
Adote as práticas de DevOps em testes e automação. | Aplique práticas de DevOps ao criar, implantar e operar sua carga de trabalho de IA em produção. Sua carga de trabalho deve permitir observabilidade e teste com entrada real do usuário na produção. Isso só pode ser fornecido de maneira segura se um processo de DevOps forte e uma automação simplificada permitirem implantações rápidas, correção de erros e testes A/B. ▪ Testes de suporte em produção ▪ Automatize as práticas operacionais quando possível ▪ Adote as práticas de DevOps |
Documente seu progresso. | Crie bons hábitos de documentação desde o início para permitir a captura de decisões estratégicas, histórico de alterações e informações importantes sobre os dados que sua carga de trabalho usa. ▪ Adote boas práticas de documentação |
Amplie a plataforma de observabilidade
Para alcançar a excelência operacional, uma observabilidade robusta é essencial. Quando sua organização adota tecnologias de IA, é crucial que você aprimore sua plataforma de observabilidade para ajudar a garantir o monitoramento abrangente da integridade da carga de trabalho. As organizações novas em IA podem não ter experiência em big data, ciência de dados e DataOps em sua equipe de operações. Portanto, o treinamento sobre as melhores práticas operacionais é um primeiro passo importante para melhorar sua plataforma de observabilidade. Por esse motivo, as equipes de operações e dados devem colaborar para determinar os modos corretos de monitoramento e métricas a serem capturados e analisados.
Para avaliar a integridade de um modelo, é necessária uma visão geral abrangente de suas métricas de qualidade específicas. As medições de qualidade geralmente incluem métricas como atualização do modelo, correção de saída e latência de resposta. No entanto, você deve colaborar com cientistas e engenheiros de dados para estabelecer as métricas específicas que definem a qualidade da sua carga de trabalho. A natureza não determinística das cargas de trabalho de IA torna o monitoramento vigilante da qualidade especialmente importante porque essas medidas podem mudar inesperadamente a qualquer momento após a implantação. As recomendações para observabilidade incluem:
Trabalhe com cientistas e engenheiros de dados para determinar métricas de qualidade.
Crie ou estenda painéis para avaliar a integridade geral da carga de trabalho. Essa abordagem deve incluir métricas de disponibilidade de componentes e métricas de qualidade.
Implemente alertas de disponibilidade e qualidade bem projetados que as equipes de operações possam entender e agir.
Codifique procedimentos operacionais padrão que definem como as equipes de operações respondem a alertas de qualidade, como trabalhar com equipes de dados para investigar e corrigir possíveis avarias.
Preste muita atenção às métricas de utilização, pois pode ser caro executar cargas de trabalho de IA. Os custos podem crescer rapidamente se a equipe de carga de trabalho não desligar, reduzir ou desalocar recursos quando eles não estiverem em uso. As operações podem ajudar a garantir que os custos permaneçam dentro dos parâmetros esperados, monitorando a utilização.
Inclua componentes de carga de trabalho de IA em suas práticas de implantação segura
As cargas de trabalho de IA dependem de dados de produção, que geralmente incluem informações confidenciais. Portanto, é importante manter o mais alto nível de segurança em torno dessas cargas de trabalho. Para ajudar a proteger seus dados, estenda suas práticas de implantação segura para incluir todo o código relacionado aos componentes de IA da carga de trabalho. Se você tiver requisitos de tempo de inatividade zero para sua carga de trabalho, projete sua abordagem de implantação para os componentes de IA de acordo.
Para inferência de pontos de extremidade, use implantações azul-verde ou canário com ou sem espelhamento de tráfego, dependendo do modelo de implantação.
Para veiculação de índice, use um modelo de implantação lado a lado com atualizações de alias para reduzir o tráfego.
Para código de orquestração, use sinalizadores de recursos ou implantações azul-verde.
Dependendo do aplicativo, da plataforma de dados e da topologia de rede específica, talvez seja necessário usar uma solução de gateway, como o Gateway de Aplicativo do Azure ou o Azure Front Door.
Ferramentas
O Azure Machine Learning dá suporte a implantações azul-verde nativamente com divisão de tráfego interna.
Não reinvente a roda
Como os endpoints de inferência online são essencialmente microsserviços, eles operam como componentes de carga de trabalho totalmente independentes com seus próprios dados e códigos que atendem a uma função específica no fluxo de trabalho. Por esse motivo, trate os endpoints de inferência online como outros microsserviços críticos que têm seus próprios ciclos de vida. Você pode atualizar os pontos de extremidade de inferência online individualmente. No entanto, como outros microsserviços em uma carga de trabalho maior, eles devem trabalhar juntos perfeitamente. Portanto, você deve priorizar o teste de integração ao implantar atualizações. Certifique-se de que suas implantações não afetem negativamente outros serviços, como o serviço de modelo e o orquestrador. Como alternativa, os pontos de extremidade de inferência em lote geralmente estão intimamente acoplados à computação de processamento de trabalho e são incluídos no pipeline de dados. Nesses casos, trate-os como parte de uma solução maior em vez de como microsserviços.
Testes de suporte em produção
As equipes de operações provavelmente não projetarão ou executarão testes de carga de trabalho de IA. No entanto, eles devem dar suporte ao teste de carga de trabalho de IA por meio de monitoramento, alerta e investigação, pois o teste é necessário na produção. Devido à natureza não determinística da IA, o teste em produção é necessário para ajudar a garantir que a carga de trabalho esteja funcionando conforme o esperado ao longo do tempo. A equipe de operações deve fazer parceria com a equipe de carga de trabalho para capturar e diagnosticar resultados de teste anormais de forma eficiente e de acordo com os padrões operacionais. Para garantir que as operações possam dar suporte a testes e que as equipes de carga de trabalho possam realizar testes, ambas as equipes precisam se alinhar em seus processos para trabalhar juntas. O treinamento em atividades de teste em ambientes de não produção ajuda a familiarizar a equipe com a ordem das operações.
Automatize as práticas operacionais quando possível
Automatize todas as práticas operacionais relacionadas à carga de trabalho, incluindo processos de monitoramento, alerta e teste. A automação é uma estratégia primária para manter os processos repetíveis, eficientes e consistentes. Ao projetar suas estratégias de automação, exija supervisão humana para atividades, como diagnosticar adequadamente inconsistências de modelo e outros sinais de qualidade. Isso é particularmente verdadeiro para lançamentos iniciais. Os processos relacionados à manutenção do modelo são novos para as equipes de operações, portanto, o risco de respostas inadequadas aos sinais de qualidade é maior nesta fase. À medida que sua carga de trabalho amadurece, você pode usar a automação para identificar alarmes falsos com portões de qualidade bem projetados, mas chegar a esse ponto pode ser um processo longo e complexo.
Quando possível, reutilize as ferramentas de automação existentes para executar novas tarefas de automação para sua carga de trabalho de IA. Por exemplo, se você já usa Azure Pipelines ou GitHub Workflows, continue a usá-los para implantar o código de orquestração em vez de usar uma ferramenta separada. No entanto, evite o excesso de engenharia em um esforço para usar apenas uma ferramenta de automação. Se determinadas tarefas ou trabalhos não forem adequados à ferramenta escolhida, escolha uma ferramenta mais apropriada em vez de criar uma solução personalizada que adicione complexidade desnecessária.
Observação
Para dar suporte total à carga de trabalho, muitas funções e tecnologias que se cruzam são necessárias. As equipes de dados, infraestrutura, segurança e operações dependem da automação até certo ponto. Use o menor número possível de ferramentas e padronize-as para ajudar a manter a estratégia de automação gerenciável e mais fácil de treinar.
Adote as práticas de DevOps
No início do desenvolvimento da carga de trabalho, padronize o uso de práticas de DevOps em seus processos de desenvolvimento. Para todos os ambientes, exceto ambientes sandbox, padrões estritamente definidos e aplicados devem reger todo o ciclo de vida do desenvolvimento. Aplique esses padrões proibindo estritamente qualquer atividade de implantação manual. Todas as implantações, sejam atualizações, patches ou novas implantações de recursos, devem ser feitas por meio de um pipeline de integração contínua e implantação contínua que adere a práticas de implantação seguras. As boas práticas de higiene do DevOps devem incluir:
Controle de versão: use o controle de versão para todos os ativos de código, tanto quanto possível. O controle de versão é um princípio fundamental do DevOps e das boas práticas de gerenciamento de mudanças e é vital para uma colaboração tranquila. Aplique o controle de versão a pacotes de biblioteca, incluindo SDKs e imagens de contêiner. Seja consistente no uso de uma versão específica de pacotes de biblioteca em todo o ciclo de vida de desenvolvimento de software (SDLC). Diferentes versões de bibliotecas como XGBoost ou scikit-learn em vários ambientes de desenvolvimento podem causar variações no comportamento da carga de trabalho. O mesmo vale para o controle de versão do modelo. Certifique-se de que as versões do modelo sejam consistentes em todo o SDLC para que você não teste uma versão do modelo em um ambiente de pré-produção e libere uma versão diferente em produção.
Esquema de nomenclatura de versão simples: use um esquema de nomenclatura de versão simples para ajudar a garantir que você sempre use a versão aprovada mais recentemente de um determinado ativo. Os ativos específicos de IA podem incluir:
- Código do bloco de anotações.
- Código do Orchestrator.
- Código do trabalho de processamento de dados.
- Código de trabalho do Machine Learning.
- O modelo .
Ferramentas que você pode operacionalizar: algumas ferramentas são ótimas para experimentação, mas não são projetadas para operacionalização. Essa limitação pode dificultar ou impossibilitar a integração deles à sua automação operacional. Por exemplo, os notebooks são uma boa ferramenta para experimentação e trabalho exploratório de análise de dados, mas não são uma boa ferramenta para o trabalho de desenvolvimento de pipeline de produção. Ao concluir sua experimentação, extraia a lógica dessas ferramentas e coloque-a em um pacote Python que você pode usar para seu código de trabalho.
Adote boas práticas de documentação
Bons hábitos de documentação são importantes para todos os tipos de cargas de trabalho. A complexidade das cargas de trabalho de IA torna esses hábitos ainda mais importantes. Certifique-se de ter um repositório específico para sua equipe de carga de trabalho em que a documentação seja armazenada com segurança e a versão controlada. Assim como acontece com outras cargas de trabalho, você deve documentar informações padrão. Essas informações padrão incluem todas as ferramentas usadas na carga de trabalho, configurações de segurança, designs de rede e guias de configuração. Considere documentar as seguintes informações de carga de trabalho específicas de IA:
Informações de gerenciamento de índice de dados de treinamento e fundamentação do modelo: documente as fontes de dados, o proprietário das fontes de dados, a frequência de atualização e os processos de eliminação de vieses para estabelecer como treinar o modelo e como lidar com os dados de fundamentação.
Histórico do processo de treinamento: Detalhe como você chegou à configuração aprovada atual, documentando por que você escolheu hiperparâmetros, temperaturas, pesos e outros parâmetros específicos. Inclua quais outras configurações você testou e as mudanças comportamentais observadas durante o processo de treinamento. Essas informações ajudam a evitar a repetição de configurações malsucedidas ou ineficientes.
Informações do repositório de recursos: documente quais recursos têm o melhor poder preditivo e como você fez essa determinação.
Configuração da estação de trabalho do cientista de dados: documente as configurações da estação de trabalho minuciosamente para simplificar o processo de integração dos cientistas de dados. Especifique as bibliotecas e dependências necessárias para usar ambientes conda.
Informações de transformação de dados: documente todo o processo do início ao fim quando ocorre a transformação de dados. Documente como os dados aparecem na ingestão e como eles são apresentados após a transformação.
Ferramentas
Aproveite a configuração automatizada e a captura de histórico por meio do MLFlow e do Machine Learning.