Como colocar modelos de aprendizado de máquina em produção

O objetivo da construção de um modelo de aprendizado de máquina é resolver um problema, e um modelo de aprendizado de máquina só pode fazê-lo quando está em produção e ativamente em uso pelos consumidores. Como tal, a implantação do modelo é tão importante quanto a construç?

Os cientistas de dados se destacam em criar modelos que representem e prevejam dados do mundo real, mas efetivamente implantar modelos de aprendizado de máquina é mais uma arte do que ciência. A implantação requer habilidades mais comumente encontradas em engenharia de software e DevOps. Venturebeat relata que 87% dos projetos de ciência de dados nunca chegam à produção, enquanto o redapt afirma que é de 90%. Ambos destacam que um fator crítico que faz a diferença entre sucesso e fracasso é a capacidade de colaborar e iterar como uma equipe.

 

O objetivo da construção de um modelo de aprendizado de máquina é resolver um problema, e um modelo de aprendizado de máquina só pode fazê-lo quando está em produção e ativamente em uso pelos consumidores. Como tal, a implantação do modelo é tão importante quanto a construção de modelos. Como aponta Redapt, pode haver uma "desconexão entre TI e ciência de dados. A TI tende a manter o foco em tornar as coisas disponíveis e estáveis. Eles querem tempo de atividade a todo custo. Os cientistas de dados, por outro lado, estão focados na iteração e experimentação. Eles querem quebrar as coisas. Fazer a ponte entre esses dois mundos é fundamental para garantir que você tenha um bom modelo e possa realmente colocá-lo em produção.

 

A maioria dos cientistas de dados acha que a implantação do modelo é uma tarefa de engenharia de software e deve ser tratada por engenheiros de software porque as habilidades necessárias estão mais alinhadas com seu trabalho diário. Embora isso seja um pouco verdade, os cientistas de dados que aprendem essas habilidades terão uma vantagem, especialmente em organizações enxutas. Ferramentas como TFX, Mlflow, Kubeflow podem simplificar todo o processo de implantação do modelo, e os cientistas de dados podem (e devem) aprender e usá-los rapidamente.

 

As dificuldades na implantação e gestão do modelo deram origem a um novo papel especializado: o engenheiro de machine learning. Os engenheiros de aprendizado de máquina estão mais próximos dos engenheiros de software do que os cientistas de dados típicos e, como tal, eles são o candidato ideal para colocar modelos em produção. Mas nem toda empresa tem o luxo de contratar engenheiros especializados apenas para implantar modelos. Para a loja de engenharia enxuta de hoje, é aconselhável que os cientistas de dados aprendam a colocar seus modelos em produção.

 

Em tudo isso, outra pergunta se aproxima — qual é a maneira mais eficaz de colocar modelos de aprendizado de máquina em produção?

 

Essa questão é crítica, pois o aprendizado de máquina promete muito potencial para as empresas, e qualquer empresa que possa fazer seus modelos de forma rápida e eficaz superar seus concorrentes pode ofuscar seus concorrentes.

 

Neste artigo, vou falar sobre algumas das práticas e métodos que ajudarão a colocar modelos de aprendizado de máquina na produção. Discutirei diferentes técnicas e usarei casos, bem como os prós e contras de cada método.

 

Então, sem perder mais tempo, vamos lá!

 

Do modelo à produção

 

Muitas equipes embarcam em projetos de aprendizado de máquina sem um plano de produção, uma abordagem que muitas vezes leva a sérios problemas na hora de implantar. É caro e demorado criar modelos, e você não deve investir em um projeto de ML se você não tem nenhum plano para colocá-lo em produção, exceto, é claro, ao fazer pesquisa pura. Com um plano em mãos, você não se surpreenderá com quaisquer armadilhas que possam atrapalhar seu lançamento.

 

T são três áreas-chave que sua equipe precisa considerar antes de embarcar em qualquer projeto de ML são:

 

Armazenamento e recuperação de dados

Frameworks e ferramentas

Feedback e iteração

Armazenamento e recuperação de dados

 

Um modelo de aprendizado de máquina não é útil para ninguém se ele não tiver nenhum dado associado a ele. Você provavelmente terá conjuntos de dados de treinamento, avaliação, testes e até mesmo previsão. Você precisa responder perguntas como:

 

Como seus dados de treinamento são armazenados?

Qual é o tamanho dos seus dados?

Como você vai recuperar os dados para treinamento?

