A operacionalização de modelos de aprendizado de máquina significa disponibilizar seus modelos para outros sistemas de negócios. Ao operacionalizar modelos, outros sistemas podem enviar dados a eles e obter suas predições, que por sua vez são preenchidas novamente nos sistemas da empresa. Com a implantação do modelo de aprendizado de máquina, sua empresa pode começar a tirar o máximo proveito do modelo criado.

Quando pensamos em ciência de dados, pensamos em como construir modelos de Machine Learning, qual algoritmo será mais assertivo, como projetar recursos e quais variáveis usar para tornar os modelos mais precisos. No entanto, como realmente usar esses modelos é frequentemente negligenciado, sendo este o passo mais importante no pipeline de ciência de dados. Somente quando um modelo é totalmente integrado aos sistemas de negócios, podemos extrair valor real de suas previsões. Para colocar o seu trabalho em produção, os cientistas de dados geralmente precisam entregar seu modelo de dados à engenharia para implementação. É nesta etapa que aparecem alguns dos problemas mais comuns da ciência de dados.

Desafios

Machine Learning possui algumas particularidades que dificultam a implantação em escala. Estes são alguns dos problemas mais comumente enfrentados:

  • Gerenciamento de Linguagens
  • Reprodutibilidade
  • Portabilidade
  • Poder Computacional e GPUs
  • Escalabilidade

Gerenciamento de Linguagens

É de conhecimento comum que os aplicativos de ML geralmente compreendem elementos escritos em diferentes linguagens de programação, e que nem sempre interagem bem entre si. É comum ver muitas vezes um pipeline de ML que começa em R, continua em Python e termina em outro idioma.

Em geral, Python e R são de longe as linguagens mais populares para soluções de Machine Learning, entretanto os modelos em produção raramente são implantados nessas linguagens por vários motivos, dos quais incluem a comunicação com sistemas legados e suporte da infraestrutura. Porém, essa prática ocasiona em outras complicações, pois portar um modelo Python ou R para uma linguagem de produção como C++ ou Java é complicado e geralmente resulta em desempenho reduzido (velocidade, precisão, etc.) do modelo original.

Os pacotes R podem quebrar quando novas versões do software são lançadas. Além disso, o R é lento e não processa grandes volumes de dados com eficiência. É uma ótima linguagem para prototipagem, pois permite interações fáceis e solução de problemas, mas precisa ser traduzida para Python, C ++ ou Java para produção. As tecnologias de contêiner, como o Docker, podem solucionar desafios de incompatibilidade e portabilidade introduzidos pela multiplicidade de ferramentas. No entanto, a verificação automática de dependência, a verificação de erros, os testes e as ferramentas de construção não serão capazes de solucionar problemas através da barreira da linguagem. Para remediar essa situação, é interessante o encapsulamento da solução em contêineres como micros serviços, pois desta forma a aplicação é isolada dos sistemas em operação e a integração é transparente e independente da linguagem utilizada, dado que a interface é realizada através de APIs.

Reprodutibilidade

A reprodutibilidade também se mostra um desafio pertinente aos experimentos de Ciência de Dados. De fato, os cientistas de dados podem criar muitas versões de um modelo, cada uma usando diferentes linguagens de programação, bibliotecas ou versões diferentes da mesma biblioteca, mas rastrear essas dependências manualmente muitas vezes se mostra uma tarefa árdua. Para solucionar esses desafios, é necessária uma ferramenta de ciclo de vida de experimentos que possa rastrear e registrar automaticamente essas dependências durante a fase de treinamento, como a configuração e código, e posteriormente agrupá-las juntamente com o modelo treinado em um artefato pronto para implantação.

Portabilidade

Outro desafio relacionado à implantação do modelo é a falta de portabilidade. Isso tende a ser um problema quando é necessária a integração com sistemas de informações legados. Sem a capacidade de migrar facilmente um componente de software para outro ambiente e executá-lo lá, as organizações podem ficar presas em uma plataforma específica. Isso pode gerar barreiras para os cientistas de dados ao criar modelos e implantá-los.

Poder Computacional e GPUs

Diversas soluções utilizam redes neurais artificias como modelo preditivo, e algumas redes possuem uma arquitetura densa e complexa, que as caracterizam como Deep Neural Networks (redes neurais profundas), o que significa que treiná-las e usá-las para inferência requer muito poder computacional. Em produção, é desejável que os algoritmos sejam executados rapidamente e para muitos usuários, e isso pode ser um obstáculo.

Além disso, muitos modelos de Machine Learning em produção atualmente dependem de GPUs (placas de processamento gráfico) para realizar o treinamento ou mesmo a inferência. No entanto, elas são escassas e caras, o que facilmente adiciona outra camada de complexidade à tarefa de operacionalizar o modelo preditivo.

Escalabilidade

Depois que os algoritmos são treinados, eles nem sempre são frequentemente usados; seus usuários só os chamam quando precisam deles. Isso pode significar que o modelo atende apenas 100 chamadas de API às 8h, mas 10.000 às 8h30. Diante deste panorama, possuir uma infraestrutura que aumente e diminua conforme a demanda, certificando-se de não pagar pelos servidores que você não precisa, é um desafio.

A escalabilidade é um problema real para muitos projetos de IA. De fato, é preciso garantir que os modelos possam escalar e atender a aumentos no desempenho e na demanda de aplicativos em produção. No início de um projeto, geralmente é esperado uma carga de dados relativamente estática dentro de uma escala gerenciável. À medida que o modelo avança para a produção, ele geralmente é exposto a volumes maiores e outros métodos de transferência de dados. Dentro desse contexto, serão necessárias várias ferramentas para monitorar e resolver os desafios de desempenho e escalabilidade que aparecerão com o tempo. É inteligente assumir que os problemas de escalabilidade possam ser resolvidos adotando uma abordagem consistente e baseada em micros serviços. As equipes devem poder migrar rapidamente modelos de demanda por lote para o streaming por meio de alterações simples na configuração. Da mesma forma, as equipes devem ter opções para escalar configurações de computação e memória para suportar cargas de trabalho mais complexas.

Conclusão

Por todas essas razões, apenas alguns projetos de Ciência de Dados acabam realmente entrando nos ambientes de produção. A prática de Deployment de Modelos de Machine Learning está ganhando mais espaço dentro das equipes de Ciência de Dados, e tem ganhado bastante empenho para sair dos estágios iniciais. De fato, os componentes de software e hardware estão em constante evolução para atender as demandas atuais da operacionalização de modelos.

A arquitetura Docker / Kubernetes e micros serviços pode ser empregada para resolver os desafios de heterogeneidade e infraestrutura. Há ferramentas existentes que podem resolver vários dos problemas individualmente. Uma arquitetura que reúne todas essas ferramentas para operacionalizar a solução de ML é o maior desafio hoje. A implantação do modelo de Machine Learning é e continuará sendo difícil, e isso é apenas uma realidade com a qual as organizações precisarão lidar. Felizmente, algumas novas arquiteturas e produtos estão ajudando os cientistas de dados. Além disso, à medida que mais empresas estão escalando as operações de Ciência de Dados, elas também estão implementando ferramentas que facilitam a implantação de modelos de Machine Learning. No fim, a operacionalização de modelos é uma arquitetura de fluxo dos dados, com algumas ferramentas para controle e orquestração.

 


Comentários: 0

Ainda não há comentários neste post. Seja você o primeiro a comentar!

Deixar um comentário