Model 類別

表示機器學習訓練的結果。

模型是 Azure Machine Learning 定 Run 型或 Azure 外部的一些其他模型定型程式的結果。 不論模型的產生方式為何,都可以在工作區中註冊,而該工作區會以名稱和版本表示。 透過 Model 類別,您可以封裝模型以搭配 Docker 使用,並將其部署為可用於推斷要求的即時端點。

如需示範模型建立、管理和取用方式的端對端教學課程,請參閱 使用 MNIST 資料和 scikit-learn 使用 Azure Machine Learning 將影像分類模型定型

模型建構函式。

模型建構函式可用來擷取與所提供工作區相關聯之 Model 物件的雲端標記法。 必須提供名稱或識別碼。

繼承
builtins.object
Model

建構函式

Model(workspace, name=None, id=None, tags=None, properties=None, version=None, run_id=None, model_framework=None, expand=True, **kwargs)

參數

名稱 Description
workspace
必要

包含要擷取之模型的工作區物件。

name
str

要擷取的模型名稱。 如果存在,則會傳回具有指定名稱的最新模型。

預設值: None
id
str

要擷取之模型的識別碼。 如果模型存在,則會傳回具有指定識別碼的模型。

預設值: None
tags

用來篩選傳回結果的選擇性標記清單。 結果會根據提供的清單進行篩選,並依 'key' 或 '[key, value]' 進行搜尋。 例如 ['key', ['key2', 'key2 value']]

預設值: None
properties

用來篩選傳回結果的屬性選擇性清單。 結果會根據提供的清單進行篩選,並依 'key' 或 '[key, value]' 進行搜尋。 例如 ['key', ['key2', 'key2 value']]

預設值: None
version
int

要傳回的模型版本。 與 參數一起 name 提供時,如果有指定之具名模型的特定版本,則會傳回該模型的特定版本。 如果 version 省略 ,則會傳回模型的最後一個版本。

預設值: None
run_id
str

用來篩選傳回結果的選擇性識別碼。

預設值: None
model_framework
str

用來篩選傳回結果的選擇性架構名稱。 如果指定,則會針對符合指定架構的模型傳回結果。 如需允許的值,請參閱 Framework

預設值: None
workspace
必要

包含要擷取之模型的工作區物件。

name
必要
str

要擷取的模型名稱。 如果存在,則會傳回具有指定名稱的最新模型。

id
必要
str

要擷取之模型的識別碼。 如果模型存在,則會傳回具有指定識別碼的模型。

tags
必要

用來篩選傳回結果的選擇性標記清單。 結果會根據提供的清單進行篩選,並依 'key' 或 '[key, value]' 進行搜尋。 例如 ['key', ['key2', 'key2 value']]

properties
必要

用來篩選傳回結果的屬性選擇性清單。 結果會根據提供的清單進行篩選,並依 'key' 或 '[key, value]' 進行搜尋。 例如 ['key', ['key2', 'key2 value']]

version
必要
int

要傳回的模型版本。 與 參數一起 name 提供時,如果有指定之具名模型的特定版本,則會傳回該模型的特定版本。 如果 version 省略 ,則會傳回模型的最後一個版本。

run_id
必要
str

用來篩選傳回結果的選擇性識別碼。

model_framework
必要
str

用來篩選傳回結果的選擇性架構名稱。 如果指定,則會針對符合指定架構的模型傳回結果。 如需允許的值,請參閱 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)

完整範例可從 https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/deployment/deploy-to-local/register-model-deploy-local-advanced.ipynb

下列範例示範如何註冊模型,以指定架構、輸入和輸出資料集,以及資源組態。


   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
str

模型 mime 類型。

azureml.core.Model.name

Model 的名稱。

model_framework
str

模型的架構。

model_framework_version
str

模型的架構版本。

azureml.core.Model.tags

Model 物件的標記字典。

azureml.core.Model.properties

模型的索引鍵值屬性字典。 註冊之後無法變更這些屬性,不過可以新增新的索引鍵值組。

unpack

提取至本機內容時,模型是否需要 (解除封裝) 。

url
str

模型的 URL 位置。

azureml.core.Model.version

Model 的版本。

azureml.core.Model.workspace

包含模型的工作區。

azureml.core.Model.experiment_name

建立模型的實驗名稱。

azureml.core.Model.run_id

建立模型的執行識別碼。

parent_id
str

模型的父模型識別碼。

derived_model_ids

已衍生自此模型的模型識別碼清單。

resource_configuration

此模型的 ResourceConfiguration。 用於分析。

方法

add_dataset_references

將提供的資料集與此模型產生關聯。

add_properties

將索引鍵值組新增至此模型的屬性字典。

add_tags

將索引鍵值組新增至此模型的標記字典。

delete

從相關聯的工作區中刪除此模型。

deploy

從零個或多個 Model 物件部署 Webservice。

產生的 Webservice 是即時端點,可用於推斷要求。 Model deploy 函式類似于 deploy 類別的 Webservice 函式,但不會註冊模型。 如果您有已註冊的模型物件,請使用 Model deploy 函式。

deserialize

將 JSON 物件轉換成模型物件。

如果指定的工作區不是模型註冊所在的工作區,轉換就會失敗。

download

將模型下載至本機檔案系統的目標目錄。

get_model_path

傳回模型的路徑。

函式會在下列位置搜尋模型。

