文章目录
软硬件依赖
| 项目 | 版本 |
|---|---|
| ubuntu | 22.04 |
| Pytorch | 2.2.0 |
| Python | 3.10 |
| MUSA | 3.1.0 |
| torch_musa | 1.3.0 |
| GPU | MTT S4000 |
| vllm | 0.4.2+musa |
| transformers | 4.40.0 |
| tokenizers | 0.19.1 |
| triton | 2.2.0 |
| huggingface-hub | 0.23.5 |
在 AutoDL 上申请对应的实例:

相关资料
基于 MUSA 的大语言模型推理和服务框架 vLLM
vLLM-MUSA
配置步骤
0. 验证 AutoDL 镜像
在 AutoDL 终端里执行:
mthreads-gmi || true
musa_version_query || true
mcc --version || true
python - <<'PY'
import torch
print("torch:", torch.__version__)
try:
import torch_musa
print("torch_musa: OK")
print("musa available:", torch.musa.is_available())
print("device count:", torch.musa.device_count())
if torch.musa.is_available():
print("device name:", torch.musa.get_device_name(0))
except Exception as e:
print("torch_musa error:", repr(e))
PY
期望看到 torch_musa: OK 和 musa available: True。如果失败,建议在 AutoDL 平台更换实例。
1. 准备工作
1.1 更新 miniconda 中的 libstdc++
更新:
conda install -y -c conda-forge "libstdcxx-ng=12.*" "libgcc-ng=12.*"
# 如果 confda-forge 网络较慢,可以换成清华源
conda install -y \
-c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge \
"libstdcxx-ng=12.*" "libgcc-ng=12.*"
安装完成后重启 shell,或执行:
hash -r
验证:
strings /root/miniconda3/lib/libstdc++.so.6 | grep GLIBCXX_3.4.30
如果显示为 GLIBCXX_3.4.30 则正常。
1.2 克隆 vllm-musa 的 fix_version 分支

需要安装 vLLM 0.4.2 的 MUSA 适配(fix_version),不要装当前默认分支。
cd /root/autodl-tmp # 或你自己的工作目录
git clone -b fix_version --depth=1 https://github.com/MooreThreads/vllm-musa.git
安装相关依赖:
不要执行官方的 bash build_musa.sh 命令,它会执行 pip install -r requirements-build.txt 和 pip install -r requirements-musa.txt,而这两个依赖文件里包含 torch==2.2.0,会覆盖 AutoDL 平台原本镜像中的 torch==2.2.0a0+git8ac9b20。
cd /root/autodl-tmp # 或你自己的工作目录
python -m pip install -U pip setuptools wheel packaging cmake ninja
# 安装 vLLM 常规 Python 依赖
python -m pip install \
psutil sentencepiece numpy requests py-cpuinfo \
"transformers==4.40.0" "tokenizers==0.19.1" \
fastapi openai "uvicorn[standard]" "pydantic>=2.0" \
"prometheus_client>=0.18.0" "prometheus-fastapi-instrumentator>=7.0.0" \
"tiktoken==0.6.0" "lm-format-enforcer==0.9.8" \
"outlines==0.0.34" typing_extensions "filelock>=3.10.4" \
"ray>=2.9"
python -m pip install --no-cache-dir "triton==2.2.0"
依赖安装后验证:
python - <<'PY'
import torch
import torch_musa
import triton
print("torch:", torch.__version__)
print("musa:", torch.musa.is_available(), torch.musa.device_count())
print("triton:", triton.__version__)
PY
2. 安装 vllm-musa
cd /root/autodl-tmp/vllm-musa
export VLLM_TARGET_DEVICE=musa
export MUSA_HOME=/usr/local/musa
export PATH=$MUSA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$MUSA_HOME/lib:$LD_LIBRARY_PATH
export CMAKE_BUILD_TYPE=RelWithDebInfo
rm -rf build dist vllm.egg-info
python setup.py bdist_wheel
python -m pip install --no-deps --force-reinstall dist/vllm-*.whl
验证 vllm-musa 的安装:
python - <<'PY'
import vllm
print("vllm:", getattr(vllm, "__version__", "unknown"))
PY
期望输出为 vllm: 0.4.2。
3. 最小验证
3.1 下载模型
pip install -U "huggingface-hub[cli]==0.23.5"
mkdir -p /home/autodl-tmp/models/Qwen2-0.5B-Instruct
huggingface-cli download Qwen/Qwen2-0.5B-Instruct \
--local-dir /home/autodl-tmp/models/Qwen2-0.5B-Instruct
# 下载完检查
ls -lh /home/autodl-tmp/models/Qwen2-0.5B-Instruct
3.2 验证运行
验证脚本test_vllm_musa.py:
from vllm import LLM, SamplingParams
import torch
import torch_musa
model_path = "/root/autodl-tmp/models/Qwen2-0.5B-Instruct" # 改成自己对应的模型存放路径
print("torch:", torch.__version__)
print("musa:", getattr(torch.version, "musa", None))
print("musa available:", torch.musa.is_available())
print("model:", model_path)
sampling_params = SamplingParams(
temperature=0.0,
max_tokens=16,
)
llm = LLM(
model=model_path,
trust_remote_code=True,
device="musa",
dtype="float16",
max_model_len=512,
max_num_seqs=1,
gpu_memory_utilization=0.5,
enforce_eager=True,
disable_custom_all_reduce=True,
)
print("LLM initialized")
outputs = llm.generate(
["Hello, my name is"],
sampling_params,
)
print("Generate finished")
for output in outputs:
print(f"Prompt: {output.prompt!r}")
print(f"Generated text: {output.outputs[0].text!r}")
运行验证脚本:
python test_vllm_musa.py

4. 启动 OpenAI 兼容服务(可选)
python -m vllm.entrypoints.openai.api_server \
--model /root/autodl-tmp/models/Qwen2-0.5B-Instruct \
--trust-remote-code \
--device musa \
--dtype float16 \
--host 0.0.0.0 \
--port 8000
另起一个端口进行测试:
curl http://127.0.0.1:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/root/autodl-tmp/models/Qwen2-0.5B-Instruct",
"prompt": "Hello, my name is ",
"max_tokens": 64
}'


693

被折叠的 条评论
为什么被折叠?



