Share via


Abordagens arquitetônicas para IA e ML em soluções multilocatárias

Um número cada vez maior de soluções multilocatárias é construído em torno de inteligência artificial (IA) e aprendizado de máquina (ML). Uma solução multilocatária de IA/ML é aquela que fornece recursos baseados em ML semelhantes a qualquer número de locatários. Os locatários geralmente não conseguem ver ou compartilhar os dados de nenhum outro locatário, mas, em algumas situações, os locatários podem usar os mesmos modelos que outros locatários.

As arquiteturas multilocatárias de IA/ML precisam considerar os requisitos para dados e modelos, bem como os recursos de computação necessários para treinar modelos e realizar inferência a partir de modelos. É importante considerar como os modelos multilocatários de IA/ML são implantados, distribuídos e orquestrados, e garantir que sua solução seja precisa, confiável e escalável.

Principais considerações e requisitos

Quando você trabalha com IA e ML, é importante considerar separadamente seus requisitos de treinamento e inferência. O objetivo do treinamento é construir um modelo preditivo baseado em um conjunto de dados. Você executa inferência quando usa o modelo para prever algo em seu aplicativo. Cada um destes processos tem requisitos diferentes. Em uma solução multilocatário, você deve considerar como seu modelo de locação afeta cada processo. Ao considerar cada um desses requisitos, você pode garantir que sua solução forneça resultados precisos, tenha um bom desempenho sob carga, seja econômica e possa ser dimensionada para seu crescimento futuro.

Isolamento de inquilinos

Certifique-se de que os locatários não obtenham acesso não autorizado ou indesejado aos dados ou modelos de outros locatários. Trate modelos com uma sensibilidade semelhante aos dados brutos que os treinaram. Certifique-se de que seus locatários entendam como seus dados são usados para treinar modelos e como modelos treinados em dados de outros locatários podem ser usados para fins de inferência em suas cargas de trabalho.

Há três abordagens comuns para trabalhar com modelos de ML em soluções multilocatário: modelos específicos do locatário, modelos compartilhados e modelos compartilhados ajustados.

Modelos específicos do locatário

Os modelos específicos de locatário são treinados apenas nos dados de um único locatário e, em seguida, são aplicados a esse único locatário. Os modelos específicos do locatário são apropriados quando os dados dos locatários são confidenciais ou quando há pouco espaço para aprender com os dados fornecidos por um locatário e você aplica o modelo a outro locatário. O diagrama a seguir ilustra como você pode criar uma solução com modelos específicos de locatário para dois locatários:

Diagrama que mostra dois modelos específicos do locatário. Cada modelo é treinado com dados de um único locatário. Os modelos são usados para inferência pelos usuários desse locatário.

Modelos partilhados

Em soluções que usam modelos compartilhados, todos os locatários executam inferência com base no mesmo modelo compartilhado. Os modelos compartilhados podem ser modelos pré-treinados que você adquire ou obtém de uma fonte da comunidade. O diagrama a seguir ilustra como um único modelo pré-treinado pode ser usado para inferência por todos os locatários:

Diagrama que mostra um único modelo pré-treinado. O modelo é usado para inferência por usuários de todos os locatários.

Você também pode criar seus próprios modelos compartilhados, treinando-os a partir dos dados fornecidos por todos os seus locatários. O diagrama a seguir ilustra um único modelo compartilhado, que é treinado em dados de todos os locatários:

Diagrama que mostra um único modelo compartilhado treinado nos dados de vários locatários. O modelo é usado para inferência por usuários de todos os locatários.

Importante

Se você treinar um modelo compartilhado a partir dos dados de seus locatários, certifique-se de que seus locatários entendam e concordem com o uso de seus dados. Certifique-se de que as informações de identificação são removidas dos dados dos seus inquilinos.

Considere o que fazer, se um locatário se opuser a que seus dados sejam usados para treinar um modelo que será aplicado a outro locatário. Por exemplo, você seria capaz de excluir dados de locatários específicos do conjunto de dados de treinamento?

Modelos partilhados ajustados

Você também pode optar por adquirir um modelo base pré-treinado e, em seguida, executar ajustes adicionais do modelo para torná-lo aplicável a cada um dos seus locatários, com base em seus próprios dados. O diagrama a seguir ilustra essa abordagem:

Diagrama que mostra um modelo base pré-treinado que é especializado para cada locatário, com seus próprios dados. Os modelos são usados para inferência pelos usuários desse locatário.

Escalabilidade

Considere como o crescimento da sua solução afeta o uso de componentes de IA e ML. O crescimento pode se referir a um aumento no número de locatários, na quantidade de dados armazenados para cada locatário, no número de usuários e no volume de solicitações para sua solução.

