Model Registry
Um registro de modelos é um catálogo versionado de modelos treinados e seus metadados, que registra qual versão foi aprovada e qual está em produção.
Um registro de modelos é um catálogo versionado de modelos de aprendizado de máquina treinados. Cada entrada armazena um artefato de modelo, como um arquivo de pesos do modelo, junto com os metadados necessários para confiar nele: a execução de treinamento que o produziu, a versão dos dados, métricas de avaliação como precisão média média (mAP), o esquema de entrada e saída, o responsável e o status de aprovação. Em vez de passar arquivos de pesos de um lado para outro, os pipelines de implantação e as aplicações solicitam ao registro uma versão nomeada ou a versão que atualmente tem o rótulo de produção. Assim, cada lançamento e reversão se refere a um modelo exato e registrado. Em operações de aprendizado de máquina (MLOps), o registro fica entre o rastreamento de experimentos e a implantação de modelos. Entre os registros amplamente usados estão o Model Registry do MLflow, o Amazon SageMaker Model Registry, o Vertex AI Model Registry e o Registry do Weights & Biases.
Como funciona um registo de modelos#
Um modelo registado tem um nome, como defect-detector, que contém uma sequência de versões. Cada versão é imutável depois de registada, pelo que os novos pesos passam sempre a ser uma nova versão e a versão 7 corresponde sempre aos mesmos bytes. Uma versão regista normalmente:
- Linhagem: O ID da execução, a confirmação do código, a versão do conjunto de dados e o modelo de origem que a produziram.
- Resultados da avaliação: Métricas de validação, bem como latência e memória medidas em cada dispositivo de destino.
- Assinatura: O esquema esperado de entrada e saída, para que uma chamada com uma forma incorreta falhe rapidamente.
- Cartão do modelo: Documentação da utilização prevista, dos dados de treino e das limitações conhecidas.
- Estado: Etiquetas e aliases que indicam o estado da versão.
A Ultralytics Platform mantém este tipo de registo para cada execução de treino YOLO que aloja: a página do modelo apresenta o modelo de origem, a versão fixada do conjunto de dados, a confirmação do Git, a versão ultralytics, os hiperparâmetros, as métricas finais e um comando yolo train reproduzível. Um campo de metadados personalizados aceita um objeto JSON para acompanhamento de lançamentos ou governação.
Os registos mais antigos faziam cada versão passar por etapas fixas, como Staging, Production e Archived. Na versão 2.9.0, o MLflow descontinuou as etapas em favor dos aliases, ponteiros nomeados e mutáveis como @champion, que uma equipa move entre versões. O Amazon SageMaker acompanha, em cada versão, um estado de aprovação: PendingManualApproval, Approved ou Rejected. Promover um modelo significa mover o respetivo alias, e reverter significa mover o alias para trás:
Os registos também controlam quem pode alterar o quê. Os cientistas de dados podem registar versões, os revisores designados movem o alias de produção e cada alteração fica registada num registo de auditoria. As equipas costumam ligar estes eventos à automatização: a aprovação de uma versão inicia o pipeline de implementação, e um alerta de monitorização de modelos sobre deriva de dados inicia o retreino que regista o candidato seguinte.
O registo do MLflow ilustra o padrão em poucas linhas. Este script treina um pequeno classificador scikit-learn, regista-o, aponta o alias champion para a nova versão e carrega o modelo através do alias, tal como o código de serviço de modelos encontra o modelo de produção atual:
import mlflow
from mlflow import MlflowClient
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
# Keep runs and registered model versions in a local SQLite file
mlflow.set_tracking_uri("sqlite:///mlflow.db")
X, y = load_iris(return_X_y=True)
# Log a trained model inside a run, then register it as a new version
with mlflow.start_run():
model = LogisticRegression(max_iter=200).fit(X, y)
info = mlflow.sklearn.log_model(model, name="model")
version = mlflow.register_model(info.model_uri, "iris-classifier")
# Point the "champion" alias at this version; applications load the alias
MlflowClient().set_registered_model_alias("iris-classifier", "champion", version.version)
champion = mlflow.pyfunc.load_model("models:/iris-classifier@champion")
print(f"version {version.version}:", champion.predict(X[:3]))Numa base de dados nova, o script imprime version 1: [0 0 0], a versão registada e as classes previstas para as três primeiras flores. Se o executares novamente, será registada a versão 2, e o mesmo URI models:/iris-classifier@champion seguirá o alias até essa versão, sem alterações ao código de carregamento.
Registo de modelos e ferramentas relacionadas#
- Acompanhamento de experiências: Regista todas as execuções de treino, incluindo as muitas que nunca são usadas. O registo de modelos mantém os poucos candidatos que vale a pena implementar e liga cada versão à respetiva execução.
- Armazenamento de objetos: Os contentores, como o Amazon S3, guardam os ficheiros. Um registo acrescenta versões, metadados e controlo de acesso, e muitas vezes armazena apenas um ponteiro para o ficheiro no contentor.
- Armazenamento de características: Versiona e serve as características de entrada consumidas pelos modelos; os próprios modelos ficam no registo.
- Registo de contentores: Armazena as imagens Docker que executam os modelos, pelo que uma implementação costuma especificar uma etiqueta de imagem e uma versão do modelo.
- Hugging Face Hub: Aloja modelos públicos e privados em repositórios Git com histórico de confirmações e um cartão do modelo na página inicial de cada repositório, funcionando assim como um registo de modelos com pesos abertos.