Como você vai recuperar dados para previsão?

Essas perguntas são importantes, pois irão guiá-lo sobre quais frameworks ou ferramentas usar, como abordar seu problema e como projetar seu modelo ML. Antes de fazer qualquer outra coisa em um projeto de aprendizado de máquina, pense nessas questões de dados.

 

Os dados podem ser armazenados no local, no armazenamento em nuvem ou em um híbrido dos dois. Faz sentido armazenar seus dados onde o treinamento do modelo ocorrerá e os resultados serão atendidos: o treinamento e o serviço de modelos no local serão mais adequados para dados on-premise, especialmente se os dados forem grandes, enquanto os dados armazenados em sistemas de armazenamento em nuvem como GCS, AWS S3 ou armazenamento Azure devem ser combinados com o treinamento e o serviço de ML em nuvem.

 

O tamanho dos seus dados também importa muito. Se o seu conjunto de dados for grande, então você precisa de mais poder de computação para etapas de pré-processamento, bem como fases de otimização de modelo. Isso significa que você tem que planejar mais computação se estiver operando localmente ou configurar o dimensionamento automático em um ambiente de nuvem desde o início. Lembre-se, qualquer um desses pode ficar caro se você não pensou em suas necessidades de dados, então pré-planeje para garantir que seu orçamento possa apoiar o modelo através de treinamento e produção

 

Mesmo que você tenha seus dados de treinamento armazenados juntamente com o modelo a ser treinado, você ainda precisa considerar como esses dados serão recuperados e processados. Aqui vem à mente a questão da recuperação de dados em lote vs. em tempo real, e isso deve ser considerado antes de projetar o sistema ML. A recuperação de dados em lote significa que os dados são recuperados em pedaços de um sistema de armazenamento, enquanto a recuperação de dados em tempo real significa que os dados são recuperados assim que disponíveis.

 

Juntamente com a recuperação de dados de treinamento, você também precisará pensar na recuperação de dados de previsão. Seus dados de previsão são TK (defina-os em relação aos dados de treinamento) e raramente são tão bem embalados quanto os dados de treinamento, então você precisa considerar mais algumas questões relacionadas à forma como seu modelo receberá dados no momento da inferência:

 

Você está recebendo dados de inferência de páginas da web?

Você está recebendo pedidos de previsão de APIs?

Você está fazendo previsões em lote ou em tempo real?

e assim por diante.

 

Se você está recebendo dados de páginas da web, a questão então é que tipo de dados? Os dados dos usuários em páginas da web podem ser dados estruturados (CSVs, JSON) ou dados não estruturados (imagens, vídeos, som), e o mecanismo de inferência deve ser robusto o suficiente para recuperar, processar e fazer previsões. Os dados de inferência das páginas da Web podem ser muito sensíveis aos usuários e, como tal, você deve levar em consideração coisas como privacidade e ética. Aqui, frameworks como o Aprendizado Federado,onde o modelo é trazido para os dados e os dados nunca saem de páginas/usuários da web, podem ser considerados.

 

Outro problema aqui tem a ver com a qualidade dos dados. Os dados usados para inferência muitas vezes serão muito diferentes dos dados de treinamento, especialmente quando vêm diretamente de usuários finais e não de APIs. Portanto, você deve fornecer a infraestrutura necessária para automatizar totalmente a detecção de alterações, bem como o processamento desses novos dados.

 

Como com a recuperação, você precisa considerar se a inferência é feita em lotes ou em tempo real. Esses dois cenários requerem abordagens diferentes, pois a tecnologia/habilidade envolvida pode ser diferente. Para inferência em lote, você pode querer salvar uma solicitação de previsão em uma loja central e, em seguida, fazer inferências após um período designado, enquanto em tempo real, a previsão é realizada assim que a solicitação de inferência é feita. Sabendo disso, você poderá planejar efetivamente quando e como agendar recursos de computação, bem como quais ferramentas usar.

 

Levantar e responder perguntas relacionadas ao armazenamento e recuperação de dados é importante e fará você pensar na maneira certa de projetar seu projeto ML.

 

Frameworks e ferramentas

 

Seu modelo não vai treinar, correr e se implantar sozinho. Para isso, você precisa de frameworks e ferramentas, software e hardware que o ajudem a implantar efetivamente modelos ML. Estes podem ser frameworks como Tensorflow, Pytorch e Scikit-Learn para modelos de treinamento, linguagens de programação como Python, Java e Go, e até mesmo ambientes de nuvem como AWS, GCP e Azure.

 

