RC机器自制镜像跑vllm-ascend qwen3-1.7B推理
收藏回复举报
RC机器自制镜像跑vllm-ascend qwen3-1.7B推理
发表于2025-09-15 20:25:54
0 查看
  1. 使用下面的命令起一个(引用了宿主机vim)的ubuntu22.04基础镜像
docker run -it --net=host \
--name=vllm_test \
--privileged=true \
--device=/dev/upgrade:/dev/upgrade \
--device=/dev/davinci0:/dev/davinci0 \
--device=/dev/davinci_manager \
-v /etc/sys_version.conf:/etc/sys_version.conf \
-v /etc/ld.so.conf.d/mind_so.conf:/etc/ld.so.conf.d/mind_so.conf \
-v /etc/hdcBasic.cfg:/etc/hdcBasic.cfg \
-v /var/dmp_daemon:/var/dmp_daemon \
-v /usr/lib64/libsemanage.so.2:/usr/lib64/libsemanage.so.2 \
-v /usr/lib64/libmmpa.so:/usr/lib64/libmmpa.so \
-v /usr/lib64/libcrypto.so.1.1:/usr/lib64/libcrypto.so.1.1 \
-v /usr/lib64/libyaml-0.so.2.0.9:/usr/lib64/libyaml-0.so.2 \
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
-v /usr/lib64/libstackcore.so:/usr/lib64/libstackcore.so \
-v /etc/slog.conf:/etc/slog.conf \
-v /var/slogd:/var/slogd \
-v /usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64 \
-v /home/xiaojiangwu:/home/xiaojiangwu \
a6be1f66f70f /bin/bash;

注1:RC机器初始化 source run.sh true


注2:RC机器查看plog日志

# 容器内执行
rm -rf /var/log/npu/slog
export ASCEND_GLOBAL_LOG_LEVEL=0
dmesg -c
# 执行某程序。。。
tar -zcvf slog.tar.gz /var/log/npu/slog
dmesg -T > mesg.log

msnpureport -f # 物理机执行

注3:一些关于RC机器自制镜像中的“准备工作”请移步https://www.hiascend.com/forum/thread-0250193311029635971-1-1.html?fid=0106101385921175001中的 0、1、2三步。。。(其中安装python请看下面)



  1. 安装python3.10.12
# 安装python==3.10.12
wet https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tgz --no-check-certificate
gzip -d Python-3.10.12.tgz && tar -xvf Python-3.10.12.tar

cd Python-3.10.12 && ./configure --prefix=/usr/local/python3.10.12 --enable-loadable-sqlite-extensions --enable-shared

make && make install

vim /run.sh # 追加如下

export LD_LIBRARY_PATH=/usr/local/python3.10.12/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/python3.10.12/bin:$PATH

source /run.sh

which python3

ln -sf /usr/local/python3.10.12/bin/python3 /usr/local/python3.10.12/bin/python # 使能python命令
  1. 安装8.2.RC1的cann(toolkit 、kernel、nnal)社区版资源下载-资源下载中心-昇腾社区

  2. 借鉴vllm-dockerfile手动在能挂上驱动的RC基础镜像中搭建vllm的方案

# 设置构建参数
PIP_INDEX_URL="https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple"
COMPILE_CUSTOM_KERNELS=1

# 设置环境变量
export DEBIAN_FRONTEND=noninteractive
export COMPILE_CUSTOM_KERNELS=${COMPILE_CUSTOM_KERNELS}



# 更新包列表并安装依赖
apt-get update -y && \
apt-get install -y python3-pip git vim wget net-tools gcc g++ cmake libnuma-dev && \
rm -rf /var/cache/apt/* && \
rm -rf /var/lib/apt/lists/*

# 配置pip源
pip config set global.index-url ${PIP_INDEX_URL}

# https://github.com/vllm-project/vllm
# https://github.com/vllm-project/vllm-ascend
# 克隆vLLM仓库【注意以上vllm与vllm-ascend链接里的版本必须保持一致】 
VLLM_REPO=https://github.com/vllm-project/vllm.git
VLLM_TAG=v0.10.0
git clone --depth 1 $VLLM_REPO --branch $VLLM_TAG /vllm-workspace/vllm
cd /vllm-workspace/vllm

# 安装vLLM并卸载triton
VLLM_TARGET_DEVICE="empty" python3 -m pip install -v -e /vllm-workspace/vllm/ --extra-index https://download.pytorch.org/whl/cpu/ && \
python3 -m pip uninstall -y triton && \
python3 -m pip cache purge




# 设置昇腾环境并安装vllm-ascend
VLLM_ASCEND_REPO=https://github.com/vllm-project/vllm-ascend.git
VLLM_ASCEND_TAG=v0.10.0rc1
git clone --depth 1 $VLLM_ASCEND_REPO --branch $VLLM_ASCEND_TAG /vllm-workspace/vllm-ascend
cd /vllm-workspace/vllm-ascend

export PIP_EXTRA_INDEX_URL=https://mirrors.huaweicloud.com/ascend/repos/pypi
source /usr/local/Ascend/ascend-toolkit/set_env.sh
source /usr/local/Ascend/nnal/atb/set_env.sh
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/Ascend/ascend-toolkit/latest/`uname -i`-linux/devlib
export SOC_VERSION=ASCEND310P1

python3.10 -m pip install --upgrade pip
python3 -m pip install -v -e /vllm-workspace/vllm-ascend/ --extra-index https://download.pytorch.org/whl/cpu/
python3 -m pip cache purge

修改权重配置文件如下: vim weights/config.json # bfloat16 --> float16



若报了ACL stream synchronize failed, error code:507018的错,即(将NPU张量传输到CPU张量)的流同步失败的错,如下图: true 则开启日志打屏如下:

export ASCEND_GLOBAL_LOG_LEVEL=1
export ASCEND_HOST_FILE_NUM=1000
export ASCEND_DEVICE_FLUSH_TIMEOUT=5000
export ASCEND_SLOG_PRINT_TO_STDOUT=1

cat xxx.log | grep CCECPU # 图略,发现缺少libtensorflow.so文件,则 docker cp /home/xiaojiangwu/vllm_tmp/libtf_kernels.so vllm_test:/root/aicpu_kernels/0/aicpu_kernels_device/libtf_kernels.so 。【libtensorflow.so见文末附件】


vim examply.py

from vllm import LLM, SamplingParams

prompts = [
    "Hello, my name is",
    "The president of the United States is",
    "The capital of France is",
    "The future of AI is",
]

# Create a sampling params object.
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
# Create an LLM.
llm = LLM(model="/home/xiaojiangwu/uploaded_files/weights/Qwen3-1.7B", enforce_eager=True, dtype="float16", max_model_len=100)

# Generate texts from the prompts.
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
  • 注意上面的enforce_eager=True, dtype="float16", max_model_len=100这些参数,分别为关闭图优化;规避RopeOperation 算子报错;限制推理长度等。。。

cd /vllm-workspace/vllm && python /home/xiaojiangwu/python_projects/vllm_test2.py



附件链接:
一些小依赖文件:libtf_kernels.so等4个文件 链接: https://pan.baidu.com/s/1HAglbmiB95uYGJbf1CKxSA 提取码: m1ge --来自百度网盘超级会员v6的分享


vllm-ascend镜像包:通过网盘分享的文件:vllm_ascend_rc_0.0.0.tar 链接: https://pan.baidu.com/s/1VgNLxbDlKlz7MFgwVjWpxQ 提取码: 79xh --来自百度网盘超级会员v6的分享

本帖最后由 匿名用户2025/09/15 20:30:01 编辑

我要发帖子