Registro de Modelos
Registro de Modelos
Um registro de modelos é um sistema de registro oficial para artefatos de modelos de ML/LLM e seu ciclo de vida de lançamento. Ele fica entre a experimentação e a implantação em produção, oferecendo promoção, reversão (rollback), linhagem e governança para lançamentos de modelos.
Na prática, um registro responde a perguntas como:
- Qual versão do modelo está atualmente atendendo tráfego?
- Quais dados/código/config produziram essa versão, e quem a aprovou?
- Podemos promover com segurança um candidato para produção?
- Se a qualidade regredir, como fazemos reversão rapidamente e de forma auditável?
Um registro de modelos está intimamente relacionado (mas é distinto de) Rastreamento de Experimentos, Versionamento (Dados, Código, Modelos), CI/CD para Modelos, Servimento de Modelos e Monitoramento.
O que um Registro de Modelos Armazena (e o que ele não Armazena)
Um registro normalmente armazena referências e metadados, em vez do processo completo de treinamento:
- Artefatos de modelo
- Binários de modelos serializados (por exemplo,
model.pkl,model.pt,model.onnx) - Arquivos de tokenizador/vocabulário para NLP/LLMs
- Código de pré/pós-processamento ou grafo de inferência empacotado
- Binários de modelos serializados (por exemplo,
- Metadados versionados
- Métricas (avaliação offline, verificações de robustez)
- Informações de ambiente (versão do Python, CUDA, lockfile de dependências)
- Documentação no estilo “model card”: uso pretendido, limitações, riscos
- Estado do ciclo de vida de lançamento
- Candidato → Staging → Produção (ou similar)
- Aprovações e trilha de auditoria
- Linhagem/proveniência
- Qual commit de código, snapshot de dataset e definições de features produziram esse artefato
- Links para execuções upstream em Treinamento Reprodutível (Configs, Artefatos)
O que um registro geralmente não faz por si só:
- Executar jobs de treinamento (isso é da sua plataforma de orquestração/treinamento)
- Substituir o armazenamento de artefatos (ele pode integrar com S3/GCS/Blob etc.)
- Implantar modelos automaticamente (ele aciona ou coordena com ferramentas de deployment)
Conceitos Centrais
Identidade do modelo: “nome” vs “versão”
A maioria dos registros separa:
- Nome do modelo: um conceito lógico de produto (por exemplo,
fraud-detector,product-ranker) - Versão do modelo: um snapshot imutável (por exemplo,
fraud-detector:v17)
Uma prática recomendada comum é:
- Tratar cada versão como imutável (sem sobrescrita).
- Usar aliases ou estágios (por exemplo,
production) como o ponteiro mutável para “o que está no ar”.
Isso dá suporte a rollouts seguros e reversão fácil.
Imutabilidade e endereçamento por conteúdo
Uma entrada do registro é mais forte quando está ancorada em identificadores imutáveis, como:
- Hash do artefato (por exemplo, SHA-256 do arquivo do modelo)
- Digest de imagem de contêiner (não apenas uma tag como
latest) - ID de snapshot/versão do dataset
- SHA de commit do Git para o código de treinamento
A imutabilidade torna reversões e auditorias confiáveis: você consegue provar que reimplantou o exato artefato anterior.
Estágios, canais e ambientes
Registros normalmente modelam estados do ciclo de vida:
- Nenhum / Candidato: registrado a partir de uma execução de experimento
- Staging: aprovado para testes finais de integração, shadow/canary
- Produção: aprovado e atendendo atualmente
- Arquivado: retido para auditoria, mas não elegível para deployment
Algumas organizações preferem dimensões separadas:
- Estágio (nível de aprovação) e Ambiente (dev/staging/prod)
- Ou múltiplos “canais” (por exemplo,
prod-canary,prod-stable)
O essencial é refletir seu processo de release e necessidades de conformidade.
Promoção: de Candidato para Produção
Promoção é o ato controlado de mover uma versão do modelo para mais perto (ou para dentro) de produção.
Um fluxo robusto de promoção normalmente inclui gates (portões) como:
Registro
- Um pipeline de treinamento registra artefatos + métricas.
- Uma versão do modelo é criada no registro e vinculada à execução de treinamento (veja Rastreamento de Experimentos).
Gates de validação automatizada
- Verificações de esquema em entradas/saídas (veja Validação de Dados)
- Limiares de avaliação offline (acurácia, AUC, calibração, equidade)
- Testes de robustez (verificações OOD, testes adversariais ou de perturbação)
- Restrições de desempenho (metas de latência/memória; veja Custo/Desempenho)
Revisão humana (quando necessário)
- Aprovação do responsável de ML, revisor de risco/conformidade ou responsável de produto
- Aprovação da documentação (model card, limitações conhecidas)
Deploy em staging
- Shadow traffic, teste A/B ou rollout canary (veja Avaliação em Produção)
- Monitorar métricas de qualidade e segurança no mundo real (veja Monitoramento)
Promoção para produção
- Alias/estágio “produção” do registro é atualizado para a nova versão
- O sistema de deployment capta a mudança (frequentemente via CI/CD ou GitOps)
Exemplo prático: promoção baseada em estágio com MLflow
O Model Registry do MLflow é um design de referência comum. Um exemplo simplificado:
import mlflow
from mlflow.tracking import MlflowClient
client = MlflowClient()
# Register model artifact from a completed run
run_id = "9f2c...abc"
model_uri = f"runs:/{run_id}/model"
result = mlflow.register_model(model_uri=model_uri, name="fraud-detector")
model_name = result.name
model_version = result.version
# Add release metadata
client.set_model_version_tag(model_name, model_version, "data_snapshot", "features_v12_2026-01-01")
client.set_model_version_tag(model_name, model_version, "git_sha", "a1b2c3d4")
client.set_model_version_tag(model_name, model_version, "eval_auc", "0.941")
# Promote to staging after automated checks
client.transition_model_version_stage(
name=model_name,
version=model_version,
stage="Staging",
archive_existing_versions=False
)
# Later, after production readiness review:
client.transition_model_version_stage(
name=model_name,
version=model_version,
stage="Production",
archive_existing_versions=True
)
Detalhes operacionais importantes:
- Automatize as verificações antes da transição de estágio.
- Considere exigir aprovações para transições para
Production. - Prefira “atualizar alias/estágio” em vez de “reimplantar pelo número da versão” para padronizar o deployment.
Padrões de promoção
Estratégias comuns de promoção incluem:
- Promoção manual com evidências automatizadas: humanos aprovam, mas o pacote de evidências (testes/métricas/rastreabilidade) é gerado automaticamente.
- Promoção baseada em políticas: se todos os gates passarem e a categoria de risco for baixa, promove automaticamente; caso contrário, exige aprovação.
- Entrega progressiva: promove primeiro para um canal canary em produção e, depois, para stable quando as métricas online estiverem boas.
Essas estratégias geralmente são implementadas junto com CI/CD para Modelos e Servimento de Modelos.
Reversão (Rollback): Rápida, Segura e Auditável
Reversão não é apenas “implantar o modelo antigo”. Em um sistema maduro, reversão é:
- Rápida: segundos/minutos, não horas
- Segura: evita incompatibilidades de esquema ou divergências de features
- Auditável: registra quem/o quê acionou a reversão e por quê
A reversão mais simples: mover o ponteiro de produção
Se produção usa um alias/estágio como Production, a reversão pode ser:
- Atualizar
Productionpara apontar para a versão anterior conhecida como boa. - Acionar o redeploy/reload no serviço de serving.
Isso evita reconstruir contêineres ou reenviar artefatos.
Armadilhas na reversão
A reversão pode falhar (ou degradar silenciosamente) se dependências mudaram:
- Deriva de features: um pipeline de features mais novo introduziu uma feature que não existe no modelo antigo.
- Evolução de esquema: o modelo antigo espera uma coluna que não existe mais.
- Incompatibilidade de tokenizador: para NLP/LLMs, o código de serving usa a versão errada do tokenizador.
- Mudanças na lógica de negócio: o código de pré/pós-processamento mudou fora do artefato do modelo.
Um registro forte mitiga isso ao armazenar e impor pacotes de release:
- Artefato do modelo + pré/pós-processamento exato + esquema de features + definição de ambiente
- Links para versões em Versionamento (Dados, Código, Modelos)
Runbook de reversão (recomendado)
- Detectar regressão via monitoramento/alertas (veja Monitoramento).
- Congelar a promoção (bloquear novas transições para produção).
- Reverter alternando o alias/estágio de produção para o último conhecido como bom.
- Verificar com checagens online (latência, taxa de erro, métricas-chave de qualidade).
- Registrar metadados do incidente como tags/notas no registro (causa raiz, janela de tempo impactada).
- Postmortem e adicionar novos gates automatizados para evitar recorrência.
Linhagem: Reprodutibilidade e Rastreabilidade
Linhagem é a cadeia de entradas e processos que produziu uma versão do modelo. Para governança e depuração, você quer responder:
- Quais snapshots de dataset foram usados?
- Quais features e transformações?
- Qual código e hiperparâmetros?
- Qual ambiente de treinamento e dependências?
- Quem iniciou a execução e quem aprovou o release?
Por que linhagem importa
A linhagem dá suporte a:
- Reprodutibilidade: reconstruir o mesmo modelo (ou explicar por que não é possível)
- Auditoria/conformidade: provar quais dados foram usados e sob qual política
- Depuração: diagnosticar regressões até mudanças de dados, mudanças de features ou mudanças de código
- Análise de impacto: se um dataset for considerado corrompido ou não conforme, encontrar todos os modelos derivados
Isso se conecta naturalmente a Treinamento Reprodutível (Configs, Artefatos) e Flywheels de Dados.
Campos práticos de linhagem a capturar
Um conjunto mínimo viável para cada versão do modelo:
git_sha: commit do código de treinamentotraining_config_uri: config armazenada (YAML/JSON)data_version: ID(s) de snapshot do datasetfeature_schema_version: definições de featuresartifact_hash: checksum para integridademetrics: métricas-chave de avaliação offlineowner: time responsável/oncallrisk_tier: categoria de governança (por exemplo, baixo/médio/alto impacto)
Opcionalmente:
training_run_id: link de volta para rastreamento de experimentoscontainer_image_digest: imagens exatas de treinamento/servinglabeling_policy_version: para rótulos supervisionadospii_status: se dados sensíveis foram usados (e aprovações)
Governança: Políticas, Controles e Auditabilidade
Governança é onde um registro vai além de “catálogo de artefatos” e se torna “gestão de releases”.
Controle de acesso e segregação de funções
Controles típicos:
- Apenas contas de serviço de CI podem registrar/promover modelos.
- Apenas aprovadores designados podem transicionar para
Production. - Acesso somente leitura para auditores e stakeholders.
- Separação de ambientes (registros dev vs prod ou limites fortes de RBAC).
Isso ajuda a impedir que modelos não revisados cheguem à produção e dá suporte a regimes de conformidade (SOC 2, ISO 27001, HIPAA etc., dependendo do domínio).
Fluxos de aprovação e pacotes de evidências
Um registro pode armazenar (ou linkar para) a evidência exigida para release:
- Relatórios de avaliação (acurácia, robustez, equidade)
- Resultados de testes de segurança (especialmente para LLMs)
- Benchmarks de carga/desempenho
- Aprovações de uso de dados
- Documentação de model card
Muitas organizações implementam “promoção exige checks + aprovações”, em que as aprovações são registradas como eventos assinados com timestamps.
Políticas como código (recomendado)
Em vez de conhecimento tribal, codifique as regras de release:
- “Modelos de alto risco exigem duas aprovações”
- “Deve passar no teste de calibração e no limiar de equidade”
- “Deve ter um model card completo e link para o dashboard de monitoramento”
Essas regras vivem junto da sua configuração de CI/CD (veja CI/CD para Modelos).
Segurança e integridade
Registros de modelos fazem parte da sua cadeia de suprimentos. Boas práticas incluem:
- Armazenar artefatos em buckets privados com IAM de menor privilégio.
- Usar checksums e, opcionalmente, assinaturas para detectar adulteração.
- Proibir tags mutáveis como
latestem deployments de produção; usar digests/versões. - Logs de auditoria para todas as transições e downloads.
Como o Registro de Modelos se Integra ao Resto do MLOps
Com rastreamento de experimentos
Um pipeline comum é:
- Treinar → registrar execução → comparar experimentos → escolher o melhor → registrar → promover
Rastreamento de experimentos é otimizado para iteração; um registro é otimizado para release. Manter ambos evita sobrecarregar uma única ferramenta.
Veja Rastreamento de Experimentos.
Com CI/CD
Registros frequentemente atuam como o ponto de “handoff de artefatos”:
- Pipeline de CI executa testes e avaliação
- Se os gates passarem, o pipeline promove a versão para Staging/Produção
- Pipeline de deployment observa mudanças de estágio/alias no registro e implanta
Veja CI/CD para Modelos.
Com serving e gestão de tráfego
Sistemas de serving normalmente carregam:
- Uma versão específica do modelo (fixada)
- Ou um alias lógico como
production
Aliases tornam reversões e entrega progressiva muito mais simples. Veja Servimento de Modelos e Servimento de LLMs.
Com monitoramento e avaliação em produção
Um registro deve vincular versões implantadas a dashboards de monitoramento e jobs de avaliação online para que você consiga:
- Atribuir incidentes a versões específicas
- Comparar desempenho canary vs stable
- Automatizar gatilhos de reversão em regressões graves (com cautela)
Veja Monitoramento e Avaliação em Produção.
Considerações Específicas para LLM
Sistemas de LLM frequentemente exigem registrar mais do que “um arquivo de modelo”.
Registrando artefatos compostos
Para apps de LLM, o “release do modelo” pode incluir:
- Identificador do modelo base (por exemplo, um nome de modelo de fornecedor ou um checkpoint fine-tuned)
- Templates de prompt e versões de prompt (veja PromptOps)
- Definições de ferramentas / esquemas de função
- Configuração de retrieval (versão do modelo de embedding, snapshot do índice)
- Políticas de guardrails e classificadores de segurança
- Parâmetros de decodificação (temperature, top-p) e lógica de roteamento (veja Padrões de Design de Sistemas de LLM)
Um padrão prático é tratar o release como um bundle (às vezes chamado de “pacote de modelo”):
llm_app_release:v42→ contém ponteiros para:base_model=v3prompt_set=v19retriever=index_snapshot_2026-01-05policy_config=v7
Observabilidade e privacidade
Registros de LLM frequentemente linkam para artefatos de tracing e avaliação que podem conter prompts sensíveis. A governança deve garantir:
- Políticas de redação e retenção de logs
- Controles de acesso para traces e datasets
- Separação clara entre datasets de avaliação e logs de usuários em produção
Veja Observabilidade para Apps de LLM e Privacidade em Logs.
Abordagens de Implementação e Ferramentas
Capacidades comuns de ferramentas
Se você usa MLflow, SageMaker Model Registry, Vertex AI Model Registry, registros do Azure ML ou uma plataforma interna, procure por:
- Versionamento imutável de modelos
- Gestão de estágio/alias
- Metadados ricos (tags, descrições, anexos)
- RBAC e logging de auditoria
- API/SDK para automação
- Integração com armazenamento de artefatos e CI/CD
- Links de linhagem para dados/código/execuções
Um padrão de “registro” leve (quando você não precisa de um produto completo)
Times menores às vezes implementam um registro usando:
- Armazenamento de objetos (S3/GCS) para artefatos
- Git (ou um BD) para metadados e aprovações
- Um “manifesto de release” simples em YAML por versão
Exemplo de manifesto:
model_name: fraud-detector
version: 17
artifact_uri: s3://ml-artifacts/fraud-detector/17/model.onnx
artifact_sha256: "c7b2...9a0e"
git_sha: "a1b2c3d4"
data_version: "transactions_snapshot_2026-01-01"
metrics:
auc: 0.941
p95_latency_ms: 18
stage: staging
approvals:
- by: "ml-lead@company.com"
at: "2026-01-05T13:22:11Z"
notes: "Improves recall on small merchants; passed backtest + drift checks."
Isso pode funcionar bem no início, mas frequentemente você vai superar essa abordagem quando precisar de RBAC mais forte, trilhas de auditoria e suporte de UI.
Anti-Padrões e Modos de Falha
- Sobrescrever artefatos de modelo no lugar: quebra reprodutibilidade e reversão.
- Usar “latest” em produção: deixa incerto o que está implantado e complica a resposta a incidentes.
- Registrar sem linhagem: você não consegue depurar regressões nem responder a perguntas de auditoria.
- Promoção sem gates: você vai lançar modelos que “parecem bons offline”, mas falham online.
- Registro como depósito de descarte: milhares de versões sem ownership, documentação ou política de retenção.
Checklist de Boas Práticas
- Use versões imutáveis e aliases/estágios mutáveis para deployment.
- Armazene linhagem: SHA do código, snapshot de dados, config, ambiente, hashes de artefatos.
- Implemente gates automatizados de promoção (qualidade, robustez, desempenho).
- Exija aprovações para produção (especialmente para modelos de alto impacto).
- Faça a reversão ser uma operação única (voltar o alias) e pratique-a.
- Vincule entradas do registro a dashboards de monitoramento e registros de incidentes.
- Para apps de LLM, registre bundles de release (modelo + prompts + retrieval + políticas), não apenas pesos.
Um registro de modelos bem projetado transforma o deployment de modelos de um processo ad-hoc em uma disciplina de release engenheirada: você consegue promover com confiança, reverter rapidamente, rastrear linhagem de forma confiável e atender requisitos de governança sem desacelerar as equipes até parar.