客户端工具

PaddleDTX各方使用的客户端工具详细使用说明如下:

本章重点介绍使用 PaddleDTX 时的几个常用命令。

操作XuperDB

创建命名空间

使用 XuperDB 的第一步是在每一个数据持有节点创建文件存储的命名空间,使用如下命令:

$ ./xdata-cli files addns  --host http://127.0.0.1:8122 -k 14a54c188d0071bc1b161a50fe7eacb74dcd016993bb7ad0d5449f72a8780e21 -n paddlempc  -r 2

可以通过替换 host 来实现请求不同的数据持有节点;-k 参数为对应数据持有节点的私钥,不同的数据持有节点有不同私钥,可以通过对应的配置 config.toml 来获取;-n 参数为命名空间的名称,这里命名空间会被配置到任务执行节点中,所以需要创建任务执行节点中使用的命名空间;-r 参数为副本数,一般取大于 1 的数。

如果您使用 docker-compose 来部署网络,需要进入 docker 后执行命令,也可以使用docker exec命令,例如

$ docker exec -it dataowner1.node.com sh -c "./xdata-cli files addns  --host http://dataowner1.node.com:80 -k 14a54c188d0071bc1b161a50fe7eacb74dcd016993bb7ad0d5449f72a8780e21 -n paddlempc  -r 1"

使用 listns 命令可以查看已有的命名空间:

$ ./xdata-cli files listns  --host http://127.0.0.1:8122 -o 4637ef79f14b036ced59b76408b0d88453ac9e5baa523a86890aa547eac3e3a0f4a3c005178f021c1b060d916f42082c18e1d57505cdaaeef106729e6442f4e5

-o 参数为数据持有节点的公钥

上传文件

执行训练任务和预测任务之前都需要上传对应的文件,文件上传需要请求对应的数据持有节点进行上传。

对应我们部署的环境,需要上传两方的样本文件和一方的预测文件。

$ ./xdata-cli --host http://127.0.0.1:8122 files upload -k 14a54c188d0071bc1b161a50fe7eacb74dcd016993bb7ad0d5449f72a8780e21 -n paddlempc -m train_dataA4.csv -i ./train_dataA.csv --ext '{"FileType":"csv","Features":"id,CRIM,ZN,INDUS,CHAS,NOX,RM", "TotalRows":457}'  -e '2021-12-10 12:00:00' -d 'train_dataA4'
# 命令返回
FileID: 01edba10-ef04-4096-a984-c81191262d03

通过修改 host 来指定不同的数据持有节点;-k 参数为数据持有节点使用的私钥;-n 为命名空间的名称; -i 指定了上传的文件;–ext指定了样本或者预测文件中的标签;-e 为文件在 XuperDB 中的过期时间;-d 为文件描述。

上传文件后,可以使用getbyid命令进行文件的查询:

$ ./xdata-cli files getbyid  -i 01edba10-ef04-4096-a984-c81191262d03 --host http://127.0.0.1:8122

相同的,如果使用 docker 的话,需要进入 docker 后执行命令,也可以使用docker exec命令。

操作Distributed AI

Distributed AI的操作方分为两个角色,计算需求方和任务执行方,分别通过 requester-cli 和 executor-cli 两个命令行客户端进行操作。

发布训练任务

训练任务由计算需求方发起:

$ ./requester-cli task publish -a "linear-vl" -l "MEDV" -k 14a54c188d0071bc1b161a50fe7eacb74dcd016993bb7ad0d5449f72a8780e21 -t "train" -n "房价预测任务v3" -d "hahahha" -p "id,id" --conf ./testdata/executor/node1/conf/config.toml -f "01edba10-ef04-4096-a984-c81191262d03,21e5b591-9126-4df8-8b84-72a682a46fc1"
# 命令行返回
TaskID: fdc5b7e1-fc87-4e4b-86ee-b139a7721391

