UAI Inference 开发概述

面向UAI Inference 开发训练代码、Docker镜像的基本原则如下:

  1. 目前仅提供CPU节点的是在线服务任务,使用基于docker的镜像,AutoAI已经提供丰富的CPU基础镜像选择,客户可以自由选择
  2. 在线服务的基础镜像提供了基于django的http server模块来实现在线服务任务的HTTP化,django server在docker内部的/ai-ucloud-client-django/目录下
  3. 在线服务的代码和所使用的模型请封装在Docker镜像中
  4. 在线服务的代码入口由ufile.json控制,该文件必须位于/ai-ucloud-client-django/下(历史原因,名字为ufile.json),里面定义了如何加载inference代码
  5. 在线服务使用的django http server在容器启动时会自动拉起
  6. 在线服务使用的节点无外网访问能力

用户可以根据如下指南开发对于AI框架的在线服务代码+容器:
TensorFlow 开发指南
Caffe 开发指南
Keras开发指南
MXNet 开发指南

也可以根据以上准则开发自定义的 在线服务容器

UAI-Inference执行的概念图

inference代码说明

ufile.json说明

ufile.json 包括两个部分,以https://github.com/ucloud/uai-sdk/blob/master/examples/tensorflow/mnist_0.11/tf_mnist.conf 为例:

{
    "http_server" : {
        "exec" : {
            "main_class": "MnistModel",
            "main_file": "mnist_inference"
        },
        "tensorflow" : {
            "model_dir" : "./checkpoint_dir"
        }
    }
}
启动相关

http_server:exec 下面的main_class和main_file 指定了django server如何加载inference代码,其中main_class指定inference代码的主类名,main_file指定了该主类的python模块路径(即如何import)
注:AI Inference的Http server的模块加载路径为/ai-ucloud-client-django/,因此所有inference相关的python模块都需要放入该目录下。

AI框架相关

http_server:tensorflow则指定了tensorflow相关的信息,该信息对于不同AI框架不同,详细可以查看对应AI框架的开发指南用户指南