fate_flow_model_registry.zh.md 7.7 KB

联合模型注册中心

1. 说明

由 FATE 训练的模型会自动保存到本地并记录在 FATE-Flow 的数据库中,每个组件运行完成后保存的模型称为 Pipeline 模型,在组件运行时定时保存的模型称为 Checkpoint 模型。Checkpoint 模型也可以用于组件运行意外中断后,重试时的“断点续传”。

Checkpoint 模型的支持自 1.7.0 加入,默认是不保存的,如需启用,则要向 DSL 中加入 callback ModelCheckpoint

本地磁盘存储

  • Pipeline 模型存储于 model_local_cache/<party_model_id>/<model_version>/variables/data/<component_name>/<model_alias>

  • Checkpoint 模型存储于 model_local_cache/<party_model_id>/<model_version>/checkpoint/<component_name>/<step_index>#<step_name>

目录结构

tree model_local_cache/guest#9999#arbiter-10000#guest-9999#host-10000#model/202112181502241234200

model_local_cache/guest#9999#arbiter-10000#guest-9999#host-10000#model/202112181502241234200
├── checkpoint
│   ├── data_transform_0
│   ├── evaluation_0
│   ├── hetero_linr_0
│   │   ├── 0#step_name
│   │   │   ├── HeteroLinearRegressionMeta.json
│   │   │   ├── HeteroLinearRegressionMeta.pb
│   │   │   ├── HeteroLinearRegressionParam.json
│   │   │   ├── HeteroLinearRegressionParam.pb
│   │   │   └── database.yaml
│   │   ├── 1#step_name
│   │   │   ├── HeteroLinearRegressionMeta.json
│   │   │   ├── HeteroLinearRegressionMeta.pb
│   │   │   ├── HeteroLinearRegressionParam.json
│   │   │   ├── HeteroLinearRegressionParam.pb
│   │   │   └── database.yaml
│   │   ├── 2#step_name
│   │   │   ├── HeteroLinearRegressionMeta.json
│   │   │   ├── HeteroLinearRegressionMeta.pb
│   │   │   ├── HeteroLinearRegressionParam.json
│   │   │   ├── HeteroLinearRegressionParam.pb
│   │   │   └── database.yaml
│   │   ├── 3#step_name
│   │   │   ├── HeteroLinearRegressionMeta.json
│   │   │   ├── HeteroLinearRegressionMeta.pb
│   │   │   ├── HeteroLinearRegressionParam.json
│   │   │   ├── HeteroLinearRegressionParam.pb
│   │   │   └── database.yaml
│   │   └── 4#step_name
│   │       ├── HeteroLinearRegressionMeta.json
│   │       ├── HeteroLinearRegressionMeta.pb
│   │       ├── HeteroLinearRegressionParam.json
│   │       ├── HeteroLinearRegressionParam.pb
│   │       └── database.yaml
│   ├── hetero_linr_1
│   ├── intersection_0
│   └── reader_0
├── define
│   ├── define_meta.yaml
│   ├── proto
│   │   └── pipeline.proto
│   └── proto_generated_python
│       ├── __pycache__
│       │   └── pipeline_pb2.cpython-36.pyc
│       └── pipeline_pb2.py
├── run_parameters
│   ├── data_transform_0
│   │   └── run_parameters.json
│   ├── hetero_linr_0
│   │   └── run_parameters.json
│   ├── hetero_linr_1
│   │   └── run_parameters.json
│   └── pipeline
│       └── run_parameters.json
└── variables
    ├── data
    │   ├── data_transform_0
    │   │   └── model
    │   │       ├── DataTransformMeta
    │   │       ├── DataTransformMeta.json
    │   │       ├── DataTransformParam
    │   │       └── DataTransformParam.json
    │   ├── hetero_linr_0
    │   │   └── model
    │   │       ├── HeteroLinearRegressionMeta
    │   │       ├── HeteroLinearRegressionMeta.json
    │   │       ├── HeteroLinearRegressionParam
    │   │       └── HeteroLinearRegressionParam.json
    │   ├── hetero_linr_1
    │   │   └── model
    │   │       ├── HeteroLinearRegressionMeta
    │   │       ├── HeteroLinearRegressionMeta.json
    │   │       ├── HeteroLinearRegressionParam
    │   │       └── HeteroLinearRegressionParam.json
    │   └── pipeline
    │       └── pipeline
    │           ├── Pipeline
    │           └── Pipeline.json
    └── index

32 directories, 47 files

checkpoint

此目录存储组件运行过程中,每轮迭代产生的模型,不是所有组件都支持 checkpoint。

checkpoint/hetero_linr_0/2#step_name 为例:

hetero_linr_0component_name2step_index,即迭代次数;step_name 目前只做占位符,没有使用。

HeteroLinearRegressionMeta.json, HeteroLinearRegressionMeta.pb, HeteroLinearRegressionParam.json, HeteroLinearRegressionParam.pb 都是训练产生的数据,可以理解为模型文件。database.yaml 主要记录上述文件的 hash 以作校验,还存储有 step_index, step_name, create_time

define

该目录储存作业的基本信息,在作业初始化时创建。pipeline 不是一个组件,而是代表整个作业。

define/proto/pipeline.protodefine/proto/pipeline_pb2.py 目前没有使用。

define/define_meta.yaml 记录组件列表,包括 component_name, componet_module_name, model_alias

run_parameters

此目录存储组件的配置信息,也称为 DSL。

run_parameters/pipeline/run_parameters.json 为一个空的 object {}

variables

此目录存储组件运行结束后产生的模型,与最后一轮迭代产生的模型一致。

variables/data/hetero_linr_0/model 为例:

hetero_linr_0component_namemodelmodel_alias

HeteroLinearRegressionMeta, HeteroLinearRegressionMeta.json, HeteroLinearRegressionParam HeteroLinearRegressionParam.jsoncheckpoint 目录下的文件格式完全一致,除了 .pb 文件去掉了扩展名。

variables/data/pipeline/存储作业的详细信息。

variables/index/ 目前没有使用。

远端存储引擎

本地磁盘并不可靠,因此模型有丢失的风险,FATE-Flow 支持导出模型到指定存储引擎、从指定存储引擎导入以及自动发布模型时推送模型到引擎存储。

存储引擎支持腾讯云对象存储、MySQL 和 Redis, 具体请参考存储引擎配置

2. Model

{{snippet('cli/model.zh.md', '## Model')}}

3. Checkpoint

{{snippet('cli/checkpoint.zh.md', '## Checkpoint')}}

4. 存储引擎配置

enable_model_store

开启后,在调用 /model/load 时:如果模型文件在本地磁盘存在、但不在存储引擎中,则自动把模型文件上传至存储引擎;如果模型文件在存储引擎存在、但不在本地磁盘中,则自动把模型文件下载到本地磁盘。

此配置不影响 /model/store/model/restore

model_store_address

此配置定义使用的存储引擎。

腾讯云对象存储

storage: tencent_cos
# 请从腾讯云控制台获取下列配置
Region:
SecretId:
SecretKey:
Bucket:

MySQL

storage: mysql
database: fate_model
user: fate
password: fate
host: 127.0.0.1
port: 3306
# 可选的数据库连接参数
max_connections: 10
stale_timeout: 10

Redis

storage: redis
host: 127.0.0.1
port: 6379
db: 0
password:
# key 的超时时间,单位秒。默认 None,没有超时时间。
ex: