AI Service Engine
背景
引擎托管平台(AI Service Engine)是一个专为AI能力开发者打造的AI算法引擎的无服务全托管式平台,您可以通过集成ASE中提供的插件,快速的部署AI算法引擎,并使用网络、分发策略、数据处理等配套辅助系统。引擎托管平台致力于加速AI算法引擎云服务化,并借助云原生架构,为云服务的稳定提供多重保障,您无需关注底层基础设施及服务化相关的开发、治理和运维,即可高效、安全对引擎进行部署、升级、扩缩、运营和监控。
整体架构
使用工作流
Documentation
View Doc on Documentation
开源计划
任务项 |
目标 |
时间 |
☑ 加载器 通用引擎/模型加载器 |
独立部署可运行,支持python快速推理服务化 |
2022/Q2 |
☑ 负载均衡器 负载聚合组件 |
独立部署可运行 |
2022/Q3 |
☐ WebGate Web网关组件 |
可运行 |
2022/Q3 |
☑ Polaris 配置中心与服务发现 |
独立部署可运行 |
2022/Q2 |
☐ Atom 协议转换组件 |
可运行 |
2022/Q3 |
☐ Serving on Kubernetes Helm Chart一键部署 (进行中) |
支持在k8s集群上一键部署推理服务框架 |
2022/Q3 |
☐ Serving on Docker with docker-compose 一键部署 |
支持使用docker-compose部署推理服务框架 |
2022/Q4 |
☐ 各组件Documentation建设 (进行中) |
各组件文档详设,门户建设 |
2022/Q4 |
☐ 多领域模型Demo演示示例、GIF (进行中) |
部分领域模型推理示例,如mmdetection,mmocr,yolo等 |
2022/Q3 |
☐ AIServing API AI能力协议规范 |
完善开源协议说明,schema自动生成、校验工具 |
2022/Q3 |
☐ AseCTl命令行工具 API 命令行工具 |
支持能力一键生成,运行,配置管理等 |
2022/Q4 |
使用说明
AIGes (AI General Engine Service)
通用引擎加载器(部分文档中loader, loader engine均为别名)
AIGes 项目编译
make
AIGes 项目打包
make build-pack
AIGes 清理项目文件
make clean
Polaris
Go编写的服务发现、配置中心
Documentation
View Doc on Documentation
Features
☑ 支持模型推理成RPC服务(Serving框架会转成HTTP服务)
☑ 支持C代码推理 support c++/c code infer
☑ 支持Python代码推理 Support python code infer
☑ 支持配置中心,服务发现
☑ 支持负载均衡配置
☐ 支持Java代码推理或者其它
☐ 支持计量授权
Protocol
参见: ase-proto
开源版docker镜像
基础镜像
基础镜像中提供
-
基础的编译好的 Python加载器AIService(包含支持python的libwrapper.so), 目录结构如下
加载器默认放置于 容器/home/aiges 目录
root@e38a9aacc355:/home/aiges# pwd
/home/aiges
root@e38a9aacc355:/home/aiges# ls -l /home/aiges/
total 18760
-rwxr-xr-x 1 root root 19181688 Jun 10 15:30 AIservice
-rw-r--r-- 1 root root 2004 Jun 10 18:15 aiges.toml
drwxr-xr-x 3 root root 4096 Jun 10 15:30 include
drwxrwxrwx 1 root root 4096 Jun 10 15:31 library
drwxr--r-- 2 root root 4096 Jun 10 18:16 log
-rw-r--r-- 1 root root 96 Jun 10 18:15 start_test.sh
drwxr-xr-x 2 root root 4096 Jun 10 18:16 xsf_status
drwxr-xr-x 2 root root 17711057 Jun 10 18:16 xtest
-rw-r--r-- 1 root root 4232 Jun 10 17:54 xtest.toml
其中 aiges.toml 用于本地启动测试使用
-
Python环境: 不推荐用户后续镜像构建修改Python版本
业务镜像
业务镜像一般需要用户自己编写Dockerfile构建,业务镜像中用户可以根据场景需要定制安装
示例Dockerfile地址为
注意事项
* 示例尚未提供gpu runtime安装方法
- 用户的python插件需要自行定义一个目录放置, 如上述的 /home/mmocr , /home/yolov5, 且该位置需要像
https://github.com/xfyun/aiges/blob/master/demo/mmocr/Dockerfile_cpu#L23
声明PYTHONPATH指向该位置
{"key": "boxes", "data": rlt, "len": len(rlt), "status": 3, "type": 0}
该结构数据
-
上条示例中, rlt 当前只支持单层数据,即不支持object嵌套,如果用户返回json,此处需要先把rlt dumps成文本再返回
-
理论上用户除了上传 wrapper.py 以及相关依赖之外,还需要提供一些模型文件,这些文件比较大,一般不在Dockerfile中构建入镜像,会导致git代码库十分庞大,当前示例的的yolov5和 mmocr均在 wrapper init的时候下载模型
建议统一方式模型资源使用方式, 根据不同场景支持
基础镜像构建(GPU)
基础镜像仅在特殊需求时(如对cuda,python版本有要求时才需要重新构建,一般用户仅需关注构建业务镜像)
-
cuda-go-python基础镜像,用于编译aiges项目的基础镜像,参见 官方仓库,本仓 库引用了部分版本,存放于 docker/gpu/cuda中
基础镜像当前基于 nvidia/cuda 官方的基础镜像作为base镜像 如 cuda-10.1中所示: aiges基础镜像基于 形如 nvidia/cuda:10.1-devel-ubuntu18.04 构建
-
基于 cuda-10.1 已构建出 artifacts.iflytek.com/docker-private/atp/cuda-go-python-base:10.1-1.17-3.9.13-ubuntu1804
-
aiges: 基于 aiges-dockerifle 构建出gpu的 aiges基础镜像
构建命令:
docker buildx build -f docker/gpu/base/cuda-10.2/Dockerfile -t artifacts.iflytek.com/docker-private/atp/cuda-go-python-base:10.2-1.17-3.9.13-ubuntu1804 . --push
当前支持的cuda-go-python基础镜像列表(包含cuda go python编译环境)
repo |
tag |
python |
cuda |
os |
artifacts.iflytek.com/docker-private/atp/cuda-go-python-base:10.1-1.17-3.9.13-ubuntu1804 |
10.1-1.17-3.9.13-ubuntu1804 |
3.9.13 |
10.1 |
ubuntu 18.04 |
artifacts.iflytek.com/docker-private/atp/cuda-go-python-base:10.2-1.17-3.9.13-ubuntu1804 |
10.2-1.17-3.9.13-ubuntu1804 |
3.9.13 |
10.2 |
ubuntu 18.04 |
artifacts.iflytek.com/docker-private/atp/cuda-go-python-base:11.6.2-1.17-3.9.13-ubuntu1804 |
11.6.2-1.17-3.9.13-ubuntu1804 |
3.9.13 |
11.6 |
ubuntu 18.04 |
当前支持的aiges基础镜像列表
repo |
tag |
python |
cuda |
os |
artifacts.iflytek.com/docker-private/atp/aiges-gpu:10.1-3.9.13-ubuntu1804 |
10.1-3.9.13-ubuntu1804 |
3.9.13 |
10.1 |
ubuntu 18.04 |
artifacts.iflytek.com/docker-private/atp/aiges-gpu:10.2-3.9.13-ubuntu1804 |
10.2-3.9.13-ubuntu1804 |
3.9.13 |
10.2 |
ubuntu 18.04 |
构建命令:
-
使用buildx:
docker buildx build -f docker/gpu/aiges/ubuntu1804/Dockerfile . -t artifacts.iflytek.com/docker-private/atp/aiges-gpu:10.1-3.9.13-ubuntu1804
-
使用docker build
docker buildx build -f docker/gpu/aiges/ubuntu1804/Dockerfile . -t artifacts.iflytek.com/docker-private/atp/aiges-gpu:10.1-3.9.13-ubuntu1804
-
使用buildah
buildah build -f docker/gpu/aiges/ubuntu1804/Dockerfile . -t artifacts.iflytek.com/docker-private/atp/aiges-gpu:10.1-3.9.13-ubuntu1804
业务镜像构建方法
业务镜像需要基于 aiges基础镜像进行构建,用户可在此过程定制 python的依赖项目以及用户自研项目
参考示例:
mmocr
build.py使用
TODO 计划开发build.py 支持多cuda版本多python版本的基础镜像自动构建pipeline