单元 3. 训练、注册、部署模型


完成主任务流设计和编排后,可在 ParallelFor 算子的子画布中设计和编排任务流,训练、注册、和部署模型,预测每个场站的风功率。


设计任务流

训练、注册、部署模型的处理逻辑如下:

  1. 训练模型:将场站ID(即item的值,如 abcde0001)传给训练模型的 Python 脚本,训练完成后会生成模型。

  2. 创建模型:使用 item 名称自动创建一个模型,并输出模型名称;如果模型已存在,则不用创建,直接将模型名称输出。

  3. 上架模型版本:对步骤2中生成的模型,上架对应的模型版本。

  4. 模型测试:在正式部署模型版本前,对已上架的模型版本进行测试,测试通过后再正式部署上线。

  5. 创建模型部署实例。

  6. 模型部署:将测试通过的模型版本部署上线。


双击 ParallelFor 算子,将算子拖到 ParallelFor 算子的子画布中,完成编排后的任务流如下图所示:

../_images/sub_pipeline_overview.png


任务流中编排的每个算子的配置说明如下:

Git Directory 算子

名称:Git directory for transform2

描述:从 Git 目录拉取训练模型的 Python 脚本

输入参数

参数名称

数据类型

操作类型

data_source_name

String

声明

注册的 Git 数据源名称

branch

String

声明

master

project

String

声明

workspace1

paths

List

声明

[“workspace1/kmmlds”]

输出参数

参数名称

workspace

directory

paths

list

算子配置示例如下图所示:

../_images/git_directory_2.png

Python 算子

名称:Transform2

描述:对输入文件做格式化处理,用于 Notebook 算子的输入。

输入参数

参数名称

数据类型

操作类型

workspace

Directory

引用

Git directory for transform2.workspace

entrypoint

String

声明

workspace1/kmmlds/transform2.py

requirements_file_path

String

声明

string_data

variable

引用

item

输出参数

参数名称

output_list

list

算子配置示例如下图所示:

../_images/python_transform_2.png

Notebook 算子

名称:Model Traning

描述:训练模型

输入参数

参数名称

数据类型

操作类型

workspace

Directory

引用

Git directory for transform2.workspace

entrypoint

String

声明

workspace1/kmmlds/train2.ipynb

requirements_file_path

String

声明

workspace1/kmmlds/requirements.txt

env

List

引用

Transform2.output_list

输出参数

参数名称

mlflow_model_file_paths

list

算子配置示例如下图所示:

../_images/notebook.png

Model 算子

名称:Model

描述:注册模型

输入参数

参数名称

数据类型

操作类型

category

String

声明

Predictor

model_name

String

引用

item

input_data_type

String

声明

Text

scope

String

声明

Private

technique

String

声明

Regression

usecase

String

声明

Wind

publisher

String

声明

user_name(填入用户名)

input_format

String

声明

以JSON格式的模型特征输入参数,参见示例。

output_format

String

声明

以JSON格式的模型目标输出,参见示例。

interface

String

声明

REST

error_on_exist

String

声明

false

输出参数

参数名称

数据类型

model_name_output

string

算子配置示例如下图所示:

../_images/model.png

input_format 示例

[{
    "name": "X-basic.hour",
    "dtype": "int",
    "ftype": "continuous",
    "range": [0, 23],
    "annotations": "",
    "repeat": null,
    "defaultValue": 10
}, {
    "name": "X-basic.horizon",
    "dtype": "int",
    "ftype": "continuous",
    "range": [0, 49],
    "annotations": "",
    "repeat": null,
    "defaultValue": 8
}, {
    "name": "i-set",
    "dtype": "int",
    "ftype": "continuous",
    "range": [0, 440],
    "annotations": "",
    "repeat": null,
    "defaultValue": 300
}, {
    "name": "EC-ws",
    "dtype": "float",
    "ftype": "continuous",
    "range": [1, 2],
    "annotations": "",
    "repeat": null,
    "defaultValue": "1.5"
}, {
    "name": "EC-wd",
    "dtype": "float",
    "ftype": "continuous",
    "range": [240, 300],
    "annotations": "",
    "repeat": null,
    "defaultValue": 250
}, {
    "name": "EC-tmp",
    "dtype": "float",
    "ftype": "continuous",
    "range": [18, 30],
    "annotations": "",
    "repeat": null,
    "defaultValue": 20
}, {
    "name": "EC-pres",
    "dtype": "float",
    "ftype": "continuous",
    "range": [820, 900],
    "annotations": "",
    "repeat": null,
    "defaultValue": 850
}, {
    "name": "EC-rho",
    "dtype": "float",
    "ftype": "continuous",
    "range": [1, 2],
    "annotations": "",
    "repeat": null,
    "defaultValue": 1
}, {
    "name": "EC-dist",
    "dtype": "float",
    "ftype": "continuous",
    "range": [12, 100],
    "annotations": "",
    "repeat": null,
    "defaultValue": 14
}, {
    "name": "GFS-ws",
    "dtype": "float",
    "ftype": "continuous",
    "range": [1, 2],
    "annotations": "",
    "repeat": null,
    "defaultValue": 1
}, {
    "name": "GFS-wd",
    "dtype": "float",
    "ftype": "continuous",
    "range": [40, 300],
    "annotations": "",
    "repeat": null,
    "defaultValue": 50
}, {
    "name": "GFS-tmp",
    "dtype": "float",
    "ftype": "continuous",
    "range": [18, 20],
    "annotations": "",
    "repeat": null,
    "defaultValue": 19
}, {
    "name": "GFS-pres",
    "dtype": "float",
    "ftype": "continuous",
    "range": [840, 900],
    "annotations": "",
    "repeat": null,
    "defaultValue": 850
}, {
    "name": "GFS-rho",
    "dtype": "float",
    "ftype": "continuous",
    "range": [1, 2],
    "annotations": "",
    "repeat": null,
    "defaultValue": 1
}, {
    "name": "GFS-dist",
    "dtype": "int",
    "ftype": "continuous",
    "range": [12, 100],
    "annotations": "",
    "repeat": null,
    "defaultValue": 20
}, {
    "name": "sequence",
    "dtype": "int",
    "ftype": "continuous",
    "range": [1, 26901],
    "annotations": "",
    "repeat": null,
    "defaultValue": 20
}]

