1.6.8 定制模型服务Docker镜像

优质
小牛编辑
180浏览
2023-12-01

简介

Xiaomi Cloud-ML支持Bring Your Own Image功能,使用方法和 定制训练任务Docker镜像 相同。

使用示例

用户创建模型服务时指定Docker镜像地址即可。

cloudml models create -n linear -v v1 -u fds://cloud-ml/linear -d cloudml/tensorflow:1.0.0

定制镜像

如果需要定制镜像,我们对模型服务容器的启动进行了封装,用户构建的Docker镜像需要符合一些约定,同时镜像镜像最好能暴露在公网允许匿名下载。

Docker镜像启动命令如下,并且会把AKSK和FDS endpoint作为环境变量传入,并且mount GPU相关的设备目录,运行的参数如下。

"/model_service.py", model_service.model_name, model_service.model_uri, model_service.model_version

最简单的镜像只有一个文件,在本地编写 model_service.py ,注意需要 chmod +x 添加可执行权限。

#!/usr/bin/env python

import SimpleHTTPServer
import SocketServer

def main():
  PORT = 9000
  Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
  httpd = SocketServer.TCPServer(("", PORT), Handler)
  print "serving at port", PORT
  httpd.serve_forever()

if __name__ == "__main__":
  main()

然后编写Dockerfile,只需要保证安装了model_service.py需要的依赖即可,基于Xiaomi Cloud-ML官方镜像可以获得更快的下载速度但不是必须的。

FROM cloud-ml/dev-tensorflow-cpu:0.12.0-xm1.0.0

ADD ./model_service.py /

EXPOSE 9000

CMD /model_service.py

然后我们可以在本地build这个容器镜像。

sudo docker build -t cloudml/http_model_service .

现在本地模型服务端的运行参数,测试命令如下,然后访问本地的9000端口看服务是否正常。

sudo docker run -it -p 9000:9000 cloudml/http_model_service "/model_service.py" "mymodel" "fds://foo/bar" "v1"

参数介绍

  • -d 表示用户指定的Docker镜像地址,注意不可与 -F-V 参数同时使用。