模型训练

我们使用Tensorflow_hub提供的重训练Python脚本训练模型(参阅:Tensorflow_hub - retrain.py)。我们已经将脚本打包为可在UAI-Train上运行的容器镜像,并保存在镜像库中:

uhub.ucloud.cn/uai_demo/retrain-train-v2:test

将准备好的图片集和模型文件上传至UFile准备进行重训练。根据上一节中的保存路径,在UFile中保存在统一根目录下。你可以自定义根路径,并记录此路径用于启动训练。此处我们以“uai/retrain/data”为根路径:

|_ uai/retrain/data

|  |_ pets
|  |  |_ Abyssinian
|  |  |  |_ Abyssinian_01.jpg
|  |  |  |_ Abyssinian_02.jpg
|  |  |_ Persian
|  |  |  |_ Persian_01.jpg
|  |  |  |_ Persian_02.jpg
|  |_ checkpoint_dir
|  |  |_ assets
|  |  |_ variables
|  |  |_ saved_model.pb
|  |  |_ tfhub_module.pb

文件准备好后,进入UAI-Train控制台。创建训练任务时,请确认数据输入源为保存数据的UFile根目录(此处为uai/retrain/data/,即数据准备一节中记录的数据保存路径),并确认模型、数据和配置文件均在此根目录下。记录数据输出源(此处为uai/retrain/output/),用于之后的在线服务。

  • 获取uhub.ucloud.cn/uai_demo/retrain-train-v2:test镜像,并重新docker tag成你自己uhub镜像库中的镜像,例如uhub.ucloud.cn//retrain-train-v2:test, 并提交至uhub。
  • 进入UAI-Train控制台,创建新训练任务。

    AutoAI - UAI训练

  • 填写以下信息:
    • 训练任务名称:retrain-train
    • 节点类型:单点式单卡
    • 公私钥:你的AutoAI账号公私钥
    • 代码镜像路径:retrain-train-v2:test
    • 数据输入源:UFile:/uai/retrain/data/
    • 数据输出源:UFile:/uai/retrain/output/
  • 训练启动命令:
/data/retrain_v2.py --image_dir /data/data/pets --output_graph /data/output/frozen_inference_graph.pb --output_labels /data/output/label_map.txt --tfhub_module /data/data/checkpoint_dir
  • 点击确定,等待训练完成。

本重训练脚本内已实现了导出模型的功能,因此训练后的模型数据可直接用于识别推理,无需自行导出。因此模型数据经训练后所有参数即固定。如果模型准确度不理想,可在训练启动命令后加入参数:

--how_many_training_steps <轮数〉

以增加训练轮数,提高准确度,默认为4000轮。请注意轮数更大并不一定意味着模型预测更准确。

你也可以自行打包训练代码和镜像,参阅Github - uai-sdk - retraining