UfaceConvertServer模型量化服务
目前的嵌入式算法开发中,针对不同芯片平台进行模型量化是模型工程化必不可少的一部分。一般的方式是算法开发人员自己搭建量化环境进行量化,这种方式需要每个算法开发都搭建一套自己的环境,需要熟悉 不同的量化工具,而且需要手动量化。本项目试图通过模型量化服务,可免去算法工程师自己搭建各种芯片的量化环境,而只需要在服务所在的机器上配置好相关的量化工具链即可。算法工程师只要按规则通过Web将模型上传至指定位置,服务将根据配置自动为其量化,并将量化后模型上传至指定位置。当前支持RKNN芯片,可扩展至其他平台。
配置
- 安装minio, 可参考官网:https://docs.min.io/,或直接通过以下命令进行docker安装:
sudo docker run -p 9003:9000 --name minio \ -d --restart=always \ -e "MINIO_ACCESS_KEY=admin" \ -e "MINIO_SECRET_KEY=123@abc.com" \ -v /nfs_79/model_zoo:/data \ #模型位置 -v /nfs_79/model_zoo/config:/root/.minio \ #minio配置存储路径 minio/minio:RELEASE.2021-04-06T23-11-00Z.hotfix.e46577116 server /data
minio是一个对象存储服务,可以帮助我们管理模型文件,并且提供了Web和S3 API便于操作。 上述命令将在本机开启一个服务,用户上传的数据在本地的/nfs_79/model_zoo中,访问方式为 http://ip:9003 2. 安装rknn量化工具包
项目文件说明
sync_server.py
定时将minio上的文件同步至本地目录
model_repo_monitor.py
监控模型目录,如果发现有模型需要转换,添加到任务队列
rknn_quant.py
进行rknn量化,并上传日志和转换后的模型到minio
logger.py
日志相关
config.py
读取配置信息
repo_uploader.py
上传文件到minio仓库
common_utils.py
其他
如何使用
- 首先开启sync_server.py进行minio仓库和 本地目录的同步
- 设置config.py的信息,主要是minio仓库的账号信息
- python main.py --repo-dir local_path 开启服务
- 访问 http://ip:9003 上传模型至minio,目录结构应为: ModelName/ModelVersion/rknn, 在此目录下放置原始模型,convert_config.json(量化配置文件)以及quant_imgs(量化图片目录)
评论