本文通过示例为您介绍如何使用Easyrec算法库进行模型训练、部署在线服务,并形成例行化Pipeline工作流。
前提条件
- 已创建DataScience集群,并且选择了Kubeflow服务,详情请参见创建集群。
- 本地安装了PuTTY和文件传输工具(SSH Secure File Transfer Client)。
- 下载dsdemo代码:请已创建DataScience集群的用户,使用钉钉搜索钉钉群号32497587加入钉钉群以获取dsdemo代码。
操作流程
步骤一:准备工作
- 可选:安装软件包。
- 登录容器镜像服务控制台,开通个人免费版ACR,并创建命名空间。创建命名空间详情,请参见命名空间的基本操作。说明 如果您选用的是ACR企业版,则可以设置对VPC开放,以提升安全性。
- 修改config文件的REGISTRY地址和experiment命名空间名称,并登录ACR。
- 挂载NAT网关访问ACR,详情请参见创建和管理公网NAT网关实例。
- 准备测试数据。重要 您可以将测试数据写到DataScience集群的HDFS中,也可以按需写到您自己的HDFS中,但需要保证网络畅通。
# 选ppd, prepare test data. sh allinlone.sh
根据返回信息提示,选择
ppd) Prepare data
。
步骤二:提交任务
重要 需要修改config的REPOSITORY地址为您自己的ACR仓库地址、VERSION版本号以及experiment命名空间名称。
- 执行allinone.sh文件。
sh allinone.sh -d
返回信息如下。loading ./config You are now working on k8snamespace: default *** Welcome to DataScience *** 0) Exit k8s: default ppd) Prepare data ppk) Prepare DS/K8S config cacr) checking ACR 1|build) build training image bnt) build notebook image buildall) build all images(slow) dck) deletecheckpoint ser) showevalresult apc) applyprecheck dpc) deleteprecheck 2) applytraining 3) deletetraining 4) applyeval 5) deleteeval 4d) applyevaldist 5d) deleteevaldist 4hr) applyevalhitrate 5hr) deleteevalhitrate 6) applyexport 7) deleteexport 8) applyserving 9) deleteserving 10) applypredict 11) deletepredict 12) applyfeatureselection 13) deletefeatureselection 14) applycustomizeaction 15) deletecustomizeaction 16) applypytorchtraining 17) deletepytorchtraining mt) multidaystraining dmt) deletemultidaystraining me) multidayseval dme) deletemultidayseval cnt) createnotebook dnt) deletenotebook snt) shownotebooklink cft) createsftp dft) deletesftp sft) showsftplink che) createhue dhe) deletehue she) showhuelink chd) createhttpd dhd) deletehttpd shd) showhttpdlink cvs) createvscode dvs) deletevscode svs) showvscodelink a) kubectl get tfjobs b) kubectl get sdep c) kubectl get pytorchjobs mp|mpl) compile mlpipeline bp|bpl) compile bdpipeline bu) bdupload tb) tensorboard vc) verifyconfigfile spl) showpaireclink tp) kubectl top pods tn) kubectl top nodes util) show nodes utils logs) show pod logs setnl) set k8s node label e|clean) make clean cleanall) make cleanall sml) showmilvuslink sall) show KubeFlow/Grafana/K8SOverview/Spark/HDFS/Yarn/EMR link 99) kubectl get pods 99l) kubectl get pods along with log url >
- 输入选项并单击回车。您可以通过Tensorboard查看训练过程中的auc曲线:
- 执行以下命令,进入ml_on_ds目录。
sudo cd /root/dsdemo/ml_on_ds
- 执行以下命令,运行Tensorboard。
sh run_tensorboard.sh
选择
tb
, 会显示当前实验的ckpt的Tensorboard信息,或者执行sh run_tensorboard.sh 20211209
命令,查看20211209训练ckpt的Tensorboard信息。说明- 默认使用config里TODAY_MODELDIR的modeldir。您也可以指定日期的modeldir,例如
sh run_tensorboard.sh hdfs://192.168.**.**:9000/user/easy_rec/20210923/
。 - 您可以自行修改run_tensorboard.sh脚本内容,调整相应的参数。
- 默认使用config里TODAY_MODELDIR的modeldir。您也可以指定日期的modeldir,例如
- 您可以在浏览器访问http://<yourPublicIPAddress>:6006,查看auc曲线。
- 执行以下命令,进入ml_on_ds目录。
(可选)步骤三:制作Hive CLI、Spark CLI、dscontroller、Hue、notebook或httpd镜像
说明
- 制作Hive CLI或Spark CLI镜像的目的是提交Hive或Spark任务进行大数据处理,生成待训练的数据,如果您已经自行准备好数据,可以跳过本步骤。如果是Spark任务,则会直接使用DataScience集群自带的Spark集群,如果是Hive任务,需要使用单独的Hadoop或Hive集群。
- dscontroller镜像用来进行动态扩缩容。
- Hive CLI进入Hive CLI目录并制作镜像。
cd hivecli && make
- Spark CLI进入Spark CLI目录并制作镜像。
cd sparkcli && make
- dscontroller进入dscontroller目录并制作镜像。
cd dscontroller && make
- Hue进入Hue目录并制作镜像。
cd hue && make
- notebook进入notebook目录并制作镜像。
cd notebook && make
- httpd进入httpd目录并制作镜像。
cd httpd && make
步骤四:编译Pipeline
Pipeline代码具体请参见mlpipeline.py。
- 执行以下命令,进入/ml_on_ds目录。
sudo cd /root/dsdemo/ml_on_ds
- 执行以下命令,编译Pipeline。
make mpl
说明 您也可以执行命令sh allinone.sh
,选择mpl
来编译Pipeline。编译成功后生成***_mlpipeline.tar.gz文件。您可以使用文件传输工具将编译出来的***_mlpipeline.tar.gz文件,下载到本地PC,便于后续上传。
步骤五:上传Pipeline文件
- 进入集群详情页面。
- 登录阿里云E-MapReduce控制台。
- 在顶部菜单栏处,根据实际情况选择地域和资源组。
- 单击上方的集群管理页签。
- 在集群管理页面,单击相应集群所在行的详情。
- 在集群基础信息页面的主机信息区域,查看公网IP地址。
- 在地址栏中,输入http://<yourPublicIPAddress>:31380,按回车键。使用默认的anonymous空间即可。进入后,默认页面如下。说明 <yourPublicIPAddress>为您前一步骤中,获取的公网IP地址。
- 在左侧导航栏,单击Pipelines。
- 在Pipelines页面,单击Upload pipeline。
- 在Upload Pipeline or Pipeline Version,输入Pipeline Name,选择编译出的文件。
- 单击Create。
步骤六:创建并运行Experiments
- 在Kubeflow的左侧导航栏,单击Experiments。
- 单击上方的Create experiment。
- 在New experiment页面,输入Experiment name。
- 单击Next。
- 在Start a run页面,配置参数。
- 单击Start。
(可选)步骤七:查看Pipeline状态
您可以在Experiments中查看Pipeline状态,模型示例展示如下。
步骤八:模型预测
- (推荐)使用HTTP请求方式
此方式支持任何开发语言。预测代码请参见predict_rest.sh文件。
您可以执行以下命令进行模型预测。重要 代码中的default
是default命令空间,easyrec-tfserving
为部署Serving用的默认名称,请您按需调整。!/bin/sh curl -X POST http://127.0.0.1:31380/seldon/default/easyrec-tfserving/api/v1.0/predictions -H 'Content-Type: application/json' -d ' { "jsonData": { "inputs": { "app_category":["10","10"], "app_domain":["1005","1005"], "app_id":["0","0"], "banner_pos":["85f751fd","4bf5bbe2"], "c1":["c4e18dd6","6b560cc1"], "c14":["50e219e0","28905ebd"], "c15":["0e8e4642","ecad2386"], "c16":["b408d42a","7801e8d9"], "c17":["09481d60","07d7df22"], "c18":["a99f214a","a99f214a"], "c19":["5deb445a","447d4613"], "c20":["f4fffcd0","cdf6ea96"], "c21":["1","1"], "device_conn_type":["0","0"], "device_id":["2098","2373"], "device_ip":["32","32"], "device_model":["5","5"], "device_type":["238","272"], "hour":["0","3"], "site_category":["56","5"], "site_domain":["0","0"], "site_id":["5","3"] } } }'
返回结果如下。{"jsonData":{"outputs":{"logits":[-7.20718098,-4.15874624],"probs":[0.000740694755,0.0153866885]}},"meta":{}}
- 使用Seldon库方式执行以下命令,模型预测REST协议。
python3.7 predict_rest.py
返回信息如下。Response: {'jsonData': {'outputs': {'logits': [-2.66068792, 0.691401482], 'probs': [0.0653333142, 0.66627866]}}, 'meta': {}}
说明 预测代码请参见predict_rest.py文件。
步骤九:通过PairecEngine部署在线服务
详细信息,请参见PAI-Rec使用示例。
问题反馈
如果您在使用DataScience集群过程中有任何疑问或问题,请联系我们的技术人员协助处理,同时也欢迎您使用钉钉搜索钉钉群号32497587加入钉钉群进行反馈或交流。