Pesquisando execuções no MLflow

Pesquisando Execucoes No Mlflow



Para rastrear e gerenciar experimentos de aprendizado de máquina, o MLflow oferece uma plataforma extensa. Ter a capacidade de pesquisar execuções é um dos principais recursos do MLflow. Isso permite identificar os experimentos desenvolvidos e organizá-los de forma que seja simples localizar as informações sempre que necessário. Podemos pesquisar execuções usando a API de pesquisa MLflow usando vários critérios diferentes que podem incluir o seguinte:
  • ID ou nome do experimento
  • ID de execução
  • Parâmetros e Valores
  • Métricas e Valores
  • Tag
  • Outros atributos associados às execuções

As execuções podem ser filtradas por status, hora de início, hora de término e duração com o uso da API de pesquisa MLflow. Torna mais fácil filtrar muitas execuções e encontrar execuções específicas nas quais os usuários estão interessados.

Função de pesquisa MLflow

Use a função mlflow.search_runs() para acessar a API de pesquisa MLflow. Esta função aceita uma variedade de argumentos como os seguintes:







  • O ID ou nome do experimento
  • Filtrar string ou texto
  • O número máximo de execuções a serem retornadas é especificado pelo argumento max_results

Uma variante simplificada da cláusula SQL (Structured Query Language) WHERE é a string ou texto do filtro. Pode ser usado para indicar os critérios pelos quais queremos classificar as execuções.



Sintaxe da função MLflow Search_Runs()

O ID ou nome real do experimento que queremos pesquisar deve ser substituído por “experiment_id ou experiment_name” no exemplo a seguir. A variável search_criteria permite inserir os critérios de pesquisa conforme desejado. Esses critérios podem ser determinados por métricas, tags, parâmetros ou características adicionais. A sintaxe básica da função search_runs() é a seguinte:



# Importe a API de pesquisa mlflow para usar a função search_runs

importar fluxo ml

# Forneça algum ID ou nome do experimento (é opcional;)

exp_id = 'ID ou NOME da experiência'

# Defina os critérios de pesquisa para execuções

seqüência de pesquisa = 'metrics.accuracy > 0,8 AND params.learning_rate = '0,01' AND params.efficiency_rate > '80''

# Realize a pesquisa

corre = mlfluxo. pesquisa_execuções ( experiment_ids = exp_id , string_filtro = seqüência de pesquisa )

#Exibe os resultados

imprimir ( 'Procurar Resultados:' )

imprimir ( corre )

Execute uma pesquisa usando vários critérios

1. Pesquise por valor métrico

As execuções podem ser filtradas pelos valores de métricas específicas usando o campo de métricas na API de pesquisa do MLflow. Uma coleção de nomes de métricas separados por vírgulas aparece no campo de métricas. Por exemplo, a sequência de filtro a seguir localiza todas as execuções com um valor de precisão superior a 0,9:





Métricas. precisão > 0,9

A lista completa de métricas disponíveis para uso no campo de métricas é fornecida a seguir:

  • precisão
  • auc
  • f1
  • precisão
  • lembrar
  • mapa
  • perda de log
  • erro_classificação
  • multi_class_logloss

Além disso, os usuários podem filtrar as execuções por intervalo de valores de uma métrica usando o campo de métricas. Por exemplo, a próxima sequência de filtro localiza todas as execuções que possuem uma medida de precisão com um valor entre 0,4 e 0,8:



Métricas. precisão ENTRE 0,4 E 0,8

No campo de métricas, os operadores AND e OR combinam as métricas para encontrar as execuções com precisão de métricas e valores f1 acima de 0,3 e 0,8:

Métricas. precisão > 0,3 E métricas. f1 > 0,8

2. Pesquise por valor de parâmetro

Use o campo params na API de pesquisa do MLflow para realizar uma pesquisa por um valor de parâmetro. Os nomes e valores dos parâmetros são listados no campo params usando vírgulas. Neste exemplo, a string de filtro mencionada acima localiza todas as execuções com o parâmetro num_boost_round que possuem o valor 100:

parâmetros. num_boost_round = '100'

Mais alguns exemplos de strings de pesquisa para valores de parâmetros:

  • params.num_boost_round = 900
  • params.learning_rate ENTRE 0,001 E 0,01
  • params.num_boost_round=’70’ E params.learning_rate=’0,01′

3. Pesquise por tags

Aqui está um exemplo de pesquisa empregando tags:

critérios de pesquisa = 'tags.mlflow.source.type = 'dicionário''

Exemplo de valores de matriz e parâmetro para executar a função Mlflow.search_runs()

Vamos trabalhar em um exemplo de configuração de um experimento MLflow, registrar execuções e, em seguida, usar mlflow.search_runs() para iniciar uma pesquisa. Para entender completamente o código, siga estas etapas:

Etapa 1: criar um experimento MLflow