output_format 示例

[{
    "name": "power",
    "dtype": "float",
    "ftype": "continuous",
    "range": [],
    "annotations": "",
    "repeat": null,
    "defaultValue": 0
}]

Mlflow Model Version Register 算子

名称:Model Version Register

描述:上架模型版本

输入参数

参数名称

数据类型

操作类型

input_data

String

声明

模型版本参数输入,参见示例。

version_rule

String

声明

time

annotation

String

声明

test

architecture

String

声明

x86

coprocessor

String

声明

None

env_param

List

声明

[]

framework

String

声明

sklearn

language

String

声明

python3

model_reference

String

引用

Model.model_name_output

publisher

String

声明

user_name(模型版本创建人名称)

minio_paths

List

引用

Model Traning.mlflow_model_file_paths

输出参数

参数名称

参数类型

create_model_revision

String

model_revision_name

String

model_builder_name

String

算子配置示例如下图所示:

../_images/model_version.png

input_data 示例

{
    "data": {
        "names": ["sequence", "X-basic.hour", "X-basic.horizon", "i-set", "EC-ws", "EC-wd", "EC-tmp", "EC-pres", "EC-rho", "EC-dist", "GFS-ws", "GFS-wd", "GFS-tmp", "GFS-pres", "GFS-rho", "GFS-dist"],
        "ndarray": [
            [20000, 11, 37, 1, 2, 257, 18, 85, 0, 15, 1, 6, 20, 879, 1, 59],
            [200500, 1, 3, 1, 2, 57, 18, 85, 0, 15, 1, 1, 20, 879, 1, 59]
        ]
    }
}

Model Test 算子

名称:Model Test

描述:模型版本测试

输入参数

参数名称

数据类型

操作类型

input_data

String

声明

输入JSON格式的模型测试数据,参见示例。

model_builder

String

引用

Model Version Register.model_builder_name

输出参数

参数名称

参数类型

create_model_test

String

model_test_output

String

算子配置示例如下图所示:

../_images/model_test.png

input_data 示例

{
    "data": {
        "names": ["sequence", "X-basic.hour", "X-basic.horizon", "i-set", "EC-ws", "EC-wd", "EC-tmp", "EC-pres", "EC-rho", "EC-dist", "GFS-ws", "GFS-wd", "GFS-tmp", "GFS-pres", "GFS-rho", "GFS-dist"],
        "ndarray": [
            [20000, 11, 37, 1, 2, 257, 18, 85, 0, 15, 1, 6, 20, 879, 1, 59],
            [200500, 1, 3, 1, 2, 57, 18, 85, 0, 15, 1, 1, 20, 879, 1, 59]
        ]
    }
}

Single Instance 算子

名称:Model Instance

描述:模型部署实例

输入参数

参数名称

数据类型

操作类型

name

String

声明

输入模型部署实例的名称(例如:abctest)

resource_pool

String

声明

选择部署模型的资源池

model_name

String

引用

Model.model_name_output

labels

List

声明

(可选)输入模型部署实例的标签

description

String

声明

(可选)输入模型部署实例的描述

deploy_mode

String

声明

ONLINE

error_on_exist

String

声明

false

输出参数

参数名称

参数类型

instance_name_output

String

算子配置示例如下图所示:

../_images/model_instance.png

Single Model Deployment 算子

名称:Single Model Deployment

描述:模型版本部署

输入参数

参数名称

数据类型

操作类型

model_revision

String

引用

Model Version Register.model_revision_name

instance_name

String

声明

Model Instance.instance_name_output

request_cpu

Number

声明

0.5

request_memory

Number

声明

0.5

limit_cpu

Number

声明

1.0

limit_memory

Number

声明

1.0

timeout

Number

声明

360

输出参数

参数名称

参数类型

create_model_deployment

String

算子配置示例如下图所示:

../_images/model_deployment.png

下一单元

设计数据到达监控与事件触发机制