Model 類別
表示機器學習訓練的結果。
模型是 Azure Machine Learning 定 型Run 或 Azure 外部的一些其他模型定型程式的結果。 不論模型如何產生,都可以在工作區中註冊,其中它以名稱和版本表示。 透過 Model 類別,您可以封裝模型以搭配 Docker 使用,並將其部署為可用於推斷要求的即時端點。
如需示範模型建立、管理和取用方式的端對端教學課程,請參閱 使用 MNIST 資料和 scikit-learn 使用 Azure Machine Learning 來定型影像分類模型。
模型建構函式。
模型建構函式是用來擷取與所提供工作區相關聯之 Model 物件的雲端標記法。 必須提供名稱或識別碼。
- 繼承
-
builtins.objectModel
建構函式
Model(workspace, name=None, id=None, tags=None, properties=None, version=None, run_id=None, model_framework=None, expand=True, **kwargs)
參數
名稱 | Description |
---|---|
workspace
必要
|
包含要擷取之模型的工作區物件。 |
name
|
要擷取的模型名稱。 如果存在,則會傳回具有指定名稱的最新模型。 預設值: None
|
id
|
要擷取之模型的識別碼。 如果模型存在,則會傳回具有指定識別碼的模型。 預設值: None
|
tags
|
用來篩選傳回結果的選擇性標記清單。 結果會根據提供的清單進行篩選,並依 'key' 或 '[key, value]' 進行搜尋。 例如 ['key', ['key2', 'key2 value']] 預設值: None
|
properties
|
用來篩選傳回結果的屬性選擇性清單。 結果會根據提供的清單進行篩選,並依 'key' 或 '[key, value]' 進行搜尋。 例如 ['key', ['key2', 'key2 value']] 預設值: None
|
version
|
要傳回的模型版本。 與 參數一起 預設值: None
|
run_id
|
用來篩選傳回結果的選擇性識別碼。 預設值: None
|
model_framework
|
用來篩選傳回結果的選擇性架構名稱。 如果指定,則會針對符合指定架構的模型傳回結果。 如需允許的值,請參閱 Framework 。 預設值: None
|
workspace
必要
|
包含要擷取之模型的工作區物件。 |
name
必要
|
要擷取的模型名稱。 如果存在,則會傳回具有指定名稱的最新模型。 |
id
必要
|
要擷取之模型的識別碼。 如果模型存在,則會傳回具有指定識別碼的模型。 |
tags
必要
|
用來篩選傳回結果的選擇性標記清單。 結果會根據提供的清單進行篩選,並依 'key' 或 '[key, value]' 進行搜尋。 例如 ['key', ['key2', 'key2 value']] |
properties
必要
|
用來篩選傳回結果的屬性選擇性清單。 結果會根據提供的清單進行篩選,並依 'key' 或 '[key, value]' 進行搜尋。 例如 ['key', ['key2', 'key2 value']] |
version
必要
|
要傳回的模型版本。 與 參數一起 |
run_id
必要
|
用來篩選傳回結果的選擇性識別碼。 |
model_framework
必要
|
用來篩選傳回結果的選擇性架構名稱。 如果指定,則會針對符合指定架構的模型傳回結果。 如需允許的值,請參閱 Framework 。 |
expand
|
如果為 true,則會傳回填入所有子屬性的模型,例如執行、資料集和實驗。 預設值: True
|
備註
模型建構函式是用來擷取與指定工作區相關聯之 Model 物件的雲端標記法。 至少必須提供名稱或識別碼來擷取模型,但也有其他選項可用來篩選,包括依標籤、屬性、版本、執行識別碼和架構。
from azureml.core.model import Model
model = Model(ws, 'my_model_name')
下列範例示範如何擷取特定版本的模型。
from azureml.core.model import Model
model = Model(ws, 'my_model_name', version=1)
註冊模型會為組成模型的一或多個檔案建立邏輯容器。 除了模型檔案本身的內容之外,已註冊的模型也會儲存模型中繼資料,包括模型描述、標記和架構資訊,在工作區中管理和部署模型時很有用。 例如,使用標記,您可以在工作區中列出模型時分類模型並套用篩選。 註冊之後,您可以下載或部署已註冊的模型,並接收已註冊的所有檔案和中繼資料。
下列範例示範如何註冊指定標記和描述的模型。
from azureml.core.model import Model
model = Model.register(model_path="sklearn_regression_model.pkl",
model_name="sklearn_regression_model",
tags={'area': "diabetes", 'type': "regression"},
description="Ridge regression model to predict diabetes",
workspace=ws)
下列範例示範如何註冊模型,以指定架構、輸入和輸出資料集,以及資源組態。
import sklearn
from azureml.core import Model
from azureml.core.resource_configuration import ResourceConfiguration
model = Model.register(workspace=ws,
model_name='my-sklearn-model', # Name of the registered model in your workspace.
model_path='./sklearn_regression_model.pkl', # Local file to upload and register as a model.
model_framework=Model.Framework.SCIKITLEARN, # Framework used to create the model.
model_framework_version=sklearn.__version__, # Version of scikit-learn used to create the model.
sample_input_dataset=input_dataset,
sample_output_dataset=output_dataset,
resource_configuration=ResourceConfiguration(cpu=1, memory_in_gb=0.5),
description='Ridge regression model to predict diabetes progression.',
tags={'area': 'diabetes', 'type': 'regression'})
print('Name:', model.name)
print('Version:', model.version)
[變數] 區段會列出雲端模型物件之本機表示的屬性。 這些變數應該視為唯讀。 變更其值不會反映在對應的雲端物件中。
變數
名稱 | Description |
---|---|
created_by
|
建立模型的使用者。 |
created_time
|
建立模型時。 |
azureml.core.Model.description
|
Model 物件的描述。 |
azureml.core.Model.id
|
模型識別碼。 這會採用模型名稱 > : < model 版本 > 的形式 < 。 |
mime_type
|
模型 mime 類型。 |
azureml.core.Model.name
|
模型的名稱。 |
model_framework
|
模型的架構。 |
model_framework_version
|
模型的架構版本。 |
azureml.core.Model.tags
|
Model 物件的標記字典。 |
azureml.core.Model.properties
|
模型的索引鍵值屬性字典。 註冊之後就無法變更這些屬性,不過可以新增新的索引鍵值組。 |
unpack
|
提取至本機內容時,模型是否需要將 (解除封裝) 。 |
url
|
模型的 URL 位置。 |
azureml.core.Model.version
|
模型的版本。 |
azureml.core.Model.workspace
|
包含模型的工作區。 |
azureml.core.Model.experiment_name
|
建立模型的實驗名稱。 |
azureml.core.Model.run_id
|
建立模型的執行識別碼。 |
parent_id
|
模型的父模型識別碼。 |
derived_model_ids
|
已衍生自此模型的模型識別碼清單。 |
resource_configuration
|
此模型的 ResourceConfiguration。 用於分析。 |
方法
add_dataset_references |
將提供的資料集與此模型產生關聯。 |
add_properties |
將索引鍵值組新增至此模型的屬性字典。 |
add_tags |
將索引鍵值組新增至此模型的標記字典。 |
delete |
從相關聯的工作區中刪除此模型。 |
deploy |
從零個或多個 Model 物件部署 Webservice。 產生的 Webservice 是即時端點,可用於推斷要求。 Model |
deserialize |
將 JSON 物件轉換成模型物件。 如果指定的工作區不是模型註冊所在的工作區,轉換就會失敗。 |
download |
將模型下載至本機檔案系統的目標目錄。 |
get_model_path |
傳回模型的路徑。 函式會在下列位置搜尋模型。 如果
如果
|
get_sas_urls |
傳回索引鍵/值組的字典,其中包含檔案名和對應的 SAS URL。 |
list |
使用選擇性篩選,擷取與所提供工作區相關聯的所有模型清單。 |
package |
以 Docker 映射或 Dockerfile 建置內容的形式建立模型套件。 |
print_configuration |
列印使用者設定。 |
profile |
分析模型以取得資源需求建議。 這是長時間執行的作業,視資料集大小而定,最多可能需要 25 分鐘的時間。 |
register |
向提供的工作區註冊模型。 |
remove_tags |
從此模型的標記字典中移除指定的索引鍵。 |
serialize |
將此模型轉換成 json 序列化字典。 |
update |
執行模型的就地更新。 已取代指定參數的現有值。 |
update_tags_properties |
執行模型的標記和屬性更新。 |
add_dataset_references
將提供的資料集與此模型產生關聯。
add_dataset_references(datasets)
參數
名稱 | Description |
---|---|
datasets
必要
|
Tuple 的清單,代表資料集物件的資料集配對。 |
例外狀況
類型 | Description |
---|---|
add_properties
將索引鍵值組新增至此模型的屬性字典。
add_properties(properties)
參數
名稱 | Description |
---|---|
properties
必要
|
dict(<xref:str : str>)
要加入之屬性的字典。 |
例外狀況
類型 | Description |
---|---|
add_tags
將索引鍵值組新增至此模型的標記字典。
add_tags(tags)
參數
名稱 | Description |
---|---|
tags
必要
|
dict(<xref:{str : str}>)
要加入的標記字典。 |
例外狀況
類型 | Description |
---|---|
delete
deploy
從零個或多個 Model 物件部署 Webservice。
產生的 Webservice 是即時端點,可用於推斷要求。 Model deploy
函式類似于 deploy
類別的 Webservice 函式,但不會註冊模型。 如果您有已註冊的模型物件,請使用 Model deploy
函式。
static deploy(workspace, name, models, inference_config=None, deployment_config=None, deployment_target=None, overwrite=False, show_output=False)
參數
名稱 | Description |
---|---|
workspace
必要
|
要與 Webservice 建立關聯的 Workspace 物件。 |
name
必要
|
要提供已部署服務的名稱。 工作區必須是唯一的,只包含小寫字母、數位或破折號、以字母開頭,長度介於 3 到 32 個字元之間。 |
models
必要
|
模型物件的清單。 可以是空的清單。 |
inference_config
|
用來判斷必要模型屬性的 InferenceConfig 物件。 預設值: None
|
deployment_config
|
用來設定 Web 服務的 WebserviceDeploymentConfiguration。 如果未提供,則會根據所需的目標使用空的組態物件。 預設值: None
|
deployment_target
|
要 ComputeTarget 部署 Webservice 的 。 由於Azure 容器執行個體沒有相關聯的 ComputeTarget ,請將此參數保留為 None,以部署至Azure 容器執行個體。 預設值: None
|
overwrite
|
指出如果具有指定名稱的服務已經存在,是否要覆寫現有的服務。 預設值: False
|
show_output
|
指出是否要顯示服務部署的進度。 預設值: False
|
傳回
類型 | Description |
---|---|
對應至已部署 Webservice 的 Webservice 物件。 |
例外狀況
類型 | Description |
---|---|
deserialize
將 JSON 物件轉換成模型物件。
如果指定的工作區不是模型註冊所在的工作區,轉換就會失敗。
static deserialize(workspace, model_payload)
參數
名稱 | Description |
---|---|
workspace
必要
|
模型所註冊的工作區物件。 |
model_payload
必要
|
要轉換成 Model 物件的 JSON 物件。 |
傳回
類型 | Description |
---|---|
所提供 JSON 物件的模型標記法。 |
例外狀況
類型 | Description |
---|---|
download
將模型下載至本機檔案系統的目標目錄。
download(target_dir='.', exist_ok=False, exists_ok=None)
參數
名稱 | Description |
---|---|
target_dir
|
要在其中下載模型的目錄路徑。 預設為 「.」 預設值: .
|
exist_ok
|
指出是否要取代下載的 dir/files 是否存在。 預設為 False。 預設值: False
|
exists_ok
|
已淘汰。 請使用 預設值: None
|
傳回
類型 | Description |
---|---|
模型檔案或資料夾的路徑。 |
例外狀況
類型 | Description |
---|---|
get_model_path
傳回模型的路徑。
函式會在下列位置搜尋模型。
如果 version
為 None:
- 如果提供工作區) ,請從遠端下載至快取 (
- 從快取azureml-models/$MODEL_NAME/$LATEST_VERSION/載入
- ./$MODEL_NAME
如果 version
不是 None:
- 從快取azureml-models/$MODEL_NAME/$SPECIFIED_VERSION/載入
- 如果提供工作區) ,請從遠端下載至快取 (
static get_model_path(model_name, version=None, _workspace=None)
參數
名稱 | Description |
---|---|
model_name
必要
|
要擷取的模型名稱。 |
version
|
要擷取的模型版本。 預設為最新版本。 預設值: None
|
_workspace
|
要從中擷取模型的工作區。 無法從遠端使用。 如果未指定,則只會搜尋本機快取。 預設值: None
|
傳回
類型 | Description |
---|---|
磁片上模型的路徑。 |
例外狀況
類型 | Description |
---|---|
get_sas_urls
傳回索引鍵/值組的字典,其中包含檔案名和對應的 SAS URL。
get_sas_urls()
傳回
類型 | Description |
---|---|
索引鍵/值組的字典,其中包含檔案名和對應的 SAS URL |
例外狀況
類型 | Description |
---|---|
list
使用選擇性篩選,擷取與所提供工作區相關聯的所有模型清單。
static list(workspace, name=None, tags=None, properties=None, run_id=None, latest=False, dataset_id=None, expand=True, page_count=255, model_framework=None)
參數
名稱 | Description |
---|---|
workspace
必要
|
要從中擷取模型的工作區物件。 |
name
|
如果提供,則只會傳回具有指定名稱的模型,如果有的話。 預設值: None
|
tags
|
會根據所提供的清單篩選,方法是 'key' 或 '[key,value]'。 例如 ['key', ['key2', 'key2 value']] 預設值: None
|
properties
|
會根據所提供的清單篩選,方法是 'key' 或 '[key,value]'。 例如 ['key', ['key2', 'key2 value']] 預設值: None
|
run_id
|
會根據提供的回合識別碼進行篩選。 預設值: None
|
latest
|
如果為 true,則只會傳回具有最新版本的模型。 預設值: False
|
dataset_id
|
會根據提供的資料集識別碼進行篩選。 預設值: None
|
expand
|
如果為 true,則會傳回填入所有子屬性的模型,例如執行、資料集和實驗。 將此設定為 false 時,應該會在許多模型的情況下加速 list () 方法完成。 預設值: True
|
page_count
|
要擷取在頁面中的專案數。 目前支援最多 255 的值。 預設值為 255。 預設值: 255
|
model_framework
|
如果提供,則只會傳回具有指定架構的模型,如果有的話。 預設值: None
|
傳回
類型 | Description |
---|---|
選擇性篩選的模型清單。 |
例外狀況
類型 | Description |
---|---|
package
以 Docker 映射或 Dockerfile 建置內容的形式建立模型套件。
static package(workspace, models, inference_config=None, generate_dockerfile=False, image_name=None, image_label=None)
參數
名稱 | Description |
---|---|
workspace
必要
|
要在其中建立封裝的工作區。 |
models
必要
|
要包含在封裝中的 Model 物件清單。 可以是空的清單。 |
inference_config
|
用來設定模型作業的 InferenceConfig 物件。 這必須包含 Environment 物件。 預設值: None
|
generate_dockerfile
|
是否要建立可在本機執行的 Dockerfile,而不是建置映射。 預設值: False
|
image_name
|
建置映射時,產生的映射名稱。 預設值: None
|
image_label
|
建置映射時,產生的影像標籤。 預設值: None
|
傳回
類型 | Description |
---|---|
ModelPackage 物件。 |
例外狀況
類型 | Description |
---|---|
print_configuration
列印使用者設定。
static print_configuration(models, inference_config, deployment_config, deployment_target)
參數
名稱 | Description |
---|---|
models
必要
|
模型物件的清單。 可以是空的清單。 |
inference_config
必要
|
用來判斷必要模型屬性的 InferenceConfig 物件。 |
deployment_config
必要
|
用來設定 Web 服務的 WebserviceDeploymentConfiguration。 |
deployment_target
必要
|
要 ComputeTarget 部署 Webservice 的 。 |
例外狀況
類型 | Description |
---|---|
profile
分析模型以取得資源需求建議。
這是長時間執行的作業,視資料集大小而定,最多可能需要 25 分鐘的時間。
static profile(workspace, profile_name, models, inference_config, input_dataset, cpu=None, memory_in_gb=None, description=None)
參數
名稱 | Description |
---|---|
workspace
必要
|
要在其中分析模型的 Workspace 物件。 |
profile_name
必要
|
程式碼剖析執行的名稱。 |
models
必要
|
模型物件的清單。 可以是空的清單。 |
inference_config
必要
|
用來判斷必要模型屬性的 InferenceConfig 物件。 |
input_dataset
必要
|
用於分析的輸入資料集。 輸入資料集應該具有單一資料行,而範例輸入應為字串格式。 |
cpu
|
要用於最大測試實例的 CPU 核心數目。 目前支援最多 3.5 的值。 預設值: None
|
memory_in_gb
|
要用於最大測試實例的 GB 記憶體 (量) 。 可以是十進位。 目前支援最多 15.0 的值。 預設值: None
|
description
|
要與程式碼剖析執行相關聯的描述。 預設值: None
|
傳回
類型 | Description |
---|---|
例外狀況
類型 | Description |
---|---|
<xref:azureml.exceptions.WebserviceException>, <xref:azureml.exceptions.UserErrorException>
|
register
向提供的工作區註冊模型。
static register(workspace, model_path, model_name, tags=None, properties=None, description=None, datasets=None, model_framework=None, model_framework_version=None, child_paths=None, sample_input_dataset=None, sample_output_dataset=None, resource_configuration=None)
參數
名稱 | Description |
---|---|
workspace
必要
|
要註冊模型的工作區。 |
model_path
必要
|
模型資產所在的本機檔案系統路徑。 這可以是單一檔案或資料夾的直接指標。 如果指向資料夾, |
model_name
必要
|
要註冊模型的名稱。 |
tags
|
dict(<xref:{str : str}>)
要指派給模型的索引鍵值標記選擇性字典。 預設值: None
|
properties
|
dict(<xref:{str : str}>)
要指派給模型的索引鍵值屬性選擇性字典。 建立模型之後,就無法變更這些屬性,但是可以新增新的索引鍵值組。 預設值: None
|
description
|
模型的文字描述。 預設值: None
|
datasets
|
Tuple 的清單,其中第一個元素描述資料集模型關聯性,而第二個元素是資料集。 預設值: None
|
model_framework
|
已註冊模型的架構。 從 類別使用系統支援的常數 Framework ,可簡化某些熱門架構的部署。 預設值: None
|
model_framework_version
|
已註冊模型的架構版本。 預設值: None
|
child_paths
|
如果與 資料夾搭配 預設值: None
|
sample_input_dataset
|
已註冊模型的範例輸入資料集。 預設值: None
|
sample_output_dataset
|
已註冊模型的範例輸出資料集。 預設值: None
|
resource_configuration
|
要執行已註冊模型的資源組態。 預設值: None
|
傳回
類型 | Description |
---|---|
已註冊的模型物件。 |
例外狀況
類型 | Description |
---|---|
備註
除了模型檔案本身的內容之外,已註冊的模型也會儲存模型中繼資料,包括模型描述、標記和架構資訊,在工作區中管理和部署模型時很有用。 例如,使用標記,您可以在工作區中列出模型時分類模型並套用篩選。
下列範例示範如何註冊指定標記和描述的模型。
from azureml.core.model import Model
model = Model.register(model_path="sklearn_regression_model.pkl",
model_name="sklearn_regression_model",
tags={'area': "diabetes", 'type': "regression"},
description="Ridge regression model to predict diabetes",
workspace=ws)
如果您有因為實驗執行而產生的模型,您可以直接從 run 物件註冊它,而不需要先將它下載到本機檔案。 若要這樣做, register_model 請使用 類別中所述 Run 的方法。
remove_tags
從此模型的標記字典中移除指定的索引鍵。
remove_tags(tags)
參數
名稱 | Description |
---|---|
tags
必要
|
要移除的索引鍵清單 |
例外狀況
類型 | Description |
---|---|
serialize
將此模型轉換成 json 序列化字典。
serialize()
傳回
類型 | Description |
---|---|
此模型的 json 標記法 |
例外狀況
類型 | Description |
---|---|
update
執行模型的就地更新。
已取代指定參數的現有值。
update(tags=None, description=None, sample_input_dataset=None, sample_output_dataset=None, resource_configuration=None)
參數
名稱 | Description |
---|---|
tags
|
dict(<xref:{str : str}>)
要用來更新模型的標記字典。 這些標籤會取代模型的現有標籤。 預設值: None
|
description
|
要用於模型的新描述。 此名稱會取代現有的名稱。 預設值: None
|
sample_input_dataset
|
用於已註冊模型的範例輸入資料集。 此範例輸入資料集會取代現有的資料集。 預設值: None
|
sample_output_dataset
|
用於已註冊模型的範例輸出資料集。 此範例輸出資料集會取代現有的資料集。 預設值: None
|
resource_configuration
|
用來執行已註冊模型的資源組態。 預設值: None
|
例外狀況
類型 | Description |
---|---|