Depois de examinar e preparar seu uso de dados, a próxima linha de pensamento deve considerar qual combinação de frameworks e ferramentas para usar.

 

A escolha do quadro é muito importante, pois pode decidir a continuidade, manutenção e uso de um modelo. Nesta etapa, você deve responder às seguintes perguntas:

 

Qual é a melhor ferramenta para a tarefa em questão?

A escolha das ferramentas é de código aberto ou fechada?

Quantas plataformas/alvos suportam a ferramenta?

Para ajudar a determinar a melhor ferramenta para a tarefa, você deve pesquisar e comparar achados com diferentes ferramentas que realizam o mesmo trabalho. Por exemplo, você pode comparar essas ferramentas com base em critérios como:

 

Eficiência: Quão eficiente é a estrutura ou ferramenta na produção? Uma estrutura ou ferramenta é eficiente se usar recursos como memória, CPU ou tempo. É importante considerar a eficiência dos Frameworks ou ferramentas que você pretende usar porque eles têm um efeito direto no desempenho do projeto, confiabilidade e estabilidade.

 

Popularidade: Quão popular é a ferramenta na comunidade de desenvolvedores? Popularidade muitas vezes significa que funciona bem, está ativamente em uso, e tem muito apoio. Vale ressaltar também que pode haver ferramentas mais novas que sejam menos populares, mas mais eficientes do que as populares, especialmente para ferramentas de código fechado e proprietárias. Você precisará pesar isso ao escolher uma ferramenta proprietária para usar. Geralmente, em projetos de código aberto, você se inclinaria para ferramentas populares e mais maduras por razões que discutirei abaixo.

 

Suporte: Como é o suporte para a estrutura ou ferramenta? Ele tem uma comunidade vibrante por trás disso se é de código aberto, ou tem um bom suporte para ferramentas de código fechado? Quão rápido você pode encontrar dicas, truques, tutoriais e outros casos de uso em projetos reais?

 

Em seguida, você também precisa saber se as ferramentas ou quadros selecionados são de código aberto ou não. Há prós e contras para isso, e a resposta dependerá de coisas como orçamento, apoio, continuidade, comunidade e assim por diante. Às vezes, você pode obter uma compilação proprietária de software de código aberto, o que significa que você obtém os benefícios de código aberto mais suporte premium.

 

Mais uma pergunta que você precisa responder é quantas plataformas/alvos sua escolha de framework suporta? Ou seja, sua escolha de framework suporta plataformas populares como a web ou ambientes móveis? Ele é executado no Windows, Linux ou Mac OS? É fácil personalizar ou implementar neste ambiente de destino? Essas perguntas são importantes, pois pode haver muitas ferramentas disponíveis para pesquisa e experimento em um projeto, mas poucas ferramentas que suportam adequadamente seu modelo durante a produção.

 

Feedback e iteração

 

Projetos ML nunca são estáticos. Isso faz parte da engenharia e do design que devem ser considerados desde o início. Aqui você deve responder perguntas como:

 

Como obter feedback de um modelo em produção?

 

Como você configura a entrega contínua?

 

Obter feedback de um modelo em produção é muito importante. O estado do modelo de rastreamento e monitoramento ativo pode alertá-lo em casos de depreciação/decadência do desempenho do modelo, viés ou até mesmo inclinação de dados e deriva. Isso garantirá que esses problemas sejam rapidamente resolvidos antes que o usuário final note.

 

Considere como experimentar, retreinar e implantar novos modelos na produção sem derrubar esse modelo ou interromper sua operação. Um novo modelo deve ser devidamente testado antes de ser usado para substituir o antigo. Essa ideia de testes contínuos e implantação de novos modelos sem interromper os processos de modelo existentes é chamada de integração contínua.

 

Há muitas outras questões ao colocar um modelo em produção, e este artigo não é lei, mas estou confiante de que a maioria das perguntas que você vai fazer se enquadra em uma das categorias acima indicadas.

 

Um exemplo de implantação de aprendizado de máquina

 

Agora, eu vou levá-lo através de um projeto ml amostra. Neste projeto, você é um engenheiro de ML trabalhando em um projeto promissor, e você quer projetar um sistema à prova de falhas que possa efetivamente colocar, monitorar, rastrear e implantar um modelo ML.

 

