Conteúdo[Esconder][Mostrar]
Todo mundo que já experimentou o desenvolvimento de aprendizado de máquina entende o quão difícil é. Além dos problemas padrão no desenvolvimento de software, o desenvolvimento de aprendizado de máquina (ML) apresenta uma série de obstáculos adicionais.
Centenas de ferramentas de código aberto estão disponíveis para ajudar em todas as etapas do ciclo de vida do ML, desde a preparação dos dados até o treinamento do modelo.
Ao contrário do desenvolvimento de software tradicional, quando as equipes escolhem uma ferramenta para cada etapa, com o ML geralmente você deseja explorar todas as ferramentas disponíveis (por exemplo, algoritmo) para ver se melhora os resultados.
Como resultado, os desenvolvedores de ML devem usar e produzir centenas de bibliotecas.
Os algoritmos de aprendizado de máquina contêm milhares de parâmetros personalizáveis e é difícil identificar quais parâmetros, códigos e dados entraram em cada experimento para gerar um modelo, quer você trabalhe sozinho ou em equipe.
Sem o monitoramento adequado, as equipes geralmente lutam para que o mesmo código funcione novamente. Se você é um cientista de dados que transfere seu código de treinamento para um engenheiro para uso em produção ou está voltando ao seu trabalho anterior para diagnosticar um problema, recuar etapas do fluxo de trabalho de ML é crucial.
Mover um modelo para produção pode ser difícil devido aos vários métodos e ambientes de implantação que devem ser usados (por exemplo, serviço REST, inferência em lote ou aplicativos móveis). Não há um método comum para mover modelos de qualquer biblioteca para qualquer uma dessas ferramentas e, portanto, cada nova implantação apresenta um risco.
Devido a esses problemas, é óbvio que o desenvolvimento de ML deve melhorar significativamente para se tornar tão estável, previsível e amplamente utilizado quanto o desenvolvimento de software tradicional.
Desafios de aprendizado de máquina
- Há uma infinidade de ferramentas díspares. Centenas de soluções de software estão disponíveis para ajudar em todas as etapas do ciclo de vida do aprendizado de máquina, desde a preparação de dados até o treinamento de modelos. Além disso, ao contrário do desenvolvimento de software tradicional, quando as equipes escolhem uma ferramenta para cada etapa, no aprendizado de máquina (ML), geralmente você deseja explorar todas as ferramentas disponíveis (por exemplo, algoritmo) para ver se isso melhora os resultados. Como resultado, os desenvolvedores de ML devem usar e produzir centenas de bibliotecas.
- É difícil acompanhar os experimentos. Os algoritmos de aprendizado de máquina contêm milhares de parâmetros personalizáveis e é difícil identificar quais parâmetros, códigos e dados entraram em cada experimento para gerar um modelo, quer você trabalhe sozinho ou em equipe.
- É difícil implementar o aprendizado de máquina. Mover um modelo para produção pode ser difícil devido aos vários métodos e ambientes de implantação que devem ser usados (por exemplo, serviço REST, inferência em lote ou aplicativos móveis). Não existe um método comum para mover modelos de qualquer biblioteca para qualquer uma dessas ferramentas. Assim, cada nova implantação apresenta um risco.
O que é a Fluxo de ML?
O MLflow é uma plataforma de código aberto para o ciclo de vida do aprendizado de máquina. Ele é baseado em um conceito de interface aberta, propondo muitas abstrações essenciais que permitem que a infraestrutura atual e os algoritmos de aprendizado de máquina sejam prontamente integrados ao sistema.
Isso implica que, se você é um desenvolvedor que deseja usar o MLflow, mas está usando uma estrutura sem suporte, o design de interface aberta torna relativamente simples integrar essa estrutura e começar a trabalhar com a plataforma. Na prática, isso implica que o MLflow deve funcionar com qualquer aprendizado de máquina biblioteca ou linguagem.
Além disso, o MLflow promove a repetibilidade, o que significa que o mesmo código de aprendizado de máquina de treinamento ou produção deve ser executado com os mesmos resultados independentemente do ambiente, seja na nuvem, em uma estação de trabalho local ou em um notebook.
Por fim, o MLflow foi desenvolvido para escalabilidade, para que possa ser usado por uma pequena equipe de cientistas de dados, bem como por uma grande empresa com centenas de praticantes de aprendizado de máquina.
O MLflow é compatível com qualquer biblioteca, algoritmo, ferramenta de implantação ou linguagem de aprendizado de máquina. Também tem as seguintes vantagens:
- Projetado para operar com qualquer serviço de nuvem.
- Escala para dados enormes com o Apache Spark.
- O MLflow é compatível com uma variedade de estruturas de aprendizado de máquina de código aberto, incluindo Apache Spark, TensorFlow e SciKit-Aprenda.
Se você já tem código, o MLflow pode ser usado com ele. Você pode até compartilhar sua estrutura e modelos entre empresas porque é de código aberto.
Componentes do MLflow: como eles funcionam?
O MLflow é uma plataforma gratuita e de código aberto para gerenciar o ciclo de vida do ML, que inclui experimentação, reprodutibilidade, implantação e um registro de modelo único. Atualmente, o MLflow tem quatro componentes:
1. Acompanhamento de MLflow
Vou começar com o MLflow Tracking. O MLflow oferece suporte à coleta de vários conceitos essenciais vinculados a um repositório centralizado de rastreamento de metadados de treinamento. A primeira noção é uma coleção de hiperparâmetros críticos ou botões de configuração que influenciam o desempenho do modelo. Usar as APIs do MLflow e um serviço de rastreamento centralizado pode preservar tudo isso.
Os usuários também podem registrar dados de desempenho para obter informações sobre o sucesso de seus modelos de aprendizado de máquina. Além disso, para repetibilidade, o MLflow permite que os usuários registrem o código-fonte específico que foi usado para criar um modelo, bem como sua versão, integrando-se firmemente ao Git para vincular cada modelo a um hash de confirmação específico.
O MLflow pode ser usado para registrar artefatos, que são quaisquer arquivos arbitrários, incluindo treinamento, dados de teste e os próprios modelos para reprodutibilidade.
Isso significa que, se eu for um desenvolvedor que acabou de treinar um modelo, posso mantê-lo no serviço de rastreamento centralizado e um de meus colegas pode carregá-lo mais tarde e continuar treinando e experimentando ou produzindo esse modelo para atender a uma necessidade específica .
Ao executar seu código de aprendizado de máquina e depois visualizar os resultados, o rastreamento é uma API que permite registrar parâmetros, versões de código, métricas e arquivos de saída. Está escrito em Python, R e Java, entre outras linguagens. Também é acessível como uma API REST, que pode ser usada para criar aplicativos sobre ela.
Características principais
- Muitos desenvolvedores usam o MLflow em seu PC local, onde o backend e o armazenamento de artefatos compartilham um diretório no disco.
- Muitos usuários também empregam SQLite, um banco de dados compatível com SQLAlchemy, para executar o MLflow em seus PCs locais.
- O MLflow também oferece suporte a arquiteturas distribuídas. O servidor de rastreamento, o armazenamento de back-end e o armazenamento de artefatos são todos hospedados em servidores diferentes neles.
- Se a execução foi iniciada por um projeto MLflow, o hash git commit foi utilizado. As APIs MLflow Python, R, Java e REST podem ser usadas para registrar dados para execução.
Para mais informações, você pode conferir o site oficial documentação.
2. Projetos MLFlow
Depois de analisarmos os componentes de rastreamento, gostaria de falar sobre os projetos MLflow, que são uma estrutura de empacotamento repetível para sessões de treinamento de modelo, independentemente do contexto de execução.
As empresas usam uma ampla variedade de tecnologias de treinamento de aprendizado de máquina, mas também usam essas ferramentas de treinamento em um conjunto diversificado de contextos. Por exemplo, eles podem estar executando seu código de treinamento na nuvem, em um PC local ou em um notebook.
Isso leva ao problema de que os resultados do aprendizado de máquina são difíceis de replicar. Muitas vezes, o mesmo código de treinamento idêntico não é executado ou produz os mesmos resultados em dois locais separados.
A solução fornecida pelo MLflow é uma definição de projeto de código de treinamento independente que inclui todo o código de treinamento de aprendizado de máquina, bem como suas dependências de biblioteca de versão, configurações e dados de treinamento e teste.
O MLflow garante a reprodutibilidade em todos os contextos de execução, descrevendo claramente todo o conjunto de requisitos para um processo de treinamento de aprendizado de máquina. Ele faz isso instalando todas essas bibliotecas e realizando o mesmo estado do sistema em que o código está sendo executado.
O projeto MLflow nada mais é do que um diretório. É um diretório que inclui o código de treinamento, a definição de dependência da biblioteca e outros dados necessários para a sessão de treinamento, bem como este arquivo de configuração opcional.
Esses requisitos de biblioteca podem ser definidos de várias maneiras. Os usuários podem, por exemplo, fornecer uma especificação de ambiente anaconda formatada em YAML para listar seus requisitos de biblioteca de código de treinamento. O MLflow executará o código de treinamento dentro do contêiner. Nesse caso, eles também podem incluir um contêiner do Docker.
Por fim, o MLflow possui uma interface de linha de comando (CLI) para executar esses projetos, bem como Python e APIs Java. Esses projetos podem ser executados no sistema local do usuário, bem como em uma variedade de configurações remotas, como o agendador de tarefas do Databricks e o Kubernetes. Os projetos MLflow permitem que você empacote o código de ciência de dados de maneira repetível e reutilizável, principalmente com base em padrões.
O componente de projetos inclui uma API e utilitários de linha de comando para gerenciar projetos. Esses recursos garantem que os projetos possam ser encadeados para formar processos de aprendizado de máquina.
Características principais
- O MLflow oferece suporte a ambientes de projeto, incluindo o ambiente de contêiner do Docker, o ambiente Conda e o ambiente do sistema.
- Qualquer repositório Git ou diretório local pode ser considerado um projeto MLflow; por padrão; você pode usar qualquer shell ou Script Python no diretório como ponto de entrada do projeto.
- Dependências não Python, como bibliotecas Java, podem ser capturadas usando contêineres do Docker.
- Você pode obter maior controle sobre um projeto MLflow adicionando um arquivo de projeto ao diretório raiz do projeto, que é um arquivo de texto na sintaxe YAML.
Para mais informações, você pode conferir o site oficial documentação.
3. Modelos de MLflow
Agora, gostaria de discutir os modelos MLflow, um formato de modelo de uso geral que oferece suporte a uma ampla variedade de contextos de produção. O motivo dos modelos MLflow agora é bastante semelhante ao dos projetos.
Novamente, vemos que os modelos podem ser gerados usando uma ampla gama de ferramentas, mas também podem ser produzidos ou implantados em uma grande variedade de situações, ao contrário dos ambientes de treinamento.
Essas configurações incluem ferramentas para atendimento em tempo real, como Kubernetes ou Amazon SageMaker, bem como streaming e pontuação em lote, como Spark. Além disso, algumas empresas podem optar por implantar modelos como um serviço Web RESTful executado em uma instância de nuvem pré-configurada.
Um modelo MLflow, como um projeto, é uma estrutura de diretórios. Ele inclui um arquivo de configuração e, desta vez, um artefato de modelo serializado em vez de um código de treinamento. Também inclui esse conjunto de dependências para repetibilidade como projeto. Desta vez, examinaremos as dependências de avaliação no contexto de um ambiente Conda.
Além disso, o MLflow inclui ferramentas de geração de modelos para serializar modelos no formato MLflow de uma variedade de estruturas populares. Por fim, o MLflow adiciona implantações, APIs para produção e conexão de qualquer modelo MLflow a uma variedade de serviços, e essas APIs são acessíveis em formato Python, Java, R e CLI.
Os modelos são um componente com uma estrutura padrão para modelos de empacotamento que podem ser usados e compreendidos por ferramentas downstream, como servidores de inferência ou o Bancos de dados plataforma de inferência em lote. Esse componente economiza horas de código personalizado ao empacotar um modelo para produção.
O modelo MLflow é um padrão para empacotar modelos de aprendizado de máquina em uma variedade de formas conhecidas como “sabores”. O MLflow fornece muitas ferramentas para ajudá-lo a implantar vários tipos de modelos. Cada modelo de MLflow é mantido como um diretório contendo arquivos arbitrários, bem como um arquivo descritor de modelo de ML com uma lista dos tipos nos quais ele pode ser usado.
Características principais
- Todas as ferramentas de implantação integradas do MLflow oferecem vários sabores “padrão”, como um sabor “função Python” que explica como executar o modelo como uma função Python.
- Cada modelo de MLflow consiste em um diretório contendo arquivos arbitrários, bem como um arquivo de modelo de ML na raiz do diretório que define os vários tipos do modelo.
- Ao armazenar um modelo, o MLflow permite especificar um parâmetro de ambiente Conda que contém as dependências do modelo. Se nenhum ambiente Conda for especificado, um ambiente padrão baseado na variação do modelo será construído. Depois disso, o ambiente Conda é armazenado em conda.yaml.
Para mais informações, você pode conferir o site oficial documentação.
4. Registro de modelo MLflow
Um registro de modelo é um repositório para modelos de aprendizado de máquina (ML) aprendidos. O Model Registry é composto por APIs e um aplicativo baseado na web que é usado para manter modelos em várias fases em equipe. Model Lineage, Model Versioning, Easy Stage Transition e Annotation são apenas alguns dos recursos disponíveis no Model Registry.
Um registro de modelo, além dos próprios modelos, contém informações (metadados) sobre os dados e as tarefas de treinamento usadas para construir o modelo. É fundamental acompanhar essas entradas necessárias para criar linhagem para modelos de ML. Nesse sentido, um registro de modelo funciona de maneira semelhante aos softwares convencionais controle de versão sistemas (por exemplo, Git, SVN) e repositórios de artefatos (por exemplo, Artifactory, PyPI).
O Model Registry é uma estrutura que permite que cientistas de dados e engenheiros de aprendizado de máquina publiquem, testem, monitorem, gerenciem e distribuam seus modelos para cooperação com outras equipes. Essencialmente, o registro de modelo é empregado quando você conclui sua fase de teste e está pronto para compartilhar suas descobertas com a equipe e as partes interessadas.
O MLflow Model Registry fornece uma API e uma interface de usuário para gerenciar seus modelos e sua vida útil a partir de um local central. Linhagem de modelo, versão de modelo, anotações e transições de estágio estão disponíveis por meio do registro.
No MLflow, um modelo registrado é aquele com um nome e metadados exclusivos, versões de modelo, fases de transição e uma linhagem de modelo. Uma ou mais versões de modelo podem ser encontradas em um modelo registrado. Um novo modelo é considerado versão 1 quando registrado no registro. A versão a seguir é adicionada a qualquer novo modelo com o mesmo nome.
Você pode atribuir uma etapa a qualquer versão do modelo a qualquer momento. No entanto, os estágios devem ser atribuídos nas fases do MLflow que foram formalmente especificadas, como preparação, produção e arquivamento. Uma versão de modelo pode ser transferida de um estágio para outro.
O MLflow permite que você use markdown para anotar o modelo de nível superior e cada versão específica. Você pode incluir descrições, bem como outras informações pertinentes, como explicações de algoritmos, metodologia e conjuntos de dados usados.
Características principais
- Para acessar o registro do modelo por meio da interface do usuário ou da API ao hospedar seu próprio servidor MLflow, você deve usar um armazenamento de back-end com suporte de banco de dados.
- O registro de modelo também pode ser acessado por meio do tipo de modelo MLflow ou da interface da API de rastreamento de cliente MLflow. Você pode, por exemplo, registrar um modelo durante a execução de um experimento de MLflow ou após todas as execuções de seu experimento.
- Nem todos começarão a treinar seus modelos usando o MLflow. Como resultado, você pode ter alguns modelos treinados antes de usar o MLflow. Em vez de treinar novamente os modelos, você deseja apenas registrar seus modelos armazenados no Registro de Modelos.
Para mais informações, você pode conferir o site oficial documentação.
Conclusão
O MLflow é uma ferramenta de ciclo de vida de ML excelente e em constante crescimento. Você pode empregá-lo junto com suas ferramentas e plataformas atuais.
Ele suporta várias linguagens de programação, incluindo Python, Java e R. Você também pode rastrear, salvar e comparar rapidamente diferentes versões de modelos graças ao seu design amigável.
Experimente o MLflow e conte-nos sua experiência!
Deixe um comentário