Nano-vLLM-Ascend是什么型号的芯片?

摘要:参考 https:github.comlinzm1007nano-vllm-ascend Nano-vLLM-Ascend nano-vllm是开源的一个gpu推理项目,基于开源版本弄的一个ascend npu版本推理小demo,旨
参考 https://github.com/linzm1007/nano-vllm-ascend Nano-vLLM-Ascend nano-vllm是开源的一个gpu推理项目,基于开源版本弄的一个ascend npu版本推理小demo,旨在帮助初学者了解推理的整体流程,区别于vllm,nano-vllm体量更小,麻雀虽小五脏俱全,更有助于初学者学习。 框架层流程图 模型层流程图 特性 📖 可读代码库 - 约1200行Python代码的清晰实现 ⚡ 优化套件 - 张量并行、Torch编译等 待完成:目前只支持单算子, npu图模式实现 dummy方式在cpu环境运行 性能优化 目前只支持Qwen3-0.6B,支持更多模型 镜像下载 docker login xx docker pull xxx/nano-vllm/nano-vllm-ascend:v1_20251112 容器运行 #!/bin/bash CONTAINER_NAME="xxx" # 停止并删除现有容器 docker stop $CONTAINER_NAME 2>/dev/null docker rm $CONTAINER_NAME 2>/dev/null echo "Starting SSH container..." docker run -it --name=$CONTAINER_NAME \ --shm-size=20g \ --net=host \ --privileged=true \ -u root \ -w /data \ --device=/dev/davinci_manager \ --device=/dev/hisi_hdc \ --device=/dev/devmm_svm \ -v /data:/data \ -v /tmp:/tmp \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ -v /etc/ascend_install.info:/etc/ascend_install.info \ -v /usr/local/sbin:/usr/local/sbin \ -v /etc/hccn.conf:/etc/hccn.conf \ -v /usr/bin/hccn_tool:/usr/bin/hccn_tool \ -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \ xxx/nano-vllm/nano-vllm-ascend:v1_20251112 bash 安装依赖 pip install . ssh安装 #!/bin/bash set -ex # 配置openEuler软件源 echo "配置openEuler软件源..." cat > /etc/yum.repos.d/openeuler.repo << 'EOF' [openEuler-everything] name=openEuler-everything baseurl=http://mirrors.tools.xx.com/openeuler/openEuler-22.03-LTS-SP4/everything/aarch64/ enabled=1 gpgcheck=0 gpgkey=http://mirrors.tools.xx.com/openeuler/openEuler-22.03-LTS-SP4/everything/aarch64/RPM-GPG-KEY-openEuler [openEuler-EPOL] name=openEuler-epol baseurl=http://mirrors.tools.xx.com/openeuler/openEuler-22.03-LTS-SP4/EPOL/main/aarch64/ enabled=1 gpgcheck=0 [openEuler-update] name=openEuler-update baseurl=http://mirrors.tools.xx.com/openeuler/openEuler-22.03-LTS-SP4/update/aarch64/ enabled=1 gpgcheck=0 EOF yum clean all yum makecache yum install passwd -y # 设置root用户密码 echo "设置root用户密码..." echo "root:xxxx-" | chpasswd # 配置SSH服务 echo "配置SSH服务..." # 启用TCP转发 sed -i 's/^#AllowTcpForwarding yes/AllowTcpForwarding yes/' /etc/ssh/sshd_config # 启用GatewayPorts sed -i 's/^#GatewayPorts no/GatewayPorts yes/' /etc/ssh/sshd_config # 添加端口6068(若不存在) if ! grep -q "^Port 6068" /etc/ssh/sshd_config; then echo "Port 6068" >> /etc/ssh/sshd_config fi # 生成SSH密钥并重启服务 echo "初始化SSH服务..." ssh-keygen -A /usr/sbin/sshd echo "所有配置完成!root密码已设置,SSH服务已启动(监听端口6068)" 容器起来,ssh也安装好,可以远程连接容器运行example.py 模型下载 huggingface-cli download --resume-download Qwen/Qwen3-0.6B \ --local-dir ~/huggingface/Qwen3-0.6B/ \ --local-dir-use-symlinks False 快速开始 请参见 example.py 了解用法。该 API 与 vLLM 的接口基本一致,仅在 LLM.generate 方法上存在一些细微差异: from nanovllm import LLM, SamplingParams llm = LLM("/YOUR/MODEL/PATH", enforce_eager=True, tensor_parallel_size=1) sampling_params = SamplingParams(temperature=0.6, max_tokens=256) prompts = ["Hello, Nano-vLLM."] outputs = llm.generate(prompts, sampling_params) outputs[0]["text"] example运行结果 环境 仅供参考 ascend-dmi -c #查看 硬件环境​: 1.显卡:A3 910C 2.驱动版本:24.1.rc3.10 3.固件版本:7.5.0.109.220 软件环境​: 1.CANN包 8.3.RC1 2.PTA版本:torch-npu 2.5.1.post2+gitd7a85f8,torch 2.5.1 Benchmark See bench.py for benchmark. Test Configuration: Model: Qwen3-0.6B Total Requests: 256 sequences Input Length: Randomly sampled between 100–1024 tokens Output Length: Randomly sampled between 100–1024 tokens Performance Results: Nano-vLLM-Ascend 实在太慢了只跑了10条seq Nano-vLLM-Ascend可以忽略[哭脸] Inference Engine Output Tokens Time (s) Throughput (tokens/s) vLLM 133,966 98.37 1361.84 Nano-vLLM 133,966 93.41 1434.13 Nano-vLLM-Ascend 4805 257.49 18.66 qwen3-0.6B layers ModuleList( (0-27): 28 x Qwen3DecoderLayer( (self_attn): Qwen3Attention( (qkv_proj): QKVParallelLinear() (o_proj): RowParallelLinear() (rotary_emb): RotaryEmbedding() (attn): Attention() (q_norm): RMSNorm() (k_norm): RMSNorm() ) (mlp): Qwen3MLP( (gate_up_proj): MergedColumnParallelLinear() (down_proj): RowParallelLinear() (act_fn): SiluAndMul() ) (input_layernorm): RMSNorm() (post_attention_layernorm): RMSNorm() ) )