命令行各参数说明如下:

  • -a: 训练使用的算法, 可选线性回归 ‘linear-vl’ 或逻辑回归 ‘logistic-vl’

  • -l: 训练的目标特征

  • -k: 计算需求方的私钥, 表明了计算需求方的身份

  • -t: 任务类型, 可选训练任务’train’ 或预测任务 ‘predict’

  • -n: 任务名称

  • -d: 任务描述

  • -p: PSI求交时使用的标签

  • –conf: 使用的配置文件

  • -f: 训练使用的文件ID, 这里是一个列表, 指明了各个任务执行方需要使用的文件

与 XuperDB 的使用方法一致,当使用 docker-compose 部署时需要进入容器执行命令或者使用 docker exec 命令,后续命令将不再赘述。

确认训练任务

计算需求方发布任务之后,需要各个任务执行节点进行确认,确认时通过 executor-cli 客户端进行操作。

$ ./executor-cli task confirm  --id  fdc5b7e1-fc87-4e4b-86ee-b139a7721391 --host 127.0.0.1:8123 -k 14a54c188d0071bc1b161a50fe7eacb74dcd016993bb7ad0d5449f72a8780e21
 

各参数说明如下:

  • –id: 为训练任务的 id

  • –host: 对应任务执行节点的地址

  • -k: 任务执行节点的私钥

启动训练任务

当所有的任务执行节点对任务进行确认后,需要计算需求方触发启动命令的执行,训练任务的执行结果是产出一个预测模型。

$ ./requester-cli task start --id fdc5b7e1-fc87-4e4b-86ee-b139a7721391 -k 14a54c188d0071bc1b161a50fe7eacb74dcd016993bb7ad0d5449f72a8780e21 --conf ./testdata/executor/node1/conf/config.toml

各参数说明如下:

  • –id: 任务 id

  • -k: 需求方的私钥, 表明了需求方的身份

  • –conf: 使用的配置文件

发布预测任务

训练任务执行完成后产出预测模型,计算需求方可以提交预测任务,为预测数据计算出预测结果。

$ ./requester-cli task publish -a "linear-vl" -k 14a54c188d0071bc1b161a50fe7eacb74dcd016993bb7ad0d5449f72a8780e21 -t "predict" -n "房价任务v3" -d "hahahha" -p "id,id" --conf ./testdata/executor/node1/conf/config.toml -f "01d3b812-4dd7-4deb-a48d-4437312a164a,e02b27a6-0057-4673-b7ec-408ad060c952" -i fdc5b7e1-fc87-4e4b-86ee-b139a7721391
TaskID: a7dfac43-fa51-423e-bd05-8e0965c708a8

参数说明与发布训练任务差别在一个参数:

  • -i: 指定训练任务的ID, 使用训练任务的产出

确认预测任务

与训练任务一致,任务执行节点需对预测任务进行确认。

$ ./executor-cli task confirm  --id  a7dfac43-fa51-423e-bd05-8e0965c708a8 --host 127.0.0.1:8123 -k 14a54c188d0071bc1b161a50fe7eacb74dcd016993bb7ad0d5449f72a8780e21

启动预测任务

任务被各任务执行节点确认后,由计算需求方启动预测任务。

$ ./requester-cli task start --id a7dfac43-fa51-423e-bd05-8e0965c708a8 -k 14a54c188d0071bc1b161a50fe7eacb74dcd016993bb7ad0d5449f72a8780e21 --conf ./testdata/executor/node1/conf/config.toml

获取预测结果

预测任务执行成功后,计算需求方可以获取到预测的结果。

$ requester-cli task result --id a7dfac43-fa51-423e-bd05-8e0965c708a8 -k 14a54c188d0071bc1b161a50fe7eacb74dcd016993bb7ad0d5449f72a8780e21 --conf ./testdata/executor/node1/conf/config.toml  -o ./output.csv

各参数说明如下:

  • –id: 预测任务的 id

  • -k: 需求方的私钥

  • –conf: 指定使用的配置文件

  • -o: 预测结果的导出文件