Formação: Existem vários fatores que influenciam os recursos necessários para treinar os seus modelos. Esses fatores incluem o número de modelos que você precisa treinar, a quantidade de dados com os quais você treina os modelos e a frequência com que treina ou retreina modelos. Se você criar modelos específicos de locatário, à medida que o número de locatários crescer, a quantidade de recursos de computação e armazenamento necessários também provavelmente aumentará. Se você criar modelos compartilhados e treiná-los com base em dados de todos os seus locatários, é menos provável que os recursos para treinamento sejam dimensionados na mesma taxa que o crescimento do número de locatários. No entanto, um aumento na quantidade geral de dados de treinamento afetará os recursos consumidos, para treinar os modelos compartilhados e específicos do locatário.

Inferência: Os recursos necessários para inferência são geralmente proporcionais ao número de solicitações que acessam os modelos de inferência. À medida que o número de inquilinos aumenta, é provável que o número de pedidos também aumente.

É uma boa prática geral usar serviços do Azure que se dimensionam bem. Como as cargas de trabalho de IA/ML tendem a usar contêineres, o Serviço Kubernetes do Azure (AKS) e as Instâncias de Contêiner do Azure (ACI) tendem a ser opções comuns para cargas de trabalho de IA/ML. O AKS geralmente é uma boa opção para permitir alta escala e dimensionar dinamicamente seus recursos de computação com base na demanda. Para cargas de trabalho pequenas, o ACI pode ser uma plataforma de computação simples de configurar, embora não seja dimensionado tão facilmente quanto o AKS.

Desempenho

Considere os requisitos de desempenho para os componentes de IA/ML de sua solução, tanto para treinamento quanto para inferência. É importante esclarecer seus requisitos de latência e desempenho para cada processo, para que você possa medir e melhorar conforme necessário.

Treinamento: o treinamento geralmente é realizado como um processo em lote, o que significa que ele pode não ser tão sensível ao desempenho quanto outras partes da sua carga de trabalho. No entanto, você precisa garantir que provisiona recursos suficientes para executar seu treinamento de modelo de forma eficiente, inclusive à medida que você dimensiona.

Inferência: A inferência é um processo sensível à latência, muitas vezes exigindo uma resposta rápida ou mesmo em tempo real. Mesmo que você não precise realizar inferência em tempo real, certifique-se de monitorar o desempenho de sua solução e usar os serviços apropriados para otimizar sua carga de trabalho.

Considere usar os recursos de computação de alto desempenho do Azure para suas cargas de trabalho de IA e ML. O Azure fornece muitos tipos diferentes de máquinas virtuais e outras instâncias de hardware. Considere se sua solução se beneficiaria do uso de CPUs, GPUs, FPGAs ou outros ambientes acelerados por hardware. O Azure também fornece inferência em tempo real com GPUs NVIDIA, incluindo Servidores de Inferência NVIDIA Triton. Para requisitos de computação de baixa prioridade, considere o uso de pools de nós spot AKS. Para saber mais sobre como otimizar serviços de computação em uma solução multilocatário, consulte Abordagens arquitetônicas para computação em soluções multilocatário.

O treinamento de modelos normalmente requer muitas interações com seus armazenamentos de dados, por isso também é importante considerar sua estratégia de dados e o desempenho que sua camada de dados oferece. Para obter mais informações sobre multilocação e serviços de dados, consulte Abordagens arquitetônicas para armazenamento e dados em soluções multilocatário.

Considere definir o perfil de desempenho da sua solução. Por exemplo, o Azure Machine Learning fornece recursos de criação de perfil que você pode usar ao desenvolver e instrumentar sua solução.

Complexidade da implementação

Ao criar uma solução para usar IA e ML, você pode optar por usar componentes pré-construídos ou criar componentes personalizados. Há duas decisões fundamentais que você precisa tomar. O primeiro é a plataforma ou serviço que você usa para IA e ML. O segundo é se você usa modelos pré-treinados ou cria seus próprios modelos personalizados.

Plataformas: há muitos serviços do Azure que você pode usar para suas cargas de trabalho de IA e ML. Por exemplo, os Serviços Cognitivos do Azure e o Serviço OpenAI do Azure fornecem APIs para executar inferência em modelos pré-criados e a Microsoft gerencia os recursos subjacentes. Os Serviços Cognitivos do Azure permitem que você implante rapidamente uma nova solução, mas oferece menos controle sobre como o treinamento e a inferência são realizados e pode não se adequar a todos os tipos de carga de trabalho. Por outro lado, o Azure Machine Learning é uma plataforma que permite criar, treinar e usar seus próprios modelos de ML. O Azure Machine Learning fornece controlo e flexibilidade, mas aumenta a complexidade do seu design e implementação. Analise os produtos e tecnologias de aprendizado de máquina da Microsoft para tomar uma decisão informada ao selecionar uma abordagem.

