Run 類別
定義所有 Azure Machine Learning 實驗執行的基類。
執行代表實驗的單一試用版。 執行可用來監視試用版的異步執行、記錄計量和儲存試用版輸出,以及分析試用版所產生的結果和存取成品。
當您提交腳本以在 Azure Machine Learning 的許多不同案例中定型模型時,會建立執行物件,包括 HyperDrive 執行、管線執行和 AutoML 執行。 當您 submit 或 start_logging 搭配 Experiment 類別時,也會建立 Run 物件。
若要開始使用實驗和執行,請參閱
初始化 Run 物件。
建構函式
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 的功能包括:
儲存和擷取計量和數據
上傳和下載檔案
使用卷標和子階層輕鬆查閱過去執行
將預存模型檔案註冊為可運作的模型
儲存、修改及擷取執行的屬性
使用 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)
清單
使用 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 |
等候工作佇列處理。 然後,執行會標示為已完成。 這通常用於互動式筆記本案例。 |
create_children |
建立一或多個子執行。 |
download_file |
從記憶體下載相關聯的檔案。 |
download_files |
如果未指定前置詞,請從指定的記憶體前置詞 (資料夾名稱) 或整個容器下載檔。 |
fail |
將執行標示為失敗。 選擇性地將執行的 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 Key Vault 中儲存的值。 如需使用秘密的範例,請參閱 在定型回合中使用秘密。 |
get_secrets |
取得指定秘密名稱清單的秘密值。 取得找到且找不到名稱清單的字典。 每個秘密名稱都會參考與您工作區相關聯的 Azure Key Vault 中儲存的值。 如需使用秘密的範例,請參閱 在定型回合中使用秘密。 |
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 驗證數據集中的樣本 N = #thresholds = #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 |
等候此執行完成。 在等候之後傳回 status 物件。 |
add_properties
add_type_provider
儲存在執行歷程記錄中之自定義執行類型的擴充性勾點。
static add_type_provider(runtype, run_factory)
參數
名稱 | Description |
---|---|
runtype
必要
|
將叫用處理站的 Run.type 值。 範例包括 『hyperdrive』 或 『azureml.scriptrun』,但可以使用自定義類型來擴充。 |
run_factory
必要
|
<xref:function>
具有簽章的函式 (Experiment, 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
等候工作佇列處理。
然後,執行會標示為已完成。 這通常用於互動式筆記本案例。
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_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
將執行標示為失敗。
選擇性地將執行的 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
get_all_logs
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。 預設值: True
|
kwargs
必要
|
其他參數的字典。 |
used_for_context_manager
|
預設值: False
|
傳回
類型 | Description |
---|---|
提交的執行。 |
備註
此函式通常用於擷取腳本內已驗證的 Run 物件,以透過 experiment.submit() 提交執行。 此執行物件既是與 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() 傳回的值相同。
details:目前狀態的詳細資訊。
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:啟動此回合的 UTC 時間,ISO8601。
endTimeUtc:此執行完成時間的 UTC 時間(已完成或失敗),ISO8601。
如果執行仍在進行中,則不存在此索引鍵。
屬性:與執行相關聯的不可變索引鍵/值組。 默認屬性包括執行的快照集標識符,以及建立執行的來源 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_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 Key Vault 中儲存的值。 如需使用秘密的範例,請參閱 在定型回合中使用秘密。
get_secret(name)
參數
名稱 | Description |
---|---|
name
必要
|
要傳回秘密的秘密名稱。 |
傳回
類型 | Description |
---|---|
秘密值。 |
get_secrets
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
|
如果指定,則會傳回狀態為指定 「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
|
如果指定,則會傳回狀態為指定 「status」 的執行。 只有允許的值是 「Running」 和 「Queued」。 預設值: None
|
傳回
類型 | Description |
---|---|
<xref:builtin.generator>
|
~_restclient.models.RunDto 的產生器 |
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
驗證數據集中的樣本 N = #thresholds = #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_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
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
|
模型的相對雲端路徑,例如“outputs/modelname”。
未指定時(無), 預設值: 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 |
---|---|
儲存在執行物件上的標記 |
restore_snapshot
set_tags
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
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
等候此執行完成。 在等候之後傳回 status 物件。
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
properties
status
傳回執行物件的狀態。