Run 類別
定義所有 Azure Machine Learning 實驗執行的基類。
回合代表實驗的單一試用版。 執行可用來監視試用版的非同步執行、記錄計量和儲存試用版的輸出,以及分析試用版所產生的結果和存取成品。
當您提交腳本以在 Azure Machine Learning 的許多不同案例中定型模型時,會建立執行物件,包括 HyperDrive 執行、管線執行和 AutoML 執行。 當您 submit 或 start_logging 使用 Experiment 類別時,也會建立 Run 物件。
若要開始使用實驗和執行,請參閱
初始化 Run 物件。
- 繼承
-
azureml._run_impl.run_base._RunBaseRun
建構函式
Run(experiment, run_id, outputs=None, **kwargs)
參數
名稱 | Description |
---|---|
experiment
必要
|
包含實驗的 。 |
run_id
必要
|
執行的識別碼。 |
outputs
|
要追蹤的輸出。 預設值: None
|
_run_dto
必要
|
<xref:azureml._restclient.models.run_dto.RunDto>
僅供內部使用。 |
kwargs
必要
|
其他組態參數的字典。 |
experiment
必要
|
包含實驗的 。 |
run_id
必要
|
執行的識別碼。 |
outputs
必要
|
要追蹤的輸出。 |
kwargs
必要
|
其他組態參數的字典。 |
備註
回合代表實驗的單一試用版。 Run 物件可用來監視試用版的非同步執行、記錄計量和儲存試用版的輸出,以及分析試用所產生的結果和存取成品。
測試程式碼內會使用 Run Run,將計量和成品記錄到執行歷程記錄服務。
執行會在實驗之外用來監視進度,以及查詢及分析產生的計量和結果。
Run 的功能包括:
儲存和擷取計量和資料
上傳和下載檔案
使用標記和子階層,輕鬆查閱過去的執行
將預存的模型檔案註冊為可運作的模型
儲存、修改及擷取執行的屬性
使用 get_context 方法從遠端環境載入目前的執行
有效率地建立檔案或目錄的快照,以便重現
此類別適用于 Experiment 下列案例中的 :
使用 執行程式碼來建立執行 submit
使用 在筆記本中以互動方式建立執行 start_logging
記錄計量並在實驗中上傳成品,例如使用時 log
在分析實驗結果時讀取計量和下載成品,例如使用時 get_metrics
若要提交回合,請建立描述實驗執行方式的組態物件。 以下是您可以使用的不同組態物件的範例:
azureml.train.automl.automlconfig.AutoMLConfig
azureml.train.hyperdrive.HyperDriveConfig
azureml.pipeline.core.Pipeline
azureml.pipeline.core.PublishedPipeline
azureml.pipeline.core.PipelineEndpoint
訓練實驗時,可以將下列計量新增到執行中。
純量
使用 log 將數值或字串值記錄至具有指定名稱的執行。 將計量記錄到執行中,會導致該計量儲存在實驗的執行記錄中。 您可以在執行中多次記錄相同的計量,結果會視為該計量的向量。
範例:
run.log("accuracy", 0.95)
List
使用 log_list 將值清單記錄至具有指定名稱的執行。
範例:
run.log_list("accuracies", [0.6, 0.7, 0.87])
資料列
使用 log_row 會建立具有多個資料行的計量,如 中所述
kwargs
。 每個具名的參數都會產生一個具有指定值的資料行。log_row
可以呼叫一次以記錄任意 Tuple,或在迴圈中多次產生完整資料表。範例:
run.log_row("Y over X", x=1, y=0.4)
資料表
使用 log_table 將字典物件記錄至具有指定名稱的執行。
範例:
run.log_table("Y over X", {"x":[1, 2, 3], "y":[0.6, 0.7, 0.89]})
映像
將映像記錄到執行記錄中。 使用 log_image 將影像檔或 matplotlib 繪圖記錄到執行。 這些映像會顯示在執行記錄中,並可供比較。
範例:
run.log_image("ROC", path)
方法
add_properties |
將不可變的屬性新增至執行。 標籤和屬性 (dict[str, str]) 其可變性不同。 屬性是不可變的,因此屬性會建立用於進行稽核的永久記錄。 標籤是可變動的。 如需使用標記和屬性的詳細資訊,請參閱 標記和尋找執行。 |
add_type_provider |
儲存在執行歷程記錄中的自訂執行類型擴充性勾點。 |
cancel |
將執行標示為已取消。 如果有與集合cancel_uri欄位相關聯的作業,也請終止該作業。 |
child_run |
建立子執行。 |
clean |
移除對應至執行組態中所指定目標上目前執行的檔案。 |
complete |
等候工作佇列進行處理。 然後執行會標示為已完成。 這通常用於互動式 Notebook 環境。 |
create_children |
建立一或多個子執行。 |
download_file |
從儲存體下載相關聯的檔案。 |
download_files |
如果未指定前置詞,請從指定的儲存體前置詞 (資料夾名稱下載檔案) 或整個容器。 |
fail |
將執行標示為失敗。 選擇性地設定 Run 的 Error 屬性,並傳遞至 |
flush |
等候工作佇列進行處理。 |
get |
取得此工作區的執行及其執行識別碼。 |
get_all_logs |
將執行的所有記錄下載至目錄。 |
get_children |
取得指定篩選所選取目前執行的所有子系。 |
get_context |
傳回目前的服務內容。 使用這個方法來擷取記錄計量和上傳檔案的目前服務內容。 如果 為 |
get_detailed_status |
擷取執行的最新狀態。 如果執行的狀態為「已排入佇列」,則會顯示詳細資料。 |
get_details |
取得執行的定義、狀態資訊、目前的記錄檔和其他詳細資料。 |
get_details_with_logs |
傳回執行狀態,包括記錄檔內容。 |
get_environment |
取得此執行所使用的環境定義。 |
get_file_names |
列出與執行相關聯的儲存檔案。 |
get_metrics |
擷取記錄至執行的計量。 如果 |
get_properties |
從服務擷取執行的最新屬性。 |
get_secret |
從執行的內容取得秘密值。 取得所提供名稱的秘密值。 秘密名稱會參考與工作區相關聯的 Azure 金鑰保存庫中所儲存的值。 如需使用秘密的範例,請參閱 在定型回合中使用秘密。 |
get_secrets |
取得指定秘密名稱清單的秘密值。 取得所提供名稱清單的找到和找不到秘密的字典。 每個秘密名稱都會參考與工作區相關聯的 Azure 金鑰保存庫中所儲存的值。 如需使用秘密的範例,請參閱 在定型回合中使用秘密。 |
get_snapshot_id |
取得最新的快照集識別碼。 |
get_status |
擷取執行的最新狀態。 傳回的常見值包括「執行中」、「已完成」和「失敗」。 |
get_submitted_run |
已淘汰。 請使用 get_context。 取得此實驗的提交回合。 |
get_tags |
從服務擷取執行時的最新一組可變動標記。 |
list |
取得選擇性篩選所指定實驗中的執行清單。 |
list_by_compute |
在選擇性篩選所指定的計算中取得執行清單。 |
log |
使用指定名稱將計量值記錄到執行中。 |
log_accuracy_table |
將精確度資料表記錄到成品存放區。 精確度資料表計量是一種多用途的非純量計量,可用來產生多種折線圖類型,這些折線圖會隨著預測機率的空間而持續變化。 這些圖表的範例包括 ROC、精確度召回率和增益曲線。 精確度資料表的計算類似于 ROC 曲線的計算。 ROC 曲線會以許多不同的機率臨界值來儲存真肯定率和誤判率。 精確度資料表會儲存許多機率臨界值的原始真數、誤判、真負數和誤判。 選取臨界值的方法有兩種:「probability」 和 「percentile」。它們與預測機率的空間取樣方式不同。 機率臨界值是介於 0 到 1 之間的統一間距臨界值。 如果NUM_POINTS為 5,機率臨界值會是 [0.0, 0.25, 0.5, 0.75, 1.0]。 百分位數閾值會根據預測機率的分佈來分隔。 每個臨界值都會對應至機率臨界值的資料百分位數。 例如,如果NUM_POINTS為 5,則第一個臨界值會是第 0 個百分位數、第二個百分位數為第 25 個百分位數、第三個百分位數,依此類傳。 機率資料表和百分位數資料表都是 3D 清單,其中第 (一個維度代表類別標籤,第二個維度代表具有NUM_POINTS) 的臨界值,而第三個維度一律有 4 個值:TP、FP、TN、FN,且一律依該順序排列。 TP、FP、TN、FN) (混淆值是使用一個與其余策略來計算。 如需詳細資訊,請參閱下列連結: https://en.wikipedia.org/wiki/Multiclass_classification 範例) M = # thresholds = # samples in example (200 中的範例 (200 # samples,取自範例中 (5 的機率空間) C = # 類別 (3,例如) 精確度資料表的一些不變數:
注意:M 可以是任何值,並控制圖表的解析度:這與資料集無關、在計算計量時定義,以及取捨儲存空間、計算時間和解析。 類別標籤應該是字串、混淆值應該是整數,而臨界值應該是浮點數。 |
log_confusion_matrix |
將混淆矩陣記錄至成品存放區。 這會記錄 sklearn 混淆矩陣周圍的包裝函式。 計量資料包含矩陣本身的類別標籤和 2D 清單。 如需如何計算計量的詳細資訊,請參閱下列連結: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html |
log_image |
記錄映像計量以執行記錄。 |
log_list |
使用指定名稱將計量值清單記錄至執行。 |
log_predictions |
將預測記錄至成品存放區。 這會記錄計量分數,可用來比較真實目標值的分佈與回歸工作的預測值分佈。 預測會量化,而標準差會針對折線圖上的誤差線計算。 |
log_residuals |
將剩餘記錄到成品存放區。 這會記錄顯示回歸工作殘差長條圖所需的資料。 預測殘差 - 實際。 應該有一個比計數數目更多的邊緣。 如需使用計數和邊緣來代表長條圖的範例,請參閱 numpy 長條圖檔。 https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html |
log_row |
使用指定名稱將資料列計量記錄至執行。 |
log_table |
使用指定名稱將資料表計量記錄到執行中。 |
register_model |
註冊模型以進行作業化。 |
remove_tags |
刪除此執行時可變動標記的清單。 |
restore_snapshot |
將快照集還原為 ZIP 檔案。 傳回 ZIP 的路徑。 |
set_tags |
在執行時新增或修改一組標記。 未在字典中傳遞的標籤會保持不變。 您也可以新增簡單的字串標記。 當這些標籤以索引鍵的形式出現在標籤字典中時,它們的值為 None。 如需詳細資訊,請參閱 標記和尋找執行。 |
start |
將執行標示為已啟動。 當執行已由另一個動作專案建立時,這通常用於進階案例。 |
submit_child |
提交實驗並傳回作用中的子回合。 |
tag |
使用字串索引鍵和可選字串值標記執行。 |
take_snapshot |
儲存輸入檔或資料夾的快照集。 |
upload_file |
將檔案上傳到執行記錄。 |
upload_files |
將檔案上傳至執行記錄。 |
upload_folder |
將指定的資料夾上傳至指定的前置詞名稱。 |
wait_for_completion |
等候此執行完成。 在等候之後傳回狀態物件。 |
add_properties
將不可變的屬性新增至執行。
標籤和屬性 (dict[str, str]) 其可變性不同。 屬性是不可變的,因此屬性會建立用於進行稽核的永久記錄。 標籤是可變動的。 如需使用標記和屬性的詳細資訊,請參閱 標記和尋找執行。
add_properties(properties)
參數
名稱 | Description |
---|---|
properties
必要
|
儲存在 run 物件中的隱藏屬性。 |
add_type_provider
儲存在執行歷程記錄中的自訂執行類型擴充性勾點。
static add_type_provider(runtype, run_factory)
參數
名稱 | Description |
---|---|
runtype
必要
|
將叫用處理站的 Run.type 值。 範例包括 'hyperdrive' 或 'azureml.scriptrun',但可以使用自訂類型來擴充。 |
run_factory
必要
|
<xref:function>
具有簽章的函式 (實驗、RunDto) - > 列出執行時要叫用的執行。 |
cancel
將執行標示為已取消。
如果有與集合cancel_uri欄位相關聯的作業,也請終止該作業。
cancel()
child_run
建立子執行。
child_run(name=None, run_id=None, outputs=None)
參數
名稱 | Description |
---|---|
name
|
子回合的選擇性名稱,通常為 「part」 指定。 預設值: None
|
run_id
|
子系的選擇性執行識別碼,否則會自動產生。 通常未設定此參數。 預設值: None
|
outputs
|
要追蹤子系的選擇性輸出目錄。 預設值: None
|
傳回
類型 | Description |
---|---|
子執行。 |
備註
這可用來隔離子區段的一部分。 這可以針對有趣的執行「元件」進行識別,或擷取子進程交錯之間的獨立計量。
如果已為子執行設定輸出目錄,當子系完成時,該目錄的內容將會上傳至子執行記錄。
clean
complete
等候工作佇列進行處理。
然後執行會標示為已完成。 這通常用於互動式 Notebook 環境。
complete(_set_status=True)
參數
名稱 | Description |
---|---|
_set_status
|
指出是否要傳送狀態事件以進行追蹤。 預設值: True
|
create_children
建立一或多個子執行。
create_children(count=None, tag_key=None, tag_values=None)
參數
名稱 | Description |
---|---|
count
|
要建立的選擇性子係數目。 預設值: None
|
tag_key
|
選擇性索引鍵,可填入所有已建立子系中的 Tags 專案。 預設值: None
|
tag_Values
必要
|
將對應至所建立執行清單之 Tags[tag_key] 的選擇性值清單。 |
tag_values
|
預設值: None
|
傳回
類型 | Description |
---|---|
子執行的清單。 |
備註
必須指定任一參數 count
OR 參數 tag_key
AND tag_values
。
download_file
從儲存體下載相關聯的檔案。
download_file(name, output_file_path=None, _validate_checksum=False)
參數
名稱 | Description |
---|---|
name
必要
|
要下載之成品的名稱。 |
output_file_path
必要
|
要儲存成品的本機路徑。 |
download_files
如果未指定前置詞,請從指定的儲存體前置詞 (資料夾名稱下載檔案) 或整個容器。
download_files(prefix=None, output_directory=None, output_paths=None, batch_size=100, append_prefix=True, timeout_seconds=None)
參數
名稱 | Description |
---|---|
prefix
必要
|
要從中下載所有成品之容器內的 filepath 前置詞。 |
output_directory
必要
|
所有成品路徑都用來作為前置詞的選擇性目錄。 |
output_paths
必要
|
[str]
要在其中儲存已下載成品的選擇性檔案路徑。 路徑長度應是唯一且相符的。 |
batch_size
必要
|
每個批次要下載的檔案數目。 預設值為 100 個檔案。 |
append_prefix
必要
|
選擇性旗標,是否要從最終輸出檔路徑附加指定的前置詞。 如果為 False,則會從輸出檔案路徑中移除前置詞。 |
timeout_seconds
必要
|
下載檔案的逾時。 |
fail
將執行標示為失敗。
選擇性地設定 Run 的 Error 屬性,並傳遞至 error_details
的訊息或例外狀況。
fail(error_details=None, error_code=None, _set_status=True)
參數
名稱 | Description |
---|---|
error_details
|
錯誤的選擇性詳細資料。 預設值: None
|
error_code
|
錯誤分類的錯誤選擇性錯誤碼。 預設值: None
|
_set_status
|
指出是否要傳送狀態事件以進行追蹤。 預設值: True
|
flush
等候工作佇列進行處理。
flush(timeout_seconds=300)
參數
名稱 | Description |
---|---|
timeout_seconds
|
等候 (多久,) 才能處理工作佇列。 預設值: 300
|
get
取得此工作區的執行及其執行識別碼。
static get(workspace, run_id)
參數
名稱 | Description |
---|---|
workspace
必要
|
包含工作區。 |
run_id
必要
|
執行識別碼。 |
傳回
類型 | Description |
---|---|
提交的執行。 |
get_all_logs
將執行的所有記錄下載至目錄。
get_all_logs(destination=None)
參數
名稱 | Description |
---|---|
destination
|
儲存記錄的目的地路徑。 如果未指定,則會在專案目錄中建立名為 的執行識別碼的目錄。 預設值: None
|
傳回
類型 | Description |
---|---|
已下載的記錄名稱清單。 |
get_children
取得指定篩選所選取目前執行的所有子系。
get_children(recursive=False, tags=None, properties=None, type=None, status=None, _rehydrate_runs=True)
參數
名稱 | Description |
---|---|
recursive
|
指出是否要遞迴所有子系。 預設值: False
|
tags
|
如果指定,則會傳回符合指定 「tag」 或 {「tag」: 「value」} 的執行。 預設值: None
|
properties
|
如果指定,則會傳回符合指定 「property」 或 {「property」: 「value」} 的執行。 預設值: None
|
type
|
如果指定,則會傳回符合此類型的執行。 預設值: None
|
status
|
如果指定,則會傳回狀態指定 為 「status」 的執行。 預設值: None
|
_rehydrate_runs
|
指出要具現化原始類型或基底 Run 的執行。 預設值: True
|
傳回
類型 | Description |
---|---|
Run 物件的清單。 |
get_context
傳回目前的服務內容。
使用這個方法來擷取記錄計量和上傳檔案的目前服務內容。 如果 為 allow_offline
True (預設) ,則會列印 Run 物件的動作以標準輸出。
get_context(allow_offline=True, used_for_context_manager=False, **kwargs)
參數
名稱 | Description |
---|---|
cls
必要
|
表示類別方法。 |
allow_offline
|
允許服務內容回復為離線模式,以便在本機測試定型腳本,而不需使用 SDK 提交作業。 預設為 true。 預設值: True
|
kwargs
必要
|
其他參數的字典。 |
used_for_context_manager
|
預設值: False
|
傳回
類型 | Description |
---|---|
提交的執行。 |
備註
此函式通常用於擷取要透過 experiment.submit () 提交執行之腳本內的已驗證 Run 物件。 此執行物件同時是與 Azure Machine Learning 服務通訊的已驗證內容,以及包含計量、檔案 (成品) 和模型的概念容器。
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
擷取執行的最新狀態。 如果執行的狀態為「已排入佇列」,則會顯示詳細資料。
get_detailed_status()
傳回
類型 | Description |
---|---|
最新狀態和詳細資料 |
備註
status:執行目前的狀態。 與從 get_status () 傳回的值相同。
詳細資料:目前狀態的詳細資訊。
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
取得執行的定義、狀態資訊、目前的記錄檔和其他詳細資料。
get_details()
傳回
類型 | Description |
---|---|
傳回執行的詳細資料 |
備註
傳回的字典包含下列機碼/值組:
runId:此回合的識別碼。
目標
status:執行目前的狀態。 與從 get_status () 傳回的值相同。
startTimeUtc:ISO8601 中啟動此執行時的 UTC 時間。
endTimeUtc:ISO8601 中此執行完成 (完成或失敗) 的 UTC 時間。
如果執行仍在進行中,則不存在此索引鍵。
屬性:與回合相關聯的不可變索引鍵/值組。 如果有任何) ,預設屬性包括執行快照集識別碼,以及建立執行所在 git 存放庫的相關資訊 (。 您可以使用 將其他屬性新增至執行 add_properties 。
inputDatasets:與執行相關聯的輸入資料集。
outputDatasets:輸出與執行相關聯的資料集。
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
get_environment
get_file_names
get_metrics
擷取記錄至執行的計量。
如果 recursive
預設為 True (False) ,則擷取指定回合子樹中執行的計量。
get_metrics(name=None, recursive=False, run_type=None, populate=False)
參數
名稱 | Description |
---|---|
name
|
計量的名稱。 預設值: None
|
recursive
|
指出是否要遞迴所有子系。 預設值: False
|
run_type
|
預設值: None
|
populate
|
指出是否要擷取連結至計量的外部資料內容。 預設值: False
|
傳回
類型 | Description |
---|---|
包含使用者計量的字典。 |
備註
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
從服務擷取執行的最新屬性。
get_properties()
傳回
類型 | Description |
---|---|
執行的屬性。 |
備註
屬性是不可變的系統產生資訊,例如持續時間、執行日期、使用者,以及使用 方法新增的 add_properties 自訂屬性。 如需詳細資訊,請參閱 標記和尋找執行。
將作業提交至 Azure Machine Learning 時,如果來源檔案儲存在本機 Git 存放庫中,則會將存放庫的相關資訊儲存為屬性。 建立執行或呼叫 Experiment.submit 時,會新增這些 git 屬性。 如需 Git 屬性的詳細資訊,請參閱 Azure Machine Learning 的 Git 整合。
get_secret
從執行的內容取得秘密值。
取得所提供名稱的秘密值。 秘密名稱會參考與工作區相關聯的 Azure 金鑰保存庫中所儲存的值。 如需使用秘密的範例,請參閱 在定型回合中使用秘密。
get_secret(name)
參數
名稱 | Description |
---|---|
name
必要
|
要傳回秘密的秘密名稱。 |
傳回
類型 | Description |
---|---|
秘密值。 |
get_secrets
取得指定秘密名稱清單的秘密值。
取得所提供名稱清單的找到和找不到秘密的字典。 每個秘密名稱都會參考與工作區相關聯的 Azure 金鑰保存庫中所儲存的值。 如需使用秘密的範例,請參閱 在定型回合中使用秘密。
get_secrets(secrets)
參數
名稱 | Description |
---|---|
secrets
必要
|
要傳回秘密值的秘密名稱清單。 |
傳回
類型 | Description |
---|---|
傳回找到且找不到秘密的字典。 |
get_snapshot_id
get_status
擷取執行的最新狀態。
傳回的常見值包括「執行中」、「已完成」和「失敗」。
get_status()
傳回
類型 | Description |
---|---|
最新狀態。 |
備註
NotStarted - 這是雲端提交之前,用戶端 Run 物件的暫時狀態。
啟動 - 執行已在雲端中開始處理。 呼叫端此時有執行識別碼。
布建 - 針對指定的作業提交建立隨選計算時傳回。
準備 - 正在準備執行環境:
docker 映射組建
conda 環境設定
已排入佇列 - 作業已排入計算目標中的佇列。 例如,在 BatchAI 中,作業處於佇列狀態
等候所有要求的節點準備就緒時。
執行 - 作業已開始在計算目標中執行。
完成 - 使用者程式碼已完成,且執行處於後續處理階段。
CancelRequested - 作業已要求取消。
已完成 - 執行成功完成。 這包括使用者程式碼和執行
後續處理階段。
失敗 - 執行失敗。 執行上的 Error 屬性通常會提供原因的詳細資料。
已取消 - 遵循取消要求,並指出現在已成功取消執行。
NotResponding - 針對已啟用活動訊號的執行,最近不會傳送活動訊號。
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
get_tags
list
取得選擇性篩選所指定實驗中的執行清單。
static list(experiment, type=None, tags=None, properties=None, status=None, include_children=False, _rehydrate_runs=True)
參數
名稱 | Description |
---|---|
experiment
必要
|
包含實驗的 。 |
type
|
如果指定,則會傳回符合指定類型的執行。 預設值: None
|
tags
|
如果指定,則會傳回符合指定 「tag」 或 {「tag」: 「value」} 的執行。 預設值: None
|
properties
|
如果指定,則會傳回符合指定 「property」 或 {「property」: 「value」} 的執行。 預設值: None
|
status
|
如果指定,則會傳回狀態為指定的 「狀態」的執行。 預設值: None
|
include_children
|
如果設定為 true,則擷取所有執行,不只擷取最上層執行。 預設值: False
|
_rehydrate_runs
|
如果預設設定為 True () ,則會使用已註冊的提供者來重新設定該類型的 物件,而不是基底 Run。 預設值: True
|
傳回
類型 | Description |
---|---|
執行清單。 |
備註
下列程式碼範例顯示 方法的 list
一些用法。
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
在選擇性篩選所指定的計算中取得執行清單。
static list_by_compute(compute, type=None, tags=None, properties=None, status=None)
參數
名稱 | Description |
---|---|
compute
必要
|
包含計算的 。 |
type
|
如果指定,則會傳回符合指定類型的執行。 預設值: None
|
tags
|
如果指定,則會傳回符合指定 「tag」 或 {「tag」: 「value」} 的執行。 預設值: None
|
properties
|
如果指定,則會傳回符合指定 「property」 或 {「property」: 「value」} 的執行。 預設值: None
|
status
|
如果指定,則會傳回狀態為指定的 「狀態」的執行。 只有允許的值是「執行中」和「已排入佇列」。 預設值: None
|
傳回
類型 | Description |
---|---|
<xref:builtin.generator>
|
~_restclient.models.RunDto 的產生器 |
log
使用指定名稱將計量值記錄到執行中。
log(name, value, description='', step=None)
參數
名稱 | Description |
---|---|
name
必要
|
計量的名稱。 |
value
必要
|
要張貼至服務的值。 |
description
必要
|
選擇性計量描述。 |
step
|
選擇性座標軸,可在計量內指定值順序。 預設值: None
|
備註
將計量記錄到執行中,會導致該計量儲存在實驗的執行記錄中。 您可以在執行中多次記錄相同的計量,結果會視為該計量的向量。 如果已針對計量指定步驟,則必須針對所有值指定。
log_accuracy_table
將精確度資料表記錄到成品存放區。
精確度資料表計量是一種多用途的非純量計量,可用來產生多種折線圖類型,這些折線圖會隨著預測機率的空間而持續變化。 這些圖表的範例包括 ROC、精確度召回率和增益曲線。
精確度資料表的計算類似于 ROC 曲線的計算。 ROC 曲線會以許多不同的機率臨界值來儲存真肯定率和誤判率。 精確度資料表會儲存許多機率臨界值的原始真數、誤判、真負數和誤判。
選取臨界值的方法有兩種:「probability」 和 「percentile」。它們與預測機率的空間取樣方式不同。
機率臨界值是介於 0 到 1 之間的統一間距臨界值。 如果NUM_POINTS為 5,機率臨界值會是 [0.0, 0.25, 0.5, 0.75, 1.0]。
百分位數閾值會根據預測機率的分佈來分隔。 每個臨界值都會對應至機率臨界值的資料百分位數。 例如,如果NUM_POINTS為 5,則第一個臨界值會是第 0 個百分位數、第二個百分位數為第 25 個百分位數、第三個百分位數,依此類傳。
機率資料表和百分位數資料表都是 3D 清單,其中第 (一個維度代表類別標籤,第二個維度代表具有NUM_POINTS) 的臨界值,而第三個維度一律有 4 個值:TP、FP、TN、FN,且一律依該順序排列。
TP、FP、TN、FN) (混淆值是使用一個與其余策略來計算。 如需詳細資訊,請參閱下列連結: https://en.wikipedia.org/wiki/Multiclass_classification
範例) M = # thresholds = # samples in example (200 中的範例 (200 # samples,取自範例中 (5 的機率空間) C = # 類別 (3,例如)
精確度資料表的一些不變數:
- TP + FP + TN + FN = N 代表所有類別的所有閾值
- TP + FN 在任何類別的所有閾值都相同
- TN + FP 在任何類別的所有閾值都相同
- 機率資料表和百分位數資料表具有圖形 [C、M、4]
注意:M 可以是任何值,並控制圖表的解析度:這與資料集無關、在計算計量時定義,以及取捨儲存空間、計算時間和解析。
類別標籤應該是字串、混淆值應該是整數,而臨界值應該是浮點數。
log_accuracy_table(name, value, description='')
參數
名稱 | Description |
---|---|
name
必要
|
精確度資料表的名稱。 |
value
必要
|
包含名稱、版本和資料屬性的 JSON。 |
description
必要
|
選擇性計量描述。 |
備註
有效 JSON 值的範例:
{
"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
將混淆矩陣記錄至成品存放區。
這會記錄 sklearn 混淆矩陣周圍的包裝函式。 計量資料包含矩陣本身的類別標籤和 2D 清單。 如需如何計算計量的詳細資訊,請參閱下列連結: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html
log_confusion_matrix(name, value, description='')
參數
名稱 | Description |
---|---|
name
必要
|
混淆矩陣的名稱。 |
value
必要
|
包含名稱、版本和資料屬性的 JSON。 |
description
必要
|
選擇性計量描述。 |
備註
有效 JSON 值的範例:
{
"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
記錄映像計量以執行記錄。
log_image(name, path=None, plot=None, description='')
參數
名稱 | Description |
---|---|
name
必要
|
計量的名稱。 |
path
必要
|
影像的路徑或資料流程。 |
plot
必要
|
<xref:matplotlib.pyplot>
要記錄為影像的繪圖。 |
description
必要
|
選擇性計量描述。 |
備註
使用此方法可將影像檔或 matplotlib 繪圖 記錄至執行。 這些映像會顯示在執行記錄中,並可供比較。
log_list
使用指定名稱將計量值清單記錄至執行。
log_list(name, value, description='')
參數
名稱 | Description |
---|---|
name
必要
|
計量的名稱。 |
value
必要
|
計量的值。 |
description
必要
|
選擇性計量描述。 |
log_predictions
將預測記錄至成品存放區。
這會記錄計量分數,可用來比較真實目標值的分佈與回歸工作的預測值分佈。
預測會量化,而標準差會針對折線圖上的誤差線計算。
log_predictions(name, value, description='')
參數
名稱 | Description |
---|---|
name
必要
|
預測的名稱。 |
value
必要
|
包含名稱、版本和資料屬性的 JSON。 |
description
必要
|
選擇性計量描述。 |
備註
有效 JSON 值的範例:
{
"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
將剩餘記錄到成品存放區。
這會記錄顯示回歸工作殘差長條圖所需的資料。 預測殘差 - 實際。
應該有一個比計數數目更多的邊緣。 如需使用計數和邊緣來代表長條圖的範例,請參閱 numpy 長條圖檔。 https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html
log_residuals(name, value, description='')
參數
名稱 | Description |
---|---|
name
必要
|
殘差的名稱。 |
value
必要
|
包含名稱、版本和資料屬性的 JSON。 |
description
必要
|
選擇性計量描述。 |
備註
有效 JSON 值的範例:
{
"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
使用指定名稱將資料列計量記錄至執行。
log_row(name, description=None, **kwargs)
參數
名稱 | Description |
---|---|
name
必要
|
計量的名稱。 |
description
|
選擇性計量描述。 預設值: None
|
kwargs
必要
|
其他參數的字典。 在此情況下,計量的資料行。 |
備註
使用 log_row
會建立具有資料行的資料表計量,如 kwargs 中所述。 每個具名的參數都會產生一個具有指定值的資料行。
log_row
可以呼叫一次以記錄任意 Tuple,或在迴圈中多次產生完整資料表。
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
使用指定名稱將資料表計量記錄到執行中。
log_table(name, value, description='')
參數
名稱 | Description |
---|---|
name
必要
|
計量的名稱。 |
value
必要
|
計量的資料表值,這是字典,其中索引鍵是要張貼至服務的資料行。 |
description
必要
|
選擇性計量描述。 |
register_model
註冊模型以進行作業化。
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)
參數
名稱 | Description |
---|---|
model_name
必要
|
模型的名稱。 |
model_path
|
模型的相對雲端路徑,例如「output/modelname」。
未指定 (None) 時, 預設值: None
|
tags
|
要指派給模型的索引鍵值標籤字典。 預設值: None
|
properties
|
要指派給模型的索引鍵值屬性字典。 建立模型之後,就無法變更這些屬性,不過可以加入新的索引鍵值組。 預設值: None
|
model_framework
|
要註冊之模型的架構。 目前支援的架構:TensorFlow、ScikitLearn、Onnx、Custom、Multi 預設值: None
|
model_framework_version
|
已註冊模型的架構版本。 預設值: None
|
description
|
模型的選擇性描述。 預設值: None
|
datasets
|
Tuple 的清單,其中第一個元素描述資料集模型關聯性,而第二個元素是資料集。 預設值: None
|
sample_input_dataset
|
選擇性。 已註冊模型的範例輸入資料集 預設值: None
|
sample_output_dataset
|
選擇性。 已註冊模型的範例輸出資料集 預設值: None
|
resource_configuration
|
選擇性。 執行已註冊模型的資源組態 預設值: None
|
kwargs
必要
|
選用參數。 |
傳回
類型 | Description |
---|---|
已註冊的模型。 |
備註
model = best_run.register_model(model_name = 'best_model', model_path = 'outputs/model.pkl')
remove_tags
刪除此執行時可變動標記的清單。
remove_tags(tags)
參數
名稱 | Description |
---|---|
tags
必要
|
要移除的標籤清單。 |
傳回
類型 | Description |
---|---|
儲存在 run 物件上的標記 |
restore_snapshot
將快照集還原為 ZIP 檔案。 傳回 ZIP 的路徑。
restore_snapshot(snapshot_id=None, path=None)
參數
名稱 | Description |
---|---|
snapshot_id
|
要還原的快照集識別碼。 如果未指定,則會使用最新的 。 預設值: None
|
path
|
儲存下載 ZIP 的路徑。 預設值: None
|
傳回
類型 | Description |
---|---|
路徑。 |
set_tags
在執行時新增或修改一組標記。 未在字典中傳遞的標籤會保持不變。
您也可以新增簡單的字串標記。 當這些標籤以索引鍵的形式出現在標籤字典中時,它們的值為 None。 如需詳細資訊,請參閱 標記和尋找執行。
set_tags(tags)
參數
名稱 | Description |
---|---|
tags
必要
|
儲存在 run 物件中的標記。 |
start
將執行標示為已啟動。
當執行已由另一個動作專案建立時,這通常用於進階案例。
start()
submit_child
提交實驗並傳回作用中的子回合。
submit_child(config, tags=None, **kwargs)
參數
名稱 | Description |
---|---|
config
必要
|
要提交的組態。 |
tags
|
要新增至提交回合的標記,例如 {「tag」: 「value」}。 預設值: None
|
kwargs
必要
|
提交函式中用於設定的其他參數。 |
傳回
類型 | Description |
---|---|
run 物件。 |
備註
Submit 是 Azure Machine Learning 平臺的非同步呼叫,以在本機或遠端硬體上執行試用版。 視設定而定,提交會自動準備執行環境、執行程式碼,並將原始程式碼和結果擷取到實驗的執行歷程記錄中。
若要提交實驗,您必須先建立描述實驗執行方式的組態物件。 組態取決於所需的試用版類型。
使用 從本機電腦 ScriptRunConfig 提交子實驗的範例如下:
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()
如需如何設定執行的詳細資訊,請參閱 submit 。
tag
使用字串索引鍵和可選字串值標記執行。
tag(key, value=None)
參數
名稱 | Description |
---|---|
key
必要
|
標記索引鍵 |
value
|
標記的選擇性值 預設值: None
|
備註
執行上的標籤和屬性都是字串 - > 字串的字典。 它們之間的差異是可變動性:標籤可以設定、更新和刪除,而屬性只能新增。 這讓 [屬性] 更適合系統/工作流程相關行為觸發程式,而標籤通常是使用者面向且對實驗取用者有意義的。
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
儲存輸入檔或資料夾的快照集。
take_snapshot(file_or_folder_path)
參數
名稱 | Description |
---|---|
file_or_folder_path
必要
|
包含執行原始程式碼的檔案或資料夾。 |
傳回
類型 | Description |
---|---|
傳回快照集識別碼。 |
備註
快照集是用來執行實驗執行的 原始程式碼 。 這些會與執行一起儲存,以便未來可以複寫執行試用版。
注意
呼叫 時 submit 會自動擷取快照集。 一般而言,只有在執行互動式 (筆記本) 時,才需要這個take_snapshot方法。
upload_file
將檔案上傳到執行記錄。
upload_file(name, path_or_stream, datastore_name=None)
參數
名稱 | Description |
---|---|
name
必要
|
要上傳的檔案名。 |
path_or_stream
必要
|
要上傳之檔案的相對本機路徑或資料流程。 |
datastore_name
必要
|
選擇性的 DataStore 名稱 |
傳回
類型 | Description |
---|---|
備註
run = experiment.start_logging()
run.upload_file(name='important_file', path_or_stream="path/on/disk/file.txt")
注意
執行會自動擷取特定輸出目錄中的檔案,對於大多數執行類型,預設為「./outputs」。 只有在需要上傳其他檔案或未指定輸出目錄時,才使用 upload_file。
upload_files
將檔案上傳至執行記錄。
upload_files(names, paths, return_artifacts=False, timeout_seconds=None, datastore_name=None)
參數
名稱 | Description |
---|---|
names
必要
|
要上傳的檔案名。 如果設定,也必須設定路徑。 |
paths
必要
|
要上傳之檔案的相對本機路徑。 如果設定,則需要名稱。 |
return_artifacts
必要
|
指出每個上傳的檔案都應該傳回成品物件。 |
timeout_seconds
必要
|
上傳檔案的逾時。 |
datastore_name
必要
|
選擇性的 DataStore 名稱 |
備註
upload_files
與個別檔案的效果 upload_file
相同,不過使用 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')
注意
執行 會自動擷取指定輸出目錄中的檔案,預設為 「./outputs」 表示大部分的執行類型。 只有在需要上傳其他檔案或未指定輸出目錄時,才使用upload_files。
upload_folder
將指定的資料夾上傳至指定的前置詞名稱。
upload_folder(name, path, datastore_name=None)
參數
名稱 | Description |
---|---|
name
必要
|
要上傳之檔案的資料夾名稱。 |
folder
必要
|
要上傳之資料夾的相對本機路徑。 |
datastore_name
必要
|
選擇性 DataStore 名稱 |
備註
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')
注意
執行 會自動擷取指定輸出目錄中的檔案,預設為 「./outputs」 表示大部分的執行類型。 只有在需要上傳其他檔案或未指定輸出目錄時,才使用upload_folder。
wait_for_completion
等候此執行完成。 在等候之後傳回狀態物件。
wait_for_completion(show_output=False, wait_post_processing=False, raise_on_error=True)
參數
名稱 | Description |
---|---|
show_output
|
指出是否要在 sys.stdout 上顯示執行輸出。 預設值: False
|
wait_post_processing
|
指出是否要在執行完成之後等候後續處理完成。 預設值: False
|
raise_on_error
|
指出執行處於失敗狀態時是否引發錯誤。 預設值: True
|
傳回
類型 | Description |
---|---|
status 物件。 |
屬性
description
display_name
experiment
id
name
number
parent
從服務擷取此執行的父執行。
執行可以有選擇性的父代,導致執行的潛在樹狀結構階層。 若要將計量記錄至父回合,請使用 log 父物件的 方法,例如 run.parent.log()
。
傳回
類型 | Description |
---|---|
如果未設定父執行,則為 None。 |
properties
status
傳回執行物件的狀態。