Modelos: mesmo quando você não usa um modelo completo fornecido por um serviço como os Serviços Cognitivos do Azure, ainda pode acelerar seu desenvolvimento usando um modelo pré-treinado. Se um modelo pré-treinado não atender exatamente às suas necessidades, considere estender um modelo pré-treinado aplicando uma técnica chamada aprendizagem de transferência ou ajuste fino. A aprendizagem de transferência permite estender um modelo existente e aplicá-lo a um domínio diferente. Por exemplo, se você estiver criando um serviço de recomendação de música multilocatário, considere criar um modelo pré-treinado de recomendações de música e usar o aprendizado de transferência para treinar o modelo para as preferências de música de um usuário específico.

Usando plataformas de ML pré-criadas, como os Serviços Cognitivos do Azure ou o Serviço OpenAI do Azure, ou um modelo pré-treinado, você pode reduzir significativamente seus custos iniciais de pesquisa e desenvolvimento. O uso de plataformas pré-construídas pode economizar muitos meses de pesquisa e evitar a necessidade de recrutar cientistas de dados altamente qualificados para treinar, projetar e otimizar modelos.

Otimização de custos

Geralmente, as cargas de trabalho de IA e ML incorrem na maior proporção de seus custos dos recursos de computação necessários para treinamento e inferência de modelos. Analise as abordagens arquitetônicas para computação em soluções multilocatárias para entender como otimizar o custo de sua carga de trabalho de computação para suas necessidades.

Considere os seguintes requisitos ao planejar seus custos de IA e ML:

  • Determine SKUs de computação para treinamento. Por exemplo, consulte as orientações sobre como fazer isso com o Azure Machine Learning.
  • Determine SKUs de computação para inferência. Para obter um exemplo de estimativa de custo para inferência, consulte as orientações para o Azure Machine Learning.
  • Monitorize a sua utilização. Ao observar a utilização de seus recursos de computação, você pode determinar se deve diminuir ou aumentar sua capacidade implantando diferentes SKUs ou dimensionar os recursos de computação à medida que seus requisitos mudam. Consulte Azure Machine Learning Monitor.
  • Otimize seu ambiente de clustering de computação. Ao usar clusters de computação, monitore a utilização do cluster ou configure o dimensionamento automático para reduzir os nós de computação.
  • Partilhe os seus recursos de computação. Considere se você pode otimizar o custo de seus recursos de computação compartilhando-os entre vários locatários.
  • Considere o seu orçamento. Entenda se você tem um orçamento fixo e monitore seu consumo de acordo. Você pode configurar orçamentos para evitar gastos excessivos e alocar cotas com base na prioridade do locatário.

Abordagens e padrões a considerar

O Azure fornece um conjunto de serviços para habilitar cargas de trabalho de IA e ML. Há várias abordagens arquitetônicas comuns usadas em soluções multilocatário: usar soluções de IA/ML pré-criadas, criar uma arquitetura de IA/ML personalizada usando o Azure Machine Learning e usar uma das plataformas de análise do Azure.

Usar serviços de IA/ML pré-criados

É uma boa prática tentar usar serviços de IA/ML pré-construídos, onde puder. Por exemplo, sua organização pode estar começando a olhar para IA/ML e querer se integrar rapidamente a um serviço útil. Ou, você pode ter requisitos básicos que não exigem treinamento e desenvolvimento de modelo de ML personalizado. Os serviços de ML pré-construídos permitem que você use a inferência sem criar e treinar seus próprios modelos.

O Azure fornece vários serviços que fornecem tecnologia de IA e ML em uma variedade de domínios, incluindo compreensão de idiomas, reconhecimento de fala, conhecimento, reconhecimento de documentos e formulários e visão computacional. Os serviços de IA/ML pré-criados do Azure incluem os Serviços Cognitivos do Azure, o Serviço OpenAI do Azure, a Pesquisa Cognitiva do Azure e o Azure Form Recognizer. Cada serviço fornece uma interface simples para integração e uma coleção de modelos pré-treinados e testados. Como serviços gerenciados, eles fornecem contratos de nível de serviço e exigem pouca configuração ou gerenciamento contínuo. Você não precisa desenvolver ou testar seus próprios modelos para usar esses serviços.

Muitos serviços de ML gerenciados não exigem treinamento ou dados de modelo, portanto, geralmente não há preocupações com o isolamento de dados do locatário. No entanto, quando você trabalha com a Pesquisa Cognitiva em uma solução multilocatário, revise Padrões de design para aplicativos SaaS multilocatários e a Pesquisa Cognitiva do Azure.

Considere os requisitos de escala para os componentes em sua solução. Por exemplo, muitas das APIs nos Serviços Cognitivos do Azure dão suporte a um número máximo de solicitações por segundo. Se você implantar um único recurso de Serviços Cognitivos para compartilhar entre seus locatários, à medida que o número de locatários aumentar, talvez seja necessário dimensionar para vários recursos.

Nota

Alguns serviços gerenciados permitem que você treine com seus próprios dados, incluindo o serviço Visão Personalizada, a API Face, modelos personalizados do Form Recognizer e alguns modelos OpenAI que suportam personalização e ajuste fino. Ao trabalhar com esses serviços, é importante considerar os requisitos de isolamento para os dados dos locatários.

Arquitetura de IA/ML personalizada

Se sua solução requer modelos personalizados ou se você trabalha em um domínio que não é coberto por um serviço de ML gerenciado, considere criar sua própria arquitetura de IA/ML. O Azure Machine Learning fornece um conjunto de recursos para orquestrar o treinamento e a implantação de modelos de ML. O Azure Machine Learning suporta muitas bibliotecas de aprendizagem automática de código aberto, incluindo PyTorch, Tensorflow, Scikit e Keras. Você pode monitorar continuamente as métricas de desempenho dos modelos, detetar desvios de dados e acionar o retreinamento para melhorar o desempenho do modelo. Durante todo o ciclo de vida dos seus modelos de ML, o Azure Machine Learning permite a auditabilidade e a governação com rastreio e linhagem incorporados para todos os seus artefactos de ML.

Ao trabalhar em uma solução multilocatário, é importante considerar os requisitos de isolamento de seus locatários durante os estágios de treinamento e inferência. Você também precisa determinar seu processo de treinamento e implantação do modelo. O Azure Machine Learning fornece um pipeline para treinar modelos e implantá-los em um ambiente a ser usado para inferência. Em um contexto multilocatário, considere se os modelos devem ser implantados em recursos de computação compartilhados ou se cada locatário tem recursos dedicados. Projete seus pipelines de implantação de modelo, com base em seu modelo de isolamento e seu processo de implantação de locatário.

Quando você usa modelos de código aberto, talvez seja necessário treinar novamente esses modelos usando o aprendizado de transferência ou o ajuste. Considere como você gerenciará os diferentes modelos e dados de treinamento para cada locatário, bem como as versões do modelo.

O diagrama a seguir ilustra uma arquitetura de exemplo que usa o Azure Machine Learning. O exemplo usa a abordagem de isolamento de modelos específicos do locatário.

Diagrama que mostra uma arquitetura que usa o Azure Machine Learning. Um espaço de trabalho, que contém projetos e experimentos, cria os modelos para os locatários A, B e C. Os usuários de cada locatário acessam uma camada de API compartilhada, que executa inferência usando o modelo de ML relevante para seu locatário,

Soluções integradas de IA/ML

O Azure fornece várias plataformas de análise poderosas que podem ser usadas para uma variedade de finalidades. Essas plataformas incluem Azure Synapse Analytics, Databricks e Apache Spark.

Você pode considerar o uso dessas plataformas para IA/ML, quando precisar dimensionar seus recursos de ML para um número muito grande de locatários e quando precisar de computação e orquestração em grande escala. Você também pode considerar o uso dessas plataformas para IA/ML, quando precisar de uma ampla plataforma de análise para outras partes da sua solução, como para análise de dados e integração com relatórios por meio do Microsoft Power BI. Você pode implantar uma única plataforma que cubra todas as suas necessidades de análise e IA/ML. Ao implementar plataformas de dados em uma solução multilocatário, revise as abordagens de arquitetura para armazenamento e dados em soluções multilocatário.

Antipadrões a evitar

  • Não consideração dos requisitos de isolamento. É importante considerar cuidadosamente como você isola os dados e modelos dos locatários, tanto para treinamento quanto para inferência. Não o fazer pode violar requisitos legais ou contratuais. Também pode reduzir a precisão de seus modelos para treinar os dados de vários locatários, se os dados forem substancialmente diferentes.
  • Vizinhos barulhentos. Considere se seus processos de treinamento ou inferência podem estar sujeitos ao problema do vizinho barulhento. Por exemplo, se você tiver vários locatários grandes e um único locatário pequeno, certifique-se de que o treinamento de modelo para os locatários grandes não consuma inadvertidamente todos os recursos de computação e prive os locatários menores. Use a governança e o monitoramento de recursos para reduzir o risco da carga de trabalho de computação de um locatário afetada pela atividade dos outros locatários.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Autor principal:

  • Kevin Ashley - Brasil | Engenheiro de Clientes Sênior, FastTrack for Azure

Outros contribuidores:

  • Paul Burpo - Brasil | Engenheiro de Clientes Principal, FastTrack for Azure
  • John Downs - Brasil | Engenheiro de Clientes Principal, FastTrack for Azure
  • Daniel Scott-Raynsford - Brasil | Estrategista de Tecnologia de Parceiros
  • Arsen Vladimirskiy - Brasil | Engenheiro de Clientes Principal, FastTrack for Azure

Próximos passos