Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Rastreamento de versões e
O controle de versão do MLflow permite que você crie representações versionadas de seus aplicativos GenAI. O controle de versão oferece os seguintes benefícios:
- Reprodutibilidade e auditabilidade. Cada aplicativo ou versão do modelo vincula-se ao seu código específico, como o hash de confirmação do Git, e sua configuração.
- Ajuda na depuração. Compare código, configurações, resultados de avaliação e rastreamentos entre versões do modelo.
- Avaliação sistemática. Use
mlflow.genai.evaluate()para comparar métricas como índices de qualidade, custo e latência lado a lado.
Para criar uma versão de aplicativo ou modelo, use um LoggedModel. No MLflow, a LoggedModel representa uma versão específica do seu aplicativo GenAI. Cada estado distinto do seu aplicativo que você deseja avaliar, implantar ou remeter pode ser capturado como um novo LoggedModel.
Esta página é uma introdução ao rastreamento de versão do MLflow. Para obter um tutorial passo a passo, consulte Controlar versões de aplicativos baseados em Git com MLflow.
Métodos para controle de versão
O MLflow fornece dois métodos para o controle de versão:
-
mlflow.set_active_model(): Rastreamento de versão simples. Cria automaticamente umLoggedModelse necessário e vincula rastreamentos subsequentes. -
mlflow.create_external_model(): Controle total sobre a criação da versão. Você pode fornecer metadados, parâmetros e tags extensos.
set_active_model
Vincula rastreamentos a uma versão específica LoggedModel . Se um modelo com o nome próprio não existir, ele criará automaticamente um.
def set_active_model(
name: Optional[str] = None,
model_id: Optional[str] = None
) -> ActiveModel:
Parâmetros
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name |
str \| None |
Não* | Nome do modelo. Se o modelo não existir, cria um novo |
model_id |
str \| None |
Não* | ID de um LoggedModel existente |
*Ou name ou model_id deve ser fornecido.
Valor de retorno
Retorna um objeto ActiveModel (subclasse de LoggedModel) que pode ser usado como um gestor de contexto.
Exemplo de Utilização
import mlflow
# Simple usage - creates model if it doesn't exist
mlflow.set_active_model(name="my-agent-v1.0")
# Use as context manager
with mlflow.set_active_model(name="my-agent-v2.0") as model:
print(f"Model ID: {model.model_id}")
# Traces within this context are linked to this model
# Use with existing model ID
mlflow.set_active_model(model_id="existing-model-id")
create_external_model
Cria um novo LoggedModel para aplicativos cujo código e artefatos são armazenados fora do MLflow (por exemplo, no Git).
def create_external_model(
name: Optional[str] = None,
source_run_id: Optional[str] = None,
tags: Optional[dict[str, str]] = None,
params: Optional[dict[str, str]] = None,
model_type: Optional[str] = None,
experiment_id: Optional[str] = None,
) -> LoggedModel:
Parâmetros
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name |
str \| None |
Não | Nome do modelo. Se não for especificado, um nome aleatório será gerado |
source_run_id |
str \| None |
Não | ID da execução associada. O padrão é o ID de execução ativo se estiver dentro de um contexto de execução |
tags |
dict[str, str] \| None |
Não | Pares chave-valor para organização e filtragem |
params |
dict[str, str] \| None |
Não | Parâmetros e configuração do modelo (devem ser strings) |
model_type |
str \| None |
Não | Tipo definido por utilizador para categorização (por exemplo, "agente", "sistema rag") |
experiment_id |
str \| None |
Não | Experiência para associar. Usa experimento ativo se não especificado |
Valor de retorno
Retorna um objeto LoggedModel com:
-
model_id: Identificador único do modelo -
name: O nome do modelo atribuído -
experiment_id: ID do experimento associado -
creation_timestamp: Quando o modelo foi criado -
status: Estado do modelo (sempre "PRONTO" para modelos externos) -
tags: Dicionário de tags -
params: Dicionário de parâmetros
Exemplo de Utilização
import mlflow
# Basic usage
model = mlflow.create_external_model(
name="customer-support-agent-v1.0"
)
# With full metadata
model = mlflow.create_external_model(
name="recommendation-engine-v2.1",
model_type="rag-agent",
params={
"llm_model": "gpt-4",
"temperature": "0.7",
"max_tokens": "1000",
"retrieval_k": "5"
},
tags={
"team": "ml-platform",
"environment": "staging",
"git_commit": "abc123def"
}
)
# Within a run context
with mlflow.start_run() as run:
model = mlflow.create_external_model(
name="my-agent-v3.0",
source_run_id=run.info.run_id
)
Classe LoggedModel
A LoggedModel classe representa um modelo versionado no MLflow.
Propriedades
| Propriedade | Tipo | Descrição |
|---|---|---|
model_id |
str |
Identificador exclusivo do modelo |
name |
str |
Nome do modelo |
experiment_id |
str |
ID do experimento associado |
creation_timestamp |
int |
Tempo de criação (milissegundos desde o início da era) |
last_updated_timestamp |
int |
Tempo da última atualização (milissegundos desde a época) |
model_type |
str \| None |
Tipo de modelo definido pelo usuário |
source_run_id |
str \| None |
ID da execução que criou este modelo |
status |
LoggedModelStatus |
Estado do modelo (READY, FAILED_REGISTRATION, etc.) |
tags |
dict[str, str] |
Dicionário de tags |
params |
dict[str, str] |
Dicionário de parâmetros |
model_uri |
str |
URI para referenciar o modelo (por exemplo, "models:/model_id") |
Padrões comuns
Rastreamento de versão com integração com Git
import mlflow
import subprocess
# Get current git commit
git_commit = subprocess.check_output(["git", "rev-parse", "HEAD"]).decode().strip()[:8]
# Create versioned model name
model_name = f"my-app-git-{git_commit}"
# Track the version
model = mlflow.create_external_model(
name=model_name,
tags={"git_commit": git_commit}
)
Ligando traços a versões
import mlflow
# Set active model - all subsequent traces will be linked
mlflow.set_active_model(name="my-agent-v1.0")
# Your application code with tracing
@mlflow.trace
def process_request(query: str):
# This trace will be automatically linked to my-agent-v1.0
return f"Processing: {query}"
# Run the application
result = process_request("Hello world")
Implantação de produção
Na produção, use variáveis de ambiente em vez de chamar set_active_model():
# Set the model ID that traces should be linked to
export MLFLOW_ACTIVE_MODEL_ID="my-agent-v1.0"
Melhores práticas
- Use o controle de versão semântico em nomes de modelo (por exemplo, "app-v1.2.3")
- Incluir confirmações do git em tags para rastreabilidade
- Os parâmetros devem ser strings - converter números e booleanos
- Use model_type para categorizar aplicativos semelhantes
- Defina o modelo ativo antes do rastreamento para garantir a ligação adequada
Problemas comuns
Tipos de parâmetros inválidos:
# Error: Parameters must be strings
# Wrong:
params = {"temperature": 0.7, "max_tokens": 1000}
# Correct:
params = {"temperature": "0.7", "max_tokens": "1000"}
Próximos passos
- Acompanhe as versões do aplicativo - Guia passo a passo para a versão do seu aplicativo GenAI
- Vincular rastreios de produção - Ligue dados de produção a versões de aplicações
- Pacote para implantação - Implantar aplicativos com versão no Model Serving