使用前置命令和后置命令

简介

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

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

使用示例

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

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中,然后执行下面的命令。

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"

挂载fdsfuse

我们也可以在运行训练任务前,通过fdsfuse把FDS数据映射到容器本地,这样所有深度学习框架都可以像访问本地一样访问分布式存储。

cloudml jobs submit -n deep -m trainer.task -u fds://cloud-ml/trainer-1.0.tar.gz -pc "export XIAOMI_ACCESS_KEY_ID="AKJUDVxxxxxxxx43UI" && export XIAOMI_SECRET_ACCESS_KEY="15xzSfTO2qYMmxxxxxxxxxxxxxsUbx96959ky" && export XIAOMI_FDS_ENDPOINT="cnbj1-fds.api.xiaomi.net" && fdsfuse testfdsfuse /fds -o use_cache=/fdscache" -a "--train_file=/fds/deep_recommend_system/data/cancer/cancer_train.csv.tfrecords --validate_file=/fds/deep_recommend_system/data/cancer/cancer_test.csv.tfrecords"

挂载s3fs

s3fs与fdsfuse类似,只需要把前置命令改成下面,即可直接访问AWS S3的训练数据。

echo AKIAJxxxxxxxxxxxxx5CTQ:j0m+Xwe8jBQyCxxxxxxxxxxxxxxxxxxAQ3piA4 > /tmp/passwd && chmod 600 /tmp/passwd && s3fs tobebucket /s3 -o passwd_file=/tmp/passwd

参数介绍

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

results matching ""

    No results matching ""