Run Classe
Define a classe base para todas as execuções de experimentação do Azure Machine Learning.
Uma execução representa uma única avaliação de uma experimentação. As execuções são utilizadas para monitorizar a execução assíncrona de uma avaliação, métricas de registo e armazenar a saída da versão de avaliação e para analisar os resultados e aceder aos artefactos gerados pela versão de avaliação.
Os objetos de execução são criados quando submete um script para preparar um modelo em muitos cenários diferentes no Azure Machine Learning, incluindo execuções do HyperDrive, Execuções de pipeline e execuções de AutoML. Também é criado um objeto Executar quando o utilizador submit ou start_logging com a Experiment classe .
Para começar a utilizar experimentações e execuções, consulte
Inicialize o objeto Executar.
- Herança
-
azureml._run_impl.run_base._RunBaseRun
Construtor
Run(experiment, run_id, outputs=None, **kwargs)
Parâmetros
- _run_dto
- <xref:azureml._restclient.models.run_dto.RunDto>
Apenas utilização interna.
Observações
Uma execução representa uma única avaliação de uma experimentação. Um objeto Executar é utilizado para monitorizar a execução assíncrona de uma versão de avaliação, métricas de registo e armazenar a saída da versão de avaliação e para analisar os resultados e aceder aos artefactos gerados pela avaliação.
A execução é utilizada no código de experimentação para registar métricas e artefactos no serviço Histórico de Execuções.
A execução é utilizada fora das experimentações para monitorizar o progresso e consultar e analisar as métricas e os resultados que foram gerados.
A funcionalidade executar inclui:
Armazenar e obter métricas e dados
Carregar e transferir ficheiros
Utilizar etiquetas, bem como a hierarquia subordinada, para uma pesquisa fácil de execuções anteriores
Registar ficheiros de modelo armazenados como um modelo que pode ser operacionalizado
Armazenar, modificar e obter propriedades de uma execução
Carregar a execução atual a partir de um ambiente remoto com o get_context método
Instantâneos eficientes de um ficheiro ou diretório para reprodutibilidade
Esta classe funciona com o Experiment nestes cenários:
Criar uma execução ao executar código com submit
Criar uma execução interativamente num bloco de notas com start_logging
Registar métricas e carregar artefactos na experimentação, como quando utilizar log
Ler métricas e transferir artefactos ao analisar resultados experimentais, como ao utilizar get_metrics
Para submeter uma execução, crie um objeto de configuração que descreva como a experimentação é executada. Eis exemplos dos diferentes objetos de configuração que pode utilizar:
azureml.train.automl.automlconfig.AutoMLConfig
azureml.train.hyperdrive.HyperDriveConfig
azureml.pipeline.core.Pipeline
azureml.pipeline.core.PublishedPipeline
azureml.pipeline.core.PipelineEndpoint
As seguintes métricas podem ser adicionadas a uma execução durante a preparação de uma experimentação.
Escalar
Registe um valor numérico ou de cadeia na execução com o nome especificado com log. Registar uma métrica numa execução faz com que essa métrica seja armazenada no registo de execução na experimentação. Pode registar a mesma métrica várias vezes numa execução, sendo o resultado considerado um vetor dessa métrica.
Exemplo:
run.log("accuracy", 0.95)
Lista
Registe uma lista de valores na execução com o nome especificado com log_list.
Exemplo:
run.log_list("accuracies", [0.6, 0.7, 0.87])
Linha
Utilizar log_row cria uma métrica com múltiplas colunas, conforme descrito em
kwargs
. Cada parâmetro nomeado gera uma coluna com o valor especificado.log_row
pode ser chamado uma vez para registar uma cadeia de identificação arbitrária ou várias vezes num ciclo para gerar uma tabela completa.Exemplo:
run.log_row("Y over X", x=1, y=0.4)
Tabela
Registe um objeto de dicionário na execução com o nome especificado com log_table.
Exemplo:
run.log_table("Y over X", {"x":[1, 2, 3], "y":[0.6, 0.7, 0.89]})
Imagem
Registe uma imagem no registo de execução. Utilize log_image para registar um ficheiro de imagem ou um gráfico matplotlib para a execução. Estas imagens serão visíveis e comparáveis no registo de execução.
Exemplo:
run.log_image("ROC", path)
Métodos
add_properties |
Adicione propriedades imutáveis à execução. As etiquetas e as propriedades (ambos dict[str, str]) diferem na sua mutabilidade. As propriedades são imutáveis, pelo que criam um registo permanente para fins de auditoria. As etiquetas são mutáveis. Para obter mais informações sobre como trabalhar com etiquetas e propriedades, consulte Etiquetar e localizar execuções. |
add_type_provider |
Gancho de extensibilidade para tipos de Execução personalizados armazenados no Histórico de Execuções. |
cancel |
Marcar a execução como cancelada. Se existir uma tarefa associada a um conjunto cancel_uri campo, termine essa tarefa também. |
child_run |
Criar uma execução subordinada. |
clean |
Remova os ficheiros correspondentes à execução atual no destino especificado na configuração de execução. |
complete |
Aguarde que a fila de tarefas seja processada. Em seguida, a execução é marcada como concluída. Normalmente, isto é utilizado em cenários de blocos de notas interativos. |
create_children |
Crie uma ou muitas execuções subordinados. |
download_file |
Transfira um ficheiro associado a partir do armazenamento. |
download_files |
Transfira ficheiros a partir de um determinado prefixo de armazenamento (nome da pasta) ou de todo o contentor se o prefixo não for especificado. |
fail |
Marcar a execução como falhada. Opcionalmente, defina a propriedade Erro da execução com uma mensagem ou exceção transmitida para |
flush |
Aguarde que a fila de tarefas seja processada. |
get |
Obtenha a execução desta área de trabalho com o respetivo ID de execução. |
get_all_logs |
Transfira todos os registos da execução para um diretório. |
get_children |
Obtenha todas as crianças para a execução atual selecionada por filtros especificados. |
get_context |
Devolver o contexto de serviço atual. Utilize este método para obter o contexto de serviço atual para registar métricas e carregar ficheiros. Se |
get_detailed_status |
Obtenha o estado mais recente da execução. Se o estado da execução for "Em fila", irá mostrar os detalhes. |
get_details |
Obtenha a definição, informações de estado, ficheiros de registo atuais e outros detalhes da execução. |
get_details_with_logs |
Devolver o estado da execução, incluindo o conteúdo do ficheiro de registo. |
get_environment |
Obtenha a definição de ambiente utilizada por esta execução. |
get_file_names |
Liste os ficheiros armazenados em associação com a execução. |
get_metrics |
Obtenha as métricas registadas na execução. Se |
get_properties |
Obtenha as propriedades mais recentes da execução a partir do serviço. |
get_secret |
Obtenha o valor secreto a partir do contexto de uma execução. Obtenha o valor do segredo para o nome fornecido. O nome do segredo referencia um valor armazenado no Azure Key Vault associado à área de trabalho. Para obter um exemplo de como trabalhar com segredos, veja Utilizar segredos em execuções de preparação. |
get_secrets |
Obtenha os valores secretos de uma determinada lista de nomes secretos. Obtenha um dicionário de segredos encontrados e não encontrados para a lista de nomes fornecidos. Cada nome de segredo referencia um valor armazenado no Azure Key Vault associado à área de trabalho. Para obter um exemplo de como trabalhar com segredos, veja Utilizar segredos em execuções de preparação. |
get_snapshot_id |
Obtenha o ID de instantâneo mais recente. |
get_status |
Obtenha o estado mais recente da execução. Os valores comuns devolvidos incluem "Em Execução", "Concluído" e "Com Falhas". |
get_submitted_run |
PRETERIDO. Utilize get_context. Obtenha a execução submetida para esta experimentação. |
get_tags |
Obtenha o conjunto mais recente de etiquetas mutáveis em execução a partir do serviço. |
list |
Obtenha uma lista de execuções numa experimentação especificada por filtros opcionais. |
list_by_compute |
Obtenha uma lista de execuções numa computação especificada por filtros opcionais. |
log |
Registe um valor de métrica na execução com o nome especificado. |
log_accuracy_table |
Registe uma tabela de precisão no arquivo de artefactos. A métrica da tabela de precisão é uma métrica multiusos e não escalares que pode ser utilizada para produzir vários tipos de gráficos de linhas que variam continuamente ao longo do espaço de probabilidades previstas. Alguns exemplos destes gráficos são ROC, revocação de precisão e curvas lift. O cálculo da tabela de precisão é semelhante ao cálculo de uma curva ROC. Uma curva ROC armazena taxas positivas verdadeiras e taxas de falsos positivos em muitos limiares de probabilidade diferentes. A tabela de precisão armazena o número bruto de verdadeiros positivos, falsos positivos, verdadeiros negativos e falsos negativos em muitos limiares de probabilidade. Existem dois métodos utilizados para selecionar limiares: "probabilidade" e "percentil". Diferem na forma como se amostram do espaço de probabilidades previstas. Os limiares de probabilidade são limiares espaçados uniformemente entre 0 e 1. Se NUM_POINTS for 5, os limiares de probabilidade serão [0,0, 0,25, 0,5, 0,75, 1,0]. Os limiares de percentil são espaçados de acordo com a distribuição das probabilidades previstas. Cada limiar corresponde ao percentil dos dados num limiar de probabilidade. Por exemplo, se NUM_POINTS for 5, o primeiro limiar seria no percentil 0, o segundo no percentil 25, o terceiro no 50º, etc. As tabelas de probabilidade e as tabelas de percentil são ambas listas 3D em que a primeira dimensão representa a etiqueta de classe, a segunda dimensão representa a amostra num limiar (dimensiona com NUM_POINTS) e a terceira dimensão tem sempre 4 valores: TP, FP, TN, FN e sempre por essa ordem. Os valores de confusão (TP, FP, TN, FN) são calculados com a estratégia de um vs. rest. Veja a seguinte ligação para obter mais detalhes: https://en.wikipedia.org/wiki/Multiclass_classification N = n. de amostras no conjunto de dados de validação (200, por exemplo) M = limiares # = # amostras obtidas a partir do espaço de probabilidade (5, por exemplo) C = classes # no conjunto de dados completo (3, por exemplo) Algumas invariáveis da tabela de precisão:
Nota: M pode ser qualquer valor e controla a resolução dos gráficos Isto é independente do conjunto de dados, é definido ao calcular métricas e troca espaço de armazenamento, tempo de computação e resolução. As etiquetas de classe devem ser cadeias, os valores de confusão devem ser números inteiros e os limiares devem ser flutuantes. |
log_confusion_matrix |
Registe uma matriz de confusão no arquivo de artefactos. Isto regista um wrapper à volta da matriz de confusão sklearn. Os dados de métricas contêm as etiquetas de classe e uma lista 2D para a própria matriz. Veja a seguinte ligação para obter mais detalhes sobre como a métrica é calculada: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html |
log_image |
Registe uma métrica de imagem no registo de execução. |
log_list |
Registe uma lista de valores de métricas na execução com o nome especificado. |
log_predictions |
Registar predições no arquivo de artefactos. Isto regista uma classificação de métrica que pode ser utilizada para comparar as distribuições de valores de destino verdadeiros com a distribuição de valores previstos para uma tarefa de regressão. As predições são discretizadas e os desvios padrão são calculados para barras de erro num gráfico de linhas. |
log_residuals |
Registar residuais no arquivo de artefactos. Isto regista os dados necessários para apresentar um histograma de residuais para uma tarefa de regressão. Os residuais são previstos - real. Deve existir mais uma margem do que o número de contagens. Veja a documentação do histograma numpy para obter exemplos de utilização de contagens e arestas para representar um histograma. https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html |
log_row |
Registe uma métrica de linha na execução com o nome especificado. |
log_table |
Registe uma métrica de tabela na execução com o nome especificado. |
register_model |
Registar um modelo para operacionalização. |
remove_tags |
Elimine a lista de etiquetas mutáveis nesta execução. |
restore_snapshot |
Restaurar um instantâneo como um ficheiro ZIP. Devolve o caminho para o ZIP. |
set_tags |
Adicionar ou modificar um conjunto de etiquetas em execução. As etiquetas não transmitidas no dicionário são deixadas intocadas. Também pode adicionar etiquetas de cadeia simples. Quando estas etiquetas aparecem no dicionário de etiquetas como chaves, têm um valor de Nenhum. Para obter mais informações, consulte Etiquetar e localizar execuções. |
start |
Marcar a execução como iniciada. Normalmente, isto é utilizado em cenários avançados quando a execução foi criada por outro ator. |
submit_child |
Submeta uma experimentação e devolva a execução subordinada ativa. |
tag |
Marque a execução com uma chave de cadeia e um valor de cadeia opcional. |
take_snapshot |
Guarde um instantâneo do ficheiro ou pasta de entrada. |
upload_file |
Carregue um ficheiro para o registo de execução. |
upload_files |
Carregue ficheiros para o registo de execução. |
upload_folder |
Carregue a pasta especificada para o nome do prefixo especificado. |
wait_for_completion |
Aguarde pela conclusão desta execução. Devolve o objeto de estado após a espera. |
add_properties
Adicione propriedades imutáveis à execução.
As etiquetas e as propriedades (ambos dict[str, str]) diferem na sua mutabilidade. As propriedades são imutáveis, pelo que criam um registo permanente para fins de auditoria. As etiquetas são mutáveis. Para obter mais informações sobre como trabalhar com etiquetas e propriedades, consulte Etiquetar e localizar execuções.
add_properties(properties)
Parâmetros
add_type_provider
Gancho de extensibilidade para tipos de Execução personalizados armazenados no Histórico de Execuções.
static add_type_provider(runtype, run_factory)
Parâmetros
- runtype
- str
O valor de Run.type para o qual a fábrica será invocada. Os exemplos incluem "hyperdrive" ou "azureml.scriptrun", mas podem ser expandidos com tipos personalizados.
- run_factory
- <xref:function>
Uma função com assinatura (Experimentação, RunDto) –> execute para ser invocada quando a listagem for executada.
cancel
Marcar a execução como cancelada.
Se existir uma tarefa associada a um conjunto cancel_uri campo, termine essa tarefa também.
cancel()
child_run
Criar uma execução subordinada.
child_run(name=None, run_id=None, outputs=None)
Parâmetros
- name
- str
Um nome opcional para a execução subordinada, normalmente especificado para uma "parte".
- run_id
- str
Um ID de execução opcional para o menor, caso contrário, é gerado automaticamente. Normalmente, este parâmetro não está definido.
Devoluções
A criança corre.
Tipo de retorno
Observações
Isto é utilizado para isolar parte de uma execução numa subsecção. Isto pode ser feito para "partes" identificáveis de uma execução que são interessantes de separar ou para capturar métricas independentes numa interação de um subprocesso.
Se um diretório de saída estiver definido para a execução subordinada, o conteúdo desse diretório será carregado para o registo de execução subordinado quando o menor for concluído.
clean
Remova os ficheiros correspondentes à execução atual no destino especificado na configuração de execução.
clean()
Devoluções
Uma lista de ficheiros eliminados.
Tipo de retorno
complete
Aguarde que a fila de tarefas seja processada.
Em seguida, a execução é marcada como concluída. Normalmente, isto é utilizado em cenários de blocos de notas interativos.
complete(_set_status=True)
Parâmetros
- _set_status
- bool
Indica se pretende enviar o evento de estado para controlo.
create_children
Crie uma ou muitas execuções subordinados.
create_children(count=None, tag_key=None, tag_values=None)
Parâmetros
- tag_key
- str
Uma chave opcional para preencher a entrada Etiquetas em todas as crianças criadas.
- tag_Values
Uma lista opcional de valores que será mapeado para Etiquetas[tag_key] para a lista de execuções criadas.
- tag_values
Devoluções
A lista de execuções subordinadas.
Tipo de retorno
Observações
O parâmetro count
OU os parâmetros tag_key
E tag_values
têm de ser especificados.
download_file
Transfira um ficheiro associado a partir do armazenamento.
download_file(name, output_file_path=None, _validate_checksum=False)
Parâmetros
download_files
Transfira ficheiros a partir de um determinado prefixo de armazenamento (nome da pasta) ou de todo o contentor se o prefixo não for especificado.
download_files(prefix=None, output_directory=None, output_paths=None, batch_size=100, append_prefix=True, timeout_seconds=None)
Parâmetros
- prefix
- str
O prefixo do caminho de ficheiro no contentor a partir do qual pode transferir todos os artefactos.
- output_directory
- str
Um diretório opcional que todos os caminhos de artefacto utilizam como prefixo.
- output_paths
- [str]
Caminhos de ficheiro opcionais para armazenar os artefactos transferidos. Deve ser exclusivo e corresponder ao comprimento dos caminhos.
- batch_size
- int
O número de ficheiros a transferir por lote. A predefinição é 100 ficheiros.
- append_prefix
- bool
Um sinalizador opcional para acrescentar o prefixo especificado a partir do caminho de ficheiro de saída final. Se For Falso, o prefixo é removido do caminho do ficheiro de saída.
fail
Marcar a execução como falhada.
Opcionalmente, defina a propriedade Erro da execução com uma mensagem ou exceção transmitida para error_details
.
fail(error_details=None, error_code=None, _set_status=True)
Parâmetros
- error_code
- str
Código de erro opcional do erro para a classificação de erros.
- _set_status
- bool
Indica se pretende enviar o evento de estado para controlo.
flush
Aguarde que a fila de tarefas seja processada.
flush(timeout_seconds=300)
Parâmetros
- timeout_seconds
- int
Quanto tempo de espera (em segundos) para que a fila de tarefas seja processada.
get
Obtenha a execução desta área de trabalho com o respetivo ID de execução.
static get(workspace, run_id)
Parâmetros
Devoluções
A execução submetida.
Tipo de retorno
get_all_logs
Transfira todos os registos da execução para um diretório.
get_all_logs(destination=None)
Parâmetros
- destination
- str
O caminho de destino para armazenar registos. Se não for especificado, é criado um diretório denominado ID de execução no diretório do projeto.
Devoluções
Uma lista de nomes de registos transferidos.
Tipo de retorno
get_children
Obtenha todas as crianças para a execução atual selecionada por filtros especificados.
get_children(recursive=False, tags=None, properties=None, type=None, status=None, _rehydrate_runs=True)
Parâmetros
- recursive
- bool
Indica se deve voltar a ocorrer através de todos os descendentes.
Se especificado, devolve execuções correspondentes a "tag" ou {"tag": "value"}.
Se especificado, devolve execuções correspondentes a "propriedade" ou {"property": "value"}.
- status
- str
Se especificado, devolve execuções com o estado especificado como "estado".
- _rehydrate_runs
- bool
Indica se deve instanciar uma execução do tipo original ou da execução base.
Devoluções
Uma lista de Run objetos.
Tipo de retorno
get_context
Devolver o contexto de serviço atual.
Utilize este método para obter o contexto de serviço atual para registar métricas e carregar ficheiros. Se allow_offline
for Verdadeiro (a predefinição), as ações contra o objeto Executar serão impressas de forma padrão.
get_context(allow_offline=True, used_for_context_manager=False, **kwargs)
Parâmetros
- cls
Indica o método de classe.
- allow_offline
- bool
Permitir que o contexto do serviço recue para o modo offline para que o script de preparação possa ser testado localmente sem submeter uma tarefa com o SDK. Verdadeiro por predefinição.
- used_for_context_manager
Devoluções
A execução submetida.
Tipo de retorno
Observações
Esta função é normalmente utilizada para obter o objeto Run autenticado dentro de um script a ser submetido para execução através de experiment.submit(). Este objeto de execução é um contexto autenticado para comunicar com os serviços do Azure Machine Learning e um contentor conceptual no qual as métricas, ficheiros (artefactos) e modelos estão contidos.
run = Run.get_context() # allow_offline=True by default, so can be run locally as well
...
run.log("Accuracy", 0.98)
run.log_row("Performance", epoch=e, error=err)
get_detailed_status
Obtenha o estado mais recente da execução. Se o estado da execução for "Em fila", irá mostrar os detalhes.
get_detailed_status()
Devoluções
O estado e os detalhes mais recentes
Tipo de retorno
Observações
status: o estado atual da execução. O mesmo valor devolvido de get_status().
detalhes: as informações detalhadas para o estado atual.
run = experiment.submit(config)
details = run.get_detailed_status()
# details = {
# 'status': 'Queued',
# 'details': 'Run requested 1 node(s). Run is in pending status.',
# }
get_details
Obtenha a definição, informações de estado, ficheiros de registo atuais e outros detalhes da execução.
get_details()
Devoluções
Devolver os detalhes da execução
Tipo de retorno
Observações
O dicionário devolvido contém os seguintes pares chave-valor:
runId: ID desta execução.
destino
status: o estado atual da execução. O mesmo valor devolvido de get_status().
startTimeUtc: hora UTC de quando esta execução foi iniciada, em ISO8601.
endTimeUtc: hora UTC de quando esta execução foi concluída (Concluída ou Falhada), em ISO8601.
Esta chave não existe se a execução ainda estiver em curso.
propriedades: pares imutáveis chave-valor associados à execução. As propriedades predefinidas incluem o ID de instantâneo da execução e informações sobre o repositório git a partir do qual a execução foi criada (se existirem). Podem ser adicionadas propriedades adicionais a uma execução com add_properties.
inputDatasets: conjuntos de dados de entrada associados à execução.
outputDatasets: conjuntos de dados de saída associados à execução.
logFiles
submittedBy
run = experiment.start_logging()
details = run.get_details()
# details = {
# 'runId': '5c24aa28-6e4a-4572-96a0-fb522d26fe2d',
# 'target': 'sdk',
# 'status': 'Running',
# 'startTimeUtc': '2019-01-01T13:08:01.713777Z',
# 'endTimeUtc': '2019-01-01T17:15:65.986253Z',
# 'properties': {
# 'azureml.git.repository_uri': 'https://example.com/my/git/repo',
# 'azureml.git.branch': 'master',
# 'azureml.git.commit': '7dc972657c2168927a02c3bc2b161e0f370365d7',
# 'azureml.git.dirty': 'True',
# 'mlflow.source.git.repoURL': 'https://example.com/my/git/repo',
# 'mlflow.source.git.branch': 'master',
# 'mlflow.source.git.commit': '7dc972657c2168927a02c3bc2b161e0f370365d7',
# 'ContentSnapshotId': 'b4689489-ce2f-4db5-b6d7-6ad11e77079c'
# },
# 'inputDatasets': [{
# 'dataset': {'id': 'cdebf245-701d-4a68-8055-41f9cf44f298'},
# 'consumptionDetails': {
# 'type': 'RunInput',
# 'inputName': 'training-data',
# 'mechanism': 'Mount',
# 'pathOnCompute': '/mnt/datasets/train'
# }
# }],
# 'outputDatasets': [{
# 'dataset': {'id': 'd04e8a19-1caa-4b1f-b318-4cbff9af9615'},
# 'outputType': 'RunOutput',
# 'outputDetails': {
# 'outputName': 'training-result'
# }
# }],
# 'runDefinition': {},
# 'logFiles': {},
# 'submittedBy': 'Alan Turing'
# }
get_details_with_logs
Devolver o estado da execução, incluindo o conteúdo do ficheiro de registo.
get_details_with_logs()
Devoluções
Devolve o estado da execução com o conteúdo do ficheiro de registo.
Tipo de retorno
get_environment
Obtenha a definição de ambiente utilizada por esta execução.
get_environment()
Devoluções
Devolver o objeto de ambiente.
Tipo de retorno
get_file_names
Liste os ficheiros armazenados em associação com a execução.
get_file_names()
Devoluções
A lista de caminhos para artefactos existentes
Tipo de retorno
get_metrics
Obtenha as métricas registadas na execução.
Se recursive
for Verdadeiro (Falso por predefinição), obtenha as métricas para execuções na subárvore da execução especificada.
get_metrics(name=None, recursive=False, run_type=None, populate=False)
Parâmetros
- recursive
- bool
Indica se deve voltar a ocorrer através de todos os descendentes.
- run_type
- str
- populate
- bool
Indica se pretende obter o conteúdo de dados externos ligados à métrica.
Devoluções
Um dicionário que contém as métricas dos utilizadores.
Tipo de retorno
Observações
run = experiment.start_logging() # run id: 123
run.log("A", 1)
with run.child_run() as child: # run id: 456
child.log("A", 2)
metrics = run.get_metrics()
# metrics = { 'A': 1 }
metrics = run.get_metrics(recursive=True)
# metrics = { '123': { 'A': 1 }, '456': { 'A': 2 } } note key is runId
get_properties
Obtenha as propriedades mais recentes da execução a partir do serviço.
get_properties()
Devoluções
As propriedades da execução.
Tipo de retorno
Observações
As propriedades são informações imutáveis geradas pelo sistema, como duração, data de execução, utilizador e propriedades personalizadas adicionadas com o add_properties método. Para obter mais informações, consulte Etiquetar e localizar execuções.
Ao submeter uma tarefa para o Azure Machine Learning, se os ficheiros de origem estiverem armazenados num repositório git local, as informações sobre o repositório são armazenadas como propriedades. Estas propriedades do git são adicionadas ao criar uma execução ou chamar Experiment.submit. Para obter mais informações sobre as propriedades do git, veja Integração do Git para o Azure Machine Learning.
get_secret
Obtenha o valor secreto a partir do contexto de uma execução.
Obtenha o valor do segredo para o nome fornecido. O nome do segredo referencia um valor armazenado no Azure Key Vault associado à área de trabalho. Para obter um exemplo de como trabalhar com segredos, veja Utilizar segredos em execuções de preparação.
get_secret(name)
Parâmetros
Devoluções
O valor do segredo.
Tipo de retorno
get_secrets
Obtenha os valores secretos de uma determinada lista de nomes secretos.
Obtenha um dicionário de segredos encontrados e não encontrados para a lista de nomes fornecidos. Cada nome de segredo referencia um valor armazenado no Azure Key Vault associado à área de trabalho. Para obter um exemplo de como trabalhar com segredos, veja Utilizar segredos em execuções de preparação.
get_secrets(secrets)
Parâmetros
Devoluções
Devolve um dicionário de segredos encontrados e não encontrados.
Tipo de retorno
get_snapshot_id
Obtenha o ID de instantâneo mais recente.
get_snapshot_id()
Devoluções
O ID de instantâneo mais recente.
Tipo de retorno
get_status
Obtenha o estado mais recente da execução.
Os valores comuns devolvidos incluem "Em Execução", "Concluído" e "Com Falhas".
get_status()
Devoluções
O estado mais recente.
Tipo de retorno
Observações
NotStarted - Trata-se de um estado temporário em que os objetos Run do lado do cliente estão antes da submissão da cloud.
A iniciar – a Execução começou a ser processada na cloud. O autor da chamada tem um ID de execução neste momento.
Aprovisionamento – devolvido quando a computação a pedido está a ser criada para uma determinada submissão de tarefas.
Preparação – O ambiente de execução está a ser preparado:
compilação de imagens do docker
configuração do ambiente conda
Em fila – a tarefa está em fila no destino de computação. Por exemplo, no BatchAI, a tarefa está no estado em fila
enquanto aguarda que todos os nós pedidos estejam prontos.
Em execução – a tarefa começou a ser executada no destino de computação.
Finalização – o código do utilizador foi concluído e a execução encontra-se em fases de pós-processamento.
CancelRequested - Foi pedido o cancelamento para a tarefa.
Concluído – a execução foi concluída com êxito. Isto inclui o código de utilizador e a execução
fases de pós-processamento.
Falha – a execução falhou. Normalmente, a propriedade Error numa execução irá fornecer detalhes sobre o motivo.
Cancelado – segue um pedido de cancelamento e indica que a execução foi cancelada com êxito.
NotResponding – para execuções com Heartbeats ativados, não foi enviado nenhum heartbeat recentemente.
run = experiment.submit(config)
while run.get_status() not in ['Completed', 'Failed']: # For example purposes only, not exhaustive
print('Run {} not in terminal state'.format(run.id))
time.sleep(10)
get_submitted_run
PRETERIDO. Utilize get_context.
Obtenha a execução submetida para esta experimentação.
get_submitted_run(**kwargs)
Devoluções
A execução submetida.
Tipo de retorno
get_tags
Obtenha o conjunto mais recente de etiquetas mutáveis em execução a partir do serviço.
get_tags()
Devoluções
As etiquetas armazenadas no objeto de execução.
Tipo de retorno
list
Obtenha uma lista de execuções numa experimentação especificada por filtros opcionais.
static list(experiment, type=None, tags=None, properties=None, status=None, include_children=False, _rehydrate_runs=True)
Parâmetros
- type
- str
Se especificado, devolve execuções correspondentes ao tipo especificado.
Se especificado, devolve execuções correspondentes às especificadas "tag" ou {"tag": "value"}.
Se especificado, devolve execuções correspondentes a "propriedade" ou {"property": "value"}.
- status
- str
Se especificado, devolve execuções com o estado especificado como "status".
- include_children
- bool
Se estiver definido como verdadeiro, obtenha todas as execuções e não apenas as de nível superior.
- _rehydrate_runs
- bool
Se estiver definido como Verdadeiro (por predefinição), utilizará o fornecedor registado para obter novamente um objeto para esse tipo em vez da execução base.
Devoluções
Uma lista de execuções.
Tipo de retorno
Observações
O seguinte exemplo de código mostra algumas utilizações do list
método .
favorite_completed_runs = Run.list(experiment, status='Completed', tags='favorite')
all_distinct_runs = Run.list(experiment)
and_their_children = Run.list(experiment, include_children=True)
only_script_runs = Run.list(experiment, type=ScriptRun.RUN_TYPE)
list_by_compute
Obtenha uma lista de execuções numa computação especificada por filtros opcionais.
static list_by_compute(compute, type=None, tags=None, properties=None, status=None)
Parâmetros
- type
- str
Se especificado, devolve execuções correspondentes ao tipo especificado.
Se especificado, devolve execuções correspondentes às especificadas "tag" ou {"tag": "value"}.
Se especificado, devolve execuções correspondentes a "propriedade" ou {"property": "value"}.
- status
- str
Se especificado, devolve execuções com o estado especificado como "status". Apenas os valores permitidos são "Em execução" e "Em fila".
Devoluções
um gerador de ~_restclient.models.RunDto
Tipo de retorno
log
Registe um valor de métrica na execução com o nome especificado.
log(name, value, description='', step=None)
Parâmetros
- value
O valor a publicar no serviço.
- step
- int
Um eixo opcional para especificar a ordem dos valores numa métrica.
Observações
Registar uma métrica numa execução faz com que essa métrica seja armazenada no registo de execução na experimentação. Pode registar a mesma métrica várias vezes numa execução, sendo o resultado considerado um vetor dessa métrica. Se o passo for especificado para uma métrica, tem de ser especificado para todos os valores.
log_accuracy_table
Registe uma tabela de precisão no arquivo de artefactos.
A métrica da tabela de precisão é uma métrica multiusos e não escalares que pode ser utilizada para produzir vários tipos de gráficos de linhas que variam continuamente ao longo do espaço de probabilidades previstas. Alguns exemplos destes gráficos são ROC, revocação de precisão e curvas lift.
O cálculo da tabela de precisão é semelhante ao cálculo de uma curva ROC. Uma curva ROC armazena taxas positivas verdadeiras e taxas de falsos positivos em muitos limiares de probabilidade diferentes. A tabela de precisão armazena o número bruto de verdadeiros positivos, falsos positivos, verdadeiros negativos e falsos negativos em muitos limiares de probabilidade.
Existem dois métodos utilizados para selecionar limiares: "probabilidade" e "percentil". Diferem na forma como se amostram do espaço de probabilidades previstas.
Os limiares de probabilidade são limiares espaçados uniformemente entre 0 e 1. Se NUM_POINTS for 5, os limiares de probabilidade serão [0,0, 0,25, 0,5, 0,75, 1,0].
Os limiares de percentil são espaçados de acordo com a distribuição das probabilidades previstas. Cada limiar corresponde ao percentil dos dados num limiar de probabilidade. Por exemplo, se NUM_POINTS for 5, o primeiro limiar seria no percentil 0, o segundo no percentil 25, o terceiro no 50º, etc.
As tabelas de probabilidade e as tabelas de percentil são ambas listas 3D em que a primeira dimensão representa a etiqueta de classe, a segunda dimensão representa a amostra num limiar (dimensiona com NUM_POINTS) e a terceira dimensão tem sempre 4 valores: TP, FP, TN, FN e sempre por essa ordem.
Os valores de confusão (TP, FP, TN, FN) são calculados com a estratégia de um vs. rest. Veja a seguinte ligação para obter mais detalhes: https://en.wikipedia.org/wiki/Multiclass_classification
N = n. de amostras no conjunto de dados de validação (200, por exemplo) M = limiares # = # amostras obtidas a partir do espaço de probabilidade (5, por exemplo) C = classes # no conjunto de dados completo (3, por exemplo)
Algumas invariáveis da tabela de precisão:
- TP + FP + TN + FN = N para todos os limiares para todas as classes
- TP + FN é o mesmo em todos os limiares para qualquer classe
- TN + FP é o mesmo em todos os limiares para qualquer classe
- As tabelas de probabilidade e as tabelas de percentil têm a forma [C, M, 4]
Nota: M pode ser qualquer valor e controla a resolução dos gráficos Isto é independente do conjunto de dados, é definido ao calcular métricas e troca espaço de armazenamento, tempo de computação e resolução.
As etiquetas de classe devem ser cadeias, os valores de confusão devem ser números inteiros e os limiares devem ser flutuantes.
log_accuracy_table(name, value, description='')
Parâmetros
Observações
Exemplo de um valor JSON válido:
{
"schema_type": "accuracy_table",
"schema_version": "1.0.1",
"data": {
"probability_tables": [
[
[82, 118, 0, 0],
[75, 31, 87, 7],
[66, 9, 109, 16],
[46, 2, 116, 36],
[0, 0, 118, 82]
],
[
[60, 140, 0, 0],
[56, 20, 120, 4],
[47, 4, 136, 13],
[28, 0, 140, 32],
[0, 0, 140, 60]
],
[
[58, 142, 0, 0],
[53, 29, 113, 5],
[40, 10, 132, 18],
[24, 1, 141, 34],
[0, 0, 142, 58]
]
],
"percentile_tables": [
[
[82, 118, 0, 0],
[82, 67, 51, 0],
[75, 26, 92, 7],
[48, 3, 115, 34],
[3, 0, 118, 79]
],
[
[60, 140, 0, 0],
[60, 89, 51, 0],
[60, 41, 99, 0],
[46, 5, 135, 14],
[3, 0, 140, 57]
],
[
[58, 142, 0, 0],
[56, 93, 49, 2],
[54, 47, 95, 4],
[41, 10, 132, 17],
[3, 0, 142, 55]
]
],
"probability_thresholds": [0.0, 0.25, 0.5, 0.75, 1.0],
"percentile_thresholds": [0.0, 0.01, 0.24, 0.98, 1.0],
"class_labels": ["0", "1", "2"]
}
}
log_confusion_matrix
Registe uma matriz de confusão no arquivo de artefactos.
Isto regista um wrapper à volta da matriz de confusão sklearn. Os dados de métricas contêm as etiquetas de classe e uma lista 2D para a própria matriz. Veja a seguinte ligação para obter mais detalhes sobre como a métrica é calculada: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html
log_confusion_matrix(name, value, description='')
Parâmetros
Observações
Exemplo de um valor JSON válido:
{
"schema_type": "confusion_matrix",
"schema_version": "1.0.0",
"data": {
"class_labels": ["0", "1", "2", "3"],
"matrix": [
[3, 0, 1, 0],
[0, 1, 0, 1],
[0, 0, 1, 0],
[0, 0, 0, 1]
]
}
}
log_image
Registe uma métrica de imagem no registo de execução.
log_image(name, path=None, plot=None, description='')
Parâmetros
- plot
- <xref:matplotlib.pyplot>
O gráfico a registar como uma imagem.
Observações
Utilize este método para registar um ficheiro de imagem ou um gráfico matplotlib para a execução. Estas imagens serão visíveis e comparáveis no registo de execução.
log_list
Registe uma lista de valores de métricas na execução com o nome especificado.
log_list(name, value, description='')
Parâmetros
log_predictions
Registar predições no arquivo de artefactos.
Isto regista uma classificação de métrica que pode ser utilizada para comparar as distribuições de valores de destino verdadeiros com a distribuição de valores previstos para uma tarefa de regressão.
As predições são discretizadas e os desvios padrão são calculados para barras de erro num gráfico de linhas.
log_predictions(name, value, description='')
Parâmetros
Observações
Exemplo de um valor JSON válido:
{
"schema_type": "predictions",
"schema_version": "1.0.0",
"data": {
"bin_averages": [0.25, 0.75],
"bin_errors": [0.013, 0.042],
"bin_counts": [56, 34],
"bin_edges": [0.0, 0.5, 1.0]
}
}
log_residuals
Registar residuais no arquivo de artefactos.
Isto regista os dados necessários para apresentar um histograma de residuais para uma tarefa de regressão. Os residuais são previstos - real.
Deve existir mais uma margem do que o número de contagens. Veja a documentação do histograma numpy para obter exemplos de utilização de contagens e arestas para representar um histograma. https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html
log_residuals(name, value, description='')
Parâmetros
Observações
Exemplo de um valor JSON válido:
{
"schema_type": "residuals",
"schema_version": "1.0.0",
"data": {
"bin_edges": [50, 100, 200, 300, 350],
"bin_counts": [0.88, 20, 30, 50.99]
}
}
log_row
Registe uma métrica de linha na execução com o nome especificado.
log_row(name, description=None, **kwargs)
Parâmetros
Observações
Utilizar log_row
cria uma métrica de tabela com colunas, conforme descrito em kwargs. Cada parâmetro nomeado gera uma coluna com o valor especificado. log_row
pode ser chamado uma vez para registar uma cadeia de identificação arbitrária ou várias vezes num ciclo para gerar uma tabela completa.
citrus = ['orange', 'lemon', 'lime']
sizes = [ 10, 7, 3]
for index in range(len(citrus)):
run.log_row("citrus", fruit = citrus[index], size=sizes[index])
log_table
Registe uma métrica de tabela na execução com o nome especificado.
log_table(name, value, description='')
Parâmetros
- value
- dict
O valor da tabela da métrica, um dicionário onde as chaves são colunas a publicar no serviço.
register_model
Registar um modelo para operacionalização.
register_model(model_name, model_path=None, tags=None, properties=None, model_framework=None, model_framework_version=None, description=None, datasets=None, sample_input_dataset=None, sample_output_dataset=None, resource_configuration=None, **kwargs)
Parâmetros
- model_path
- str
O caminho relativo da cloud para o modelo, por exemplo, "outputs/modelname".
Quando não especificado (Nenhum), model_name
é utilizado como o caminho.
Um dicionário de etiquetas de valor de chave a atribuir ao modelo.
Um dicionário de propriedades de valor de chave a atribuir ao modelo. Estas propriedades não podem ser alteradas após a criação do modelo, no entanto, podem ser adicionados novos pares de valores chave.
- model_framework
- str
A arquitetura do modelo a registar. Arquiteturas atualmente suportadas: TensorFlow, ScikitLearn, Onnx, Custom, Multi
- datasets
- list[(str, AbstractDataset)]
Uma lista de cadeias de identificação onde o primeiro elemento descreve a relação dataset-model e o segundo elemento é o conjunto de dados.
- sample_input_dataset
- AbstractDataset
Opcional. Conjunto de dados de entrada de exemplo para o modelo registado
- sample_output_dataset
- AbstractDataset
Opcional. Conjunto de dados de saída de exemplo para o modelo registado
- resource_configuration
- ResourceConfiguration
Opcional. Configuração de recursos para executar o modelo registado
Devoluções
O modelo registado.
Tipo de retorno
Observações
model = best_run.register_model(model_name = 'best_model', model_path = 'outputs/model.pkl')
remove_tags
Elimine a lista de etiquetas mutáveis nesta execução.
remove_tags(tags)
Parâmetros
Devoluções
As etiquetas armazenadas no objeto de execução
restore_snapshot
Restaurar um instantâneo como um ficheiro ZIP. Devolve o caminho para o ZIP.
restore_snapshot(snapshot_id=None, path=None)
Parâmetros
- snapshot_id
- str
O ID do instantâneo a restaurar. A versão mais recente é utilizada se não for especificada.
Devoluções
O caminho.
Tipo de retorno
set_tags
Adicionar ou modificar um conjunto de etiquetas em execução. As etiquetas não transmitidas no dicionário são deixadas intocadas.
Também pode adicionar etiquetas de cadeia simples. Quando estas etiquetas aparecem no dicionário de etiquetas como chaves, têm um valor de Nenhum. Para obter mais informações, consulte Etiquetar e localizar execuções.
set_tags(tags)
Parâmetros
start
Marcar a execução como iniciada.
Normalmente, isto é utilizado em cenários avançados quando a execução foi criada por outro ator.
start()
submit_child
Submeta uma experimentação e devolva a execução subordinada ativa.
submit_child(config, tags=None, **kwargs)
Parâmetros
- tags
- dict
Etiquetas a adicionar à execução submetida, por exemplo, {"tag": "value"}.
Devoluções
Um objeto de execução.
Tipo de retorno
Observações
Submeter é uma chamada assíncrona para a plataforma do Azure Machine Learning para executar uma avaliação em hardware local ou remoto. Consoante a configuração, a submissão irá preparar automaticamente os ambientes de execução, executar o código e capturar o código fonte e os resultados no histórico de execuções da experimentação.
Para submeter uma experimentação, primeiro tem de criar um objeto de configuração que descreva como a experimentação deve ser executada. A configuração depende do tipo de avaliação necessário.
Um exemplo de como submeter uma experimentação subordinada a partir do seu computador local com ScriptRunConfig é o seguinte:
from azureml.core import ScriptRunConfig
# run a trial from the train.py code in your current directory
config = ScriptRunConfig(source_directory='.', script='train.py',
run_config=RunConfiguration())
run = parent_run.submit_child(config)
# get the url to view the progress of the experiment and then wait
# until the trial is complete
print(run.get_portal_url())
run.wait_for_completion()
Para obter detalhes sobre como configurar uma execução, consulte submit.
tag
Marque a execução com uma chave de cadeia e um valor de cadeia opcional.
tag(key, value=None)
Parâmetros
Observações
As etiquetas e propriedades numa execução são ambos dicionários de cadeia -> cadeia. A diferença entre as mesmas é a mutabilidade: as etiquetas podem ser definidas, atualizadas e eliminadas, enquanto as Propriedades só podem ser adicionadas. Isto torna as Propriedades mais adequadas para acionadores de comportamento relacionados com o sistema/fluxo de trabalho, enquanto as Etiquetas são geralmente direcionadas para o utilizador e significativas para os consumidores da experimentação.
run = experiment.start_logging()
run.tag('DeploymentCandidate')
run.tag('modifiedBy', 'Master CI')
run.tag('modifiedBy', 'release pipeline') # Careful, tags are mutable
run.add_properties({'BuildId': os.environ.get('VSTS_BUILD_ID')}) # Properties are not
tags = run.get_tags()
# tags = { 'DeploymentCandidate': None, 'modifiedBy': 'release pipeline' }
take_snapshot
Guarde um instantâneo do ficheiro ou pasta de entrada.
take_snapshot(file_or_folder_path)
Parâmetros
Devoluções
Devolve o ID do instantâneo.
Tipo de retorno
Observações
Os instantâneos destinam-se a ser o código fonte utilizado para executar a execução da experimentação. Estes são armazenados com a execução para que a versão de avaliação de execução possa ser replicada no futuro.
Nota
Os instantâneos são automaticamente tirados quando submit são chamados. Normalmente, este método de take_snapshot só é necessário para execuções interativas (blocos de notas).
upload_file
Carregue um ficheiro para o registo de execução.
upload_file(name, path_or_stream, datastore_name=None)
Parâmetros
- path_or_stream
- str
O caminho local relativo ou a transmissão em fluxo para o ficheiro a carregar.
Tipo de retorno
Observações
run = experiment.start_logging()
run.upload_file(name='important_file', path_or_stream="path/on/disk/file.txt")
Nota
É executado automaticamente o ficheiro de captura no diretório de saída especificado, que é predefinido para "./outputs" para a maioria dos tipos de execução. Utilize upload_file apenas quando precisar de carregar ficheiros adicionais ou se não for especificado um diretório de saída.
upload_files
Carregue ficheiros para o registo de execução.
upload_files(names, paths, return_artifacts=False, timeout_seconds=None, datastore_name=None)
Parâmetros
- names
- list
Os nomes dos ficheiros a carregar. Se estiver definido, os caminhos também têm de ser definidos.
- paths
- list
Os caminhos locais relativos para os ficheiros a carregar. Se estiver definido, os nomes são necessários.
- return_artifacts
- bool
Indica que deve ser devolvido um objeto de artefacto para cada ficheiro carregado.
Observações
upload_files
tem o mesmo efeito que upload_file
em ficheiros separados, no entanto, existem benefícios de desempenho e utilização de recursos ao utilizar upload_files
.
import os
run = experiment.start_logging()
file_name_1 = 'important_file_1'
file_name_2 = 'important_file_2'
run.upload_files(names=[file_name_1, file_name_2],
paths=['path/on/disk/file_1.txt', 'other/path/on/disk/file_2.txt'])
run.download_file(file_name_1, 'file_1.txt')
os.mkdir("path") # The path must exist
run.download_file(file_name_2, 'path/file_2.txt')
Nota
As execuções capturam automaticamente ficheiros no diretório de saída especificado, que é predefinido para "./outputs" para a maioria dos tipos de execução. Utilize upload_files apenas quando precisar de carregar ficheiros adicionais ou se não for especificado um diretório de saída.
upload_folder
Carregue a pasta especificada para o nome do prefixo especificado.
upload_folder(name, path, datastore_name=None)
Parâmetros
Observações
run = experiment.start_logging()
run.upload_folder(name='important_files', path='path/on/disk')
run.download_file('important_files/existing_file.txt', 'local_file.txt')
Nota
As execuções capturam automaticamente ficheiros no diretório de saída especificado, que é predefinido para "./outputs" para a maioria dos tipos de execução. Utilize upload_folder apenas quando precisar de carregar ficheiros adicionais ou se não for especificado um diretório de saída.
wait_for_completion
Aguarde pela conclusão desta execução. Devolve o objeto de estado após a espera.
wait_for_completion(show_output=False, wait_post_processing=False, raise_on_error=True)
Parâmetros
- show_output
- bool
Indica se pretende mostrar o resultado da execução em sys.stdout.
- wait_post_processing
- bool
Indica se deve aguardar a conclusão do pós-processamento após a conclusão da execução.
- raise_on_error
- bool
Indica se é gerado um Erro quando a execução está num estado de falha.
Devoluções
O objeto de estado.
Tipo de retorno
Atributos
description
Devolva a descrição da execução.
A descrição opcional da execução é uma cadeia especificada pelo utilizador útil para descrever uma execução.
Devoluções
A descrição da execução.
Tipo de retorno
display_name
Devolva o nome a apresentar da execução.
O nome a apresentar opcional da execução é uma cadeia especificada pelo utilizador útil para identificação posterior da execução.
Devoluções
O nome a apresentar da execução.
Tipo de retorno
experiment
Obtenha a experimentação que contém a execução.
Devoluções
Obtém a experimentação correspondente à execução.
Tipo de retorno
id
Obtenha o ID de execução.
O ID da execução é um identificador exclusivo na experimentação que contém.
Devoluções
O ID de execução.
Tipo de retorno
name
PRETERIDO. Utilize display_name.
O nome opcional da execução é uma cadeia especificada pelo utilizador útil para identificação posterior da execução.
Devoluções
O ID de execução.
Tipo de retorno
number
Obtenha o número de execução.
Um número monotonicamente crescente que representa a ordem das execuções numa experimentação.
Devoluções
O número de execução.
Tipo de retorno
parent
Obtenha a execução principal para esta execução a partir do serviço.
As execuções podem ter um elemento principal opcional, o que resulta numa potencial hierarquia de árvores de execuções. Para registar métricas numa execução principal, utilize o log método do objeto principal, por exemplo, run.parent.log()
.
Devoluções
A execução principal ou Nenhuma se não estiver definida.
Tipo de retorno
properties
Devolva as propriedades imutáveis desta execução.
Devoluções
As propriedades em cache local da execução.
Tipo de retorno
Observações
As propriedades incluem informações imutáveis geradas pelo sistema, como duração, data de execução, utilizador, etc.
status
Devolver o estado do objeto de execução.
tags
Devolva o conjunto de etiquetas mutáveis nesta execução.
Devoluções
As etiquetas armazenadas no objeto de execução.
Tipo de retorno
type
Obter tipo de execução.
Indica como a execução foi criada ou configurada.
Devoluções
O tipo de execução.
Tipo de retorno
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários