| # Get Started with Huawei Ascend |
|
|
| We currently support running lmdeploy on **Atlas 800T A3, Atlas 800T A2 and Atlas 300I Duo**. |
| The usage of lmdeploy on a Huawei Ascend device is almost the same as its usage on CUDA with PytorchEngine in lmdeploy. |
| Please read the original [Get Started](../get_started.md) guide before reading this tutorial. |
|
|
| Here is the [supported model list](../../supported_models/supported_models.md#PyTorchEngine-on-Other-Platforms). |
|
|
| > \[!IMPORTANT\] |
| > We have uploaded a docker image with KUNPENG CPU to aliyun. |
| > Please try to pull the image by following command: |
| > |
| > Atlas 800T A3: |
| > |
| > `docker pull crpi-4crprmm5baj1v8iv.cn-hangzhou.personal.cr.aliyuncs.com/lmdeploy_dlinfer/ascend:a3-latest` |
| > |
| > (Atlas 800T A3 currently supports only the Qwen-series with eager mode.) |
| > |
| > Atlas 800T A2: |
| > |
| > `docker pull crpi-4crprmm5baj1v8iv.cn-hangzhou.personal.cr.aliyuncs.com/lmdeploy_dlinfer/ascend:a2-latest` |
| > |
| > 300I Duo: |
| > |
| > `docker pull crpi-4crprmm5baj1v8iv.cn-hangzhou.personal.cr.aliyuncs.com/lmdeploy_dlinfer/ascend:300i-duo-latest` |
| > |
| > (Atlas 300I Duo currently works only with graph mode.) |
| > |
| > To build the environment yourself, refer to the Dockerfiles [here](../../../../docker). |
| |
| ## Offline batch inference |
| |
| ### LLM inference |
| |
| Set `device_type="ascend"` in the `PytorchEngineConfig`: |
|
|
| ```python |
| from lmdeploy import pipeline |
| from lmdeploy import PytorchEngineConfig |
| pipe = pipeline("internlm/internlm2_5-7b-chat", |
| backend_config=PytorchEngineConfig(tp=1, device_type="ascend")) |
| question = ["Shanghai is", "Please introduce China", "How are you?"] |
| response = pipe(question) |
| print(response) |
| ``` |
|
|
| ### VLM inference |
|
|
| Set `device_type="ascend"` in the `PytorchEngineConfig`: |
|
|
| ```python |
| from lmdeploy import pipeline, PytorchEngineConfig |
| from lmdeploy.vl import load_image |
| pipe = pipeline('OpenGVLab/InternVL2-2B', |
| backend_config=PytorchEngineConfig(tp=1, device_type='ascend')) |
| image = load_image('https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/tests/data/tiger.jpeg') |
| response = pipe(('describe this image', image)) |
| print(response) |
| ``` |
|
|
| ## Online serving |
|
|
| ### Serve a LLM model |
|
|
| Add `--device ascend` in the serve command. |
|
|
| ```bash |
| lmdeploy serve api_server --backend pytorch --device ascend internlm/internlm2_5-7b-chat |
| ``` |
|
|
| Run the following commands to launch docker container for lmdeploy LLM serving: |
|
|
| ```bash |
| docker run -it --net=host crpi-4crprmm5baj1v8iv.cn-hangzhou.personal.cr.aliyuncs.com/lmdeploy_dlinfer/ascend:a2-latest \ |
| bash -i -c "lmdeploy serve api_server --backend pytorch --device ascend internlm/internlm2_5-7b-chat" |
| ``` |
|
|
| ### Serve a VLM model |
|
|
| Add `--device ascend` in the serve command |
|
|
| ```bash |
| lmdeploy serve api_server --backend pytorch --device ascend OpenGVLab/InternVL2-2B |
| ``` |
|
|
| Run the following commands to launch docker container for lmdeploy VLM serving: |
|
|
| ```bash |
| docker run -it --net=host crpi-4crprmm5baj1v8iv.cn-hangzhou.personal.cr.aliyuncs.com/lmdeploy_dlinfer/ascend:a2-latest \ |
| bash -i -c "lmdeploy serve api_server --backend pytorch --device ascend OpenGVLab/InternVL2-2B" |
| ``` |
|
|
| ## Inference with Command line Interface |
|
|
| Add `--device ascend` in the serve command. |
|
|
| ```bash |
| lmdeploy chat internlm/internlm2_5-7b-chat --backend pytorch --device ascend |
| ``` |
|
|
| Run the following commands to launch lmdeploy chatting after starting container: |
|
|
| ```bash |
| docker run -it crpi-4crprmm5baj1v8iv.cn-hangzhou.personal.cr.aliyuncs.com/lmdeploy_dlinfer/ascend:a2-latest \ |
| bash -i -c "lmdeploy chat --backend pytorch --device ascend internlm/internlm2_5-7b-chat" |
| ``` |
|
|
| ## Quantization |
|
|
| ### w4a16 AWQ |
|
|
| Run the following commands to quantize weights on Atlas 800T A2. |
|
|
| ```bash |
| lmdeploy lite auto_awq $HF_MODEL --work-dir $WORK_DIR --device npu |
| ``` |
|
|
| Please check [supported_models](../../supported_models/supported_models.md) before use this feature. |
|
|
| ### w8a8 SMOOTH_QUANT |
| |
| Run the following commands to quantize weights on Atlas 800T A2. |
| |
| ```bash |
| lmdeploy lite smooth_quant $HF_MODEL --work-dir $WORK_DIR --device npu |
| ``` |
| |
| Please check [supported_models](../../supported_models/supported_models.md) before use this feature. |
| |
| ### int8 KV-cache Quantization |
| |
| Ascend backend has supported offline int8 KV-cache Quantization on eager mode. |
| |
| Please refer this [doc](https://github.com/DeepLink-org/dlinfer/blob/main/docs/quant/ascend_kv_quant.md) for details. |
| |
| ## Limitations on 300I Duo |
| |
| 1. only support dtype=float16. |
| 2. only support graph mode, please do not add --eager-mode. |
| |