Repositórios e desenvolvimento baseado em troncos

Concluído

Muitos cientistas de dados preferem trabalhar com Python ou R para definir cargas de trabalho de machine learning. Você pode ter scripts ou notebooks Jupyter para preparar dados ou treinar um modelo.

Trabalhar com qualquer ativo de código fica mais fácil quando você usa o controle do código-fonte. Controle do código-fonte é a prática de gerenciar o código e controlar todas as alterações que sua equipe faz nele.

Se você trabalha com ferramentas de DevOps como o Azure DevOps ou o GitHub, o código é armazenado em um chamado repositório, ou repo.

Repositório

Ao configurar a estrutura de MLOps, é provável que um engenheiro de machine learning crie o repositório. Quer você opte por usar o Azure Repos em repositórios do Azure DevOps ou do GitHub, ambos usam repositórios Git para armazenar o código.

Geralmente, há duas maneiras de definir o escopo do repositório:

  • Repositório individual: mantenha todas as cargas de trabalho de machine learning no mesmo repositório.
  • Vários repositórios: crie um repositório separado para cada novo projeto de machine learning.

A abordagem que sua equipe prefere depende de quem precisa ter acesso a quais ativos. Se você quiser garantir acesso rápido a todos os ativos de código, os repositórios individuais poderão atender melhor aos requisitos de sua equipe. Se você quiser dar às pessoas acesso a um projeto apenas se elas estiverem trabalhando ativamente nele, sua equipe poderá preferir trabalhar com vários repositórios. Tenha em mente que gerenciar o controle de acesso pode criar mais sobrecarga.

Estruturar o repositório

Seja qual for a abordagem adotada, é uma melhor prática chegar a um acordo quanto à estrutura padrão de pastas de nível superior para seus projetos. Por exemplo, você pode ter as seguintes pastas em todos os seus repositórios:

  • .cloud: contém códigos específicos da nuvem, como modelos para criar um workspace do Azure Machine Learning.
  • .ad/.github: contém artefatos do Azure DevOps ou do GitHub, como pipelines de YAML para automatizar fluxos de trabalho.
  • src: contém qualquer código (scripts de Python ou R) usado para cargas de trabalho de machine learning, como dados de pré-processamento ou treinamento de modelo.
  • docs: contém os arquivos Markdown ou outra documentação usada para descrever o projeto.
  • pipelines: contém as definições de pipelines do Azure Machine Learning.
  • tests: contém testes de unidade e integração usados para detectar bugs e problemas no código.
  • notebooks: contém notebooks Jupyter, usados principalmente para experimentação.

Observação

Os dados de treinamento não devem ser incluídos no repositório. Eles devem ser armazenados em um banco de dados ou data lake. O Azure Machine Learning pode ter acesso direto a um banco de dados ou data lake armazenando as informações de conexão como um armazenamento de dados.

Adotando uma estrutura padrão que todo projeto usa, cientistas de dados e outros colaboradores acharão mais fácil encontrar o código em que precisam trabalhar.

Para saber como trabalhar com repositórios como cientista de dados, você aprenderá sobre o desenvolvimento baseado em troncos.

Desenvolvimento baseado em tronco

A maioria dos projetos de desenvolvimento de software usa o Git como sistema de controle do código-fonte, que é usado pelo Azure DevOps e pelo GitHub.

O principal benefício de usar o Git é a facilidade de colaborar no código enquanto o controle das alterações feitas também é mantido. Além disso, você pode adicionar portões de aprovação para garantir que somente alterações que foram revisadas e aceitas sejam feitas no código de produção.

Para fazer isso, o Git usa o desenvolvimento baseado em troncos, que permite que você crie ramificações.

O código de produção fica hospedado na ramificação principal. Sempre que alguém quiser fazer uma alteração:

  1. Você cria uma cópia completa do código em produção criando uma ramificação.
  2. Na ramificação criada, faça as alterações e teste-as.
  3. Quando as alterações na ramificação estiverem prontas, você poderá solicitar que alguém as revise.
  4. Se elas forem aprovadas, você mesclará a ramificação criada com o repositório principal, e o código de produção será atualizado refletindo as alterações.

Diagrama do fluxo de trabalho de desenvolvimento baseado em tronco.