鹏程.盘古 CPU 推理加速
简介
CPU 推理加速主要采用了 Int8 量化和 layer_past 模型加速技术。已经支持 PanGu-Alpha 2.6B、13B 模型以及
PanGu-Alpha-Evolution 2.6B 模型。开箱即用,并提供量化接口,可以快速量化模型。
要点:
- CPU 推理速度接近 GPU V100 的推理速度
- CPU 推理资源需求低,2.6B 模型只需要 5G 内存,普通个人电脑都可以轻松部署
- 基于 Int8 量化技术,提升推理速度
- 基于 layer_past 模型推理加速技术,大幅度减少计算量,提升推理速度
模型推理
推理速度对比:
model |
a100 |
v100 (s/token) |
Tesla T4 (s/token) |
cpu/int8 (s/token) |
2.6B |
0.06 |
0.17 |
0.37 |
0.2~0.27 + |
13B |
0.22 |
0.70 |
OOM |
0.81~1 + |
cpu 推理资源需求
- 线程数:2
- 内存占用:2.6B模型内存占用 5GB;13B模型内存占用 21GB。 资源占用低,普通个人电脑都可以体验2.6B模型。
推理
首先需要在模型下载页面下载对应的 cpu 模型,并且解压。下面展示如何快速进行模型推理:
PanGu-Alpha 模型推理:
from pcl_pangu.context import set_context
from pcl_pangu.model import alpha, evolution, mPangu
set_context(backend='onnx-cpu')
config = alpha.model_config_onnx(model='2B6'/'13B',load='onnx/mode/path')
alpha.inference(config,input='四川的省会是?')
PanGu-Alpha-Evolution 模型推理:
from pcl_pangu.context import set_context
from pcl_pangu.model import alpha, evolution, mPangu
set_context(backend='onnx-cpu')
config = evolution.model_config_onnx(model='2B6',load='onnx/mode/path')
evolution.inference(config,input='四川的省会是?')
自动量化模型
提供了将 pytorch 模型一键转为 cpu 模型的功能。
下面以 PanGu-Alpha 2.6B 模型为例,自动量化模型:
from pcl_pangu.context import set_context
from pcl_pangu.model import alpha, evolution, mPangu
from pcl_pangu.model_converter import pt_2_onnx8
set_context(backend='onnx-cpu')
config = alpha.model_config_onnx(model='2B6')
pt_2_onnx8(model_name='alpha-2b6',
pt_path='path/of/.pt/model',
model_config=config,
onnx_ckpt_root_dir='output/dir/of/onnx/ckpt')