Começamos configurando um experimento MLflow. Ele busca o experimento existente se o experimento já existir. Caso contrário, ele cria um novo.

Explicação do código:

A biblioteca MLflow é importada na primeira linha do código e experiment_name é definido como “My First MLflow Experiment” na próxima linha. Quando o experiment_name é passado para a função “mlflow.get_experiment_by_name”, essa função retorna “None” se o experimento não existir e um objeto do experimento caso contrário.

Verifique a existência do experimento na declaração condicional. Se o experimento já existir, defina experiment_id. Caso contrário, use “mlflow.create_experiment” para criar um novo experimento. O ID do experimento é retornado por esta função. Exiba o ID do experimento no console ou na tela do terminal no final do experimento. Copie o seguinte código no bloco de notas e salve o arquivo com o nome desejado e com extensão “.py”:

#importar biblioteca mlflow

importar fluxo ml

# Crie ou busque o experimento

nome_exp = 'Minha primeira experiência com MLflow'

# Busque o experimento por nome usando a função mlflow get_experiment_by_name

experiência = mlfluxo. get_experiment_by_name ( nome_exp )

# Verifica se o experimento ainda não existe

se experiência é Nenhum :

# Crie um novo experimento e passe o nome do experimento para a função mlflow.create_experiment

exp_id = mlfluxo. criar_experiência ( nome_exp )

#Mostra a mensagem de sucesso na tela

imprimir ( 'A experiência não existe. Experiência criada com sucesso!' )

outro :

#Busca o experiment_id do experimento existente

exp_id = exp. experimento_id

imprimir ( “A experiência já existe!” )

# Exibir ID do experimento

imprimir ( 'ID do experimento:' , exp_id )

Agora, inicie o programa no prompt de comando ou janela de terminal usando o compilador Python e digite “Python” e a seguir o nome do arquivo que, neste caso, é “MyFirstMlflowExperiment.py”. Quando o experimento é executado pela primeira vez, ele ainda não existe. Assim, o MLFlow cria um e imprime o ID do experimento na tela do console:

Execute novamente o código para verificar se ele não está criando novos experimentos e para exibir o ID dos que já existem. A captura de tela a seguir mostra que o experimento já existe:

Etapa 2: registrar as execuções com métricas e parâmetros

Vamos agora tentar registrar algumas execuções com as métricas e parâmetros do experimento recém-estabelecido. Num cenário real, desenvolvemos os modelos de machine learning e registamos as informações relevantes, como métricas e parâmetros, no final de cada execução. Aqui, a precisão é usada como um valor matricial e, neste caso, é 0,95. Os valores dos parâmetros para aprendizagem e taxa de eficiência são 0,01 e 90, respectivamente. Aqui está o código:

# Iniciar uma execução do MLflow para registrar métricas e parâmetros

com mlfluxo. Comece a correr ( experimento_id = exp_id ) :

# Seu código de aprendizado de máquina aqui (este é apenas um exemplo simulado)

precisão_modelo = 0,95

taxa_de_aprendizagem_máquina = 0,01

taxa_de_eficiência = 90

# Registrar métricas e parâmetros

mlfluxo. log_metric ( 'precisão' , precisão_modelo )

mlfluxo. log_param ( 'taxa de Aprendizagem' , taxa_de_aprendizagem_máquina )

mlfluxo. log_param ( 'taxa_de eficiência' , taxa_de_eficiência )

O resultado, quando o referido código é executado, é visto aqui. O resultado é o mesmo de antes:

Etapa 3: execute uma pesquisa usando Mlflow.search_runs()

Por fim, fazemos uma pesquisa nas execuções que foram registradas usando alguns parâmetros e mostramos os resultados na tela do terminal:

# Defina os critérios de pesquisa para execuções

define_search_criteria = 'metrics.accuracy > 0,8 AND params.learning_rate = '0,01' AND params.efficiency_rate = '90''

# Realize a pesquisa

corre = mlfluxo. pesquisa_execuções ( experiment_ids = exp_id , string_filtro = define_search_criteria )

#Exibe os resultados

imprimir ( 'Procurar Resultados:' )

imprimir ( corre )

Um aviso pertencente à ferramenta Git é produzido pela execução da função search_runs:


Adicione algum código no topo do arquivo Python para desativar este aviso. Aqui está uma pequena seção do código:

importar fluxo ml

importar os

os . aproximadamente [ 'GIT_PYTHON_REFRESH' ] = 'quieto'

A função “mlflow.search_runs” é executada com sucesso assim que estas linhas de código são adicionadas:

Conclusão

A função “mlflow.search_runs” permite que os usuários explorem e avaliem rapidamente os experimentos de aprendizado de máquina, analisem muitas execuções e identifiquem as variações ou modelos ideais de hiperparâmetros que resultam nos resultados desejados. É uma ferramenta eficaz para supervisionar, planejar e analisar o fluxo de trabalho de aprendizado de máquina.