適用於:
Azure CLI ml extension v1
Python SDK azureml v1
重要事項
本文提供使用 Azure Machine Learning SDK v1 的相關資訊。 SDK v1 自 2025 年 3 月 31 日起已被取代。 其支援將於 2026 年 6 月 30 日結束。 您可以在該日期之前安裝並使用 SDK v1。 您使用 SDK v1 的現有工作流程將在支援終止日期後繼續運作。 不過,如果產品發生架構變更,它們可能會面臨安全性風險或重大變更。
建議您在 2026 年 6 月 30 日之前轉換至 SDK v2。 欲了解更多關於 SDK v2 的資訊,請參閱 什麼是 CLI 和 Azure Machine Learning Python SDK v2? 以及 SDK v2 參考。
本文說明如何分析機器學習以建立模型模型,以判斷將模型部署為 Web 服務時,需要配置多少 CPU 和記憶體。
重要事項
本文適用於 CLI 第 1 版和 SDK 第 1 版。 此分析技術不適用於 CLI 或 SDK 的 v2。
重要事項
本文中部分 Azure CLI 指令使用 azure-cli-ml,或 v1 擴展以用於 Azure 機器學習。 CLI v1 的支援已於 2025 年 9 月 30 日結束。 Microsoft 將不再提供此服務的技術支援或更新。 您使用 CLI v1 的現有工作流程將在支援終止日期之後繼續運作。 不過,如果產品發生架構變更,它們可能會面臨安全性風險或重大變更。
建議您盡快轉換至 ml或 v2 擴充功能。 欲了解更多關於 v2 擴充的資訊,請參閱 Azure Machine Learning CLI 擴充及 Python SDK v2。
先決條件
本文假設你使用 Azure Machine Learning 訓練並註冊模型。 請參考這裡的 sample 教學,了解如何用 Azure Machine Learning 訓練並註冊 scikit-learn 模型。
限制
- 當工作區的 Azure Container Registry (ACR) 位於虛擬網路後方時,效能分析無法運作。
執行分析工具
註冊模型並備妥其部署所需的其他元件之後,您就可以判斷所部署服務所需的 CPU 和記憶體。 分析會測試負責執行模型的服務,並傳回 CPU 使用量、記憶體使用量和回應延遲等資訊。 也會根據資源使用量,提供 CPU 和記憶體的建議。
若要分析模型,您需要:
- 已註冊的模型。
- 以輸入腳本和推斷環境定義為基礎的推斷設定。
- 單一資料行表格式資料集,其中每個資料列都包含字串來代表樣本要求資料。
重要事項
Azure Machine Learning 只支援預期其請求資料是字串的服務,例如:字串序列化的 json、文字、字串序列化的影像等。資料集每一列的內容(字串)會被放入 HTTP 請求的正文中,並送交封裝模型的服務以進行評分。
重要事項
在 ChinaEast2 和 USGovArizona 區域,我們只支援分析最多 2 個 CPU。
以下範例說明如何建構輸入數據集來分析預期其傳入要求數據包含串行化 json 的服務。 在此案例中,我們以相同要求資料內容的 100 個執行個體為基礎建立資料集。 在真實情節中,建議您使用包含各種輸入的更大資料集,特別是當模型資源使用量/行為取決於輸入時。
適用於:
Azure Machine Learning SDK v1 for Python
import json
from azureml.core import Datastore
from azureml.core.dataset import Dataset
from azureml.data import dataset_type_definitions
input_json = {'data': [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]]}
# create a string that can be utf-8 encoded and
# put in the body of the request
serialized_input_json = json.dumps(input_json)
dataset_content = []
for i in range(100):
dataset_content.append(serialized_input_json)
dataset_content = '\n'.join(dataset_content)
file_name = 'sample_request_data.txt'
f = open(file_name, 'w')
f.write(dataset_content)
f.close()
# upload the txt file created above to the Datastore and create a dataset from it
data_store = Datastore.get_default(ws)
data_store.upload_files(['./' + file_name], target_path='sample_request_data')
datastore_path = [(data_store, 'sample_request_data' +'/' + file_name)]
sample_request_data = Dataset.Tabular.from_delimited_files(
datastore_path, separator='\n',
infer_column_types=True,
header=dataset_type_definitions.PromoteHeadersBehavior.NO_HEADERS)
sample_request_data = sample_request_data.register(workspace=ws,
name='sample_request_data',
create_new_version=True)
備妥包含樣本要求資料的資料集之後,請建立推斷設定。 推斷設定以 score.py 和環境定義為基礎。 下列範例示範如何建立推斷設定並執行分析:
from azureml.core.model import InferenceConfig, Model
from azureml.core.dataset import Dataset
model = Model(ws, id=model_id)
inference_config = InferenceConfig(entry_script='path-to-score.py',
environment=myenv)
input_dataset = Dataset.get_by_name(workspace=ws, name='sample_request_data')
profile = Model.profile(ws,
'unique_name',
[model],
inference_config,
input_dataset=input_dataset)
profile.wait_for_completion(True)
# see the result
details = profile.get_details()
下列命令示範如何使用 CLI 來分析模型:
az ml model profile -g <resource-group-name> -w <workspace-name> --inference-config-file <path-to-inf-config.json> -m <model-id> --idi <input-dataset-id> -n <unique-name>
秘訣
若要保存分析所傳回的資訊,請使用模型的標籤或屬性。 使用標籤或屬性會將資料和模型一起儲存在模型登錄中。 下列範例示範新增包含 requestedCpu 和 requestedMemoryInGb 資訊的新標籤:
model.add_tags({'requestedCpu': details['requestedCpu'],
'requestedMemoryInGb': details['requestedMemoryInGb']})
az ml model profile -g <resource-group-name> -w <workspace-name> --i <model-id> --add-tag requestedCpu=1 --add-tag requestedMemoryInGb=0.5
後續步驟
- 針對失敗的部署進行疑難排解
- 部署至Azure Kubernetes Service
- 建立用戶端應用程式來取用 Web 服務
- 更新 Web 服務
- 如何使用自訂 Docker 映像來部署模型
使用 TLS 透過 Azure Machine Learning 使用 Application Insights 監控您的 Azure Machine Learning 模型 - 建立模型部署的事件警示和觸發程序