客户端工具¶
PaddleDTX各方使用的客户端工具详细使用说明如下:
本章重点介绍使用 PaddleDTX 时的几个常用命令。
操作XuperDB¶
创建客户端帐号¶
XuperDB数据持有节点服务的访问依赖于授权的客户端公私钥,可通过如下命令创建客户端公私钥:
$ ./xdb-cli key genkey -o ./ukeys
授权客户端帐号¶
生成数据持有节点客户端公私钥后,需要服务端对客户端进行授权:
$ ./xdb-cli key addukey -o ./authkeys -u 339524f35fb86a85bc3f9eed2b6ffd976de08b2cd47953b6640912f16e6863f2123f057cfef1f7132072602255a5a39bf254569fa6f8591327255c97881bc112
该命令会将客户端公钥添加到服务端授权白名单,只有授权通过的客户端才允许请求数据持有节点进行文件上传下载。授权记录存储在服务端的 authkeys 文件夹中,-u 取值为客户端公钥。
创建命名空间¶
使用 XuperDB 服务的第一步是在每一个数据持有节点创建文件存储的命名空间,使用如下命令:
$ ./xdb-cli files addns --host http://127.0.0.1:8121 --keyPath './ukeys' -n paddlempc -r 2
可以通过替换 host 来实现请求不同的数据持有节点;–keyPath默认取值’./ukeys’, 从该文件夹中读取客户端的私钥; -n 参数为命名空间的名称;-r 参数为副本数,一般取大于 1 的数。
如果您使用 docker-compose 来部署网络,需要进入 docker 后执行命令,也可以使用docker exec命令,例如
$ docker exec -it dataowner1.node.com sh -c "./xdb-cli files addns --host http://dataowner1.node.com:80 -n paddlempc -r 2 --keyPath ./ukeys"
使用 listns 命令可以查看已有的命名空间:
$ ./xdb-cli files listns --host http://127.0.0.1:8122
–keyPath默认取值’./ukeys’, 该命令从该文件夹中读取客户端的公钥
上传文件¶
执行训练任务和预测任务之前都需要上传对应的文件,文件上传需要请求对应的数据持有节点进行上传。
对于用户部署的环境,需要分别上传两方的样本文件和预测文件。
$ ./xdb-cli --host http://127.0.0.1:8121 files upload -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' --keyPath ./ukeys
# 命令返回
FileID: 01edba10-ef04-4096-a984-c81191262d03
通过修改 host 来指定不同的数据持有节点;–keyPath默认取值’./ukeys’, 从该文件夹中读取客户端的私钥;-n 为命名空间的名称;-m 为文件名称;-i 指定了上传的文件;–ext指定了样本或者预测文件中的标签;-e 为文件在 XuperDB 中的过期时间;-d 为文件描述。
上传文件后,可以使用getbyid命令进行文件的查询:
$ ./xdb-cli files getbyid -i 01edba10-ef04-4096-a984-c81191262d03 --host http://127.0.0.1:8121
相同的,如果使用 docker 的话,需要进入 docker 后执行命令,也可以使用docker exec命令。
授权查询与确认¶
计算需求方发布训练或预测任务后,任务执行节点可获取到需自身参与计算的任务,自动向样本文件持有方发起文件授权使用申请,此时数据持有节点可通过如下命令查询授权申请列表:
$ ./xdb-cli --host http://localhost:8121 files listauth -a 6a5ba56bccf843c591a3a32baa5aa76deebffe2695d48521799b77fb0a32e286ae493143560d1f548dd494bf266d4df39375f755f6008e8db7444cd8a96258c6 -o 71c516458ef075609be6a7ebaeca23dc42a3ff3aa0597d0abd3843253da09ee5bcdc292d517617bb7eb610a5351ae92240a803cc5769346d81def574adbfdd1d
通过修改 host 来指定不同的数据持有节点;-a 为任务执行节点公钥;-o 为文件持有方公钥;
查询文件授权申请列表后,可以通过confirmauth命令进行文件授权使用确认:
$ ./xdb-cli files confirmauth --host http://127.0.0.1:8121 -e '2022-08-08 15:15:04' -i b87b588f-2e46-4ee5-8128-888592ada4fd --keyPath ./ukeys
操作Distributed AI¶
Distributed AI的操作方分为两个角色,计算需求方和任务执行方,分别通过 requester-cli 和 executor-cli 两个命令行客户端进行操作。
创建计算需求方账户¶
$ ./requester-cli key genkey -o ./keys
查询任务执行节点列表¶
发布训练或预测任务时,计算需求方需指定任务执行节点,如下命令可以查询区块链网络上的任务执行节点:
$ ./requester-cli nodes list
发布训练任务¶
训练任务由计算需求方发起:
$ ./requester-cli task publish -a "linear-vl" -l "MEDV" --keyPath './keys' -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" -e "executor1,executor2"
# 命令行返回
TaskID: fdc5b7e1-fc87-4e4b-86ee-b139a7721391
命令行各参数说明如下:
-a: 训练使用的算法, 可选线性回归 ‘linear-vl’ 或逻辑回归 ‘logistic-vl’
-l: 训练的目标特征
–keyPath: 默认取值’./keys’, 从该文件夹中读取私钥, 计算需求方的私钥, 表明了计算需求方的身份, 可以用-k 参数直接指定私钥
-t: 任务类型, 可选训练任务’train’ 或预测任务 ‘predict’
-n: 任务名称
-d: 任务描述
-p: PSI求交时使用的标签
–conf: 使用的配置文件
-f: 训练使用的文件ID, 这里是一个列表, 指明了各个任务执行方需要使用的文件
-e: 任务执行节点名称, 和-f 一一对应, 执行节点执行任务时, 分别取对应位置的样本文件
与 XuperDB 的使用方法一致,当使用 docker-compose 部署时需要进入容器执行命令或者使用 docker exec 命令,后续命令将不再赘述。
授权确认¶
计算需求方发布任务之后,各个任务执行节点会自动向数据持有节点发起文件授权使用申请,此时需要数据持有节点查询授权申请并进行确认,命令参考./xdb-cli files confirmauth
启动训练任务¶
当所有的任务执行节点对任务进行确认后,需要计算需求方触发启动命令的执行,训练任务的执行结果是产出一个预测模型。
$ ./requester-cli task start --id fdc5b7e1-fc87-4e4b-86ee-b139a7721391 --keyPath './keys' --conf ./testdata/executor/node1/conf/config.toml
各参数说明如下:
–id: 任务 id
–keyPath: 默认取值’./keys’, 从该文件夹中读取私钥, 计算需求方的私钥, 表明了计算需求方的身份, 可以用-k 参数直接指定私钥
–conf: 使用的配置文件
发布预测任务¶
训练任务执行完成后产出预测模型,计算需求方可以提交预测任务,为预测数据计算出预测结果。
$ ./requester-cli task publish -a "linear-vl" --keyPath './keys' -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 -e "executor1,executor2"
TaskID: a7dfac43-fa51-423e-bd05-8e0965c708a8
参数说明与发布训练任务差别在一个参数:
-i: 指定训练任务的ID, 使用训练任务的产出
授权确认¶
计算需求方发布任务之后,各个任务执行节点会自动向数据持有节点发起文件授权使用申请,此时需要数据持有节点查询授权申请并进行确认,命令参考./xdb-cli files confirmauth
启动预测任务¶
任务被各任务执行节点确认后,由计算需求方启动预测任务。
$ ./requester-cli task start --id a7dfac43-fa51-423e-bd05-8e0965c708a8 --keyPath './keys' --conf ./testdata/executor/node1/conf/config.toml
获取预测结果¶
预测任务执行成功后,计算需求方可以获取到预测的结果。
$ ./requester-cli task result --id a7dfac43-fa51-423e-bd05-8e0965c708a8 --keyPath './keys' --conf ./testdata/executor/node1/conf/config.toml -o ./output.csv
各参数说明如下:
–id: 预测任务的 id
–keyPath: 默认取值’./keys’, 从该文件夹中读取私钥, 计算需求方的私钥, 表明了计算需求方的身份, 可以用-k 参数直接指定私钥
–conf: 指定使用的配置文件
-o: 预测结果的导出文件