From 7cd3685c25e319935d4c0d2ac977ca4cd5e6661b Mon Sep 17 00:00:00 2001 From: horcam Date: Fri, 6 Jun 2025 10:29:37 +0800 Subject: [PATCH] add en doc for vLLM MindSPore --- docs/vllm_mindspore/docs/requirements.txt | 2 +- docs/vllm_mindspore/docs/source_en/arch.png | Bin 0 -> 199273 bytes docs/vllm_mindspore/docs/source_en/conf.py | 266 ++++++++++++++++++ .../source_en/developer_guide/contributing.md | 95 +++++++ .../docs/source_en/faqs/faqs.md | 86 ++++++ .../installation/installation.md | 194 +++++++++++++ .../quick_start/quick_start.md | 235 ++++++++++++++++ .../qwen2.5_32b_multiNPU.md | 203 +++++++++++++ .../qwen2.5_7b_singleNPU.md | 237 ++++++++++++++++ docs/vllm_mindspore/docs/source_en/index.rst | 143 ++++++++++ .../source_en/release_notes/release_notes.md | 23 ++ .../environment_variables.md | 20 ++ .../supported_features/benchmark/benchmark.md | 118 ++++++++ .../features_list/features_list.md | 36 +++ .../supported_features/operations/npu_ops.md | 105 +++++++ .../profiling/op_detail.png | Bin 0 -> 26592 bytes .../supported_features/profiling/op_total.png | Bin 0 -> 8603 bytes .../supported_features/profiling/profiling.md | 89 ++++++ .../supported_features/profiling/trace_1.png | Bin 0 -> 47500 bytes .../supported_features/profiling/trace_2.png | Bin 0 -> 69380 bytes .../profiling/trace_total.png | Bin 0 -> 50302 bytes .../quantization/quantization.md | 131 +++++++++ .../models_list/models_list.md | 21 ++ .../docs/source_zh_cn/faqs/faqs.md | 3 + .../installation/installation.md | 6 +- .../quick_start/quick_start.md | 2 +- .../deepseek_r1_671b_w8a8_tp16_multi_node.md | 2 +- .../docs/source_zh_cn/index.rst | 2 +- .../release_notes/release_notes.md | 4 +- .../environment_variables.md | 5 +- .../supported_features/benchmark/benchmark.md | 2 +- .../features_list/features_list.md | 2 +- .../models_list/models_list.md | 2 +- 33 files changed, 2019 insertions(+), 15 deletions(-) create mode 100644 docs/vllm_mindspore/docs/source_en/arch.png create mode 100644 docs/vllm_mindspore/docs/source_en/conf.py create mode 100644 docs/vllm_mindspore/docs/source_en/developer_guide/contributing.md create mode 100644 docs/vllm_mindspore/docs/source_en/faqs/faqs.md create mode 100644 docs/vllm_mindspore/docs/source_en/getting_started/installation/installation.md create mode 100644 docs/vllm_mindspore/docs/source_en/getting_started/quick_start/quick_start.md create mode 100644 docs/vllm_mindspore/docs/source_en/getting_started/tutorials/qwen2.5_32b_multiNPU/qwen2.5_32b_multiNPU.md create mode 100644 docs/vllm_mindspore/docs/source_en/getting_started/tutorials/qwen2.5_7b_singleNPU/qwen2.5_7b_singleNPU.md create mode 100644 docs/vllm_mindspore/docs/source_en/index.rst create mode 100644 docs/vllm_mindspore/docs/source_en/release_notes/release_notes.md create mode 100644 docs/vllm_mindspore/docs/source_en/user_guide/environment_variables/environment_variables.md create mode 100644 docs/vllm_mindspore/docs/source_en/user_guide/supported_features/benchmark/benchmark.md create mode 100644 docs/vllm_mindspore/docs/source_en/user_guide/supported_features/features_list/features_list.md create mode 100644 docs/vllm_mindspore/docs/source_en/user_guide/supported_features/operations/npu_ops.md create mode 100644 docs/vllm_mindspore/docs/source_en/user_guide/supported_features/profiling/op_detail.png create mode 100644 docs/vllm_mindspore/docs/source_en/user_guide/supported_features/profiling/op_total.png create mode 100644 docs/vllm_mindspore/docs/source_en/user_guide/supported_features/profiling/profiling.md create mode 100644 docs/vllm_mindspore/docs/source_en/user_guide/supported_features/profiling/trace_1.png create mode 100644 docs/vllm_mindspore/docs/source_en/user_guide/supported_features/profiling/trace_2.png create mode 100644 docs/vllm_mindspore/docs/source_en/user_guide/supported_features/profiling/trace_total.png create mode 100644 docs/vllm_mindspore/docs/source_en/user_guide/supported_features/quantization/quantization.md create mode 100644 docs/vllm_mindspore/docs/source_en/user_guide/supported_models/models_list/models_list.md diff --git a/docs/vllm_mindspore/docs/requirements.txt b/docs/vllm_mindspore/docs/requirements.txt index fabeca22d6..9e952e9a95 100644 --- a/docs/vllm_mindspore/docs/requirements.txt +++ b/docs/vllm_mindspore/docs/requirements.txt @@ -8,4 +8,4 @@ jieba descriptastorus == 2.6.0 sympy tqdm -sphinx-rtd-theme == 1.0.0 +sphinx-rtd-theme == 1.0.0 \ No newline at end of file diff --git a/docs/vllm_mindspore/docs/source_en/arch.png b/docs/vllm_mindspore/docs/source_en/arch.png new file mode 100644 index 0000000000000000000000000000000000000000..fc3b524ca3487ae92431c58157175b4ddcb42725 GIT binary patch literal 199273 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.*?:)", source_code) + all_params = re.sub("(self|cls)(,|, )?", '', all_params_str[0][0].replace("\n", "").replace("'", "\"")) + return all_params + except: + return '' + +def get_obj(obj): + if isinstance(obj, type): + return obj.__init__ + + return obj +""" + +with open(autodoc_source_path, "r+", encoding="utf8") as f: + code_str = f.read() + code_str = autodoc_source_re.sub('"(" + get_param_func(get_obj(self.object)) + ")"', code_str, count=0) + exec(get_param_func_str, sphinx_autodoc.__dict__) + exec(code_str, sphinx_autodoc.__dict__) + +# Copy source files of chinese python api from mindscience repository. +from sphinx.util import logging +logger = logging.getLogger(__name__) + +# copy_path = 'docs/api_python/mindchemistry' +# src_dir = os.path.join(os.getenv("VLLM_PATH"), copy_path) + +copy_list = [] + +present_path = os.path.dirname(__file__) + +# for i in os.listdir(src_dir): +# if os.path.isfile(os.path.join(src_dir,i)): +# if os.path.exists('./'+i): +# os.remove('./'+i) +# shutil.copy(os.path.join(src_dir,i),'./'+i) +# copy_list.append(os.path.join(present_path,i)) +# else: +# if os.path.exists('./'+i): +# shutil.rmtree('./'+i) +# shutil.copytree(os.path.join(src_dir,i),'./'+i) +# copy_list.append(os.path.join(present_path,i)) + +# add view +import json + +with open('../../../../tools/generate_html/daily.json', 'r+', encoding='utf-8') as f: + version_inf = json.load(f) + +# if os.getenv("VLLM_PATH").split('/')[-1]: +# copy_repo = os.getenv("VLLM_PATH").split('/')[-1] +# else: +# copy_repo = os.getenv("VLLM_PATH").split('/')[-2] + +# import pdb +# pdb.set_trace() + +# branch = [version_inf[i]['branch'] for i in range(len(version_inf)) if version_inf[i]['name'] == copy_repo][0] +# docs_branch = [version_inf[i]['branch'] for i in range(len(version_inf)) if version_inf[i]['name'] == 'tutorials'][0] + +# re_view = f"\n.. image:: https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/{docs_branch}/" + \ +# f"resource/_static/logo_source_en.svg\n :target: https://gitee.com/mindspore/{copy_repo}/blob/{branch}/" + +# for cur, _, files in os.walk(present_path): +# for i in files: +# flag_copy = 0 +# if i.endswith('.rst'): +# for j in copy_list: +# if j in cur: +# flag_copy = 1 +# break +# if os.path.join(cur, i) in copy_list or flag_copy: +# try: +# with open(os.path.join(cur, i), 'r+', encoding='utf-8') as f: +# content = f.read() +# new_content = content +# if '.. include::' in content and '.. automodule::' in content: +# continue +# if 'autosummary::' not in content and "\n=====" in content: +# re_view_ = re_view + copy_path + cur.split(present_path)[-1] + '/' + i + \ +# '\n :alt: 查看源文件\n\n' +# new_content = re.sub('([=]{5,})\n', r'\1\n' + re_view_, content, 1) +# print("re_view_") +# print(re_view_) +# if new_content != content: +# f.seek(0) +# f.truncate() +# f.write(new_content) +# except Exception: +# print(f'打开{i}文件失败') + + +# import vllm_mindspore + +sys.path.append(os.path.abspath('../../../../resource/search')) +import search_code + +sys.path.append(os.path.abspath('../../../../resource/custom_directives')) +from custom_directives import IncludeCodeDirective +from myautosummary import MsPlatformAutoSummary, MsCnPlatformAutoSummary + +rst_files = set([i.replace('.rst', '') for i in glob.glob('./**/*.rst', recursive=True)]) + +def setup(app): + app.add_directive('msplatformautosummary', MsPlatformAutoSummary) + app.add_directive('mscnplatformautosummary', MsCnPlatformAutoSummary) + app.add_directive('includecode', IncludeCodeDirective) + app.add_config_value('rst_files', set(), False) + +src_release = "./release_notes/release_notes.md" +des_release = "./RELEASE.md" +with open(src_release, "r", encoding="utf-8") as f: + data = f.read() +if len(re.findall("\n## (.*?)\n",data)) > 1: + content = re.findall("(## [\s\S\n]*?)\n## ", data) +else: + content = re.findall("(## [\s\S\n]*)", data) + +with open(des_release, "w", encoding="utf-8") as p: + p.write("# Release Notes"+"\n\n") + p.write(content[0]) + +os.makedirs(os.path.join(present_path, "../build_en/html/"), exist_ok=True) +shutil.copy(os.path.join(present_path, "arch.png"), os.path.join(present_path, "../build_en/html/")) diff --git a/docs/vllm_mindspore/docs/source_en/developer_guide/contributing.md b/docs/vllm_mindspore/docs/source_en/developer_guide/contributing.md new file mode 100644 index 0000000000..bd4e479bd7 --- /dev/null +++ b/docs/vllm_mindspore/docs/source_en/developer_guide/contributing.md @@ -0,0 +1,95 @@ +# Contribution Guidelines + +[![View Source](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/master/docs/vllm_mindspore/docs/source_en/developer_guide/contributing.md) + +## Contributor License Agreement + +Before submitting code to the MindSpore community, you need to sign the Contributor License Agreement (CLA). Individual contributors should refer to the [ICLA Online Document](https://www.mindspore.cn/icla). + +## Quick Start + +- Fork the repository on [Gitee](https://gitee.com/mindspore/vllm-mindspore). +- Refer to [README.md](https://gitee.com/mindspore/vllm-mindspore/blob/master/README.md) and the installation page for project information and build instructions. + +## Supporting New Models + +To support a new model for vLLM MindSpore code repository, please note the following: + +- **Follow file format and location specifications.** Model code files should be placed under the `vllm_mindspore/model_executor` directory, organized in corresponding subfolders by model type. +- **Implement models using MindSpore interfaces with jit static graph support.** Model definitions in vLLM MindSpore must be implemented using MindSpore interfaces. Since MindSpore's static graph mode offers performance advantages, models should support execution via @jit static graphs. For reference, see the [Qwen2.5](https://gitee.com/mindspore/vllm-mindspore/blob/master/vllm_mindspore/model_executor/models/qwen2.py) implementation. +- **Register new models in vLLM MindSpore.** After implementing the model structure, register it in vLLM MindSpore by adding it to `_NATIVE_MODELS` in `vllm_mindspore/model_executor/models/registry.py`. +- **Write unit tests.** New models must include corresponding unit tests. Refer to the [Qwen2.5 testcases](https://gitee.com/mindspore/vllm-mindspore/blob/master/tests/st/python/test_vllm_qwen_7b.py) for examples. + +## Contribution Process + +### Code Style + +Follow these guidelines for community code review, maintenance, and development. + +- **Coding Standards:** Use vLLM community code checking tools: yapf, codespell, ruff, isort, and mypy. For more details, see the [Toolchain Usage Guide](https://gitee.com/mindspore/vllm-mindspore/blob/master/codecheck_toolkits/README.md). +- **Unit Testing Guidelines:** vLLM MindSpore uses the [pytest](http://www.pytest.org/en/latest/) framework. Test names should clearly reflect their purpose. +- **Refactoring Guidelines:** Developers are encouraged to refactor code to eliminate [code smells](https://en.wikipedia.org/wiki/Code_smell). All code, including refactored code, must adhere to coding and testing standards. + +### Fork-Pull Development Model + +- **Fork the vLLM MindSpore Repository:** Before submitting code, fork the project to your own repository. Ensure consistency between the vLLM MindSpore repository and your fork during parallel development. + +- **Clone the Remote Repository:** users can use git to pull the source code: + + ```shell + # On Gitee: + git clone https://gitee.com/{insert_your_forked_repo}/vllm-mindspore.git + git remote add upstream https://gitee.com/mindspore/vllm-mindspore.git + ``` + +- **Local Development:** To avoid branch inconsistencies, switch to a new branch: + + ```shell + git checkout -b {new_branch_name} origin/master + ``` + + For version branches or downstream development, fix upstream bugs before modifying code. +- **Push Changes to Remote Repository:** After updating the code, push changes: + + ```shell + git add . + git status # Check update status. + git commit -m "Your commit title" + git commit -s --amend # Add detailed commit description. + git push origin {new_branch_name} + ``` + +- **Create a Pull Request to vLLM MindSpore:** Compare and create a PR between your branch and the vLLM MindSpore master branch. After submission, manually trigger CI checks with `/retest` in the comments. PRs should be merged into upstream master promptly to minimize merge risks. + +### Reporting Issues + +To contribute by reporting issues, follow these guidelines: + +- Specify your environment versions (vLLM MindSpore, MindFormers, MindSpore, OS, Python, etc.). +- Indicate whether it's a bug report or feature request. +- Label the issue type for visibility on the issue board. +- Describe the problem and expected resolution. +- Provide detailed reproduction steps. +- Add special notes for reviewers. + +**Issue Notes:** + +- **Comment first when processing an issue,** inform others that you would start to fix this issue. +- **For long-unresolved issues**, verify the problem before attempting a fix. +- **If you resolve your own reported issue**, notify others before closing it. + +### Submitting PRs + +- For major new features, include a design proposal. +- After consensus via issue discussion and design review, develop in your fork and submit a PR. +- Each PR requires at least two LGTM labels from reviewers (excluding the PR author). +- After thorough discussion, the PR will be merged, abandoned, or rejected based on the outcome. + +**PR Notes:** + +- Avoid unrelated changes. +- Maintain clean commit history. +- Keep your branch synchronized with master. +- For bug-fix PRs, ensure all related issues are referenced. + +Thank you for your interest in contributing to vLLM MindSpore. We welcome and value all forms of collaboration. diff --git a/docs/vllm_mindspore/docs/source_en/faqs/faqs.md b/docs/vllm_mindspore/docs/source_en/faqs/faqs.md new file mode 100644 index 0000000000..2d27c2c672 --- /dev/null +++ b/docs/vllm_mindspore/docs/source_en/faqs/faqs.md @@ -0,0 +1,86 @@ +# Frequently Asked Questions + +[![View Source](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/master/docs/vllm_mindspore/docs/source_en/faqs/faqs.md) + +## Model-related Issues + +### Git-LFS Installation + +1. Obtain the corresponding [git-lfs installation package](https://github.com/git-lfs/git-lfs/releases/tag/v3.0.1) from the following link. +2. Download and install: + + ```shell + mkdir git-lfs + cd git-lfs + wget https://github.com/git-lfs/git-lfs/releases/download/v3.0.1/git-lfs-linux-arm64-v3.0.1.tar.gz --no-check-certificate + tar zxvf git-lfs-linux-arm64-v3.0.1.tar.gz + bash install.sh + ``` + +3. Verify successful installation: + + ```shell + git lfs install + ``` + + If `Git LFS initialized.` is returned, the installation was successful. + +## Deployment-related Issues + +### Model Fails to Load During Offline/Online Inference + +- Key error message: + + ```text + raise ValueError(f"{config.load_checkpoint} is not a valid path to load checkpoint ") + ``` + +- Solution: + 1. Check if the model path exists and is valid; + 2. If the model path exists and the model files are in `safetensors` format, confirm whether the yaml file contains the `load_ckpt_format: "safetensors"` field: + 1. Print the path of the yaml file used by the model: + + ```bash + echo $MINDFORMERS_MODEL_CONFIG + ``` + + 2. Check the yaml file. If the `load_ckpt_format` field is missing, add it: + + ```text + load_ckpt_format: "safetensors" + ``` + +### `aclnnNonzeroV2` Related Error When Starting Online Service + +- Key error message: + + ```text + RuntimeError: Call aclnnNonzeroV2 failed, detail:E39999: Inner Error + ``` + + Check whether the CANN and MindSpore versions are correctly matched. + +### `resolve_transformers_fallback` Import Error When Running Qwen3 + +- Key error message: + + ```text + ImportError: cannot import name 'resolve_transformers_fallback' from 'vllm.model_executor.model_loader.utils' + ``` + + Try switching `vllm` to version `0.7.3`. + +### `torch` Not Found When Importing `vllm_mindspore` + +- Key error message: + + ```text + importlib.metadata.PackageNotFoundError: No package metadata was found for torch + ``` + + Execute the following commands to reinstall torch-related components: + + ```bash + pip uninstall torch + pip uninstall torchvision + ``` diff --git a/docs/vllm_mindspore/docs/source_en/getting_started/installation/installation.md b/docs/vllm_mindspore/docs/source_en/getting_started/installation/installation.md new file mode 100644 index 0000000000..f088336aa7 --- /dev/null +++ b/docs/vllm_mindspore/docs/source_en/getting_started/installation/installation.md @@ -0,0 +1,194 @@ +# Installation Guide + +[![View Source](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/master/docs/vllm_mindspore/docs/source_en/getting_started/installation/installation.md) + +This document describes the steps to install the vLLM MindSpore environment. Three installation methods are provided: + +- [Docker Installation](#docker-installation): Suitable for quick deployment scenarios. +- [Pip Installation](#pip-installation): Suitable for scenarios requiring specific versions. +- [Source Code Installation](#source-code-installation): Suitable for incremental development of vLLM MindSpore. + +## Version Compatibility + +- OS: Linux-aarch64 +- Python: 3.9 / 3.10 / 3.11 +- Software version compatibility + + | Software | Version | Corresponding Branch | + | -------- | ------- | -------------------- | + | [CANN](https://www.hiascend.com/developer/download/community/result?module=cann) | 8.1 | - | + | [MindSpore](https://www.mindspore.cn/install/) | 2.7 | master | + | [MSAdapter](https://git.openi.org.cn/OpenI/MSAdapter) | 0.2 | master | + | [MindSpore Transformers](https://gitee.com/mindspore/mindformers) | 1.6 | br_infer_deepseek_os | + | [Golden Stick](https://gitee.com/mindspore/golden-stick) | 1.1.0 | r1.1.0 | + | [vLLM](https://github.com/vllm-project/vllm) | 0.8.3 | v0.8.3 | + | [vLLM MindSpore](https://gitee.com/mindspore/vllm-mindspore) | 0.2 | master | + +## Environment Setup + +This section introduces three installation methods: [Docker Installation](#docker-installation), [Pip Installation](#pip-installation), [Source Code Installation](#source-code-installation), and [Quick Verification](#quick-verification) example to check the installation. + +### Docker Installation + +We recommend using Docker for quick deployment of the vLLM MindSpore environment. Below are the steps: + +#### Pulling the Image + +Execute the following command to pull the vLLM MindSpore Docker image: + +```bash +docker pull hub.oepkgs.net/oedeploy/openeuler/aarch64/mindspore:latest +``` + +During the pull process, user will see the progress of each layer. After successful completion, check the image by executing the following command: + +```bash +docker images +``` + +#### Creating a Container + +After [pulling the image](#pulling-the-image), set `DOCKER_NAME` and `IMAGE_NAME` as the container and image names, then execute the following command to create the container: + +```bash +export DOCKER_NAME=vllm-mindspore-container # your container name +export IMAGE_NAME=hub.oepkgs.net/oedeploy/openeuler/aarch64/mindspore:latest # your image name + +docker run -itd --name=${DOCKER_NAME} --ipc=host --network=host --privileged=true \ + --device=/dev/davinci0 \ + --device=/dev/davinci1 \ + --device=/dev/davinci2 \ + --device=/dev/davinci3 \ + --device=/dev/davinci4 \ + --device=/dev/davinci5 \ + --device=/dev/davinci6 \ + --device=/dev/davinci7 \ + --device=/dev/davinci_manager \ + --device=/dev/devmm_svm \ + --device=/dev/hisi_hdc \ + -v /usr/local/sbin/:/usr/local/sbin/ \ + -v /var/log/npu/slog/:/var/log/npu/slog \ + -v /var/log/npu/profiling/:/var/log/npu/profiling \ + -v /var/log/npu/dump/:/var/log/npu/dump \ + -v /var/log/npu/:/usr/slog \ + -v /etc/hccn.conf:/etc/hccn.conf \ + -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ + -v /usr/local/dcmi:/usr/local/dcmi \ + -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ + -v /etc/ascend_install.info:/etc/ascend_install.info \ + -v /etc/vnpu.cfg:/etc/vnpu.cfg \ + --shm-size="250g" \ + ${IMAGE_NAME} \ + bash +``` + +The container ID will be returned if docker is created successfully. User can also check the container by executing the following command: + +```bash +docker ps +``` + +#### Entering the Container + +After [creating the container](#creating-a-container), user can start and enter the container, using the environment variable `DOCKER_NAME`: + +```bash +docker exec -it $DOCKER_NAME bash +``` + +### Pip Installation + +Use pip to install vLLM MindSpore, by executing the following command: + +```bash +pip install vllm_mindspore +``` + +### Source Code Installation + +- **CANN Installation** + For CANN installation methods and environment configuration, please refer to [CANN Community Edition Installation Guide](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/82RC1alpha002/softwareinst/instg/instg_0001.html?Mode=PmIns&OS=openEuler&Software=cannToolKit). If you encounter any issues during CANN installation, please consult the [Ascend FAQ](https://www.hiascend.com/document/detail/zh/AscendFAQ/ProduTech/CANNFAQ/cannfaq_000.html) for troubleshooting. + + The default installation path for CANN is `/usr/local/Ascend`. After completing CANN installation, configure the environment variables with the following commands: + + ```bash + LOCAL_ASCEND=/usr/local/Ascend # the root directory of run package + source ${LOCAL_ASCEND}/ascend-toolkit/set_env.sh + export ASCEND_CUSTOM_PATH=${LOCAL_ASCEND}/ascend-toolkit + ``` + +- **vLLM Prerequisites Installation** + For vLLM environment configuration and installation methods, please refer to the [vLLM Installation Guide](https://docs.vllm.ai/en/v0.8.3/getting_started/installation/cpu.html). In vllM installation, `gcc/g++ >= 12.3.0` is required, and it could be installed by the following command: + + ```bash + yum install -y gcc gcc-c++ + ``` + +- **vLLM MindSpore Installation** + To install vLLM MindSpore, user needs to pull the vLLM MindSpore source code and then runs the following command to install the dependencies: + + ```bash + git clone https://gitee.com/mindspore/vllm-mindspore.git + cd vllm-mindspore + bash install_depend_pkgs.sh + ``` + + Compile and install vLLM MindSpore: + + ```bash + pip install . + ``` + + After executing the above commands, `mindformers-dev` folder will be generated in the `vllm-mindspore/install_depend_pkgs` directory. Add this folder to the environment variables: + + ```bash + export MF_PATH=`pwd install_depend_pkgs/mindformers-dev` + export PYTHONPATH=$MF_PATH:$PYTHONPATH + ``` + + If MindSpore Transformers was compiled and installed from the `br_infer_deepseek_os` branch, `mindformers-os` folder will be generated in the `vllm-mindspore/install_depend_pkgs` directory. In this case, adjust the `MF_PATH` environment variable to: + + ```bash + export MF_PATH=`pwd install_depend_pkgs/mindformers-os` + export PYTHONPATH=$MF_PATH:$PYTHONPATH + ``` + +### Quick Verification + +To verify the installation, run a simple offline inference test with [Qwen2.5-7B](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct): + +```python +import vllm_mindspore # Add this line on the top of script. +from vllm import LLM, SamplingParams + +# Sample prompts. +prompts = [ + "I am", + "Today is", + "Llama is" +] + +# Create a sampling params object. +sampling_params = SamplingParams(temperature=0.0, top_p=0.95) + +# Create a LLM +llm = LLM(model="Qwen2.5-7B-Instruct") +# Generate texts from the prompts. The output is a list of RequestOutput objects +# that contain the prompt, generated text, and other information. +outputs = llm.generate(prompts, sampling_params) +# Print the outputs. +for output in outputs: + prompt = output.prompt + generated_text = output.outputs[0].text + print(f"Prompt: {prompt!r}. Generated text: {generated_text!r}") +``` + +If successful, the output will resemble: + +```text +Prompt: 'I am'. Generated text: ' trying to create a virtual environment for my Python project, but I am encountering some' +Prompt: 'Today is'. Generated text: ' the 100th day of school. To celebrate, the teacher has' +Prompt: 'Llama is'. Generated text: ' a 100% natural, biodegradable, and compostable alternative' +``` + +Alternatively, refer to the [Quick Start](../quick_start/quick_start.md) guide for [online serving](../quick_start/quick_start.md#online-serving) verification. diff --git a/docs/vllm_mindspore/docs/source_en/getting_started/quick_start/quick_start.md b/docs/vllm_mindspore/docs/source_en/getting_started/quick_start/quick_start.md new file mode 100644 index 0000000000..edf49a6dbb --- /dev/null +++ b/docs/vllm_mindspore/docs/source_en/getting_started/quick_start/quick_start.md @@ -0,0 +1,235 @@ +# Quick Start + +[![View Source](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/master/docs/vllm_mindspore/docs/source_en/getting_started/quick_start/quick_start.md) + +This document provides a quick guide to deploy vLLM MindSpore by [docker](https://www.docker.com/), with the [Qwen2.5-7B](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct) model as an example. User can quickly experience the serving and inference abilities of vLLM MindSpore by [offline inference](#offline-inference) and [online serving](#online-serving). For more information about installation, please refer to the [Installation Guide](../installation/installation.md). + +## Docker Installation + +In this section, we recommend to use docker to deploy the vLLM MindSpore environment. The following sections are the steps for deployment: + +### Pulling the Image + +Pull the vLLM MindSpore docker image by executing the following command: + +```bash +docker pull hub.oepkgs.net/oedeploy/openeuler/aarch64/mindspore:latest +``` + +During the pull process, user will see the progress of each layer of the docker image. User can verify the image by executing the following command: + +```bash +docker images +``` + +### Creating a Container + +After [pulling the image](#pulling-the-image), set `DOCKER_NAME` and `IMAGE_NAME` as the container and image names, and create the container by running: + +```bash +export DOCKER_NAME=vllm-mindspore-container # your container name +export IMAGE_NAME=hub.oepkgs.net/oedeploy/openeuler/aarch64/mindspore:latest # your image name + +docker run -itd --name=${DOCKER_NAME} --ipc=host --network=host --privileged=true \ + --device=/dev/davinci0 \ + --device=/dev/davinci1 \ + --device=/dev/davinci2 \ + --device=/dev/davinci3 \ + --device=/dev/davinci4 \ + --device=/dev/davinci5 \ + --device=/dev/davinci6 \ + --device=/dev/davinci7 \ + --device=/dev/davinci_manager \ + --device=/dev/devmm_svm \ + --device=/dev/hisi_hdc \ + -v /usr/local/sbin/:/usr/local/sbin/ \ + -v /var/log/npu/slog/:/var/log/npu/slog \ + -v /var/log/npu/profiling/:/var/log/npu/profiling \ + -v /var/log/npu/dump/:/var/log/npu/dump \ + -v /var/log/npu/:/usr/slog \ + -v /etc/hccn.conf:/etc/hccn.conf \ + -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ + -v /usr/local/dcmi:/usr/local/dcmi \ + -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ + -v /etc/ascend_install.info:/etc/ascend_install.info \ + -v /etc/vnpu.cfg:/etc/vnpu.cfg \ + --shm-size="250g" \ + ${IMAGE_NAME} \ + bash +``` + +After successfully creating the container, the container ID will be returned. User can verify the creation by executing the following command: + +```bash +docker ps +``` + +### Entering the Container + +After [creating the container](#creating-a-container), use the environment variable `DOCKER_NAME` to start and enter the container by executing the following command: + +```bash +docker exec -it $DOCKER_NAME bash +``` + +## Using the Service + +After deploying the environment, user need to prepare the model files before running the model. Refer to the [Download Model](#downloading-model) section for guidance. After [setting environment variables](#setting-environment-variables), user can experience the model bt [offline inference](#offline-inference) or [online serving](#online-serving). + +### Downloading Model + +User can download the model using either the [Python Tool](#downloading-with-python-tool) or [git-lfs Tool](#downloading-with-git-lfs-tool). + +#### Downloading with Python Tool + +Execute the following Python script to download the [Qwen2.5-7B](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct) weights and files from [Hugging Face](https://huggingface.co/): + +```python +from huggingface_hub import snapshot_download + +snapshot_download( + repo_id="Qwen/Qwen2.5-7B-Instruct", + local_dir="/path/to/save/Qwen2.5-7B-Instruct", + local_dir_use_symlinks=False +) +``` + +`local_dir` is the model save path specified by the user. Please ensure the disk space is sufficient. + +#### Downloading with git-lfs Tool + +Execute the following command to check if [git-lfs](https://git-lfs.com) is available: + +```bash +git lfs install +``` + +If available, the following output will be displayed: + +```text +Git LFS initialized. +``` + +If the tool is unavailable, please install [git-lfs](https://git-lfs.com) first. Refer to the [FAQ](../../faqs/faqs.md) section for guidance on [git-lfs installation](../../faqs/faqs.md#git-lfs-installation). + +Once confirmed, download the weights by executing the following command: + +```bash +git clone https://huggingface.co/Qwen/Qwen2.5-7B-Instruct +``` + +### Setting Environment Variables + +Before launching the model, user need to set the following environment variables: + +```bash +export ASCEND_TOTAL_MEMORY_GB=64 # Please use `npu-smi info` to check the memory. +export vLLM_MODEL_BACKEND=MindFormers # use MindSpore Transformers as model backend. +export vLLM_MODEL_MEMORY_USE_GB=32 # Memory reserved for model execution. Set according to the model's maximum usage, with the remaining environment used for kvcache allocation. +export MINDFORMERS_MODEL_CONFIG=$YAML_PATH # Set the corresponding MindSpore Transformers model's YAML file. +``` + +Here is an explanation of these environment variables: + +- `ASCEND_TOTAL_MEMORY_GB`: The memory size of each card. User can check the memory by using `npu-smi info`, where the value corresponds to `HBM-Usage(MB)` in the query results. +- `vLLM_MODEL_BACKEND`: The backend of the model to run. User could find supported models and backends for vLLM MindSpore in the [Model Support List](../../user_guide/supported_models/models_list/models_list.md). +- `vLLM_MODEL_MEMORY_USE_GB`: The memory reserved for model loading. Adjust this value if insufficient memory error occurs during model loading. +- `MINDFORMERS_MODEL_CONFIG`: The model configuration file. + +### Offline Inference + +Taking [Qwen2.5-7B](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct) as an example, user can perform offline inference with the following Python script: + +```python +import vllm_mindspore # Add this line on the top of script. +from vllm import LLM, SamplingParams + +# Sample prompts. +prompts = [ + "I am", + "Today is", + "Llama is" +] + +# Create a sampling params object. +sampling_params = SamplingParams(temperature=0.0, top_p=0.95) + +# Create a LLM +llm = LLM(model="Qwen2.5-7B-Instruct") +# Generate texts from the prompts. The output is a list of RequestOutput objects +# that contain the prompt, generated text, and other information. +outputs = llm.generate(prompts, sampling_params) +# Print the outputs. +for output in outputs: + prompt = output.prompt + generated_text = output.outputs[0].text + print(f"Prompt: {prompt!r}. Generated text: {generated_text!r}") +``` + +If offline inference runs successfully, similar results will be obtained: + +```text +Prompt: 'I am'. Generated text: ' trying to create a virtual environment for my Python project, but I am encountering some' +Prompt: 'Today is'. Generated text: ' the 100th day of school. To celebrate, the teacher has' +Prompt: 'Llama is'. Generated text: ' a 100% natural, biodegradable, and compostable alternative' +``` + +### Online Serving + +vLLM MindSpore supports online serving deployment with the OpenAI API protocol. The following section would introduce how to [starting the service](#starting-the-service) and [send requests](#sending-requests) to obtain inference results, using [Qwen2.5-7B](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct) as an example. + +#### Starting the Service + +Use the model `Qwen/Qwen2.5-7B-Instruct` and start the vLLM service with the following command: + +```bash +python3 -m vllm_mindspore.entrypoints vllm.entrypoints.openai.api_server --model "Qwen/Qwen2.5-7B-Instruct" +``` + +If the service starts successfully, similar output will be obtained: + +```text +INFO: Started server process [6363] +INFO: Waiting for application startup. +INFO: Application startup complete. +``` + +Additionally, performance metrics will be logged, such as: + +```text +Engine 000: Avg prompt throughput: 0.0 tokens/s, Avg gereration throughput: 0.0 tokens/s, Running: 0 reqs, Waiting: 0 reqs, GPU KV cache usage: 0.0%, Prefix cache hit rate: 0.0% +``` + +#### Sending Requests + +Use the following command to send a request, where `prompt` is the model input: + +```bash +curl http://localhost:8000/v1/completions -H "Content-Type: application/json" -d '{"model": "Qwen/Qwen2.5-7B-Instruct", "prompt": "I am", "max_tokens": 15, "temperature": 0}' +``` + +If the request is processed successfully, the following inference result will be returned: + +```text +{ + "id":"cmpl-5e6e314861c24ba79fea151d86c1b9a6","object":"text_completion", + "create":1747398389, + "model":"Qwen2.5-7B-Instruct", + "choices":[ + { + "index":0, + "trying to create a virtual environment for my Python project, but I am encountering some", + "logprobs":null, + "finish_reason":"length", + "stop_reason":null, + "prompt_logprobs":null + } + ], + "usage":{ + "prompt_tokens":2, + "total_tokens":17, + "completion_tokens":15, + "prompt_tokens_details":null + } +} +``` diff --git a/docs/vllm_mindspore/docs/source_en/getting_started/tutorials/qwen2.5_32b_multiNPU/qwen2.5_32b_multiNPU.md b/docs/vllm_mindspore/docs/source_en/getting_started/tutorials/qwen2.5_32b_multiNPU/qwen2.5_32b_multiNPU.md new file mode 100644 index 0000000000..007bdab99e --- /dev/null +++ b/docs/vllm_mindspore/docs/source_en/getting_started/tutorials/qwen2.5_32b_multiNPU/qwen2.5_32b_multiNPU.md @@ -0,0 +1,203 @@ +# NPU Single-Node Multi-Card Inference (Qwen2.5-32B) + +[![View Source](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/master/docs/vllm_mindspore/docs/source_en/getting_started/tutorials/qwen2.5_32b_multiNPU/qwen2.5_32b_multiNPU.md) + +This document introduces single-node multi-card inference process by vLLM MindSpore. Taking the [Qwen2.5-32B](https://huggingface.co/Qwen/Qwen2.5-32B-Instruct) model as an example, users can configure the environment through the [Docker Installation](#docker-installation) section or the [Installation Guide](../../installation/installation.md#installation-guide), and then [download the model weights](#downloading-model-weights). After [setting environment variables](#setting-environment-variables), users can perform [online inference](#online-inference) to experience single-node multi-card inference capabilities. + +## Docker Installation + +In this section, we recommend using Docker for quick deployment of the vLLM MindSpore environment. Below are the steps for Docker deployment: + +### Pulling the Image + +Pull the vLLM MindSpore Docker image by executing the following command: + +```bash +docker pull hub.oepkgs.net/oedeploy/openeuler/aarch64/mindspore:latest +``` + +During the pull process, user will see the progress of each layer. After successful completion, use can also check the image by running: + +```bash +docker images +``` + +### Creating a Container + +After [pulling the image](#pulling-the-image), set `DOCKER_NAME` and `IMAGE_NAME` as the container and image names, then create the container: + +```bash +export DOCKER_NAME=vllm-mindspore-container # your container name +export IMAGE_NAME=hub.oepkgs.net/oedeploy/openeuler/aarch64/mindspore:latest # your image name + +docker run -itd --name=${DOCKER_NAME} --ipc=host --network=host --privileged=true \ + --device=/dev/davinci0 \ + --device=/dev/davinci1 \ + --device=/dev/davinci2 \ + --device=/dev/davinci3 \ + --device=/dev/davinci4 \ + --device=/dev/davinci5 \ + --device=/dev/davinci6 \ + --device=/dev/davinci7 \ + --device=/dev/davinci_manager \ + --device=/dev/devmm_svm \ + --device=/dev/hisi_hdc \ + -v /usr/local/sbin/:/usr/local/sbin/ \ + -v /var/log/npu/slog/:/var/log/npu/slog \ + -v /var/log/npu/profiling/:/var/log/npu/profiling \ + -v /var/log/npu/dump/:/var/log/npu/dump \ + -v /var/log/npu/:/usr/slog \ + -v /etc/hccn.conf:/etc/hccn.conf \ + -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ + -v /usr/local/dcmi:/usr/local/dcmi \ + -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ + -v /etc/ascend_install.info:/etc/ascend_install.info \ + -v /etc/vnpu.cfg:/etc/vnpu.cfg \ + --shm-size="250g" \ + ${IMAGE_NAME} \ + bash +``` + +After successful creation, the container ID will be returned. Verify the container by running: + +```bash +docker ps +``` + +### Entering the Container + +After [creating the container](#creating-a-container), start and enter the container using the predefined `DOCKER_NAME`: + +```bash +docker exec -it $DOCKER_NAME bash +``` + +## Downloading Model Weights + +Users can download the model using either [Python Tools](#downloading-with-python-tool) or [git-lfs Tools](#downloading-with-git-lfs-tool). + +### Downloading with Python Tool + +Execute the following Python script to download the [Qwen2.5-32B](https://huggingface.co/Qwen/Qwen2.5-32B-Instruct) weights and files from [Hugging Face](https://huggingface.co/): + +```python +from openmind_hub import snapshot_downloadfrom huggingface_hub import snapshot_download +snapshot_download( + repo_id="Qwen/Qwen2.5-32B-Instruct", + local_dir="/path/to/save/Qwen2.5-32B-Instruct", + local_dir_use_symlinks=False +) +``` + +`local_dir` is the user-specified path to save the model. Ensure sufficient disk space is available. + +### Downloading with git-lfs Tool + +Run the following command to verify if [git-lfs](https://git-lfs.com) is available: + +```bash +git lfs install +``` + +If available, the following output will be displayed: + +```text +Git LFS initialized. +``` + +If unavailable, install [git-lfs](https://git-lfs.com) first. Refer to the [FAQ](../../../faqs/faqs.md) section for [git-lfs installation](../../../faqs/faqs.md#git-lfs-installation) guidance. + +Once confirmed, execute the following command to download the weights: + +```bash +git clone https://huggingface.co/Qwen/Qwen2.5-32B-Instruct +``` + +## Setting Environment Variables + +For [Qwen2.5-32B](https://huggingface.co/Qwen/Qwen2.5-32B-Instruct), the following environment variables configure memory allocation, backend, and model-related YAML files: + +```bash +#set environment variables +export ASCEND_TOTAL_MEMORY_GB=64 # Use `npu-smi info` to check the memory. +export vLLM_MODEL_BACKEND=MindFormers # Use MindFormers as the model backend. +export vLLM_MODEL_MEMORY_USE_GB=32 # Memory reserved for model execution. Adjust based on the model's maximum usage, with the remaining allocated for KV cache. +export MINDFORMERS_MODEL_CONFIG=$YAML_PATH # Set the corresponding MindSpore Transformers model YAML file. +``` + +Here is an explanation of these environment variables: + +- `ASCEND_TOTAL_MEMORY_GB`: The memory size of each compute card. Query using `npu-smi info`, corresponding to `HBM-Usage(MB)` in the results. +- `vLLM_MODEL_BACKEND`: The model backend. Currently supported models and backends are listed in the [Model Support List](../../../user_guide/supported_models/models_list/models_list.md). +- `vLLM_MODEL_MEMORY_USE_GB`: Memory reserved for model loading. Adjust this if encountering insufficient memory. +- `MINDFORMERS_MODEL_CONFIG`: Model configuration file. User can find the corresponding YAML file in the [MindSpore Transformers repository](https://gitee.com/mindspore/mindformers/tree/r1.5.0/research/qwen2_5). For Qwen2.5-32B, the YAML file is [predict_qwen2_5_32b_instruct.yaml](https://gitee.com/mindspore/mindformers/blob/r1.5.0/research/qwen2_5/predict_qwen2_5_32b_instruct.yaml). + +Users can check memory usage with `npu-smi info` and set the NPU cards for inference using the following example (assuming cards 4,5,6,7 are used): + +```bash +export ASCEND_RT_VISIBLE_DEVICES=4,5,6,7 +``` + +## Online Inference + +vLLM MindSpore supports online serving deployment with the OpenAI API protocol. The following section would introduce how to [starting the service](#starting-the-service) and [send requests](#sending-requests) to obtain inference results, using [Qwen2.5-32B](https://huggingface.co/Qwen/Qwen2.5-32B-Instruct) as an example. + +### Starting the Service + +Use the model `Qwen/Qwen2.5-32B-Instruct` and start the vLLM service with the following command: + +```bash +export TENSOR_PARALLEL_SIZE=4 +export MAX_MODEL_LEN=1024 +python3 -m vllm_mindspore.entrypoints vllm.entrypoints.openai.api_server --model "Qwen/Qwen2.5-32B-Instruct" --trust_remote_code --tensor-parallel-size $TENSOR_PARALLEL_SIZE --max-model-len $MAX_MODEL_LEN +``` + +Here, `TENSOR_PARALLEL_SIZE` specifies the number of NPU cards, and `MAX_MODEL_LEN` sets the maximum output token length. + +If the service starts successfully, similar output will be obtained: + +```text +INFO: Started server process [6363] +INFO: Waiting for application startup. +INFO: Application startup complete. +``` + +Additionally, performance metrics will be logged, such as: + +```text +Engine 000: Avg prompt throughput: 0.0 tokens/s, Avg generation throughput: 0.0 tokens/s, Running: 0 reqs, Waiting: 0 reqs, GPU KV cache usage: 0.0%, Prefix cache hit rate: 0.0% +``` + +### Sending Requests + +Use the following command to send a request, where `prompt` is the model input: + +```bash +curl http://localhost:8000/v1/completions -H "Content-Type: application/json" -d '{"model": "Qwen2.5-32B-Instruct", "prompt": "I am", "max_tokens": 20, "temperature": 0}' +``` + +If processed successfully, the inference result will be: + +```text +{ + "id":"cmpl-11fe2898c77d4ff18c879f57ae7aa9ca","object":"text_completion", + "create":1748568696, + "model":"Qwen2.5-32B-Instruct", + "choices":[ + { + "index":0, + "text":"trying to create a virtual environment in Python using venv, but I am encountering some issues with setting", + "logprobs":null, + "finish_reason":"length", + "stop_reason":null, + "prompt_logprobs":null + } + ], + "usage":{ + "prompt_tokens":2, + "total_tokens":22, + "completion_tokens":20, + "prompt_tokens_details":null + } +} +``` diff --git a/docs/vllm_mindspore/docs/source_en/getting_started/tutorials/qwen2.5_7b_singleNPU/qwen2.5_7b_singleNPU.md b/docs/vllm_mindspore/docs/source_en/getting_started/tutorials/qwen2.5_7b_singleNPU/qwen2.5_7b_singleNPU.md new file mode 100644 index 0000000000..47ca1d4997 --- /dev/null +++ b/docs/vllm_mindspore/docs/source_en/getting_started/tutorials/qwen2.5_7b_singleNPU/qwen2.5_7b_singleNPU.md @@ -0,0 +1,237 @@ +# Single NPU Inference (Qwen2.5-7B) + +[![View Source](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/master/docs/vllm_mindspore/docs/source_en/getting_started/tutorials/qwen2.5_7b_singleNPU/qwen2.5_7b_singleNPU.md) + +This document introduces single NPU inference process by vLLM MindSpore. Taking the [Qwen2.5-7B](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct) model as an example, user can configure the environment through the [Docker Installation](#docker-installation) or the [Installation Guide](../../installation/installation.md#installation-guide), and [download model weights](#download-model-weights). After [setting environment variables](#setting-environment-variables), user can perform [offline inference](#offline-inference) and [online inference](#online-inference) to experience single NPU inference abilities. + +## Docker Installation + +In this section, we recommend using Docker for quick deployment of the vLLM MindSpore environment. Below are the steps for Docker deployment: + +### Pulling the Image + +Pull the vLLM MindSpore Docker image by executing the following command: + +```bash +docker pull hub.oepkgs.net/oedeploy/openeuler/aarch64/mindspore:latest +``` + +During the pull process, user will see the progress of each layer. After successful completion, use can also check the image by running: + +```bash +docker images +``` + +### Creating a Container + +After [pulling the image](#pulling-the-image), set `DOCKER_NAME` and `IMAGE_NAME` as the container and image names, then create the container: + +```bash +export DOCKER_NAME=vllm-mindspore-container # your container name +export IMAGE_NAME=hub.oepkgs.net/oedeploy/openeuler/aarch64/mindspore:latest # your image name + +docker run -itd --name=${DOCKER_NAME} --ipc=host --network=host --privileged=true \ + --device=/dev/davinci0 \ + --device=/dev/davinci1 \ + --device=/dev/davinci2 \ + --device=/dev/davinci3 \ + --device=/dev/davinci4 \ + --device=/dev/davinci5 \ + --device=/dev/davinci6 \ + --device=/dev/davinci7 \ + --device=/dev/davinci_manager \ + --device=/dev/devmm_svm \ + --device=/dev/hisi_hdc \ + -v /usr/local/sbin/:/usr/local/sbin/ \ + -v /var/log/npu/slog/:/var/log/npu/slog \ + -v /var/log/npu/profiling/:/var/log/npu/profiling \ + -v /var/log/npu/dump/:/var/log/npu/dump \ + -v /var/log/npu/:/usr/slog \ + -v /etc/hccn.conf:/etc/hccn.conf \ + -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ + -v /usr/local/dcmi:/usr/local/dcmi \ + -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ + -v /etc/ascend_install.info:/etc/ascend_install.info \ + -v /etc/vnpu.cfg:/etc/vnpu.cfg \ + --shm-size="250g" \ + ${IMAGE_NAME} \ + bash +``` + +After successful creation, the container ID will be returned. Verify the container by running: + +```bash +docker ps +``` + +### Entering the Container + +After [creating the container](#creating-a-container), start and enter the container using the predefined `DOCKER_NAME`: + +```bash +docker exec -it $DOCKER_NAME bash +``` + +## Downloading Model Weights + +User can download the model using either [Python Tool](#downloading-with-python-tool) or [git-lfs Tool](#downloading-with-git-lfs-tool). + +### Downloading with Python Tool + +Execute the following Python script to download the [Qwen2.5-7B](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct) weights and files from [Hugging Face](https://huggingface.co/): + +```python +from huggingface_hub import snapshot_download +snapshot_download( + repo_id="Qwen/Qwen2.5-7B-Instruct", + local_dir="/path/to/save/Qwen2.5-7B-Instruct", + local_dir_use_symlinks=False +) +``` + +`local_dir` is the user-specified model save path. Ensure sufficient disk space is available. + +### Downloading with git-lfs Tool + +Run the following command to check if [git-lfs](https://git-lfs.com) is available: + +```bash +git lfs install +``` + +If available, the following output will be displayed: + +```text +Git LFS initialized. +``` + +If unavailable, install [git-lfs](https://git-lfs.com) first. Refer to the [FAQ](../../../faqs/faqs.md) section for [git-lfs installation](../../../faqs/faqs.md#git-lfs-installation) guidance. + +Once confirmed, download the weights by executing the following command: + +```bash +git clone https://huggingface.co/Qwen/Qwen2.5-7B-Instruct +``` + +## Setting Environment Variables + +For [Qwen2.5-7B](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct), the following environment variables configure memory allocation, backend, and model-related YAML files: + +```bash +#set environment variables +export ASCEND_TOTAL_MEMORY_GB=64 # Please use `npu-smi info` to check the memory. +export vLLM_MODEL_BACKEND=MindFormers # use MindFormers as model backend. +export vLLM_MODEL_MEMORY_USE_GB=32 # Memory reserved for model execution. Set according to the model's maximum usage, with the remaining environment used for kvcache allocation +export MINDFORMERS_MODEL_CONFIG=$YAML_PATH # Set the corresponding MindSpore Transformers model's YAML file. +``` + +Here is an explanation of these variables: + +- `ASCEND_TOTAL_MEMORY_GB`: The memory size of each compute card. Query using `npu-smi info`, corresponding to `HBM-Usage(MB)` in the results. +- `vLLM_MODEL_BACKEND`: The model backend. Currently supported models and backends are listed in the [Model Support List](../../../user_guide/supported_models/models_list/models_list.md). +- `vLLM_MODEL_MEMORY_USE_GB`: Memory reserved for model loading. Adjust this if encountering insufficient memory. +- `MINDFORMERS_MODEL_CONFIG`: Model configuration file. User can find the corresponding YAML file in the [MindSpore Transformers repository](https://gitee.com/mindspore/mindformers/tree/dev/research/qwen2_5). For Qwen2.5-7B, the YAML file is [predict_qwen2_5_7b_instruct.yaml](https://gitee.com/mindspore/mindformers/blob/dev/research/qwen2_5/predict_qwen2_5_7b_instruct.yaml). + +User can check memory usage with `npu-smi info` and set the compute card for inference using: + +```bash +export NPU_VISIBE_DEVICES=0 +export ASCEND_RT_VISIBLE_DEVICES=$NPU_VISIBE_DEVICES +``` + +## Offline Inference + +Taking [Qwen2.5-7B](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct) as an example, user can perform offline inference with the following Python code: + +```python +import vllm_mindspore # Add this line on the top of script. +from vllm import LLM, SamplingParams + +# Sample prompts. +prompts = [ + "I am", + "Today is", + "Llama is" +] + +# Create a sampling params object. +sampling_params = SamplingParams(temperature=0.0, top_p=0.95) + +# Create a LLM +llm = LLM(model="Qwen/Qwen2.5-7B-Instruct") +# Generate texts from the prompts. +outputs = llm.generate(prompts, sampling_params) +# Print the outputs. +for output in outputs: + prompt = output.prompt + generated_text = output.outputs[0].text + print(f"Prompt: {prompt!r}. Generated text: {generated_text!r}") +``` + +If offline inference runs successfully, similar results will be obtained: + +```text +Prompt: 'I am'. Generated text: ' trying to create a virtual environment for my Python project, but I am encountering some' +Prompt: 'Today is'. Generated text: ' the 100th day of school. To celebrate, the teacher has' +Prompt: 'Llama is'. Generated text: ' a 100% natural, biodegradable, and compostable alternative' +``` + +## Online Inference + +vLLM MindSpore supports online serving deployment with the OpenAI API protocol. The following section would introduce how to [starting the service](#starting-the-service) and [send requests](#sending-requests) to obtain inference results, using [Qwen2.5-7B](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct) as an example. + +### Starting the Service + +Use the model `Qwen/Qwen2.5-7B-Instruct` and start the vLLM service with the following command: + +```bash +python3 -m vllm_mindspore.entrypoints vllm.entrypoints.openai.api_server --model "Qwen/Qwen2.5-7B-Instruct" +``` + +If the service starts successfully, similar output will be obtained: + +```text +INFO: Started server process [6363] +INFO: Waiting for application startup. +INFO: Application startup complete. +``` + +Additionally, performance metrics will be logged, such as: + +```text +Engine 000: Avg prompt throughput: 0.0 tokens/s, Avg generation throughput: 0.0 tokens/s, Running: 0 reqs, Waiting: 0 reqs, GPU KV cache usage: 0.0%, Prefix cache hit rate: 0.0% +``` + +#### Sending Requests + +Use the following command to send a request, where `prompt` is the model input: + +```bash +curl http://localhost:8000/v1/completions -H "Content-Type: application/json" -d '{"model": "Qwen/Qwen2.5-7B-Instruct", "prompt": "I am", "max_tokens": 15, "temperature": 0}' +``` + +If the request is processed successfully, the following inference result will be returned: + +```text +{ + "id":"cmpl-5e6e314861c24ba79fea151d86c1b9a6","object":"text_completion", + "create":1747398389, + "model":"Qwen2.5-7B-Instruct", + "choices":[ + { + "index":0, + "trying to create a virtual environment for my Python project, but I am encountering some", + "logprobs":null, + "finish_reason":"length", + "stop_reason":null, + "prompt_logprobs":null + } + ], + "usage":{ + "prompt_tokens":2, + "total_tokens":17, + "completion_tokens":15, + "prompt_tokens_details":null + } +} +``` diff --git a/docs/vllm_mindspore/docs/source_en/index.rst b/docs/vllm_mindspore/docs/source_en/index.rst new file mode 100644 index 0000000000..32ed9e953f --- /dev/null +++ b/docs/vllm_mindspore/docs/source_en/index.rst @@ -0,0 +1,143 @@ +vLLM MindSpore +========================================= + +Overview +----------------------------------------------------- +vLLM MindSpore (`vllm-mindspore`) is a plugin brewed by the `MindSpore community `_ , which aims to integrate MindSpore LLM inference capabilities into `vLLM `_ . With vLLM MindSpore, technical strengths of Mindspore and vLLM will be organically combined to provide a full-stack open-source, high-performance, easy-to-use LLM inference solution. + +vLLM, an opensource and community-driven project initiated by Sky Computing Lab, UC Berkeley, has been widely used in academic research and industry applications. On the basis of Continuous Batching scheduling mechanism and PagedAttention Key-Value cache management, vLLM provides a rich set of inference service features, including speculative inference, Prefix Caching, Multi-LoRA, etc. vLLM also supports a wide range of open-source large models, including Transformer-based models (e.g., LLaMa), Mixture-of-Expert models (e.g., DeepSeek), Embedding models (e.g., E5-Mistral), and multi-modal models (e.g., LLaVA). Because vLLM chooses to use PyTorch to build large models and manage storage resources, it cannot deploy large models built upon MindSpore. + +vLLM MindSpore plugin aims to integrate Mindspore large models into vLLM and to enable deploying MindSpore-based LLM inference services. It follows the following design principles: + +- Interface compatibility: support the native APIs and service deployment interfaces of vLLM to avoid adding new configuration files or interfaces, reducing user learning costs and ensuring ease of use. +- Minimal invasive modifications: minimize invasive modifications to the vLLM code to ensure system maintainability and evolvability. +- Component decoupling: minimize and standardize the coupling between MindSpore large model components and vLLM service components to facilitate the integration of various MindSpore large model suites. + +On the basis of the above design principles, vLLM MindSpore adopts the system architecture shown in the figure below, and implements the docking between vLLM and Mindspore in categories of components: + +- Service components: vLLM MindSpore maps PyTorch API calls in service components including LLMEngine and Scheduler to MindSpore capabilities, inheriting support for service functions like Continuous Batching and PagedAttention. +- Model components: vLLM MindSpore registers or replaces model components including models, network layers, and custom operators, and integrates MindSpore Transformers, MindSpore One, and other MindSpore large model suites, as well as custom large models, into vLLM. + +.. raw:: html + + + + + +
+ +
+ +vLLM MindSpore uses the plugin mechanism recommended by the vLLM community to realize capability registration. In the future, we expect to promote vLLM community to support integration of inference capabilities of third-party AI frameworks, including PaddlePaddle and JAX by following principles described in `[RPC] Multi-framework support for vllm `_ . + +Code: + +Prerequisites +----------------------------------------------------- + +- Hardware:Atlas 800I A2 Inference series, or Atlas 800T A2 Training series, with necessary drivers installed and access to the Internet +- Operating System: openEuler or Ubuntu Linux +- Software: + + * Python >= 3.9, < 3.12 + * CANN >= 8.0.0.beta1 + * MindSpore (matched with the vllm-mindspore version) + * vLLM (matched with the vllm-mindspore version) + +Getting Started +----------------------------------------------------- +Please refer to `Quick Start <./getting_started/quick_start/quick_start.html>`_ and `Installation <./getting_started/installation/installation.html>`_ for more details. + +Contributing +----------------------------------------------------- +Please read `CONTRIBUTING <./developer_guide/contributing.html>`_ for details on setting up development environments, testing functions, and submitting PR. + +We welcome and value any form of contribution and cooperation. Please use `Issue `_ to inform us of any bugs you encounter, or to submit your feature requests, improvement suggestions, and technical solutions. + +Branch +----------------------------------------------------- +The vllm-mindspore repository contains the main branch, development branch, and version branches: + +- **main**: the main branch, compatible with Mindspore master branch and vLLM v0.7.3 version, is continuously monitored for quality through Ascend-MindSpore CI. +- **develop**: the development branch for adapting vLLM features, which is forked from the main branch when a new vLLM version is released. Once the adapted features is stable, it will be merged into the main branch. The current development branch is adapting vLLM v0.8.3 version. +- **rX.Y.Z**: version branches used for archiving version release, which is forked from the main branch after the adaptation of a certain vLLM version is completed. + +The following are the version branches: + +.. list-table:: + :header-rows: 1 + + * - Branch + - Status + - Notes + * - master + - Maintained + - Compatible with vLLM v0.7.3, and CI commitment for MindSpore master branch + * - develop + - Maintained + - Compatible with vLLM v0.8.3 + * - r0.1 + - Unmaintained + - Only doc fixed is allowed + * - r0.2 + - Maintained + - Compatible with vLLM v0.7.3, and CI commitment for MindSpore 2.6.0 + +SIG +----------------------------------------------------- +- Welcome to join vLLM MindSpore SIG to participate in the co-construction of open-source projects and industrial cooperation: https://www.mindspore.cn/community/SIG +- SIG meetings, every other Friday or Saturday evening, 20:00 - 21:00 (UTC+8, `Convert to your timezone `_ ) + +License +----------------------------------------------------- +Apache License 2.0, as found in the `LICENSE `_ file. + + +.. toctree:: + :glob: + :maxdepth: 2 + :caption: Quick Start + :hidden: + + getting_started/quick_start/quick_start + getting_started/installation/installation + getting_started/tutorials/qwen2.5_7b_singleNPU/qwen2.5_7b_singleNPU + getting_started/tutorials/qwen2.5_32b_multiNPU/qwen2.5_32b_multiNPU + +.. toctree:: + :glob: + :maxdepth: 1 + :caption: User Guide + :hidden: + + user_guide/supported_models/models_list/models_list + user_guide/supported_features/features_list/features_list + user_guide/supported_features/operations/npu_ops + user_guide/supported_features/quantization/quantization + user_guide/supported_features/profiling/profiling + user_guide/supported_features/benchmark/benchmark + user_guide/environment_variables/environment_variables + +.. toctree:: + :glob: + :maxdepth: 1 + :caption: Developer Guide + :hidden: + + developer_guide/contributing + +.. toctree:: + :glob: + :maxdepth: 1 + :caption: FAQ + :hidden: + + faqs/faqs + +.. toctree:: + :glob: + :maxdepth: 1 + :caption: RELEASE NOTES + :hidden: + + RELEASE \ No newline at end of file diff --git a/docs/vllm_mindspore/docs/source_en/release_notes/release_notes.md b/docs/vllm_mindspore/docs/source_en/release_notes/release_notes.md new file mode 100644 index 0000000000..e8dc13f686 --- /dev/null +++ b/docs/vllm_mindspore/docs/source_en/release_notes/release_notes.md @@ -0,0 +1,23 @@ +# Release Notes + +[![View Source](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/master/docs/vllm_mindspore/docs/source_en/release_notes/release_notes.md) + +## vLLM MindSpore 0.3.0 Release Notes + +The following are the key new features and models supported in the vLLM MindSpore plugin version 0.3.0. + +### New Features + +- 0.8.3 V1 Architecture Basic Features, including chunked prefill and automatic prefix caching; +- V0 Multi-step Scheduling; +- V0 Chunked Prefill; +- V0 Automatic Prefix Caching; +- V0 DeepSeek MTP (Multi-Task Processing); +- GPTQ Quantization; +- SmoothQuant Quantization. + +### New Models + +- DeepSeek-V3/R1 +- Qwen2.5-0.5B/1.5/7B/14B/32B/72B +- Qwen3-0.6B/1.7B/4B/8B/14B/32B diff --git a/docs/vllm_mindspore/docs/source_en/user_guide/environment_variables/environment_variables.md b/docs/vllm_mindspore/docs/source_en/user_guide/environment_variables/environment_variables.md new file mode 100644 index 0000000000..99d210e577 --- /dev/null +++ b/docs/vllm_mindspore/docs/source_en/user_guide/environment_variables/environment_variables.md @@ -0,0 +1,20 @@ +# Environment Variable List + +[![View Source](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/master/docs/vllm_mindspore/docs/source_en/user_guide/environment_variables/environment_variables.md) + +| Environment Variable | Required for Basic Scenarios | Function | +|----------------------|-----------------------------|----------| +| `export vLLM_MODEL_BACKEND=MINDFORMER_MODELS` | Running MindSpore Transformers models | Distinguishes between MindSpore Transformers and vLLM MindSpore native models (default: native models) | +| `export PYTHONPATH=/xxx/mindformers-dev/:$PYTHONPATH` | Running models in MindSpore Transformers Research directory | MindSpore Transformers must be installed from source, as research directory code is not packaged into whl files | +| `export MINDFORMERS_MODEL_CONFIG=/xxx.yaml` | Running MindSpore Transformers models | Configuration file for MindSpore Transformers models | +| `export MS_JIT_MODULES="vllm_mindspore,research"` | Greater than v0.7.3 version | Specifies modules require JIT static compilation in static graph mode; corresponds to top-level module names in imports | +| `export GLOO_SOCKET_IFNAME=enp189s0f0` | Ray multi-machine | Used for inter-server communication in Ray multi-machine scenarios | +| `export TP_SOCKET_IFNAME=enp189s0f0` | Ray multi-machine | Required for RPC in Ray multi-machine scenarios | +| `export HCCL_OP_EXPANSION_MODE=AIV` | Multi-machine | Multi-machine optimization configuring communication algorithm orchestration for acceleration | +| `export HCCL_EXEC_TIMEOUT=7200` | Multi-machine | Multi-machine optimization controlling device synchronization timeout (seconds, default: 1836) | +| `export RUN_MODE="predict"` | Basic inference workflow (system default) | Configures network execution mode (predict mode enables optimizations) | +| `export DEVICE_NUM_PER_NODE=16` | Multi-machine checkpoint splitting | Required for automatic weight splitting functionality (default: 8 NPUs/server) | +| `export vLLM_USE_NPU_ADV_STEP_FLASH_OP="on"` | MSS (Multi-step scheduler) custom operators | Toggle for custom operators in MSS functionality | +| `export RAY_EXPERIMENTAL_NOSET_ASCEND_RT_VISIBLE_DEVICES=1` | Ray multi-machine | Enables Ray dependency in vLLM MindSpore | +| `export MS_JIT=0` | Quantization scenarios (post v0.7.3) | 0: Disables JIT compilation, executing network scripts in dynamic graph (PyNative) mode | +| `export FORCE_EAGER="true"` | Quantization scenarios (post v0.7.3) | | diff --git a/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/benchmark/benchmark.md b/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/benchmark/benchmark.md new file mode 100644 index 0000000000..d7eff67b57 --- /dev/null +++ b/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/benchmark/benchmark.md @@ -0,0 +1,118 @@ +# Benchmark + +[![View Source](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/master/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/benchmark/benchmark.md) + +The benchmark tool of vLLM MindSpore is inherited from vLLM. You can refer to the [vLLM BenchMark](https://github.com/vllm-project/vllm/blob/main/benchmarks/README.md) documentation for more details. This document introduces [Online Benchmark](#online-performance-testing) and [Offline Benchmark](#offline-performance-testing). Users can follow the steps to conduct performance tests. + +## Online Benchmark + +For single-GPU inference, we take [Qwen2.5-7B](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct) as an example. You can prepare the environment by following the guide [NPU Single-GPU Inference (Qwen2.5-7B)](../../../getting_started/tutorials/qwen2.5_7b_singleNPU/qwen2.5_7b_singleNPU.md#online-inference), then start the online service with the following command: + +```bash +vllm-mindspore serve Qwen/Qwen2.5-7B-Instruct --device auto --disable-log-requests +``` + +For multi-GPU inference, we take [Qwen2.5-32B](https://huggingface.co/Qwen/Qwen2.5-32B-Instruct) as an example. You can prepare the environment by following the guide [NPU Single-Node Multi-GPU Inference (Qwen2.5-32B)](../../../getting_started/tutorials/qwen2.5_32b_multiNPU/qwen2.5_32b_multiNPU.md#online-inference), then start the online service with the following command: + +```bash +export TENSOR_PARALLEL_SIZE=4 +export MAX_MODEL_LEN=1024 +python3 -m vllm_mindspore.entrypoints vllm.entrypoints.openai.api_server --model "Qwen/Qwen2.5-32B-Instruct" --trust_remote_code --tensor-parallel-size $TENSOR_PARALLEL_SIZE --max-model-len $MAX_MODEL_LEN +``` + +If the service is successfully started, the following inference result will be returned: + +```text +INFO: Started server process [21349] +INFO: Waiting for application startup. +INFO: Application startup complete. +``` + +Clone the vLLM repository and import the vLLM MindSpore plugin to reuse the benchmark tools: + +```bash +git clone https://github.com/vllm-project/vllm.git +cd vllm +sed -i '1i import vllm_mindspore' benchmarks/benchmark_serving.py +``` + +Execute the test script: + +```bash +# download dataset +# wget https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json + +# single-card, take Qwen2.5-7B as example: +python3 benchmarks/benchmark_serving.py \ + --backend openai-chat \ + --endpoint /v1/chat/completions \ + --model Qwen/Qwen2.5-7B-Instruct \ + --dataset-name sharegpt \ + --dataset-path /ShareGPT_V3_unfiltered_cleaned_split.json \ + --num-prompts 10 + +# multi-card, take Qwen2.5-32B as example: +python3 benchmarks/benchmark_serving.py \ + --backend openai-chat \ + --endpoint /v1/chat/completions \ + --model Qwen/Qwen2.5-32B-Instruct \ + --dataset-name sharegpt \ + --dataset-path /ShareGPT_V3_unfiltered_cleaned_split.json \ + --num-prompts 10 +``` + +If the test runs successfully, the following results will be returned: + +```text +============ Serving Benchmark Result ============ +Successful requests: .... +Benchmark duration (s): .... +Total input tokens: .... +Total generated tokens: .... +Request throughput (req/s): .... +Output token throughput (tok/s): .... +Total Token throughput (tok/s): .... +---------------Time to First Token---------------- +Mean TTFT (ms): .... +Median TTFT (ms): .... +P99 TTFT (ms): .... +-----Time per Output Token (excl. 1st token)------ +Mean TPOT (ms): .... +Median TPOT (ms): .... +P99 TPOT (ms): .... +---------------Inter-token Latency---------------- +Mean ITL (ms): .... +Median ITL (ms): .... +P99 ITL (ms): .... +================================================== +``` + +## Offline Benchmark + +For offline performance benchmark, take [Qwen2.5-7B](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct) as an example. Prepare the environment by following the guide [NPU Single-GPU Inference (Qwen2.5-7B)](../../../getting_started/tutorials/qwen2.5_7b_singleNPU/qwen2.5_7b_singleNPU.md#offline-inference). + +Clone the vLLM repository and import the vLLM-MindSpore plugin to reuse the benchmark tools: + +```bash +git clone https://github.com/vllm-project/vllm.git +cd vllm +sed -i '1i import vllm_mindspore' benchmarks/benchmark_throughput.py +``` + +Run the test script with the following command: + +```bash +python3 benchmarks/benchmark_throughput.py \ + --model Qwen/Qwen2.5-7B-Instruct \ + --dataset-name sonnet \ + --dataset-path benchmarks/sonnet.txt \ + --num-prompts 10 +``` + +If the test runs successfully, the following results will be returned: + +```text +Throughput: ... requests/s, ... total tokens/s, ... output tokens/s +Total num prompt tokens: ... +Total num output tokens: ... +``` diff --git a/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/features_list/features_list.md b/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/features_list/features_list.md new file mode 100644 index 0000000000..b75f8f133f --- /dev/null +++ b/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/features_list/features_list.md @@ -0,0 +1,36 @@ +# Supported Features List + +[![View Source](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/master/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/features_list/features_list.md) + +The features supported by vLLM MindSpore are consistent with the community version of vLLM. For feature descriptions and usage, please refer to the [vLLM Official Documentation](https://docs.vllm.ai/en/latest/). + +The following is the features supported in vLLM MindSpore. + +| **Features** | **vLLM V0** | **vLLM V1** | +|-----------------------------------|--------------------|--------------------| +| Chunked Prefill | √ | √ | +| Automatic Prefix Caching | √ | √ | +| Multi step scheduler | √ | × | +| DeepSeek MTP | √ | WIP | +| Async output | √ | √ | +| Quantization | √ | √ | +| LoRA | WIP | WIP | +| Tensor Parallel | √ | √ | +| Pipeline Parallel | WIP | WIP | +| Expert Parallel | × | √ | +| Data Parallel | × | √ | +| Prefill Decode Disaggregation | × | √ | +| Multi Modality | WIP | WIP | +| Prompt adapter | × | WIP | +| Speculative decoding | × | WIP | +| LogProbs | × | WIP | +| Prompt logProbs | × | WIP | +| Best of | × | × | +| Beam search | × | WIP | +| Guided Decoding | × | WIP | +| Pooling | × | × | +| Enc-dec | × | × | + +- √:Feature aligned with the community version of vLLM. +- ×:Currently unsupported; alternative solutions are recommended. +- WIP:Under development or planned for future implementation. diff --git a/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/operations/npu_ops.md b/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/operations/npu_ops.md new file mode 100644 index 0000000000..4e8392a75e --- /dev/null +++ b/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/operations/npu_ops.md @@ -0,0 +1,105 @@ +# Custom Operator Integration + +[![View Source](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/master/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/operations/npu_ops.md) + +This document would introduce how to integrate a new custom operator into the vLLM MindSpore project, with the **`adv_step_flash`** operator as an example. The following sections would focus on the integration process, and user can refer to operator implementation introduction in official MindSpore tutorial: [Dynamic Graph Custom Operator Integration](https://www.mindspore.cn/tutorials/en/master/custom_program/operation/op_customopbuilder.html). + +For development, additional features can be extended based on project requirements. Implementation details can be referenced from [MindSpore Custom Operator Implementation](https://www.mindspore.cn/tutorials/en/master/custom_program/operation/op_customopbuilder.html). + +## File Structure + +The directory `vllm_mindspore/ops` contains and declaration and implementation of operations: + +```text +vllm_mindspore/ops/ +├── ascendc/ +│ ├── adv_step_flash.h // AscendC AdvStepFlash operator declaration +│ ├── adv_step_flash.c // AscendC AdvStepFlash operator implementation +│ └── ... +├── module/ +│ ├── module.h // Common module registration header +│ ├── module.cpp // Common module registration implementation +│ ├── adv_step_flash.cpp // Integration layer code (Python interface registration) +│ └── ... +``` + +- **`ops/ascendc/`**: Contains AscendC custom operator implementation code. +- **`ops/module/`**: Contains operator integration layer code, including common module registration (`module.h`, `module.cpp`) and operator-specific integration (e.g., `adv_step_flash.cpp`). + +## Integration Process + +To integrate a custom operator, user need to create [Operator Interface Declaration](#operator-interface-declaration), [Operator Implementation](#operator-implementation) and [Operator Integration](#operator-integration) in the directory `ops/ascendc/`. And do [Operator Compilation and Testing](#operator-compilation-and-testing) after declaration and implementation. + +### Operator Interface Declaration + +Create a header file (e.g., `my_custom_op.h`) in `ops/ascendc/` to declare the operator function and related interfaces: + +```cpp +#ifndef VLLM_MINDSPORE_OPS_ASCENDC_MY_CUSTOM_OP_H +#define VLLM_MINDSPORE_OPS_ASCENDC_MY_CUSTOM_OP_H + +extern void MyCustomOpKernelEntry(uint32_t blockDims, void *l2ctrl, void *aclStream, + uint8_t *input, uint8_t *output, int32_t param1, int32_t param2); + +#endif // VLLM_MINDSPORE_OPS_ASCENDC_MY_CUSTOM_OP_H +``` + +### Operator Implementation + +Create an implementation file (e.g., `my_custom_op.c`) in `ops/ascendc/` for the core logic: + +```cpp +#include "my_custom_op.h" +#include "kernel_operator.h" + +extern "C" __global__ __aicore__ void my_custom_op_impl(GM_ADDR input, GM_ADDR output, + int32_t param1, int32_t param2) { + // AscendC operation implement +} + +#ifndef __CCE_KT_TEST__ +void MyCustomOpKernelEntry(uint32_t blockDims, void *l2ctrl, void *aclStream, + uint8_t *input, uint8_t *output, int32_t param1, int32_t param2) { + my_custom_op_impl<<>>(input, output, param1, param2); +} +#endif +``` + +### Operator Integration + +Create an integration file (e.g., `my_custom_op.cpp`) in `module/`. User can refer to `adv_step_flash.cpp` for more details about the integration: + +```cpp +#include "ms_extension.h" +#include "ascendc/my_custom_op.h" +#include "module/module.h" + +void MyCustomOpPythonInterface(int32_t param1, int32_t param2, + BaseTensorPtr input, BaseTensorPtr output) { + ... +} + +MS_EXTENSION_MODULE(my_custom_op) { + m.def("my_custom_op", &MyCustomOpPythonInterface, "My custom operator", + pybind11::arg("param1"), pybind11::arg("param2"), + pybind11::arg("input"), pybind11::arg("output")); +} +``` + +### Operator Compilation and Testing + +1. **Code Integration**: Merge the code into the vLLM MindSpore project. +2. **Project Compilation**: Build and install the whl package containing the custom operator. +3. **Operator Testing**: Invoke the operator in Python: + + ```python + from vllm_mindspore import npu_ops + import numpy as np + import mindspore as ms + + input = ms.Tensor(np.array([1, 2, 3], dtype=np.int32)) + output = ms.Tensor(np.zeros_like(input)) + + npu_ops.my_custom_op(10, 20, input, output) + print("Output:", output) + ``` diff --git a/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/profiling/op_detail.png b/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/profiling/op_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..cab7a5dcc9b4146d6375efba9a947c73c2f162b9 GIT binary patch literal 26592 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 z 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%0DIXtGG6crY&F9Tf)|Sl5`K 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
GBaTe2Lv^9VnMgsTIj?L#pY2KL+cHj=vy73jc`D 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 KM!DL($o~KX#WQ69 literal 0 HcmV?d00001 diff --git a/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/profiling/trace_total.png b/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/profiling/trace_total.png new file mode 100644 index 0000000000000000000000000000000000000000..8e260cfd42ba6dee53f825282cfdd7dff8c3f9b9 GIT binary patch literal 50302 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%0AGB#AO;DHwkBdcwI^|1U)4*lm| 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 literal 0 HcmV?d00001 diff --git a/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/quantization/quantization.md b/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/quantization/quantization.md new file mode 100644 index 0000000000..9663e0f882 --- /dev/null +++ b/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/quantization/quantization.md @@ -0,0 +1,131 @@ +# Quantization Methods + +[![View Source](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/master/docs/vllm_mindspore/docs/source_en/user_guide/supported_features/quantization/quantization.md) + +This document introduces model quantization and quantized inference methods. Quantization reduces inference resource with minor cost of precision, while improving inference performance to enable deployment on more devices. With the large scale of LLMs, post-training quantization has become the mainstream approach for model quantization. For details, refer to [Post-Training Quantization Introduction](https://gitee.com/mindspore/golden-stick/blob/master/mindspore_gs/ptq/README_CN.md). + +In this document, the [Creating Quantized Models](#creating-quantized-models) section introduces post-training quantization steps using [Qwen3-8B](https://huggingface.co/Qwen/Qwen3-8B) as an example. A the [Quantized Model Inference](#quantized-model-inference) section explains how to perform inference with quantized models. + +## Creating Quantized Models + +We use the [Qwen3-8B](https://huggingface.co/Qwen/Qwen3-8B) network as an example to introduce A8W8 quantization with the SmoothQuant algorithm. + +### Quantizing Networks with MindSpore Golden Stick + +We employ [MindSpore Golden Stick's PTQ algorithm](https://gitee.com/mindspore/golden-stick/blob/master/mindspore_gs/ptq/ptq/README_CN.md) for SmoothQuant quantization of Qwen3-8B. For detailed methods, refer to [Qwen3-SmoothQuant Quantization Example](todo). + +#### Downloading Qwen3-8B Weights + +Users can download the weights using huggingface-cli: + +```bash +huggingface-cli download --resume-download Qwen/Qwen3-8B --local-dir Qwen3-8B-bf16 +``` + +Alternatively, use [other download methods](../../../getting_started/quick_start/quick_start.md#download-model). + +#### Loading the Network with MindSpore Transformers + +Load the network using [MindSpore Transformers](https://gitee.com/mindspore/mindformers) with the following script: + +```python +from mindformers import AutoModel +from mindformers import AutoTokenizer + +network = AutoModel.from_pretrained("Qwen3-8B-bf16") +tokenizer = AutoTokenizer.from_pretrained("Qwen3-8B-bf16") +``` + +#### Preparing the CEval Dataset + +Download the CEval dataset to the `ceval` directory with the following structure: + +```bash +ceval + ├── dev + ├── test + └── val +``` + +Create a dataset handle using MindSpore: + +```python +from mindspore import GeneratorDataset +ds = GeneratorDataset(source="ceval", column_names=["subjects", "input_ids", "labels"]) +``` + +#### Performing Post-Training Quantization with Golden Stick + +Use the following Python script for post-training quantization: + +```python +from mindspore import dtype as msdtype +from mindspore_gs.ptq import PTQ +from mindspore_gs.common import BackendTarget +from mindspore_gs.ptq import PTQConfig, PTQMode, OutliersSuppressionType, QuantGranularity, PrecisionRecovery + +cfg = PTQConfig(mode=quant_mode, backend=BackendTarget.ASCEND, weight_quant_dtype=msdtype.int8, + act_quant_dtype=msdtype.int8, outliers_suppression=OutliersSuppressionType.SMOOTH, + opname_blacklist=['lm_head']) +w2_config = PTQConfig(mode=quant_mode, backend=BackendTarget.ASCEND, weight_quant_dtype=msdtype.int8, + act_quant_dtype=msdtype.int8, + outliers_suppression=OutliersSuppressionType.NONE, + precision_recovery=PrecisionRecovery.NONE, + act_quant_granularity=QuantGranularity.PER_TOKEN, + weight_quant_granularity=QuantGranularity.PER_CHANNEL) +layer_policies = OrderedDict({r'.*\.w2.*': w2_config}) +ptq = PTQ(config=cfg, layer_policies=layer_policies) +from research.qwen3.qwen3_transformers import Qwen3ParallelTransformerLayer +ptq.decoder_layer_types.append(Qwen3ParallelTransformerLayer) +ptq.apply(network, ds) +ptq.convert(network) +ms.save_checkpoint(network.parameters_dict(), "Qwen3-8B-A8W8", format="safetensors", + choice_func=lambda x: "key_cache" not in x and "value_cache" not in x and "float_weight" not in x) +``` + +Before calibration, add the MindSpore Transformers root directory to the `PYTHONPATH` environment variable, and check Qwen3-related classes have been successfully imported. + +### Downloading Quantized Weights + +We have uploaded the quantized Qwen3-8B to [ModelArts Community](https://modelers.cn): [MindSpore-Lab/Qwen3-8B-A8W8](https://modelers.cn/models/MindSpore-Lab/Qwen3-8B-A8W8). Refer to the [ModelArts Community documentation](https://modelers.cn/docs/zh/openmind-hub-client/0.9/basic_tutorial/download.html) to download the weights locally. + +## Quantized Model Inference + +After obtaining the Qwen3-8B SmoothQuant weights, ensure they are stored in the relative path `Qwen3-8B-A8W8`. + +### Offline Inference + +Refer to the [Installation Guide](../../../getting_started/installation/installation.md) to set up the vLLM MindSpore environment. Once ready, use the following Python code for offline inference: + +```python +import vllm_mindspore # Add this line at the top of the script +from vllm import LLM, SamplingParams + +# Sample prompts +prompts = [ + "I am", + "Today is", + "Llama is" +] + +# Create sampling parameters +sampling_params = SamplingParams(temperature=0.0, top_p=0.95) + +# Initialize LLM +llm = LLM(model="Qwen3-8B-A8W8", quantization='SmoothQuant') +# Generate text +outputs = llm.generate(prompts, sampling_params) +# Print results +for output in outputs: + prompt = output.prompt + generated_text = output.outputs[0].text + print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}") +``` + +Successful execution will yield inference results like: + +```text +Prompt: 'I am', Generated text: ' trying to create a virtual environment for my Python project, but I am encountering some' +Prompt: 'Today is', Generated text: ' the 100th day of school. To celebrate, the teacher has' +Prompt: 'Llama is', Generated text: ' a 100% natural, biodegradable, and compostable alternative' +``` diff --git a/docs/vllm_mindspore/docs/source_en/user_guide/supported_models/models_list/models_list.md b/docs/vllm_mindspore/docs/source_en/user_guide/supported_models/models_list/models_list.md new file mode 100644 index 0000000000..097ed295cc --- /dev/null +++ b/docs/vllm_mindspore/docs/source_en/user_guide/supported_models/models_list/models_list.md @@ -0,0 +1,21 @@ +# Supported Model List + +[![View Source](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/master/docs/vllm_mindspore/docs/source_en/user_guide/supported_models/models_list/models_list.md) + +| Model | Supported | Download Link | Backend | +|-------| --------- | ------------- | ------- | +| Qwen2.5 | √ | [Qwen2.5-7B](https://modelers.cn/models/AI-Research/Qwen2.5-7B), [Qwen2.5-32B](https://modelers.cn/models/AI-Research/Qwen2.5-32B), etc. | MINDFORMER_MODELS | +| Qwen3 | √ | [Qwen3-8B](https://modelers.cn/models/MindSpore-Lab/Qwen3-8B), [Qwen3-32B](https://modelers.cn/models/MindSpore-Lab/Qwen3-32B), etc. | MINDFORMER_MODELS | +| DeepSeek V3 | √ | [DeepSeek-V3](https://modelers.cn/models/MindSpore-Lab/DeepSeek-V3), etc. | MINDFORMER_MODELS | +| DeepSeek R1 | √ | [DeepSeek-R1](https://modelers.cn/models/MindSpore-Lab/DeepSeek-R1), [Deepseek-R1-W8A8](https://modelers.cn/models/MindSpore-Lab/DeepSeek-r1-w8a8), etc. | MINDFORMER_MODELS | + +The "Backend" refers to the source of the model, which can be either from MindSpore Transformers or vLLM MindSpore native models. It is specified using the environment variable `vLLM_MODEL_BACKEND`: + +- If the model source is MindSpore Transformers, the value is `MINDFORMER_MODELS`; +- If the model source is vLLM MindSpore, the value is `NATIVE_MODELS`. + +By default, the backend is set to `NATIVE_MODELS`. To change the model backend, use the following command: + +```bash +export vLLM_MODEL_BACKEND=MINDFORMER_MODELS +``` diff --git a/docs/vllm_mindspore/docs/source_zh_cn/faqs/faqs.md b/docs/vllm_mindspore/docs/source_zh_cn/faqs/faqs.md index deab07166d..7815a11f1a 100644 --- a/docs/vllm_mindspore/docs/source_zh_cn/faqs/faqs.md +++ b/docs/vllm_mindspore/docs/source_zh_cn/faqs/faqs.md @@ -58,6 +58,7 @@ RuntimeError: Call aclnnNonzeroV2 failed, detail:E39999: Inner Error ``` +- 解决思路: 请检查CANN与MindSpore的配套关系是否正确。 ### 执行Qwen3时,报vLLM相关的`resolve_transformers_fallback`导入错误 @@ -68,6 +69,7 @@ ImportError: cannot import name 'resolve_transformers_fallback' from 'vllm.model_executor.model_loader.utils' ``` +- 解决思路: 请尝试将`vllm`切换为`v0.7.3`版本。 ### `import vllm_mindspore`时找不到`torch` @@ -78,6 +80,7 @@ importlib.metadata.PackageNotFoundError: No package metadata was found for torch ``` +- 解决思路: 请执行以下命令,下载torch相关组件: ```bash diff --git a/docs/vllm_mindspore/docs/source_zh_cn/getting_started/installation/installation.md b/docs/vllm_mindspore/docs/source_zh_cn/getting_started/installation/installation.md index f76ce96408..90ee43d264 100644 --- a/docs/vllm_mindspore/docs/source_zh_cn/getting_started/installation/installation.md +++ b/docs/vllm_mindspore/docs/source_zh_cn/getting_started/installation/installation.md @@ -106,7 +106,7 @@ pip install vllm_mindspore ### 源码安装 -- 安装CANN +- **CANN安装** CANN安装方法与环境配套,请参考[CANN社区版软件安装](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/82RC1alpha002/softwareinst/instg/instg_0001.html?Mode=PmIns&OS=openEuler&Software=cannToolKit),若用户在安装CANN过程中遇到问题,可参考[昇腾常见问题](https://www.hiascend.com/document/detail/zh/AscendFAQ/ProduTech/CANNFAQ/cannfaq_000.html)进行解决。 CANN默认安装路径为`/usr/local/Ascend`。用户在安装CANN完毕后,使用如下命令,为CANN配置环境变量: @@ -117,14 +117,14 @@ pip install vllm_mindspore export ASCEND_CUSTOM_PATH=${LOCAL_ASCEND}/ascend-toolkit ``` -- 安装vLLM的前置依赖 +- **vLLM前置依赖安装** vLLM的环境配置与安装方法,请参考[vLLM安装教程](https://docs.vllm.ai/en/v0.8.3/getting_started/installation/cpu.html)。其依赖`gcc/g++ >= 12.3.0`版本,可通过以下命令完成安装: ```bash yum install -y gcc gcc-c++ ``` -- 安装vLLM MindSpore +- **vLLM MindSpore安装** 安装vLLM MindSpore,需要在拉取vLLM MindSpore源码后,执行以下命令,安装依赖包: diff --git a/docs/vllm_mindspore/docs/source_zh_cn/getting_started/quick_start/quick_start.md b/docs/vllm_mindspore/docs/source_zh_cn/getting_started/quick_start/quick_start.md index 60941bdc89..aca28df549 100644 --- a/docs/vllm_mindspore/docs/source_zh_cn/getting_started/quick_start/quick_start.md +++ b/docs/vllm_mindspore/docs/source_zh_cn/getting_started/quick_start/quick_start.md @@ -125,7 +125,7 @@ git clone https://huggingface.co/Qwen/Qwen2.5-7B-Instruct ```bash export ASCEND_TOTAL_MEMORY_GB=64 # Please use `npu-smi info` to check the memory. export vLLM_MODEL_BACKEND=MindFormers # use MindSpore Transformers as model backend. -export vLLM_MODEL_MEMORY_USE_GB=16 # Memory reserved for model execution. Set according to the model's maximum usage, with the remaining environment used for kvcache allocation +export vLLM_MODEL_MEMORY_USE_GB=32 # Memory reserved for model execution. Set according to the model's maximum usage, with the remaining environment used for kvcache allocation export MINDFORMERS_MODEL_CONFIG=$YAML_PATH # Set the corresponding MindSpore Transformers model's YAML file. ``` diff --git a/docs/vllm_mindspore/docs/source_zh_cn/getting_started/tutorials/deepseek_multiNode/deepseek_r1_671b_w8a8_tp16_multi_node.md b/docs/vllm_mindspore/docs/source_zh_cn/getting_started/tutorials/deepseek_multiNode/deepseek_r1_671b_w8a8_tp16_multi_node.md index 22a74c910e..af563414a8 100644 --- a/docs/vllm_mindspore/docs/source_zh_cn/getting_started/tutorials/deepseek_multiNode/deepseek_r1_671b_w8a8_tp16_multi_node.md +++ b/docs/vllm_mindspore/docs/source_zh_cn/getting_started/tutorials/deepseek_multiNode/deepseek_r1_671b_w8a8_tp16_multi_node.md @@ -86,7 +86,7 @@ git clone https://modelers.cn/MindSpore-Lab/DeepSeek-R1-W8A8.git 分别在主从节点配置如下环境变量: -> 注:环境变量必须设置在 Ray 创建集群前,且当环境有变更时,需要通过 `ray stop` 将主从节点集群停止,并重新创建集群,否则环境变量将不生效。 +> 环境变量必须设置在 Ray 创建集群前,且当环境有变更时,需要通过 `ray stop` 将主从节点集群停止,并重新创建集群,否则环境变量将不生效。 ```bash source /usr/local/Ascend/ascend-toolkit/set_env.sh diff --git a/docs/vllm_mindspore/docs/source_zh_cn/index.rst b/docs/vllm_mindspore/docs/source_zh_cn/index.rst index 0045c52e4b..46f7199b4a 100644 --- a/docs/vllm_mindspore/docs/source_zh_cn/index.rst +++ b/docs/vllm_mindspore/docs/source_zh_cn/index.rst @@ -124,7 +124,7 @@ Apache 许可证 2.0,如 `LICENSE