DeepLink Inference Extension
Project description
介绍
dlinfer提供了一套将国产硬件接入大模型推理框架的解决方案。 对上承接大模型推理框架,对下在eager模式下调用各厂商的融合算子,在graph模式下调用厂商的图引擎。 在dlinfer中,我们根据主流大模型推理框架与主流硬件厂商的融合算子粒度,定义了大模型推理的融合算子接口。
这套融合算子接口主要功能:
- 将对接框架与对接厂商融合算子在适配工程中有效解耦;
- 同时支持算子模式和图模式;
- 图模式下的图获取更加精确匹配,提高最终端到端性能;
- 同时支持LLM推理和VLM推理。
目前,我们正在全力支持LMDeploy适配国产芯片,包括华为,沐曦,寒武纪等。
架构介绍
组件介绍
- op interface:
大模型推理算子接口,对齐了主流推理框架以及各个厂商的融合算子粒度。
- 算子模式:在pytorch的eager模式下,我们将通过op interface向下分发到厂商kernel。由于各个厂商对于参数的数据排布有不同的偏好,所以在这里我们并不会规定数据排布,但是为了多硬件的统一适配,我们将会统一参数的维度信息。
- 图模式:在极致性能的驱动下,在一些硬件上的推理场景中需要依靠图模式。我们利用Pytorch2中的Dynamo编译路线,通过统一的大模型推理算子接口,获取较为粗粒度算子的计算图,并将计算图通过IR转换后提供给硬件厂商的图编译器。
- framework adaptor: 将大模型推理算子接口加入推理框架中,并且对齐算子接口的参数。
- kernel adaptor: 吸收了大模型推理算子接口参数和硬件厂商融合算子参数间的差异。
安装方法
pip安装
pip install dlinfer-ascend
目前只有华为支持pip安装。沐曦请使用源码安装。
源码安装
华为Atlas 800T A2
-
在Atlas 800T A2上依赖torch和torch_npu,运行以下命令安装torch、torch_npu及其依赖。
pip3 install -r requirements/ascend/full.txt
-
完成上述准备工作后,使用如下命令即可安装dlinfer。
cd /path_to_dlinfer DEVICE=ascend python3 setup.py develop
沐曦C500
-
沐曦软件栈请自行联系沐曦相关人员。
-
沐曦版本的dlinfer安装命令如下:
cd /path_to_dlinfer DEVICE=maca python3 setup.py develop
支持模型框架列表
LMDeploy
华为Atlas 800T A2(bf16, w4a16) | 沐曦C500 | 寒武纪云端智能加速卡(开发中) | |
---|---|---|---|
InternLM2.5-7B/20B | √,√ | √ | |
InternLM2-7B/20B | √,√ | √ | |
InternVL2-2B | √,√ | √ | |
InternVL1-5 | √,√ | √ | |
Llama3-8B | √,√ | √ | |
Mixtral8x7B | √,X | √ | |
Qwen2-7B | √,X | √ | |
Qwen2-57B-A14B | √,X | √ | |
CogVLM | √,X | √ | |
CogVLM2 | √,X | √ |
使用LMDeploy
只需要指定pytorch engine后端为ascend/maca,不需要其他任何修改即可。详细可参考lmdeploy文档。
[!CAUTION] 沐曦环境下必须把
PytorchEnginConfig
中的block_size
设为256
。
示例代码如下:
import lmdeploy
from lmdeploy import PytorchEngineConfig
if __name__ == "__main__":
pipe = lmdeploy.pipeline("/path_to_model",
backend_config = PytorchEngineConfig(tp=1,
cache_max_entry_count=0.4, device_type="ascend", eager_mode=True))
question = ["Shanghai is", "Please introduce China", "How are you?"]
response = pipe(question, request_output_len=256, do_preprocess=False)
for idx, r in enumerate(response):
print(f"Q: {question[idx]}")
print(f"A: {r.text}")
print()
[!TIP] 图模式已经支持了Atlas 800T A2。目前,单卡下的LLaMa3-8B/LLaMa2-7B/Qwen2-7B已经通过测试。 用户可以在离线模式下设定
PytorchEngineConfig
中的eager_mode=False
来开启图模式,或者设定eager_mode=True
来关闭图模式。 在线模式下默认开启图模式,请添加--eager-mode
来关闭图模式。 (启动图模式需要事先source /usr/local/Ascend/nnal/atb/set_env.sh
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for dlinfer_ascend-0.1.1.post2-cp310-cp310-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23423c09799799a6dd9484f5a11e08b4d1c80bf3d29b0c0cc28c395467b7fc5b |
|
MD5 | 3a8e47f9d2525dc2141fddd02a9da012 |
|
BLAKE2b-256 | 5a88bac57a11e3f9e065ff94830d0dc28f0c3f00df0d8140ac9e4f3d944503f5 |
Hashes for dlinfer_ascend-0.1.1.post2-cp39-cp39-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 818d5f2276ea9a40ce4c82f3475e0aae626d1fe45ce2f9976fc45c5502f62f66 |
|
MD5 | 17556c07d7ac63d029e794c0683ba034 |
|
BLAKE2b-256 | f5e4f2e70dc911ee63e421e2ef1a7293e28959086bdea7699a921baac508d97e |
Hashes for dlinfer_ascend-0.1.1.post2-cp38-cp38-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b614288eede01237e9e88f08a93092519c7c3c09d6c8238f47f99f1a8271110f |
|
MD5 | c03f12514792c62e0d652f0d806795ca |
|
BLAKE2b-256 | 65a957fa841eada570decebc2f6b399abdee150a1d795d33b831ee4fe8e72b76 |