全部产品
云市场

Caffe使用指南

更新时间:2020-01-06 10:24:49

格式转换

目前PAI Caffe不支持自定义格式的训练数据,需要通过格式转换组件进行转换方可使用。

  • 输入桩连接读OSS Bucket组件。

  • 参数

    • 输入OSS路径。OSS的训练数据的file_list(如bucket.hz.aliyun.com/train_img/train_file_list.txt )格式如下:
      1. bucket/ilsvrc12_val/ILSVRC2012_val_00029021.JPEG 817
      2. bucket/ilsvrc12_val/ILSVRC2012_val_00021046.JPEG 913
      3. bucket/ilsvrc12_val/ILSVRC2012_val_00041166.JPEG 486
      4. bucket/ilsvrc12_val/ILSVRC2012_val_00029527.JPEG 327
      5. bucket/ilsvrc12_val/ILSVRC2012_val_00042825.JPEG 138
    • 输出oss目录。如 bucket_name.oss-cn-hangzhou-zmf.aliyuncs.com/ilsvrc12_val_convert ,会输出转换后的data_file_list.txt和对应的数据文件。data_file_list格式如下:

      1. bucket/ilsvrc12_val_convert/train_data_00_01
      2. bucket/ilsvrc12_val_convert/train_data_00_02
      • 编码类型:选项,可选jpg,png,raw等。
      • 是否shuffle:勾选。
      • 文件前缀:默认为data。
      • resize_height:默认为256。
      • resize_width:默认为256。
      • 是否灰度:默认为否。
      • 是否需要产生图片mean文件:默认为否。

PAI 命令

  1. PAI -name convert_image_oss2oss
  2. -project algo_public_dev
  3. -Darn=acs:ram::1607128916545079:role/test-1
  4. -DossImageList=bucket_name.oss-cn-hangzhou-zmf.aliyuncs.com/image_list.txt
  5. -DossOutputDir=bucket_name.oss-cn-hangzhou-zmf.aliyuncs.com/your/dir
  6. -DencodeType=jpg
  7. -Dshuffle=true
  8. -DdataFilePrefix=train
  9. -DresizeHeight=256
  10. -DresizeWidth=256
  11. -DisGray=false
  12. -DimageMeanFile=false

参数说明

参数名称 参数描述 取值范围 是否必选,默认值/行为
ossHost 对应的oss host地址 形式如“oss-test.aliyun-inc.com” 可选,默认值为“oss-cn-hangzhou-zmf.aliyuncs.com”,即为对内oss使用的host
arn OSS Bucket默认Role对应的ARN 形式如“acs:ram::XXXXXXXXXXXXXXXX:role/ossaccessroleforodps”,中间xxx代表生成的rolearn的16位数字 必选
ossImageList 图片文件列表 形式如“bucket_name/image_list.txt” 必选
ossOutputDir 输出oss目录 形式如“bucket_name/your/dir” 必选
encodeType 编码类型 如jpg,png,raw 可选,默认值为jpg
shuffle 是否shuffle数据 bool值 可选,默认值为true
dataFilePrefix 数据文件前缀 string类型,如train或val 必选
resizeHeight 图像resize的height int类型,用户自定义 可选,默认值为256
resizeWidth 图像resize的width int类型,用户自定义 可选,默认值为256
isGray 图像是否为灰度图 bool值 可选,默认值为false
imageMeanFile 是否需要生成imagemean文件 bool值 可选,默认值为false

Caffe

Caffe 是一个清晰,可读性高,快速的深度学习框架。作者是贾扬清,加州大学伯克利的ph.D,现就职于Facebook。caffe的官网是 http://caffe.berkeleyvision.org/

参数说明

  • 首先配置OSS访问权限。

  • 唯一的参数就是solver.prototxt文件的oss路径。其中solver由于并行化的修改,同开源caffe略有不同,需要注意以下几点:

    • net:“bucket.hz.aliyun.com/alexnet/train_val.prototxt”,net的文件位置是oss路径。
    • type:“ParallelSGD”,type类型是ParallelSGD,为一个字符串。
    • model_average_iter_interval:1 多卡下表示同步的频率,1表示每轮都同步一次。
    • snapshot_prefix:“bucket/snapshot/alexnet_train”,模型输出到oss的目录。
  1. net: "bucket/alexnet/train_val.prototxt"
  2. test_iter: 1000
  3. test_interval: 1000
  4. base_lr: 0.01
  5. lr_policy: "step"
  6. gamma: 0.1
  7. stepsize: 100000
  8. display: 20
  9. max_iter: 450000
  10. momentum: 0.9
  11. weight_decay: 0.0005
  12. snapshot: 10000
  13. snapshot_prefix: "bucket/snapshot/alexnet_train"
  14. solver_mode: GPU
  15. type: "ParallelSGD"
  16. model_average_iter_interval: 1
  • train_val中的datalayer需使用BinaryDataLayer,请参考如下示例。

    1. layer {
    2. name: "data"
    3. type: "BinaryData"
    4. top: "data"
    5. top: "label"
    6. include {
    7. phase: TRAIN
    8. }
    9. transform_param {
    10. mirror: true
    11. crop_size: 227
    12. mean_file: "bucket/imagenet_mean.binaryproto"
    13. }
    14. binary_data_param {
    15. source: "bucket/ilsvrc12_train_binary/data_file_list.txt"
    16. batch_size: 256
    17. num_threads: 10
    18. }
    19. }
    20. layer {
    21. name: "data"
    22. type: "BinaryData"
    23. top: "data"
    24. top: "label"
    25. include {
    26. phase: TEST
    27. }
    28. transform_param {
    29. mirror: false
    30. crop_size: 227
    31. mean_file: "bucket/imagenet_mean.binaryproto"
    32. }
    33. binary_data_param {
    34. source: "bucket/ilsvrc12_val_binary/data_file_list.txt"
    35. batch_size: 50
    36. num_threads: 10
    37. }
    38. }

    新的data Layer的名称为BinaryData,其中也支持 transform param 对输入图像数据进行变换,参数和caffe原生参数保持一致。

    其中 binary_data_param 为数据层本身的参数配置,包括以下特殊的参数:

    • source:数据来源,其中路径为oss中filelist的路径,从bucket名称开始,不包含“oss://”。
    • num_threads:读取oss数据时并发的线程数目,默认值为10,用户可以根据自己的需求进行调整。

PAI 命令

  1. PAI -name pluto_train_oss
  2. -project algo_public_dev
  3. -DossHost=oss-cn-hangzhou-zmf.aliyuncs.com
  4. -Darn=acs:ram::1607128916545079:role/test-1
  5. -DsolverPrototxtFile=bucket_name.oss-cn-hangzhou-zmf.aliyuncs.com/solver.prototxt
  6. -DgpuRequired=1

参数说明

参数名称 参数描述 取值范围 是否必选,默认值/行为
ossHost 对应的oss host地址 形式如“oss-test.aliyun-inc.com” 可选,默认值为“oss-cn-hangzhou-zmf.aliyuncs.com”,即为对内oss使用的host
arn OSS Bucket默认Role对应的ARN 形式如“acs:ram::XXXXXXXXXXXXXXXX:role/ossaccessroleforodps”,中间xxx代表生成的rolearn的16位数字 必选
solverPrototxtFile solver文件 solver文件在oss中的路径,从bucket name开始 必选
gpuRequired GPU卡个数 整型值 可选,默认值为1

案例

利用Caffe实现mnist的数据训练。

  1. 准备数据源

    在本文档的深度学习案例代码及数据下载章节中下载Caffe数据并解压。将数据导入OSS中,本案例路径如下图,请配合代码中的路径理解。

  2. 运行实验

    拖拉Caffe组件拼接成如下图所示的实验。

    solver oss路径指向mnist_solver_dnn_binary.prototxt文件,单击运行

  3. 查看日志

    右键单击Caffe组件,查看日志,如下图所示。

    单击 logview链接 -> ODPS Tasks -> VlinuxTask -> StdErr,查看训练过程产生的日志,如下图所示。