如果 version 為 None:

  1. 如果提供工作區) ,請從遠端下載至快取 (
  2. 從快取azureml-models/$MODEL_NAME/$LATEST_VERSION/載入
  3. ./$MODEL_NAME

如果 version 不是 None:

  1. 從快取azureml-models/$MODEL_NAME/$SPECIFIED_VERSION/載入
  2. 如果提供工作區) ,請從遠端下載至快取 (
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
必要
list[tuple(<xref:str :> (DatasetDatasetSnapshot))]

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

從相關聯的工作區中刪除此模型。

delete()

例外狀況

類型 Description

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
必要
str

要提供已部署服務的名稱。 工作區必須是唯一的,只包含小寫字母、數位或破折號、以字母開頭,長度介於 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
str

要在其中下載模型的目錄路徑。 預設為 「.」

預設值: .
exist_ok

指出是否要取代下載的 dir/files 是否存在。 預設為 False。

預設值: False
exists_ok

已淘汰。 請使用 exist_ok

預設值: None

傳回

類型 Description
str

模型檔案或資料夾的路徑。

例外狀況

類型 Description

get_model_path

傳回模型的路徑。

函式會在下列位置搜尋模型。

如果 version 為 None:

  1. 如果提供工作區) ,請從遠端下載至快取 (
  2. 從快取azureml-models/$MODEL_NAME/$LATEST_VERSION/載入
  3. ./$MODEL_NAME

如果 version 不是 None:

  1. 從快取azureml-models/$MODEL_NAME/$SPECIFIED_VERSION/載入
  2. 如果提供工作區) ,請從遠端下載至快取 (
static get_model_path(model_name, version=None, _workspace=None)

參數

名稱 Description
model_name
必要
str

要擷取的模型名稱。

version
int

要擷取的模型版本。 預設為最新版本。

預設值: None
_workspace

要從中擷取模型的工作區。 無法從遠端使用。 如果未指定,則只會搜尋本機快取。

預設值: None

傳回

類型 Description
str

磁片上模型的路徑。

例外狀況

類型 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
str

如果提供,則只會傳回具有指定名稱的模型,如果有的話。

預設值: None
tags

會根據提供的清單,依 'key' 或 '[key, value]' 進行篩選。 例如 ['key', ['key2', 'key2 value']]

預設值: None
properties

會根據提供的清單,依 'key' 或 '[key, value]' 進行篩選。 例如 ['key', ['key2', 'key2 value']]

預設值: None
run_id
str

將會根據所提供的執行識別碼進行篩選。

預設值: None
latest

如果為 true,則只會傳回具有最新版本的模型。

預設值: False
dataset_id
str

將會根據提供的資料集識別碼進行篩選。

預設值: None
expand

如果為 true,則會傳回已填入所有子屬性的模型,例如執行、資料集和實驗。 將此設定為 false 時,應該會加速 list () 方法完成,以防許多模型。

預設值: True
page_count
int

在頁面中擷取的專案數。 目前支援最多 255 個值。 預設值為 255。

預設值: 255
model_framework
str

如果提供,則只會傳回具有指定架構的模型。如果有的話。

預設值: 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
str

建置映射時,產生的映射名稱。

預設值: None
image_label
str

建置映射時,產生影像的標籤。

預設值: 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
必要
str

程式碼剖析執行的名稱。

models
必要

模型物件的清單。 可以是空的清單。

inference_config
必要

InferenceConfig 物件,用來判斷必要的模型屬性。

input_dataset
必要

用於分析的輸入資料集。 輸入資料集應該具有單一資料行,而範例輸入應為字串格式。

cpu

要用於最大測試實例的 CPU 核心數目。 目前支援最多 3.5 的值。

預設值: None
memory_in_gb

要用於最大測試實例的 GB 記憶體 (量) 。 可以是十進位。 目前支援最多 15.0 的值。

預設值: None
description
str

與程式碼剖析執行相關聯的描述。

預設值: 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
必要
str

模型資產所在本機檔案系統上的路徑。 這可以是單一檔案或資料夾的直接指標。 如果指向資料夾, child_paths 則可以使用 參數來指定個別檔案以組合在一起做為 Model 物件,而不是使用資料夾的整個內容。

model_name
必要
str

要註冊模型的名稱。

tags
dict(<xref:{str : str}>)

要指派給模型的索引鍵值標籤選擇性字典。

預設值: None
properties
dict(<xref:{str : str}>)

要指派給模型的索引鍵值屬性選擇性字典。 建立模型之後,就無法變更這些屬性,但是可以新增新的索引鍵值組。

預設值: None
description
str

模型的文字描述。

預設值: None
datasets

Tuple 的清單,其中第一個元素描述資料集模型關聯性,而第二個元素是資料集。

預設值: None
model_framework
str

已註冊模型的架構。 從 類別使用系統支援的常數 Framework ,可簡化某些熱門架構的部署。

預設值: None
model_framework_version
str

已註冊模型的架構版本。

預設值: None
child_paths

如果與 資料夾一 model_path 起提供 ,則只有指定的檔案會組合到 Model 物件中。

預設值: 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)

完整範例可從 https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/deployment/deploy-to-local/register-model-deploy-local-advanced.ipynb

如果您有因為實驗執行而產生的模型,您可以直接從 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
str

要用於模型的新描述。 此名稱會取代現有的名稱。

預設值: None
sample_input_dataset

用於已註冊模型的範例輸入資料集。 此範例輸入資料集會取代現有的資料集。

預設值: None
sample_output_dataset

要用於已註冊模型的範例輸出資料集。 此範例輸出資料集會取代現有的資料集。

預設值: None
resource_configuration

用來執行已註冊模型的資源組態。

預設值: None

例外狀況

類型 Description

update_tags_properties

執行模型的標記和屬性更新。

update_tags_properties(add_tags=None, remove_tags=None, add_properties=None)

參數

名稱 Description
add_tags
dict(<xref:{str : str}>)

要加入之標籤的字典。

預設值: None
remove_tags

要移除的標記名稱清單。

預設值: None
add_properties
dict(<xref:{str : str}>)

要加入之屬性的字典。

預設值: None

例外狀況

類型 Description