使用自定义镜像打包
接下来我们使用自定义的镜像打包
前期准备
我们还需要准备
- 代码
- 模型文件
- mnist.conf文件
准备代码
我们在/data/mnist/下创建code目录,并将mnist_inference.py放入该目录下:
/data/mnist |_ code |_ |_ mnist_inference.py
模型文件
我们可以使用快速上手-MNIST案例中训练出来的mnist模型文件,我们也可以自己训练一个新的,当然我们的github也提供了训练好的模型https://github.com/ucloud/uai-sdk/tree/master/examples/tensorflow/inference/mnist_1.1/checkpoint_dir
我们把模型文件放入/data/mnist/code/目录下:
/data/mnist |_ code | |_ mnist_inference.py | |_ checkpoint_dir | | |_ checkpoint | | |_ mnist.mod.data-00000-of-00001 | | |_ mnist.mod.index | | |_ mnist.mod.meta
mnist.conf文件
mnist.conf的结构如下:
{ "http_server" : { "exec" : { "main_class": "MnistModel", "main_file": "mnist_inference" }, "tensorflow" : { "model_dir" : "./checkpoint_dir" } } }
其中exec.main_file定义了入口python模块:mnist_inference.py(注:这边需要将.py 删除,因为django会以模块的形式import mnist_inference) 其中exec.main_class定义了推理服务的对象类:MnistModel 其中tensorflow.model_dir定义了模型的相对路径
我们同样将mnist.conf放入/data/mnist/目录下:
/data/mnist |_ code | |_ minst_inference.py | |_ checkpoint_dir | | |_ checkpoint | | |_ mnist.mod.data-00000-of-00001 | | |_ mnist.mod.index | | |_ mnist.mod.meta | |_ mnist.conf
打包CPU在线服务镜像
我们直接使用docker build命令来打包mnist镜像,我们需要首先创建一个mnist.Dockerfile
FROM uhub.service.ucloud.cn/uaishare/cpu_uaiservice_ubuntu-14.04_python-2.7.6_tensorflow-1.1.0:v1.2 EXPOSE 8080 ADD ./code/ /ai-ucloud-client-django/ ADD ./mnist.conf /ai-ucloud-client-django/conf.json ENV UAI_SERVICE_CONFIG /ai-ucloud-client-django/conf.json CMD cd /ai-ucloud-client-django && gunicorn -c gunicorn.conf.py httpserver.wsgi
Dockerfile里面做了以下几个事情:
- 基于uai inference 的tensorflow 1.1.0 的基础镜像来构建
- export 8080端口
- 将当前目录下code/ 下所有文件放入/ai-ucloud-client-django/
- 将mnist.conf 放入/ai-ucloud-client-django/conf.json
- 指定UAI Inference server在启动时使用/ai-ucloud-client-django/conf.json 配置文件
- 启动http server
打包GPU在线服务镜像
我们直接使用docker build命令来打包GPU版本的mnist镜像,我们需要首先创建一个mnist-gpu.Dockerfile
FROM uhub.service.ucloud.cn/uaishare/gpu_uaiservice_ubuntu-16.04_python-3.6_tensorflow-1.6.0:v1.0 EXPOSE 8080 ADD ./code/ /ai-ucloud-client-django/ ADD ./mnist.conf /ai-ucloud-client-django/conf.json ENV UAI_SERVICE_CONFIG /ai-ucloud-client-django/conf.json CMD cd /ai-ucloud-client-django && gunicorn -c gunicorn.conf.py httpserver.wsgi
Dockerfile里面做了以下几个事情:
- 基于uai inference 的tensorflow 1.6.0 的GPU基础镜像来构建
- export 8080端口
- 将当前目录下code/ 下所有文件放入/ai-ucloud-client-django/
- 将mnist.conf 放入/ai-ucloud-client-django/conf.json
- 指定UAI Inference server在启动时使用/ai-ucloud-client-django/conf.json 配置文件
- 启动http server
Build CPU在线服务镜像
$ cd /data/mnist/ $ vim mnist.Dockerfile $ sudo docker build -t uhub.service.ucloud.cn/uai_demo/tf-mnist-infer-cpu:latest -f mnist.Dockerfile .
我们就可以生成镜像:uhub.service.ucloud.cn/uai_demo/tf-mnist-infer-cpu:latest
Build GPU在线服务镜像
$ cd /data/mnist/ $ vim mnist-gpu.Dockerfile $ sudo docker build -t uhub.service.ucloud.cn/uai_demo/tf-mnist-infer-gpu:latest -f mnist-gpu.Dockerfile .
我们就可以生成GPU镜像:uhub.service.ucloud.cn/uai_demo/tf-mnist-infer-gpu:latest