无代码模型部署(预览)

无代码模型部署目前处于预览阶段,支持以下机器学习框架:

TensorFlow SavedModel 格式

需要以 SavedModel 格式注册 TensorFlow 模型,才能进行无代码模型部署。

请查看此链接,了解如何创建 SavedModel。

我们支持 TensorFlow Serving DockerHub 的“标记”下列出的任何 TensorFlow 版本。

from azureml.core import Model

model = Model.register(workspace=ws,
                       model_name='flowers',                        # Name of the registered model in your workspace.
                       model_path='./flowers_model',                # Local Tensorflow SavedModel folder to upload and register as a model.
                       model_framework=Model.Framework.TENSORFLOW,  # Framework used to create the model.
                       model_framework_version='1.14.0',            # Version of Tensorflow used to create the model.
                       description='Flowers model')

service_name = 'tensorflow-flower-service'
service = Model.deploy(ws, service_name, [model])

ONNX 模型

任何 ONNX 推理图都支持 ONNX 模型注册和部署。 当前不支持预处理和后续处理步骤。

下面是有关如何注册和部署 MNIST ONNX 模型的示例:

from azureml.core import Model

model = Model.register(workspace=ws,
                       model_name='mnist-sample',                  # Name of the registered model in your workspace.
                       model_path='mnist-model.onnx',              # Local ONNX model to upload and register as a model.
                       model_framework=Model.Framework.ONNX ,      # Framework used to create the model.
                       model_framework_version='1.3',              # Version of ONNX used to create the model.
                       description='Onnx MNIST model')

service_name = 'onnx-mnist-service'
service = Model.deploy(ws, service_name, [model])

若要对模型进行评分,请参阅使用部署为 Web 服务的 Azure 机器学习模型。 许多 ONNX 项目使用 protobuf 文件来紧凑存储训练和验证数据,这样就可能难以知道服务所需的数据格式。 作为模型开发人员,你应该为开发人员提供文档:

  • 输入格式(JSON 或二进制)
  • 输入数据形状和类型(例如,形状为 [100,100,3] 的浮点数组)
  • 域信息(例如,有关图像、颜色空间、组件顺序以及值是否已规范化的信息)

如果使用的是 Pytorch,请阅读将模型从 PyTorch 导出到 ONNX,详细了解转换和限制。

Scikit-learn 模型

所有内置 scikit-learn 模型类型都支持无代码模型部署。

下面的示例演示如何在不使用额外代码的情况下注册和部署 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='0.19.1',             # Version of scikit-learn used to create the model.
                       resource_configuration=ResourceConfiguration(cpu=1, memory_in_gb=0.5),
                       description='Ridge regression model to predict diabetes progression.',
                       tags={'area': 'diabetes', 'type': 'regression'})

service_name = 'my-sklearn-service'
service = Model.deploy(ws, service_name, [model])

注意

默认情况下,支持 predict_proba 的模型会使用该方法。 要重写此内容以使用预测,可以修改 POST 正文,如下所示:

import json

input_payload = json.dumps({
    'data': [
        [ 0.03807591,  0.05068012,  0.06169621, 0.02187235, -0.0442235,
         -0.03482076, -0.04340085, -0.00259226, 0.01990842, -0.01764613]
    ],
    'method': 'predict'  # If you have a classification model, the default behavior is to run 'predict_proba'.
})

output = service.run(input_payload)

print(output)

注意

这些依赖项包含在预建的 scikit-learn 推理容器中:

    - dill
    - azureml-defaults
    - inference-schema[numpy-support]
    - scikit-learn
    - numpy
    - joblib
    - pandas
    - scipy
    - sklearn_pandas

后续步骤