Considere a Adstocrat, uma agência de publicidade que fornece às empresas online um rastreamento e monitoramento eficiente de anúncios. Eles trabalharam com grandes empresas e recentemente conseguiram um contrato para construir um sistema de aprendizado de máquina para prever se os clientes clicarão em um anúncio mostrado em uma página web ou não. Os contratantes têm um conjunto de dados de grande volume em um balde de Armazenamento em Nuvem do Google (GCS) e querem que o Adstocrat desenvolva um sistema ML completo para eles.

 

Como engenheiro responsável, você tem que criar uma solução de design antes do projeto começar. Para abordar esse problema, faça cada uma das perguntas feitas anteriormente e desenvolva um projeto para este sistema de ponta a ponta.

 

Preocupações com dados

 

Primeiro, vamos falar sobre os dados. Como seus dados de treinamento são armazenados?

 

Os dados são armazenados em um balde GCS e vêm de duas formas. O primeiro é um arquivo CSV descrevendo o anúncio, e o segundo é a imagem correspondente do anúncio. Os dados já estão na nuvem, então pode ser melhor construir seu sistema ML na nuvem. Você terá melhor latência para I/O, dimensionamento fácil à medida que os dados se tornam maiores (centenas de gigabytes) e configuração e configuração rápidas para quaisquer GPUs e TPUs adicionais.

 

Qual é o tamanho dos seus dados?

 

O contratante atende milhões de anúncios todos os meses, e os dados são agregados e armazenados no balde de nuvem no final de cada mês. Então agora você sabe que seus dados são grandes (centenas de gigabytes de imagens), então seu palpite de construir seu sistema na nuvem é mais forte.

 

Como você vai recuperar os dados para treinamento?

 

Uma vez que os dados são armazenados no balde GCS, ele pode ser facilmente recuperado e consumido por modelos construídos na Plataforma Google Cloud. Então agora você tem uma ideia de qual provedor de nuvem usar.

 

Como você vai recuperar dados para previsão?

 

Em termos de dados de inferência, os contratantes informaram que a inferência será solicitada por sua API interna, pois tais dados para previsão serão chamados por uma API REST. Isso lhe dá uma ideia da plataforma-alvo para o projeto.

 

Frameworks e ferramentas para o projeto

 

Existem muitas combinações de ferramentas que você pode usar nesta fase, e a escolha de uma ferramenta pode afetar as outras. Em termos de linguagens de programação para prototipagem, construção de modelos e implantação, você pode decidir escolher a mesma língua para esses três estágios ou usar diferentes de acordo com seus resultados de pesquisa. Por exemplo, Java é uma linguagem muito eficiente para a programação backend, mas não pode ser comparada a uma linguagem versátil como python quando se trata de aprendizado de máquina.

 

Após consideração, você decide usar python como sua linguagem de programação, Tensorflow para construção de modelos porque você estará trabalhando com um grande conjunto de dados que inclui imagens, e Tensorflow Extended (TFX), uma ferramenta de código aberto lançada e usada internamente no Google, para a construção de seus pipelines. E os outros aspectos do modelo de construção, como análise de modelos, monitoramento, serviço, e assim por diante? Que ferramentas você usa aqui? Bem, TFX praticamente cobre tudo!

 

A TFX fornece uma série de frameworks, bibliotecas e componentes para definir, lançar e monitorar modelos de aprendizado de máquina em produção. Os componentes disponíveis no TFX permitem que você construa dutos ML eficientes especificamente projetados para escalar desde o início. Esses componentes têm suporte integrado para modelagem, treinamento, serviço e até mesmo gerenciamento de implantações para diferentes alvos.

 

A TFX também é compatível com nossa escolha de linguagem de programação (Python), bem como sua escolha de construtor de modelos de aprendizagem profunda (Tensorflow), e isso incentivará a consistência em toda a sua equipe. Além disso, desde que o TFX e o Tensorflow foram construídos pelo Google, ele tem suporte de primeira classe na Plataforma Google Cloud. E lembre-se, seus dados são armazenados em GCS.

 

Se você quiser os detalhes técnicos sobre como construir um pipeline completo de ponta a ponta com o TFX.

 

 

O Avance Network é uma comunidade fácil de usar que fornece segurança de primeira e não requer muito conhecimento técnico. Com uma conta, você pode proteger sua comunicação e seus dispositivos. O Avance Network não mantém registros de seus dados; portanto, você pode ter certeza de que tudo o que sai do seu dispositivo chega ao outro lado sem inspeção.


Strong

5178 Blog posting

Komentar