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
源码安装
华为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
支持模型框架列表
LMDeploy
华为Atlas 800T A2 | 沐曦C500(待开源) | 寒武纪云端智能加速卡(开发中) | |
---|---|---|---|
InternLM2.5-7B/20B | √ | ||
InternLM2-7B/20B | √ | √ | |
InternVL2-2B | √ | ||
InternVL1-5 | √ | √ | |
Llama3-8B | √ | √ | |
Mixtral8x7B | √ | √ | |
Qwen2-7B | √ | √ | |
Qwen2-57B-A14B | √ | ||
CogVLM | √ | ||
CogVLM2 | √ |
使用LMDeploy
只需要指定pytorch engine后端为ascend,不需要其他任何修改即可。详细可参考lmdeploy文档。
示例代码如下:
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"))
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()
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
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distributions
Close
Hashes for dlinfer_ascend-0.1.0.post1-cp310-cp310-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a371436eb746296c95559a2873e04acf744c1e5c02e4c699e4add871c285be50 |
|
MD5 | 3c3564a6812997438531ed6b2e47116d |
|
BLAKE2b-256 | 5f4d40aca8e494b4383e336bd1e0ccc27d6a540745d426f0e7cfb4b38d5b7092 |
Close
Hashes for dlinfer_ascend-0.1.0.post1-cp39-cp39-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 030ad7cc5c711941b644de8883fe1ea8f9274c4dd8a84254fb7dc1ee9e9d44e3 |
|
MD5 | 95c9d3b5df0e11adc82c616e69862bca |
|
BLAKE2b-256 | ec0db7e1361adaaa316817dff25a99d08cba967eea8ad7e88697a441b416289f |
Close
Hashes for dlinfer_ascend-0.1.0.post1-cp38-cp38-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79d0015b2d399d40b70263afb10ecc5365725652adbf3b02c6691907f593babb |
|
MD5 | f2df046d369803b4a6a421729239c1cd |
|
BLAKE2b-256 | f9e65eb85e706cf2f073fdfccba9add9603a4b120a7efb86fbb8de8383054e4f |