驰骋AI Challenger赛场神器 UCloud AI训练平台使用技巧 | U刻
  • 驰骋AI Challenger赛场神器 UCloud AI训练平台使用技巧

    近日,由创新工场联合搜狗、今日头条发起的“AI Challenger全球AI挑战赛”已经启动,中国领先云计算服务商UCloud作为大赛唯一的AI GPU合作方,为大赛独家提供AI模型训练服务(UCloud AI Train)。为便于AI Challenger参赛选手更好地准备竞赛和答题,UCloud为大赛官方提供一系列AI训练平台使用技巧讲解活动。

    官方支持

    2017年9月12日晚20:00,UCloud实验室人工智能专家范融为参赛选手和AI爱好者提供了一场精彩的讲解,内容涵盖了AI训练服务概述和功能特性、简单的Tensorflow Mnist案例及竞赛使用技巧等几个方面。

    UCloud AI训练服务核心优势

    • 基于P40显卡集群、12TFlops的单精度性能,能够帮助选手快速提交训练任务;
    • 利用Docker容器技术,选手无需安装运行环境,仅需本地拥有Docker客户端,即可通过UCloud提供的基础镜像和自动打包工具,将本地代码打包至Docker容器,验证运行结果;
    • 使用按需收费策略。只有当选手提交的训练任务实际启动时才会计算费用。并且,通过对任务的实时监控,选手可在任意时间点中止训练,帮助选手将每一分钱都用在刀刃上。

     

    UCloud AI训练服务功能特性

    1.本地代码一键打包

    • 代码打包过程

    选手代码–>引入uflag.py替换参数–>调用tf_deploy.py打包工具–>本地CPU镜像验证代码–>提交训练任务(选择对应GPU镜像)。

    2.在线训练实时监控

    • 执行阶段监控:待执行、启动中、执行中、停止中、异常、中止、完成;
    • 训练实时日志:5秒轮训刷新,历史日志在UFile;
    • TensorBoard实时图表:实时查看,数据上传UFile。

     

    简单几步Tensorflow Mnist轻松上线

    在了解了AI训练服务的特性以后,下面将以Tensorflow官网的Mnist数字识别算法为案例,看看如何经过几步轻松的调整,就能将一个普通的AI训练任务在UCloud AI训练平台上运行起来。

    第一步:调整代码参数引用
    假设现已经有了从TensorFlow官网拷贝下来的mnist_summary.py文件。要改写这个文件的前提是它能被UCloud AI训练服务使用。那么,首先需要在本地安装UCloud SDK,安装方式如下文所述。改写代码的主要目的是使原有训练代码的传参方式符合AI训练服务的规范。参考代码已经给出了改写完成的mnist_summary.py。

    1.下载SDK:
    git clone https://github.com/ucloud/uai-sdk
    cd uai-sdk
    sudo python setup.py install

    2.参考代码
    https://github.com/ucloud/uai-sdk/blob/master/examples/tensorflow/train/mnist_summary_1.1/mnist_summary.py

    3.本地代码修改方法

    3.1增加import uflag
    34行:from uaitrain.arch.tensorflow import uflag

    3.2检查UCloud固定参数只可引用,不可修改

    • 程序执行路径(FLAGS.work_dir):/data
      一般不涉及引用
    • 输入数据根路径(FLAGS.data_dir):/data/data

    44行: mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True)

    • 输出数据根路径(FLAGS.output_dir):/data/output

    180行: save_path = saver.save(sess, FLAGS.output_dir + “/model.ckpt”)

    • TensorBoard数据根路径(FLAGS.log_dir):/data/output

    144行: train_writer = tf.summary.FileWriter(FLAGS.log_dir + ‘/train’, sess.graph)

    145行: train_writer = tf.summary.FileWriter(FLAGS.log_dir + ‘/test’)

    3.3(可选)其他可变参数使用tf.app.flags注册

    第二步:一键打包

    1.拷贝工具tf_deploy.py

    2.调用参数:

    2.1<>参数与UCloud账号相关

    • 需要用到参赛选手注册的UCloud账号、密码、公钥、私钥、镜像仓库等信息,获取方法详见参赛注册邮件中的《Docker使用指南》。

    2.2绿色参数与代码存放路径层次相关(见图)

    • code_path为训练代码所在根路径,必须以相对路径形式填写;
    • test_data_path,test_output_path为训练数据和训练结果的本地测试路径,这两个路径必须以绝对路径填写。

    2.3橘色参数用户可自定义

    • uhub_imagename,uhub_imagetag是打包后的镜像名称和标签,选手可以自行命名;
    • train_params与上一步中自定义参数呼应,可传入用户自定义参数(在本例中为learning_rate的参数),该参数不会固化在镜像中,而是用于生成训练启动命令,用户可以在每次提交任务时,对参数值进行修改。

    3.调用结果:

    3.1本地测试:CPU镜像、“CMD for CPU local test”命令

    3.2记录信息:GPU镜像名称、“CMD Used for deploying”命令

    第三步:提交训练数据

    1.上传数据
    使用官方数据可省略此步,直接使用官方路径URL。

    2.获取地址
    截取URL地址到前缀,形如:http://yourbucket.ufile.ucloud.com.cn//yourprefix/。

    第四步:提交训练任务

    参数说明:
    1.公钥、私钥:见《UFile使用指南》
    2.代码镜像路径:切换“用户镜像”选择打包工具生成的GPU镜像
    3.数据输入路径:
    自加工数据:截取URL地址到前缀,形如:http://yourbucket.ufile.ucloud.com.cn//inputprefix/

    官方数据,按照赛道填写:
    图像中文描述:http://ai-challenger-caption.cn-bj.ufileos.com//ai_challenger_caption_train_20170902/
    场景分类:http://ai-challenger-scene.cn-bj.ufileos.com//ai_challenger_scene_train_20170904/
    人体骨骼关键点:http://ai-challenger-keypoint.cn-bj.ufileos.com//ai_challenger_keypoint_train_20170902/
    数据输出路径:可在输入路径上修改,形如:http://yourbucket.ufile.ucloud.com.cn//outputprefix/

    4.训练启动命令:uaitrain_cmd.txt文件“CMD Used for deploying”命令

    小结:TensorFlow训练程序迁移
    第一步:改写代码引用uflag固定参数(Flag.data_dir,Flag.output_dir,Flag.log_dir);
    第二步:使用tf_deploy.py打包上传镜像;
    第三步:训练数据上传Ufile(可省略);
    第四步:填写“创建训练任务”表单。

    竞赛使用Tips
    1.使用本地CPU镜像做验证
    利用本地打包工具生成的CPU可行性镜像做好本地测试验证,以免在服务端再报错,浪费训练赠予的时间。
    2.自己加工TFRecords训练数据
    使用TFRecords加工训练数据,并在UFile中提交自己的训练数据,这样可大大节省数据加载时间(官方数据集加载时间约4小时 )。
    3.控制日志打印频率
    控制训练过程中的标准输出流打印频率,过多打印日志会带来不必要的IO交互,减缓训练程序的运行。
    4.及时中止异常训练
    充分利用实时日志及TensorBoard图表监控训练异常,如果出现数据趋势不符合预期或过拟合的情况,应及时停止训练,调整参数。
    5.做好checkpoint保存和加载
    做好checkpoint保存和加载,在训练达到最大时间或训练所在服务器异常时,能保证中间训练结果保存到UFile。以便后续可以重启任务继续训练,不必重头开始。

    UCloud人工智能解决方案

    除了上面介绍的AI训练服务之外,UCloud拥有一套完整的公有云AI解决方案:在IaaS层,UCloud提供P40显卡为核心的强大GPU云主机;在PaaS层,提供AI在线服务、AI训练服务。这能够让用户专注算法,屏蔽项目落地过程中可能出现的技术问题(如选型深度学习框架、搭建运行环境、保障集群高可用等)。最后,UCloud安全屋会保证数据交互的保密性、完整性和可追踪性。希望这整套解决方案,能帮助越来越多优秀的个人、高校、企业及团队实现AI项目的落地,推动国家科技进步。

    附录
    以下是6个使用指南视频,希望能够帮助大家更快地使用UCloud AI产品。
    1.如何获取项目名称:https://v.qq.com/x/page/z0549j3myvm.html
    2.如何获取API公钥私钥:https://v.qq.com/x/page/o0549mjo41v.html
    3.如何使用UHub上传下载训练代码镜像:https://v.qq.com/x/page/r0549kmgezl.html
    4.如何使用UFile上传下载训练数据:https://v.qq.com/x/page/j0549lfef1n.html
    5.如何使用AI Train启动训练任务:https://v.qq.com/x/page/v05494giezu.html
    6.实名认证:https://v.qq.com/x/page/d05497c1uyt.html

    想要获取更多技术和活动资讯,可扫描以下二维码,关注“UCloud技术公告牌”微信公众号;或搜索微信ID:ucloud_tech进行关注。

    25