將部署端點升級至 SDK v2
使用 SDK/CLI v1,您可以在 ACI 或 AKS 上部署模型做為 Web 服務。 您現有的 v1 模型部署和 Web 服務會繼續正常運作,但使用 SDK/CLI v1 在 ACI 或 AKS 上部署為 Web 服務的模型,現在已是舊版。 對於新模型部署,建議升級到 v2。
在 v2 中,我們提供受控端點或 Kubernetes 端點。 如需 v1 和 v2 的比較,請參閱 端點和部署。
v2 中有數個部署漏鬥圖,例如受控在線端點、Kubernetes 在線端點(包括 Azure Kubernetes Services 和已啟用 Arc 的 Kubernetes),以及 v1 中的 Azure 容器執行個體 (ACI) 和 Kubernetes Services (AKS) Web 服務。 在本文中,我們將著重於部署至 ACI Webservices (v1) 和受控在線端點 (v2) 的比較。
本文中的範例示範如何:
- 將模型部署至 Azure
- 使用端點評分
- 刪除 Webservice/endpoint
建立推斷資源
- SDK v1
設定模型、環境和評分文稿:
# configure a model. example for registering a model from azureml.core.model import Model model = Model.register(ws, model_name="bidaf_onnx", model_path="./model.onnx") # configure an environment from azureml.core import Environment env = Environment(name='myenv') python_packages = ['nltk', 'numpy', 'onnxruntime'] for package in python_packages: env.python.conda_dependencies.add_pip_package(package) # configure an inference configuration with a scoring script from azureml.core.model import InferenceConfig inference_config = InferenceConfig( environment=env, source_directory="./source_dir", entry_script="./score.py", )
設定及部署 ACI Web 服務:
from azureml.core.webservice import AciWebservice # defince compute resources for ACI deployment_config = AciWebservice.deploy_configuration( cpu_cores=0.5, memory_gb=1, auth_enabled=True ) # define an ACI webservice service = Model.deploy( ws, "myservice", [model], inference_config, deployment_config, overwrite=True, ) # create the service service.wait_for_deployment(show_output=True)
如需註冊模型的詳細資訊,請參閱 從本機檔案註冊模型。
SDK v2
設定模型、環境和評分文稿:
from azure.ai.ml.entities import Model # configure a model model = Model(path="../model-1/model/sklearn_regression_model.pkl") # configure an environment from azure.ai.ml.entities import Environment env = Environment( conda_file="../model-1/environment/conda.yml", image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210727.v1", ) # configure an inference configuration with a scoring script from azure.ai.ml.entities import CodeConfiguration code_config = CodeConfiguration( code="../model-1/onlinescoring", scoring_script="score.py" )
設定及建立 線上端點:
import datetime from azure.ai.ml.entities import ManagedOnlineEndpoint # create a unique endpoint name with current datetime to avoid conflicts online_endpoint_name = "endpoint-" + datetime.datetime.now().strftime("%m%d%H%M%f") # define an online endpoint endpoint = ManagedOnlineEndpoint( name=online_endpoint_name, description="this is a sample online endpoint", auth_mode="key", tags={"foo": "bar"}, ) # create the endpoint: ml_client.begin_create_or_update(endpoint)
設定及建立 線上部署:
from azure.ai.ml.entities import ManagedOnlineDeployment # define a deployment blue_deployment = ManagedOnlineDeployment( name="blue", endpoint_name=online_endpoint_name, model=model, environment=env, code_configuration=code_config, instance_type="Standard_F2s_v2", instance_count=1, ) # create the deployment: ml_client.begin_create_or_update(blue_deployment) # blue deployment takes 100 traffic endpoint.traffic = {"blue": 100} ml_client.begin_create_or_update(endpoint)
如需端點和部署概念的詳細資訊,請參閱 什麼是在線端點?
提交要求
SDK v1
import json data = { "query": "What color is the fox", "context": "The quick brown fox jumped over the lazy dog.", } data = json.dumps(data) predictions = service.run(input_data=data) print(predictions)
SDK v2
# test the endpoint (the request will route to blue deployment as set above) ml_client.online_endpoints.invoke( endpoint_name=online_endpoint_name, request_file="../model-1/sample-request.json", ) # test the specific (blue) deployment ml_client.online_endpoints.invoke( endpoint_name=online_endpoint_name, deployment_name="blue", request_file="../model-1/sample-request.json", )
刪除資源
SDK v1
service.delete()
SDK v2
ml_client.online_endpoints.begin_delete(name=online_endpoint_name)
SDK v1 和 SDK v2 中的主要功能對應
相關文件
如需更多資訊,請參閱
v2 檔:
v1 檔: