概述

本模块将会以经典的例子:“MNIST手写数字识别”带你快速入门在深度学习平台中利用Caffe进行模型训练和预测。通过本教程,你将明白:

  • 如何进行数据的预处理,并将文件上传至深度学习平台
  • 如何提交训练任务、预测任务
  • 如何查看任务的运行状态以及输出的结果

MNIST简介

MNIST是一个大型的手写体数字数据库,广泛使用于机器学习领域的训练和预测,由纽约大学Yann LeCun教授整理。MNIST包括60000个训练集和10000个测试集,每张图都已经进行尺寸归一化、数字居中处理,固定尺寸为28像素×28像素。

文件与数据

文档中使用到的配置文件、数据文件你可以在这里下载。本文档中涉及到的演示代码和数据均源于网络:

  • 使用到的文件有:网络结构文件lenet_train_test.prototxt和网络求解文件lenet_solver.prototxt
  • 在进行模型训练或者预测之前,我们还需要获取使用到的数据。DLS平台中Caffe支持的数据格式为LMDB。您可以点击下载我们准备好的LMDB数据,或者去www.yann.lecun.com/exdb/mnist/下载原始的数据,并在本地进行数据转换。

创建项目

在美团云控制台“数据处理与AI”菜单下,找到“深度学习平台”,点开后会进入深度学习平台。点击深度学习平台左侧导航“任务”,会看到项目列表。在创建任务之前需要先创建一个项目。项目是任务的集合,一个项目下可以包含若干个任务。点击项目之后,可以进入任务列表。

数据与代码准备

创建任务前,需要先上传任务涉及到的运行代码和数据集。数据需要上传至DLS的文件服务,文件系统是HDFS。点击DLS左侧导航“文件”,可以进入文件管理页面。您可以创建文件夹,上传代码和数据集。图片 为了方便文件管理,我们新建一个Caffe的目录,并将训练使用到的网络结构文件lenet_train_test.prototxt和网络求解文件lenet_solver.prototxt上传。同时,新建mnist_train_lmdb和mnist_test_lmdb两个目录,并在目录内上传对应的mdb文件。

网络结构文件解析

需要注意的是,相对于Caffe官方的MNIST教程,DLS的分布式Caffe服务在数据读写上与原生Caffe不同,具体如下。 1、原生Caffe数据层使用Type是“Data”,而DLS上的Caffe服务建议使用“MemoryData”。 2、原生Caffe直接读写计算机本地文件,在数据源引用的时候,直接配置本地的数据源路径即可。但DLS的Caffe服务的是HDFS分布式存储,所以在配置数据源的时候,需要声明数据在DLS文件系统中的路径,并以“hdfs://”协议开头。 具体差异如下:

# 原生Caffe
layer {
  name: "mnist"
  type: "Data"          
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    scale: 0.00390625
  }
  data_param {
    source: "/opt/caffe/examples/mnist/mnist_train_lmdb"
    batch_size: 64
    backend: LMDB
  }
}
# DLS的Caffe服务
layer {
  name: "mnist"
  type: "MemoryData"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    scale: 0.00390625
  }
  memory_data_param {
    source: "hdfs://caffe/mnist_train_lmdb"
    batch_size: 64
    channels: 1
    height: 28
    width: 28
    backend: LMDB
  }
}

模型训练

DLS提供训练和预测两类服务。训练服务是训练模型,预测服务是对离线数据进行批量预测。我们以CPU-单机-训练任务来演示任务的创建过程。

运行框架与计算资源

选择任务的运行框架为Caffe,计算资源选择CPU、任务模式选择单机。 图片

输入输出配置

首先选择任务类型,我们以模型训练为例,所以这里选择“训练任务”。其次需要配置任务的求解文件“Solver”、“模型文件输出路径”和任务的“输出路径”。其中模型文件的输出路径是你保存模型的地址,这里是必填项。“输出路径”是任务的输出目录,这里我们会保存任务的运行结果,这里是选填项。 图片

填写基础信息

在这里,你需要填写“任务名称”、“任务备注”、任务完成的通知人等信息。全部填写完毕之后,点击“确认新建”完成任务的提交。 图片

查看输出

任务提交完成之后,默认会立即调度执行,如果任务状态长期处于“等待调度”,表明当前集群资源紧张,有了空闲资源之后,任务会被自动调度执行,请耐心等待。 图片

运行日志

点击任务列表右侧的“日志”按钮,即可以查看任务的运行日志。 图片 图片

模型文件

运行完成之后,我们可以看到模型文件的输出路径下已经保存好了训练出的模型文件。 图片

任务的输出

在任务的输出路径下,我们可以找到任务的输出结论。在这个文件夹下,保存有一个无后缀的文件,你可以手动改成.txt格式,然后就可以在线预览运行的收敛状况。 图片 图片 图片