View on GitHub

manual-da-engenharia-para-codar

Este é o manual para compromissos de "código com" a engenharia.

Experimentação de Modelos

Visão Geral

A experimentação de modelos de aprendizado de máquina envolve incerteza em torno dos resultados esperados do modelo e futura operacionalização. Para lidar com essa incerteza o máximo possível, propomos um processo semi-estruturado, equilibrando as melhores práticas de engenharia/pesquisa e exploração rápida de modelo/dados.

Objetivos da experimentação de modelos

Desafios da experimentação de modelos

Criar um framework de experimentação que facilite a experimentação rápida, colaboração, reprodutibilidade dos experimentos e modelos, avaliação e APIs definidas, e permita que cada membro da equipe se concentre no desenvolvimento e aprimoramento do modelo, enquanto confia no framework para fazer o resto.

As seguintes ferramentas e diretrizes têm como objetivo alcançar os objetivos da experimentação, bem como abordar os desafios mencionados anteriormente.

Ferramentas e diretrizes para experimentação de modelos bem-sucedida

Ambientes virtuais

Em linguagens como Python e R, é sempre aconselhável usar ambientes virtuais. Ambientes virtuais facilitam a reprodutibilidade, colaboração e productização. Ambientes virtuais nos permitem ser consistentes em nossos ambientes locais de desenvolvimento, assim como com os recursos de computação. Os arquivos de configuração desses ambientes podem ser usados para construir o código a partir da fonte de uma maneira consistente. Para obter mais detalhes sobre por que precisamos de ambientes virtuais, visite este post no blog.

Qual framework de ambiente virtual devo escolher

Todos os frameworks de ambiente virtual criam isolamento, alguns também propõem gerenciamento de dependências e recursos adicionais. A decisão sobre qual framework usar depende da complexidade do ambiente de desenvolvimento (dependências e outros recursos necessários) e da facilidade de uso do framework.

Tipos de ambientes virtuais

Na ISE, frequentemente escolhemos entre venv, Conda ou Poetry, dependendo dos requisitos e complexidade do projeto.

Resultados esperados para a configuração de ambientes virtuais

  1. Documentação descrevendo como criar o ambiente virtual selecionado e como instalar as dependências.
  2. Arquivos de configuração do ambiente, se aplicável (por exemplo, requirements.txt para venv, environment.yml para Conda ou pyrpoject.toml para Poetry).

Benefícios de ambientes virtuais

Controle de código-fonte e estr

utura de pastas ou pacotes

Projetos de ML aplicado frequentemente contêm código-fonte, notebooks, scripts de DevOps, documentação, recursos científicos, conjuntos de dados e muito mais. Recomendamos criar uma estrutura de pastas acordada para manter os recursos organizados. Considere decidir sobre uma estrutura de pastas genérica para projetos (por exemplo, que contenha as pastas data, src, docs e notebooks), ou adote estruturas populares como a estrutura de pastas CookieCutter Data Science.

Controle de código-fonte deve ser aplicado para permitir colaboração, versionamento, revisões de código, rastreabilidade e backup. Em projetos de ciência de dados, o controle de código-fonte deve ser usado para código, e o armazenamento e versionamento de outros artefatos (por exemplo, dados, literatura científica) deve ser decidido dependendo do cenário.

Resultados da estrutura de pastas e controle de código-fonte

Benefícios de controle de código-fonte e estrutura de pastas

Rastreamento de experimentos

Ferramentas de rastreamento de experimentos permitem que cientistas de dados e pesquisadores acompanhem experimentos anteriores para uma melhor compreensão do processo de experimentação e para a reproducibilidade de experimentos ou modelos.

Tipos de frameworks de rastreamento de experimentos

Frameworks de rastreamento de experimentos diferem pelo conjunto de recursos que oferecem para coletar metadados de experimentos e comparar e analisar experimentos. Na ISE, principalmente usamos MLFlow no Databricks ou Azure ML Experimentation. Observe que alguns frameworks de rastreamento de experimentos exigem uma implantação, enquanto outros são SaaS.

Resultados do rastreamento de experimentos

  1. Decida sobre um framework de rastreamento de experimentos.
  2. Garanta que ele seja acessível a todos os usuários.
  3. Documente a configuração em ambientes locais.
  4. Defina conjuntos de dados e avaliações de uma maneira que permita a comparação de todos os experimentos. A consistência nos conjuntos de dados e avaliação é fundamental para a comparação de experimentos.
  5. Garanta a plena reprodutibilidade, assegurando que todos os detalhes necessários sejam rastreados (ou seja, nomes e versões de conjuntos de dados, parâmetros, código, ambiente).

Benefícios do rastreamento de experimentos

Abstrações de conjuntos de dados e modelos

Ao criar abstrações para blocos de construção (por exemplo, conjuntos de dados, modelos, avaliadores), permitimos a fácil introdução de novas lógicas na tubulação de experimentação, mantendo intacta a tubulação de experimentação acordada.

Essas abstrações podem ser criadas usando diferentes mecanismos. Por exemplo, podemos usar soluções de Programação Orientada a Objetos (OOP) como classes abstratas:

/beginner/data_loading_tutorial.html#dataset-class).

Resultados de abstração

  1. Diferentes blocos de construção têm APIs definidas que permitem substituí-los ou estendê-los.
  2. A substituição dos blocos de construção não quebra o fluxo original de experimentação.
  3. Blocos de construção simulados são usados para testes unitários.
  4. APIs/mocks são compartilhados com as equipes de engenharia para integração com outros módulos.

Benefícios de abstrações

Avaliação de modelos

Ao decidir sobre a avaliação do modelo de ML/processo, considere a seguinte lista de verificação:

Resultados do processo de desenvolvimento de avaliação

  1. A estratégia de avaliação é acordada por todas as partes interessadas.
  2. Pesquisa e discussão sobre vários métodos e métricas de avaliação são documentados.
  3. O código que contém a lógica e as estruturas de dados para avaliação é revisado e testado.
  4. A documentação sobre como aplicar a avaliação é revisada.
  5. As métricas de desempenho são rastreadas automaticamente no rastreador de experimentos.

Benefícios do processo de desenvolvimento de avaliação