Integração contínua (CI)
Melhore os fluxos de trabalho de IA/ML com a Integração Contínua. Automatize os testes, melhore a qualidade do código e simplifique o desenvolvimento de modelos sem esforço.
A Integração Contínua (IC) é uma prática de desenvolvimento de software em que os programadores fundem frequentemente as suas alterações de código num repositório central, após o que são executadas compilações e testes automatizados. O principal objetivo da IC é detetar precocemente problemas de integração, melhorar a qualidade do código e simplificar o fluxo de trabalho de desenvolvimento. No contexto da Inteligência Artificial (IA) e da Aprendizagem Automática (AM), a IC vai além das tradicionais verificações de código para incluir a validação de dados, modelos e desempenho geral do pipeline, formando um componente crítico das Operações de Aprendizagem Automática (MLOps).
Princípios fundamentais da integração contínua
O processo de IC é construído sobre uma base de automação e iteração frequente. Os programadores enviam pequenas e frequentes alterações para um repositório partilhado utilizando um sistema de controlo de versões como o Git. Cada envio acciona um fluxo de trabalho automatizado, ou pipeline, que executa vários passos importantes:
- Compilação automatizada: O sistema compila automaticamente o código para garantir que ele se integre corretamente. Para projetos de ML, isso pode envolver a configuração do ambiente usando ferramentas de conteinerização como o Docker.
- Testes automatizados: Um conjunto de testes é executado para validar as novas alterações. Isto inclui testes unitários para lógica de código, testes de integração para interações de componentes e testes especializados para ML, tais como validação de dados e avaliação de modelos.
- Ciclo de feedback rápido: Se algum passo do pipeline falhar, a equipa de desenvolvimento é imediatamente notificada. Isto permite-lhes resolver os problemas rapidamente antes de se tornarem mais complexos e integrados na base de código principal.
CI para aprendizagem automática (CI4ML)
A aplicação da CI a projectos de aprendizagem automática apresenta desafios únicos. Além do código, os sistemas de ML envolvem dados e modelos treinados, que também devem ser versionados e validados. Um pipeline de CI eficaz para um projeto de ML, como um que envolva um modelo YOLO da Ultralytics, inclui passos adicionais:
- Validação de dados: Verificação automática de novos dados quanto à correção, adesão ao esquema e potencial enviesamento do conjunto de dados. Para isso, podem ser utilizadas ferramentas como Great Expectations.
- Teste de modelos: Execução de testes para verificar a degradação do desempenho. Isso envolve a comparação das métricas de desempenho do novo modelo com uma versão de base em um conjunto de dados de validação padronizado.
- Validação do pipeline de formação: Garantir que o próprio processo de treinamento do modelo seja reproduzível e eficiente. Isso pode ser gerenciado usando plataformas como o Ultralytics HUB, que simplifica o gerenciamento de conjuntos de dados e fluxos de trabalho de treinamento.
Aplicações no mundo real
- Desenvolvimento de condução autónoma: Uma equipa que trabalha num modelo de deteção de objectos para veículos autónomos utiliza um pipeline de CI. Quando um desenvolvedor envia um código para melhorar a capacidade do modelo de detetar pedestres à noite, o pipeline é acionado automaticamente. Ele executa testes de unidade, treina novamente uma versão leve do modelo YOLO11 em um conjunto de dados de teste e avalia seu mAP. Se a precisão não cair e todos os testes forem aprovados, a alteração é aprovada para fusão. As ferramentas populares de CI, como o GitHub Actions ou o Jenkins, são normalmente utilizadas para automatizar estes fluxos de trabalho.
- Análise de imagens médicas: Num sistema concebido para a deteção de tumores em imagens médicas, um cientista de dados pode adicionar novos dados aumentados para melhorar a robustez. O pipeline de CI valida o novo formato e distribuição de dados. Em seguida, ele aciona uma execução de validação usando um modelo pré-treinado para garantir que as previsões do modelo em um "conjunto de dados de ouro" permaneçam consistentes, evitando um comportamento inesperado na produção. Este processo ajuda a manter elevados padrões de fiabilidade, cruciais para a IA nos cuidados de saúde.
Integração contínua Vs. Entrega/implantação contínua (CD)
Embora intimamente relacionada, a IC é diferente da Entrega Contínua e da Implantação Contínua (CD).
- Integração contínua (CI): Centra-se na integração frequente e nos testes automatizados das alterações ao código. O resultado é uma construção validada pronta para a próxima etapa. O Ultralytics utiliza a CI para testar todos os pedidos de pull antes de os fundir.
- Entrega Contínua (CD): Amplia a CI preparando automaticamente todas as alterações validadas para serem lançadas num ambiente de preparação ou produção. No entanto, a implantação do modelo final na produção requer aprovação manual. Esta abordagem é detalhada em guias de fontes como a Atlassian.
- Implantação contínua (CD): Vai um passo mais além, implementando automaticamente todas as alterações validadas diretamente na produção sem qualquer intervenção humana. Isto representa o nível mais elevado de automatização no ciclo de vida do lançamento de software.
Juntas, as práticas de CI e CD são fundamentais para uma estratégia robusta de MLOps, que visa unificar o desenvolvimento e a operação de sistemas de aprendizagem automática, desde a experimentação inicial até à implementação e monitorização contínua de modelos.