O ModelSync foi projetado como um sistema de versionamento distribuído focado em projetos de IA, inspirado no Git mas otimizado para o ecossistema de machine learning.
modelsync/
├── __init__.py # Inicialização do pacote
├── config.py # Configurações globais
├── cli/ # Interface de linha de comando
│ └── main.py # CLI principal com Typer
├── core/ # Funcionalidades principais
│ ├── __init__.py
│ └── versioning.py # Sistema de versionamento
├── api/ # API REST
│ └── main.py # FastAPI application
├── metadata/ # Gerenciamento de metadados
│ ├── __init__.py
│ └── model_metadata.py # Metadados de modelos e datasets
└── utils/ # Utilitários
├── __init__.py
├── helpers.py # Funções auxiliares
└── logger.py # Sistema de logging
Classe Principal: ModelSyncRepo
Funcionalidades:
- Inicialização de repositórios
- Sistema de staging (área de preparação)
- Criação de commits com hash SHA-256
- Rastreamento de arquivos modificados
- Histórico de commits
- Estrutura de diretórios similar ao Git
Estrutura de Dados:
{
"tree": "hash_do_tree_object",
"parent": "hash_do_commit_pai",
"author": {
"name": "Nome do Autor",
"email": "email@exemplo.com",
"timestamp": "2024-01-01T12:00:00"
},
"committer": {
"name": "Nome do Committer",
"email": "email@exemplo.com",
"timestamp": "2024-01-01T12:00:00"
},
"message": "Mensagem do commit",
"hash": "hash_sha256_do_commit"
}Tecnologia: Typer
Comandos Implementados:
init- Inicializar repositórioadd- Adicionar arquivos ao stagingcommit- Criar commitstatus- Mostrar status do repositóriolog- Mostrar histórico de commitsdiff- Mostrar diferençasrestore- Restaurar arquivo (placeholder)reset- Remover do staging (placeholder)branch- Gerenciar branches (placeholder)checkout- Trocar branch (placeholder)merge- Fazer merge (placeholder)remote- Gerenciar repositórios remotos (placeholder)push- Enviar para remoto (placeholder)pull- Baixar do remoto (placeholder)clone- Clonar repositório (placeholder)
Tecnologia: FastAPI
Endpoints Implementados:
GET /- Informações da APIGET /health- Health checkPOST /init- Inicializar repositórioGET /status- Status do repositórioPOST /add- Adicionar arquivosPOST /commit- Criar commitGET /log- Histórico de commitsGET /branches- Listar branches (placeholder)GET /diff- Diferenças de arquivosGET /config- Configuração (placeholder)
Classes:
ModelMetadata- Metadados de modelos MLDatasetMetadata- Metadados de datasets
Funcionalidades:
- Criação de metadados para modelos e datasets
- Armazenamento de métricas de performance
- Rastreamento de hiperparâmetros
- Informações de treinamento
- Versionamento de metadados
helpers.py:
- Cálculo de hash SHA-256
- Manipulação de arquivos
- Formatação de dados
- Operações de diretório
logger.py:
- Sistema de logging configurável
- Suporte a console e arquivo
- Diferentes níveis de log
projeto/
├── .modelsync/ # Diretório do ModelSync
│ ├── config # Configuração do repositório
│ ├── HEAD # Referência para branch atual
│ ├── index # Área de staging
│ ├── objects/ # Objetos do repositório
│ │ └── [hash]/[hash] # Commits e trees
│ ├── refs/ # Referências
│ │ └── heads/ # Branches locais
│ ├── metadata/ # Metadados
│ │ ├── models/ # Metadados de modelos
│ │ └── datasets/ # Metadados de datasets
│ └── logs/ # Logs do sistema
│ └── history.log # Histórico de ações
└── [arquivos do projeto] # Arquivos versionados
modelsync init --name "Usuário" --email "user@example.com"modelsync add arquivo1.py arquivo2.jsonmodelsync commit -m "Mensagem do commit"modelsync statusmodelsync log
modelsync log --onelineFramework: pytest
Cobertura:
- Inicialização de repositório
- Adição de arquivos
- Criação de commits
- Verificação de status
- Histórico de commits
Executar Testes:
python run_tests.pyDockerfile:
- Base: Python 3.10-slim
- Usuário não-root
- Porta 8000 exposta
- Otimizado para produção
Docker Compose:
- Serviço de API
- Serviço de CLI
- Volumes persistentes
# Setup inicial
python scripts/dev_setup.py
# Iniciar API
python scripts/start_api.py
# Usar CLI
python modelsync/cli/main.py --help# Build da imagem
docker build -t modelsync .
# Executar API
docker run -p 8000:8000 modelsync python modelsync/api/main.py
# Executar CLI
docker run -v $(pwd):/workspace modelsync python modelsync/cli/main.py init- Sistema de branching completo
- Merge de branches
- Repositórios remotos
- Push/Pull
- Clone de repositórios
- Sistema de tags
- Interface web
- Integração com MLflow
- Suporte a DVC
- Backup automático
- Otimização de performance
- Compressão de objetos
- Cache inteligente
- Paralelização de operações
- Interface gráfica
- Plugins para IDEs
- Integração com CI/CD
- Logs estruturados em JSON
- Métricas de performance
- Rastreamento de operações
- Health checks da API
- Monitoramento de uso de disco
- Validação de entrada
- Sanitização de paths
- Controle de acesso (futuro)
- Criptografia de metadados (futuro)
- Auditoria de operações