单元 3. 训练、注册、部署模型¶
完成主任务流设计和编排后,可在 ParallelFor 算子的子画布中设计和编排任务流,训练、注册、和部署模型,预测每个场站的风功率。
设计任务流¶
训练、注册、部署模型的处理逻辑如下:
训练模型:将场站ID(即item的值,如
abcde0001
)传给训练模型的 Python 脚本,训练完成后会生成模型。创建模型:使用 item 名称自动创建一个模型,并输出模型名称;如果模型已存在,则不用创建,直接将模型名称输出。
上架模型版本:对步骤2中生成的模型,上架对应的模型版本。
模型测试:在正式部署模型版本前,对已上架的模型版本进行测试,测试通过后再正式部署上线。
创建模型部署实例。
模型部署:将测试通过的模型版本部署上线。
双击 ParallelFor 算子,将算子拖到 ParallelFor 算子的子画布中,完成编排后的任务流如下图所示:
任务流中编排的每个算子的配置说明如下:
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 |
算子配置示例如下图所示:
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 |
算子配置示例如下图所示:
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 |
算子配置示例如下图所示:
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 |
算子配置示例如下图所示:
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 |
算子配置示例如下图所示:
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 |
算子配置示例如下图所示:
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 |
算子配置示例如下图所示:
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 |
算子配置示例如下图所示: