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)

參數

workspace
Workspace
必要

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

name
str
預設值: None

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

id
str
預設值: None

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

tags
list
預設值: None

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

properties
list
預設值: None

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

version
int
預設值: None

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

run_id
str
預設值: None

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

model_framework
str
預設值: None

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

workspace
Workspace
必要

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

name
str
必要

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

id
str
必要

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

tags
list
必要

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

properties
list
必要

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

version
int
必要

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

run_id
str
必要

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

model_framework
str
必要

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

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

[變數] 區段會列出雲端模型物件之區域表示的屬性。 這些變數應該視為唯讀。 變更其值不會反映在對應的雲端物件中。

變數

created_by
dict

建立模型的使用者。

created_time
datetime

建立模型時。

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
bool

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

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
list[str]

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

resource_configuration
ResourceConfiguration

此模型的 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)

參數

datasets
list[tuple(<xref:str :> (DatasetDatasetSnapshot))]
必要

Tuple 的清單,代表資料集物件的資料集配對。

例外狀況

add_properties

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

add_properties(properties)

參數

properties
dict(<xref:str : str>)
必要

要加入之屬性的字典。

例外狀況

add_tags

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

add_tags(tags)

參數

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

要加入的標記字典。

例外狀況

delete

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

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)

參數

workspace
Workspace
必要

要與 Webservice 建立關聯的 Workspace 物件。

name
str
必要

要提供已部署服務的名稱。 工作區必須是唯一的,只包含小寫字母、數位或破折號、以字母開頭,長度介於 3 到 32 個字元之間。

models
list[Model]
必要

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

inference_config
InferenceConfig
預設值: None

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

deployment_config
WebserviceDeploymentConfiguration
預設值: None

用來設定 Web 服務的 WebserviceDeploymentConfiguration。 如果未提供,則會根據所需的目標使用空的組態物件。

deployment_target
ComputeTarget
預設值: None

ComputeTarget 部署 Webservice 的 。 由於Azure 容器執行個體沒有相關聯的 ComputeTarget ,請將此參數保留為 None,以部署至Azure 容器執行個體。

overwrite
bool
預設值: False

指出如果具有指定名稱的服務已經存在,是否要覆寫現有的服務。

show_output
bool
預設值: False

指出是否要顯示服務部署的進度。

傳回

對應至已部署 Webservice 的 Webservice 物件。

傳回類型

例外狀況

deserialize

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

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

static deserialize(workspace, model_payload)

參數

workspace
Workspace
必要

模型所註冊的工作區物件。

model_payload
dict
必要

要轉換成 Model 物件的 JSON 物件。

傳回

所提供 JSON 物件的模型標記法。

傳回類型

例外狀況

download

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

download(target_dir='.', exist_ok=False, exists_ok=None)

參數

target_dir
str
預設值: .

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

exist_ok
bool
預設值: False

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

exists_ok
bool
預設值: None

已淘汰。 請使用 exist_ok

傳回

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

傳回類型

str

例外狀況

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)

參數

model_name
str
必要

要擷取的模型名稱。

version
int
預設值: None

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

_workspace
Workspace
預設值: None

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

傳回

磁片上模型的路徑。

傳回類型

str

例外狀況

get_sas_urls

傳回索引鍵/值組的字典,其中包含檔案名和對應的 SAS URL。

get_sas_urls()

傳回

索引鍵/值組的字典,其中包含檔案名和對應的 SAS URL

傳回類型

例外狀況

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)

參數

workspace
Workspace
必要

要從中擷取模型的工作區物件。

name
str
預設值: None

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

tags
list
預設值: None

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

properties
list
預設值: None

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

run_id
str
預設值: None

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

latest
bool
預設值: False

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

dataset_id
str
預設值: None

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

expand
bool
預設值: True

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

page_count
int
預設值: 255

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

model_framework
str
預設值: None

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

傳回

選擇性篩選的模型清單。

傳回類型

例外狀況

package

以 Docker 映射或 Dockerfile 建置內容的形式建立模型套件。

static package(workspace, models, inference_config=None, generate_dockerfile=False, image_name=None, image_label=None)

參數

workspace
Workspace
必要

要在其中建立封裝的工作區。

models
list[Model]
必要

要包含在封裝中的 Model 物件清單。 可以是空的清單。

inference_config
InferenceConfig
預設值: None

InferenceConfig 物件,用來設定模型的作業。 這必須包含 Environment 物件。

generate_dockerfile
bool
預設值: False

是否要建立可在本機執行的 Dockerfile,而不是建置映射。

image_name
str
預設值: None

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

image_label
str
預設值: None

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

傳回

ModelPackage 物件。

傳回類型

例外狀況

print_configuration

列印使用者設定。

static print_configuration(models, inference_config, deployment_config, deployment_target)

參數

models
list[Model]
必要

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

inference_config
InferenceConfig
必要

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

deployment_config
WebserviceDeploymentConfiguration
必要

用來設定 Web 服務的 WebserviceDeploymentConfiguration。

deployment_target
ComputeTarget
必要

ComputeTarget 部署 Webservice 的 。

例外狀況

profile

分析模型以取得資源需求建議。

這是長時間執行的作業,視資料集大小而定,最多可能需要 25 分鐘的時間。

static profile(workspace, profile_name, models, inference_config, input_dataset, cpu=None, memory_in_gb=None, description=None)

參數

workspace
Workspace
必要

用來分析模型的 Workspace 物件。

profile_name
str
必要

程式碼剖析執行的名稱。

models
list[Model]
必要

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

inference_config
InferenceConfig
必要

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

input_dataset
Dataset
必要

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

cpu
float
預設值: None

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

memory_in_gb
float
預設值: None

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

description
str
預設值: None

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

傳回類型

例外狀況

<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)

參數

workspace
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
list[(str, AbstractDataset)]
預設值: None

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

model_framework
str
預設值: None

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

model_framework_version
str
預設值: None

已註冊模型的架構版本。

child_paths
list[str]
預設值: None

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

sample_input_dataset
AbstractDataset
預設值: None

已註冊模型的範例輸入資料集。

sample_output_dataset
AbstractDataset
預設值: None

已註冊模型的範例輸出資料集。

resource_configuration
ResourceConfiguration
預設值: None

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

傳回

已註冊的模型物件。

傳回類型

例外狀況

備註

除了模型檔案本身的內容之外,已註冊的模型也會儲存模型中繼資料,包括模型描述、標記和架構資訊,在工作區中管理和部署模型時很有用。 例如,使用標籤,您可以在工作區中列出模型時將模型分類並套用篩選。

下列範例示範如何註冊指定標籤和描述的模型。


   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)

參數

tags
list[str]
必要

要移除的索引鍵清單

例外狀況

serialize

將此模型轉換成 json 序列化字典。

serialize()

傳回

此模型的 json 標記法

傳回類型

例外狀況

update

執行模型的就地更新。

已取代指定參數的現有值。

update(tags=None, description=None, sample_input_dataset=None, sample_output_dataset=None, resource_configuration=None)

參數

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

用來更新模型之標記的字典。 這些標記會取代模型的現有標籤。

description
str
預設值: None

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

sample_input_dataset
AbstractDataset
預設值: None

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

sample_output_dataset
AbstractDataset
預設值: None

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

resource_configuration
ResourceConfiguration
預設值: None

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

例外狀況

update_tags_properties

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

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

參數

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

要加入之標籤的字典。

remove_tags
list[str]
預設值: None

要移除的標記名稱清單。

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

要加入之屬性的字典。

例外狀況