使用前置命令和后置命令

简介

Xiaomi Cloud-ML支持前置命令和后置命令功能,用户可以在训练之前和训练之后执行自定义的Shell命令。

用户可以通过前置命令和后置命令实现数据下载、初始化Kerberos权限、挂载FUSE目录等功能。

使用示例

通过命令行参数 -pc-fc 参数就可以使用这个功能,可以通过查看训练日志确认命令是否执行成功。

  1. cloudml jobs submit -n linear -m trainer.task -u fds://cloud-ml/trainer-1.0.0.tar.gz -pc "ls /tmp" -fc "ls /tmp"

访问HDFS

基于前置命令我们可以实现安全HDFS集群的初始化,使用时需要保证Hadoop集群的配置文件已经在容器镜像中,并且上传对应的训练数据到HDFS中,然后执行下面的命令。

  1. cloudml jobs submit -n deep -m trainer.task -u fds://cloud-ml/trainer-1.0.tar.gz -pc "echo rdKxxxxxxTrnyYU | kinit u_chendihao@XIAOMI.HADOOP" -a "--train_file hdfs://namenode:port/deep_recommend_system/data/cancer_train.csv.tfrecords --validate_file hdfs://namenode:port/deep_recommend_system/data/cancer_test.csv.tfrecords"
## 挂载s3fs s3fs与fdsfuse类似,只需要把前置命令改成下面,即可直接访问AWS S3的训练数据。
  1. echo AKIAJxxxxxxxxxxxxx5CTQ:j0m+Xwe8jBQyCxxxxxxxxxxxxxxxxxxAQ3piA4 > /tmp/passwd && chmod 600 /tmp/passwd && s3fs tobebucket /s3 -o passwd_file=/tmp/passwd

参数介绍

  • -pc 表示前置命令,会在训练开始前运行。
  • -fc 表示后置命令,会在训练结束后运行。

原文: http://docs.api.xiaomi.com/cloud-ml/trainjob/0502_use_prepare_command.html