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 a produção, é importante que suas equipes de operações estejam totalmente equipadas para suportar 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 precoce é 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 de equipes de dados para ajudar a diagnosticar problemas potenciais e resolver problemas reais de acordo com os padrões operacionais. Esta 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 a 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 | Description |
---|---|
Monitore todos os aspetos da 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 construir sua estratégia de monitoramento e observabilidade, talvez seja necessário trabalhar em diferentes equipes para obter a experiência certa e cobrir todos os modos e métricas relevantes. ▪ Ampliar 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 requisitos de tempo de inatividade zero. Utilizar as ferramentas adequadas sempre que necessário e colocar a tónica em 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 seguras |
Adote 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 na produção. Sua carga de trabalho deve permitir observabilidade e testes com informações reais do usuário na produção. Isso só pode ser fornecido de forma segura se um processo de DevOps forte e automação simplificada permitirem implantações rápidas, correção de erros e testes A/B. ▪ Suporte a testes em produção ▪ Automatize as práticas operacionais sempre que possível ▪ Adote as práticas de DevOps |
Documente o 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. ▪ Adotar boas práticas de documentação |
Ampliar 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 um monitoramento abrangente da integridade da carga de trabalho. 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 para capturar e analisar.
Para avaliar a integridade de um modelo, é necessária uma visão 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 de dados e engenheiros 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 medições podem mudar inesperadamente a qualquer momento após a implantação. As recomendações para a observabilidade incluem:
Trabalhe com cientistas de dados e engenheiros 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.
Codificar 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 remediar possíveis falhas.
Preste muita atenção às métricas de utilização, pois pode ser dispendioso 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 seguras
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 seguras para incluir todo o código relacionado aos componentes de IA da sua 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 inferir pontos de extremidade, use implantações azul-verde ou canárias com ou sem espelhamento de tráfego, dependendo do seu modelo de implantação.
Para o serviç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 seu aplicativo, plataforma de dados e 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 suporta implantações azul-verde nativamente com divisão de tráfego interna.
Não reinvente a roda
Como os pontos de extremidade de inferência online são essencialmente microsserviços, eles operam como componentes de carga de trabalho totalmente autônomos com seus próprios dados e código que servem a uma função específica no fluxo de trabalho. Por esse motivo, trate os pontos de extremidade de inferência on-line 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 sem problemas. Portanto, você deve priorizar os testes 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 ligados à 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.
Suporte a testes 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 oferecer suporte a testes de carga de trabalho de IA por meio de monitoramento, alerta e investigação, porque os testes são necessários na produção. Devido à natureza não determinística da IA, os testes em produção são necessários 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 uma parceria estreita com a equipe de carga de trabalho para capturar e diagnosticar resultados de testes 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 em conjunto. O treinamento em atividades de teste em ambientes que não são de produção ajuda a familiarizar a equipe com a ordem das operações.
Automatize as práticas operacionais sempre que 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 corretamente inconsistências de modelo e outros sinais de qualidade. Isto é particularmente verdadeiro para lançamentos iniciais. Os processos relacionados com a manutenção do modelo são novos para as equipas de operações, pelo que 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 falsos alarmes com portões de qualidade bem projetados, mas chegar a esse ponto pode ser um processo longo e complexo.
Sempre que 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 Pipelines do Azure ou Fluxos de Trabalho do GitHub, continue a usá-los para implantar 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.
Nota
Para suportar totalmente a carga de trabalho, são necessárias muitas funções e tecnologias que se cruzam. 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, além dos ambientes sandbox, padrões rigorosamente definidos e aplicados devem reger todo o ciclo de vida do desenvolvimento. Aplique esses padrões proibindo estritamente quaisquer atividades de implantação manual. Todas as implantações, sejam elas atualizações, patches ou implantações de novos recursos, devem ser feitas por meio de uma integração contínua e um pipeline de implantação contínua que siga práticas de implantação seguras. As boas práticas de higiene de 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 suave. 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 sua 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 lance 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 caderno.
- Código do orquestrador.
- 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 do pipeline de produção. Quando você concluir sua experimentação, retire a lógica dessas ferramentas e coloque-a em um pacote Python que você pode usar para seu código de trabalho.
Adotar 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, onde a documentação seja armazenada com segurança e a versão controlada. 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, projetos de rede e guias de configuração. Considere documentar as seguintes informações de carga de trabalho específicas da IA:
Informações de gerenciamento de índice de dados de treinamento e aterramento de modelos: documente fontes de dados, o proprietário de fontes de dados, frequência de atualização e processos de eliminação de vieses para estabelecer como treinar o modelo e como lidar com dados de aterramento.
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 que observou ao longo do 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 completamente as configurações da estação de trabalho para simplificar o processo de integração para 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 a transformação de dados ocorre. Documente como os dados aparecem na ingestão e como 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.