diff --git a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu.mdx b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu.mdx index c4bf6eb58..c78c3998b 100644 --- a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu.mdx +++ b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu.mdx @@ -53,19 +53,29 @@ You can install SGLang using any of the methods below. Please go through `System ### Obtain CANN Image + +Ensure sufficient disk space before pulling images. Each Docker image requires at least **30 GB** of free space. + + You can obtain the dependency of a specified version of CANN through an image. - -CANN images and SGLang images are hosted at different registry addresses. Make sure to pull them from the correct location. - + + ```bash Command -# for Atlas 800I A3 and Ubuntu OS docker pull quay.io/ascend/cann:8.5.0-a3-ubuntu22.04-py3.11 -# for Atlas 800I A2 and Ubuntu OS +``` + + + + +```bash Command docker pull quay.io/ascend/cann:8.5.0-910b-ubuntu22.04-py3.11 ``` + + + ## Preparing the Running Environment ### Method 1: Installing from source with prerequisites @@ -142,14 +152,42 @@ pip install -e python[all_npu] ### Method 2: Using Docker Image #### Obtain Image You can download the SGLang image or build an image based on Dockerfile to obtain the Ascend NPU image. + + +Ensure sufficient disk space before pulling images. Each Docker image requires at least **30 GB** of free space. If you need to download model weights, check the model size at [ModelScope](https://www.modelscope.cn/models) to reserve enough space. + + 1. Download SGLang image + + +We publish both **stable releases** and **daily builds**. Choose a stable release tag (e.g., `v0.5.10-npu.rc1-a3`) if you prefer a validated version, or a daily build tag (e.g., `main-cann8.5.0-a3`) if you need the latest development changes. + + + + + ```bash Command -dockerhub: docker.io/lmsysorg/sglang:$tag -# Main-based tag, change main to specific version like v0.5.6, -# you can get image for specific version -Atlas 800I A3 : {main}-cann8.5.0-a3 -Atlas 800I A2: {main}-cann8.5.0-910b +# Stable release +docker pull quay.io/ascend/sglang:v0.5.10-npu.rc1-a3 + +# Daily build +docker pull quay.io/ascend/sglang:main-cann8.5.0-a3 ``` + + + + +```bash Command +# Stable release +docker pull quay.io/ascend/sglang:v0.5.10-npu.rc1-910b + +# Daily build +docker pull quay.io/ascend/sglang:main-cann8.5.0-910b +``` + + + + 2. Build an image based on Dockerfile ```bash Command # Clone the SGLang repository @@ -165,7 +203,8 @@ docker build --build-arg TARGETARCH= -t -f npu.Dockerfile #### Create Docker __Notice:__ `--privileged` and `--network=host` are required by RDMA, which is typically needed by Ascend NPU clusters. -__Notice:__ The following docker command is based on Atlas 800I A3 machines. If you are using Atlas 800I A2, make sure only `davinci[0-7]` are mapped into container. + + ```bash Command alias drun='docker run -it --rm --privileged --network=host --ipc=host --shm-size=16g \ @@ -185,6 +224,32 @@ drun --env "HF_TOKEN=" \ python3 -m sglang.launch_server --model-path meta-llama/Llama-3.1-8B-Instruct --attention-backend ascend ``` + + + +```bash Command +alias drun='docker run -it --rm --privileged --network=host --ipc=host --shm-size=16g \ + --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/hisi_hdc \ + --volume /usr/local/sbin:/usr/local/sbin --volume /usr/local/Ascend/driver:/usr/local/Ascend/driver \ + --volume /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \ + --volume /etc/ascend_install.info:/etc/ascend_install.info \ + --volume /var/queue_schedule:/var/queue_schedule --volume ~/.cache/:/root/.cache/' + +# Add HF_TOKEN env for download model by SGLang. +drun --env "HF_TOKEN=" \ + \ + python3 -m sglang.launch_server --model-path meta-llama/Llama-3.1-8B-Instruct --attention-backend ascend +``` + + + + + +SGLang will serve on `http://127.0.0.1:30000` by default. You can change the host and port by `--host` and `--port` parameters. + + ## System Settings ### CPU performance power scheme @@ -221,20 +286,51 @@ cat /proc/sys/vm/swappiness # shows 10 ```bash Command # Enabling CPU Affinity export SGLANG_SET_CPU_AFFINITY=1 -python3 -m sglang.launch_server --model-path meta-llama/Llama-3.1-8B-Instruct --attention-backend ascend +python3 -m sglang.launch_server \ + --model-path meta-llama/Llama-3.1-8B-Instruct \ + --attention-backend ascend \ + --host 127.0.0.1 \ + --port 8000 ``` #### PD Disaggregation Scene 1. Launch Prefill Server + + + + ```bash Command # Enabling CPU Affinity export SGLANG_SET_CPU_AFFINITY=1 -# PIP: recommended to config first Prefill Server IP -# PORT: one free port -# all sglang servers need to be config the same PIP and PORT, -export ASCEND_MF_STORE_URL="tcp://PIP:PORT" -# if you are Atlas 800I A2 hardware and use rdma for kv cache transfer, add this parameter +# PREFILL_IP: IP address of the first Prefill Server +# FREE_PORT: any available port +# all SGLang servers need to be configured with the same PREFILL_IP and FREE_PORT +export ASCEND_MF_STORE_URL="tcp://PREFILL_IP:FREE_PORT" +python3 -m sglang.launch_server \ + --model-path meta-llama/Llama-3.1-8B-Instruct \ + --disaggregation-mode prefill \ + --disaggregation-transfer-backend ascend \ + --disaggregation-bootstrap-port 8995 \ + --attention-backend ascend \ + --device npu \ + --base-gpu-id 0 \ + --tp-size 1 \ + --host 127.0.0.1 \ + --port 8000 +``` + + + + +```bash Command +# Enabling CPU Affinity +export SGLANG_SET_CPU_AFFINITY=1 + +# PREFILL_IP: IP address of the first Prefill Server +# FREE_PORT: any available port +# all SGLang servers need to be configured with the same PREFILL_IP and FREE_PORT +export ASCEND_MF_STORE_URL="tcp://PREFILL_IP:FREE_PORT" export ASCEND_MF_TRANSFER_PROTOCOL="device_rdma" python3 -m sglang.launch_server \ --model-path meta-llama/Llama-3.1-8B-Instruct \ @@ -249,13 +345,39 @@ python3 -m sglang.launch_server \ --port 8000 ``` + + + 2. Launch Decode Server + + + + ```bash Command -# PIP: recommended to config first Prefill Server IP -# PORT: one free port -# all sglang servers need to be config the same PIP and PORT, -export ASCEND_MF_STORE_URL="tcp://PIP:PORT" -# if you are Atlas 800I A2 hardware and use rdma for kv cache transfer, add this parameter +# PREFILL_IP: IP address of the first Prefill Server +# FREE_PORT: any available port +# all SGLang servers need to be configured with the same PREFILL_IP and FREE_PORT +export ASCEND_MF_STORE_URL="tcp://PREFILL_IP:FREE_PORT" +python3 -m sglang.launch_server \ + --model-path meta-llama/Llama-3.1-8B-Instruct \ + --disaggregation-mode decode \ + --disaggregation-transfer-backend ascend \ + --attention-backend ascend \ + --device npu \ + --base-gpu-id 1 \ + --tp-size 1 \ + --host 127.0.0.1 \ + --port 8001 +``` + + + + +```bash Command +# PREFILL_IP: IP address of the first Prefill Server +# FREE_PORT: any available port +# all SGLang servers need to be configured with the same PREFILL_IP and FREE_PORT +export ASCEND_MF_STORE_URL="tcp://PREFILL_IP:FREE_PORT" export ASCEND_MF_TRANSFER_PROTOCOL="device_rdma" python3 -m sglang.launch_server \ --model-path meta-llama/Llama-3.1-8B-Instruct \ @@ -269,6 +391,9 @@ python3 -m sglang.launch_server \ --port 8001 ``` + + + 3. Launch Router ```bash Command python3 -m sglang_router.launch_router \ @@ -296,3 +421,78 @@ python3 -m sglang.launch_server \ --enable-multimodal \ --sampling-backend ascend ``` + +## Testing the Service + +Once the server prints `The server is fired up and ready to roll!` in the logs, it is ready to accept requests. + +### Which port to send requests to + +The port you use depends on your deployment mode: + +| Scenario | Where to send requests | +|---|---| +| Non-PD (single server) | The server's `--port` (e.g., `8000` in the examples above) | +| Non-PD (multi-node) | The primary node's (`--node-rank 0`) `--port`; do **not** send requests to worker nodes | +| PD disaggregation | The router's `--port` (e.g., `6688` in the examples above); do **not** send requests directly to prefill or decode servers | + + +SGLang serves on port `30000` by default if `--port` is not specified. The examples in this guide use explicit ports for clarity. + +If you are using PD disaggregation, replace `8000` with your router's port (e.g., `6688`) in the following examples. + + +### Health Check + +```bash Command +curl http://127.0.0.1:8000/health +``` + +A successful response returns HTTP 200 with an empty body. + +### Generate (Native Endpoint) + +```bash Command +curl http://127.0.0.1:8000/generate \ + -H "Content-Type: application/json" \ + -d '{ + "text": "What is the capital of France?", + "sampling_params": {"temperature": 0, "max_new_tokens": 128} + }' +``` + +The expected output should contain "Paris". + +### Chat Completions (OpenAI-Compatible) + +```bash Command +curl http://127.0.0.1:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "meta-llama/Llama-3.1-8B-Instruct", + "messages": [{"role": "user", "content": "What is the capital of France?"}] + }' +``` + +The expected output should contain "Paris". + +### Multimodal Chat Completions + + +The image URL in the example below references an external resource (`raw.githubusercontent.com`). Make sure the server has internet access so the image can be downloaded at inference time. Alternatively, you can use a locally accessible URL or base64-encoded image data. + + +```bash Command +curl http://127.0.0.1:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "Qwen3-VL-30B-A3B-Instruct", + "messages": [{ + "role": "user", + "content": [ + {"type": "image_url", "image_url": {"url": "https://raw.githubusercontent.com/sgl-project/sglang/main/examples/assets/example_image.png"}}, + {"type": "text", "text": "Describe this image."} + ] + }] + }' +``` diff --git a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_accuracy_evaluation.mdx b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_accuracy_evaluation.mdx index 38ae57679..7c5292bfd 100644 --- a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_accuracy_evaluation.mdx +++ b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_accuracy_evaluation.mdx @@ -16,11 +16,17 @@ This document describes how to perform accuracy evaluation for SGLang models run ## Environment Setup + +Ensure sufficient disk space before proceeding. The Docker image requires at least **30 GB** of free space. If you need to download model weights, check the model size at [ModelScope](https://www.modelscope.cn/models) to reserve enough space. + + First, launch the SGLang environment using the provided container image: + + + ```shell Command -# Atlas 800I A3 environment -export IMAGE=quay.io/ascend/sglang:main-cann8.5.0-a3 +export IMAGE=quay.io/ascend/sglang:v0.5.10-npu.rc1-a3 docker run -it --rm --privileged --network=host --ipc=host --shm-size=16g \ --device=/dev/davinci0 --device=/dev/davinci1 --device=/dev/davinci2 --device=/dev/davinci3 \ @@ -39,7 +45,29 @@ docker run -it --rm --privileged --network=host --ipc=host --shm-size=16g \ $IMAGE ``` -**For Atlas 800I A2 users**: Replace the image tag with `main-cann8.5.0-910b` and adjust device mappings from `/dev/davinci[8-15]` to `/dev/davinci[0-7]`. + + + +```shell Command +export IMAGE=quay.io/ascend/sglang:v0.5.10-npu.rc1-910b + +docker run -it --rm --privileged --network=host --ipc=host --shm-size=16g \ + --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/hisi_hdc \ + --volume /usr/local/sbin:/usr/local/sbin \ + --volume /usr/local/Ascend/driver:/usr/local/Ascend/driver \ + --volume /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \ + --volume /etc/ascend_install.info:/etc/ascend_install.info \ + --volume /var/queue_schedule:/var/queue_schedule \ + --volume ~/.cache/:/root/.cache/ \ + --entrypoint=bash \ + $IMAGE +``` + + + --- diff --git a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_deepseek_example.mdx b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_deepseek_example.mdx index dc99df7dd..78e1cb725 100644 --- a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_deepseek_example.mdx +++ b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_deepseek_example.mdx @@ -6,6 +6,10 @@ metatags: ## Running DeepSeek-V3 + +If you need to download model weights, check the model size at [ModelScope](https://www.modelscope.cn/models) to reserve enough space. + + ### Running DeepSeek in PD mixed mode on 1 x Atlas 800I A3. W4A8 Model weights could be found [here](https://modelers.cn/models/Modelers_Park/DeepSeek-R1-0528-w4a8). @@ -271,7 +275,11 @@ python -m sglang_router.launch_router \ --mini-lb ``` -### test gsm8k +## Testing the Service + +Once the server prints `The server is fired up and ready to roll!` in the logs, it is ready to accept requests. For testing examples (Health Check, Generate, Chat Completions, and port usage guidance), see [Testing the Service](/docs/hardware-platforms/ascend-npus/ascend_npu#testing-the-service). + +### Test GSM8K ```python Test GSM8K from types import SimpleNamespace diff --git a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_faq.mdx b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_faq.mdx index 7da46609f..c33e233b3 100644 --- a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_faq.mdx +++ b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_faq.mdx @@ -221,3 +221,63 @@ python -c "import sgl_kernel_npu; print(sgl_kernel_npu.__path__)" rm -rf sgl-kernel-npu ``` + +## 6. `[Errno 101] Network is unreachable` when downloading HuggingFace datasets + +### Error message + +```text highlight=1-2 +'[Errno 101] Network is unreachable' thrown while requesting HEAD https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json +Retrying in 1s [Retry 1/5]. +Traceback (most recent call last): + File "", line 198, in _run_module_as_main + File "", line 88, in _run_code + File "/usr/local/python3.11.14/lib/python3.11/site-packages/sglang/bench_serving.py", line 2353, in + run_benchmark(args) + File "/usr/local/python3.11.14/lib/python3.11/site-packages/sglang/bench_serving.py", line 1848, in run_benchmark + input_requests = get_dataset(args, tokenizer, model_id) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/python3.11.14/lib/python3.11/site-packages/sglang/benchmark/datasets/__init__.py", line 44, in get_dataset + return dataset.load(tokenizer=tokenizer, model_id=model_id) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/python3.11.14/lib/python3.11/site-packages/sglang/benchmark/datasets/random.py", line 45, in load + return sample_random_requests( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/python3.11.14/lib/python3.11/site-packages/sglang/benchmark/datasets/random.py", line 89, in sample_random_requests + dataset_path = download_and_cache_hf_file( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/python3.11.14/lib/python3.11/site-packages/sglang/benchmark/utils.py", line 98, in download_and_cache_hf_file + return hf_hub_download(repo_id=repo_id, filename=filename, repo_type=repo_type) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ... +RuntimeError: Cannot send a request, as the client has been closed. +[ERROR] 2026-05-18-11:58:31 (PID:215, Device:-1, RankID:-1) ERR99999 UNKNOWN application exception +``` + +### Cause + +The machine cannot directly access the HuggingFace server due to network restrictions (firewall, proxy, or regional access limitations). + +### Solution + +- **Use an HF mirror site** — set the `HF_ENDPOINT` environment variable to a mirror (e.g., hf-mirror.com): + + ```bash + export HF_ENDPOINT=https://hf-mirror.com + ``` + +- **Use a proxy** — if you have an HTTP proxy available: + + ```bash + export http_proxy=http://your-proxy:port + export https_proxy=http://your-proxy:port + ``` + +- **Download the dataset manually** — use a machine with network access to download the file, then transfer it to the target machine. Use `--dataset-path` to specify the local file path: + + ```bash + python -m sglang.bench_serving \ + --dataset-name random \ + --dataset-path /path/to/ShareGPT_V3_unfiltered_cleaned_split.json \ + ... + ``` diff --git a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_glm5_examples.mdx b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_glm5_examples.mdx index 333f07c8c..13aa28924 100644 --- a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_glm5_examples.mdx +++ b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_glm5_examples.mdx @@ -11,6 +11,10 @@ The GLM (General Language Model) series is an open-source bilingual large langua ### Model Weight + +If you need to download model weights, check the model size at [ModelScope](https://www.modelscope.cn/models) to reserve enough space. + + - `GLM-5.0`(BF16 version): [Download model weight](https://www.modelscope.cn/models/ZhipuAI/GLM-5). - `GLM-5.0-w4a8`(Quantized version without mtp): [Download model weight](https://modelers.cn/models/Eco-Tech/GLM-5-w4a8). - You can use [msmodelslim](https://gitcode.com/Ascend/msmodelslim) to quantify the model naively. @@ -18,15 +22,18 @@ The GLM (General Language Model) series is an open-source bilingual large langua ### Installation + +Ensure sufficient disk space before pulling images. The Docker image requires at least **30 GB** of free space. + + The dependencies required for the NPU runtime environment have been integrated into a Docker image and uploaded to the online platform. You can directly pull it. + + + ```bash Command -#Atlas 800 A3 -docker pull swr.cn-southwest-2.myhuaweicloud.com/base_image/dockerhub/lmsysorg/sglang:cann8.5.0-a3-glm5 -#Atlas 800 A2 -docker pull swr.cn-southwest-2.myhuaweicloud.com/base_image/dockerhub/lmsysorg/sglang:cann8.5.0-910b-glm5 +docker pull quay.io/ascend/sglang:v0.5.10-npu.rc1-a3 -#start container docker run -itd --shm-size=16g --privileged=true --name ${NAME} \ --privileged=true --net=host \ -v /var/queue_schedule:/var/queue_schedule \ @@ -53,9 +60,39 @@ docker run -itd --shm-size=16g --privileged=true --name ${NAME} \ --device=/dev/davinci_manager:/dev/davinci_manager \ --device=/dev/hisi_hdc:/dev/hisi_hdc \ --entrypoint=bash \ -swr.cn-southwest-2.myhuaweicloud.com/base_image/dockerhub/lmsysorg/sglang:${TAG} +quay.io/ascend/sglang:v0.5.10-npu.rc1-a3 ``` + + + +```bash Command +docker pull quay.io/ascend/sglang:v0.5.10-npu.rc1-910b + +docker run -itd --shm-size=16g --privileged=true --name ${NAME} \ +--privileged=true --net=host \ +-v /var/queue_schedule:/var/queue_schedule \ +-v /etc/ascend_install.info:/etc/ascend_install.info \ +-v /usr/local/sbin:/usr/local/sbin \ +-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ +-v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \ +--device=/dev/davinci0:/dev/davinci0 \ +--device=/dev/davinci1:/dev/davinci1 \ +--device=/dev/davinci2:/dev/davinci2 \ +--device=/dev/davinci3:/dev/davinci3 \ +--device=/dev/davinci4:/dev/davinci4 \ +--device=/dev/davinci5:/dev/davinci5 \ +--device=/dev/davinci6:/dev/davinci6 \ +--device=/dev/davinci7:/dev/davinci7 \ +--device=/dev/davinci_manager:/dev/davinci_manager \ +--device=/dev/hisi_hdc:/dev/hisi_hdc \ +--entrypoint=bash \ +quay.io/ascend/sglang:v0.5.10-npu.rc1-910b +``` + + + + ### Best Practices Note: Using this image for **best practices**, you need to update transformers to version 5.3.0 ``` @@ -195,7 +232,11 @@ done ### Prefill-Decode Disaggregation -Not test yet. +Not tested yet. + +## Testing the Service + +Once the server prints `The server is fired up and ready to roll!` in the logs, it is ready to accept requests. For testing examples (Health Check, Chat Completions, and port usage guidance), see [Testing the Service](/docs/hardware-platforms/ascend-npus/ascend_npu#testing-the-service). ### Using Benchmark diff --git a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_quick_start.mdx b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_quick_start.mdx index 3b4545339..7bd688634 100644 --- a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_quick_start.mdx +++ b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_quick_start.mdx @@ -13,14 +13,23 @@ metatags: ## Setup environment using container -__Notice:__ The following commands are based on Atlas 800I A3 machines. If you are using Atlas 800I A2, some changes are needed. + +Ensure sufficient disk space before proceeding. The Docker image requires at least **30 GB** of free space. If you need to download model weights, check the model size at [ModelScope](https://www.modelscope.cn/models) to reserve enough space. + -- The image tag needs to be `main-cann8.5.0-a3` for Atlas 800I A3 and `main-cann8.5.0-910b` for Atlas 800I A2. -- The device mapping in `docker run` command needs to be changed to `davinci[0-7]` for Atlas 800I A2. + +We publish both **stable releases** and **daily builds**. Choose a stable release tag (e.g., `v0.5.10-npu.rc1-a3`) if you prefer a validated version, or a daily build tag (e.g., `main-cann8.5.0-a3`) if you need the latest development changes. + + + + ```shell Command -# For Atlas 800I A3 -export IMAGE=swr.cn-southwest-2.myhuaweicloud.com/base_image/dockerhub/lmsysorg/sglang:main-cann8.5.0-a3 +# Stable release +export IMAGE=quay.io/ascend/sglang:v0.5.10-npu.rc1-a3 + +# Daily build +export IMAGE=quay.io/ascend/sglang:main-cann8.5.0-a3 docker run -it --rm --privileged --network=host --ipc=host --shm-size=16g \ --device=/dev/davinci0 --device=/dev/davinci1 --device=/dev/davinci2 --device=/dev/davinci3 \ @@ -39,6 +48,34 @@ docker run -it --rm --privileged --network=host --ipc=host --shm-size=16g \ $IMAGE ``` + + + +```shell Command +# Stable release +export IMAGE=quay.io/ascend/sglang:v0.5.10-npu.rc1-910b + +# Daily build +export IMAGE=quay.io/ascend/sglang:main-cann8.5.0-910b + +docker run -it --rm --privileged --network=host --ipc=host --shm-size=16g \ + --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/hisi_hdc \ + --volume /usr/local/sbin:/usr/local/sbin \ + --volume /usr/local/Ascend/driver:/usr/local/Ascend/driver \ + --volume /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \ + --volume /etc/ascend_install.info:/etc/ascend_install.info \ + --volume /var/queue_schedule:/var/queue_schedule \ + --volume ~/.cache/:/root/.cache/ \ + --entrypoint=bash \ + $IMAGE +``` + + + + ## Usage The SGLang server is installed in the container by default. You can use `pip show sglang` to check the version. diff --git a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_qwen3_5_examples.mdx b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_qwen3_5_examples.mdx index 93144929d..eb054f778 100644 --- a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_qwen3_5_examples.mdx +++ b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_qwen3_5_examples.mdx @@ -7,15 +7,18 @@ metatags: ### Installation + +Ensure sufficient disk space before pulling images. The Docker image requires at least **30 GB** of free space. If you need to download model weights, check the model size at [ModelScope](https://www.modelscope.cn/models) to reserve enough space. + + The dependencies required for the NPU runtime environment have been integrated into a Docker image and uploaded to the online platform. You can directly pull it. + + + ```bash Command -#Atlas 800 A3 -docker pull swr.cn-southwest-2.myhuaweicloud.com/base_image/dockerhub/lmsysorg/sglang:main-cann8.5.0-a3 -#Atlas 800 A2 -docker pull swr.cn-southwest-2.myhuaweicloud.com/base_image/dockerhub/lmsysorg/sglang:main-cann8.5.0-910b +docker pull quay.io/ascend/sglang:v0.5.10-npu.rc1-a3 -#start container docker run -itd --shm-size=16g --privileged=true --name ${NAME} \ --privileged=true --net=host \ -v /var/queue_schedule:/var/queue_schedule \ @@ -42,9 +45,39 @@ docker run -itd --shm-size=16g --privileged=true --name ${NAME} \ --device=/dev/davinci_manager:/dev/davinci_manager \ --device=/dev/hisi_hdc:/dev/hisi_hdc \ --entrypoint=bash \ -swr.cn-southwest-2.myhuaweicloud.com/base_image/dockerhub/lmsysorg/sglang:${tag} +quay.io/ascend/sglang:v0.5.10-npu.rc1-a3 ``` + + + +```bash Command +docker pull quay.io/ascend/sglang:v0.5.10-npu.rc1-910b + +docker run -itd --shm-size=16g --privileged=true --name ${NAME} \ +--privileged=true --net=host \ +-v /var/queue_schedule:/var/queue_schedule \ +-v /etc/ascend_install.info:/etc/ascend_install.info \ +-v /usr/local/sbin:/usr/local/sbin \ +-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ +-v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \ +--device=/dev/davinci0:/dev/davinci0 \ +--device=/dev/davinci1:/dev/davinci1 \ +--device=/dev/davinci2:/dev/davinci2 \ +--device=/dev/davinci3:/dev/davinci3 \ +--device=/dev/davinci4:/dev/davinci4 \ +--device=/dev/davinci5:/dev/davinci5 \ +--device=/dev/davinci6:/dev/davinci6 \ +--device=/dev/davinci7:/dev/davinci7 \ +--device=/dev/davinci_manager:/dev/davinci_manager \ +--device=/dev/hisi_hdc:/dev/hisi_hdc \ +--entrypoint=bash \ +quay.io/ascend/sglang:v0.5.10-npu.rc1-910b +``` + + + + ## Deployment ### Single-node Deployment @@ -54,7 +87,7 @@ Run the following script to execute online inference. #### Qwen3.5 397B -Recommended model: `Eco-Tech/Qwen3.5-397B-A17B-w8a8-mtp` +Recommended model: [`Eco-Tech/Qwen3.5-397B-A17B-w8a8-mtp`](https://www.modelscope.cn/models/Eco-Tech/Qwen3.5-397B-A17B-w8a8-mtp) ```bash Command @@ -101,7 +134,7 @@ python3 -m sglang.launch_server \ #### Qwen3.5 122B -Recommended model: `Eco-Tech/Qwen3.5-122B-A10B-w8a8-mtp` +Recommended model: [`Eco-Tech/Qwen3.5-122B-A10B-w8a8-mtp`](https://www.modelscope.cn/models/Eco-Tech/Qwen3.5-122B-A10B-w8a8-mtp) ```bash Command @@ -148,7 +181,7 @@ python3 -m sglang.launch_server \ #### Qwen3.5 35B -Recommended model: `Eco-Tech/Qwen3.5-35B-A3B-w8a8-mtp` +Recommended model: [`Eco-Tech/Qwen3.5-35B-A3B-w8a8-mtp`](https://www.modelscope.cn/models/Eco-Tech/Qwen3.5-35B-A3B-w8a8-mtp) ```bash Command @@ -195,7 +228,7 @@ python3 -m sglang.launch_server \ #### Qwen3.5 27B -Recommended model: `Eco-Tech/Qwen3.5-27B-w8a8-mtp` +Recommended model: [`Eco-Tech/Qwen3.5-27B-w8a8-mtp`](https://www.modelscope.cn/models/Eco-Tech/Qwen3.5-27B-w8a8-mtp) ```bash Command @@ -240,7 +273,11 @@ python3 -m sglang.launch_server \ ### Prefill-Decode Disaggregation -Not test yet. +Not tested yet. + +## Testing the Service + +Once the server prints `The server is fired up and ready to roll!` in the logs, it is ready to accept requests. For testing examples (Health Check, Generate, Chat Completions, Multimodal Chat Completions, and port usage guidance), see [Testing the Service](/docs/hardware-platforms/ascend-npus/ascend_npu#testing-the-service). ### Using Benchmark diff --git a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_qwen3_examples.mdx b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_qwen3_examples.mdx index 0bb0947ad..9073096d6 100644 --- a/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_qwen3_examples.mdx +++ b/docs_new/docs/hardware-platforms/ascend-npus/ascend_npu_qwen3_examples.mdx @@ -5,6 +5,10 @@ metatags: --- ## Qwen3 examples + +If you need to download model weights, check the model size at [ModelScope](https://www.modelscope.cn/models) to reserve enough space. + + ### Running Qwen3 #### Running Qwen3-32B on 1 x Atlas 800I A3. @@ -204,3 +208,7 @@ python -m sglang.launch_server \ --model-path Qwen/Qwen3-VL-8B-Instruct \ --mem-fraction-static 0.8 ``` + +## Testing the Service + +Once the server prints `The server is fired up and ready to roll!` in the logs, it is ready to accept requests. For testing examples (Health Check, Generate, Chat Completions, and port usage guidance), see [Testing the Service](/docs/hardware-platforms/ascend-npus/ascend_npu#testing-the-service).