# 本地搭建大语言模型完整流程
> 本文为纯安装流程,每一步执行前都先检查是否已存在,已存在则跳过。
---
## 步骤 1:系统基础工具
### 1.1 检查是否已存在
```bash
for c in curl wget git; do command -v $c >/dev/null 2>&1 && echo "$c 已存在" || echo "$c 缺失"; done
dpkg -s build-essential >/dev/null 2>&1 && echo "build-essential 已存在" || echo "build-essential 缺失"
```
### 1.2 安装(仅当缺失时)
```bash
sudo apt update
sudo apt install -y curl wget git build-essential
```
---
## 步骤 2:NVIDIA 驱动
### 2.1 检查是否已存在
```bash
nvidia-smi
# 若显示 Driver Version >= 570 → 驱动已存在,跳过本步骤
# 若提示 command not found 或报错 → 需要安装
# 再确认是否为 open 内核模块
lsmod | grep nvidia_open || echo "未加载 open 内核模块"
```
### 2.2 安装(仅当不存在时)
#### 2.2.1 禁用 Nouveau
```bash
sudo tee /etc/modprobe.d/blacklist-nouveau.conf <<'EOF'
blacklist nouveau
options nouveau modeset=0
EOF
sudo update-initramfs -u
sudo reboot
```
#### 2.2.2 安装驱动(二选一)
方式 A:NVIDIA 官方 `.run`(open 内核模块)
```bash
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/580.95.05/NVIDIA-Linux-x86_64-580.95.05.run
chmod +x NVIDIA-Linux-x86_64-580.95.05.run
sudo ./NVIDIA-Linux-x86_64-580.95.05.run -m=kernel-open
sudo reboot
```
方式 B:graphics-drivers PPA
```bash
sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt update
sudo apt install -y nvidia-driver-580-open
sudo reboot
```
#### 2.2.3 验证
```bash
nvidia-smi
lsmod | grep nvidia
```
---
## 步骤 3:conda
### 3.1 检查是否已存在
```bash
conda --version
# 输出如 conda 24.x.x → 已存在,跳过安装
# command not found → 需要安装
```
### 3.2 安装(仅当不存在时)
```bash
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc
conda --version
```
---
## 步骤 4:conda 环境
### 4.1 检查是否已存在
```bash
conda env list | grep -w vllm && echo "vllm 环境已存在" || echo "vllm 环境不存在"
```
### 4.2 创建(仅当不存在时)
```bash
conda create -n vllm python=3.11 -y
```
---
## 步骤 5:vLLM
### 5.1 检查是否已存在
```bash
conda activate vllm
python -c "import vllm; print(vllm.__version__)" 2>/dev/null && echo "vLLM 已存在" || echo "vLLM 未安装"
```
### 5.2 安装(仅当不存在时)
```bash
conda activate vllm
pip install vllm
python -c "import vllm; print(vllm.__version__)"
```
---
## 步骤 6:modelscope(用于 ModelScope 镜像下载,可选)
### 6.1 检查是否已存在
```bash
conda activate vllm
python -c "import modelscope; print(modelscope.__version__)" 2>/dev/null && echo "modelscope 已存在" || echo "modelscope 未安装"
```
### 6.2 安装(仅当不存在时,仅国内走 ModelScope 镜像时需要)
```bash
conda activate vllm
pip install modelscope
```
---
## 步骤 7:模型文件
### 7.1 检查是否已存在
```bash
ls ~/models/Qwen2.5-32B-Instruct-AWQ/ >/dev/null 2>&1 && echo "模型已存在" || echo "模型未下载"
```
### 7.2 下载(仅当不存在时;若走自动下载可跳过,见步骤 8)
```bash
conda activate vllm
modelscope download --model Qwen/Qwen2.5-32B-Instruct-AWQ \
--local_dir ~/models/Qwen2.5-32B-Instruct-AWQ
```
---
## 步骤 8:启动 vLLM
方式一:自动下载并启动(国内走 ModelScope)
```bash
conda activate vllm
export VLLM_USE_MODELSCOPE=True
vllm serve "Qwen/Qwen2.5-32B-Instruct-AWQ" \
--served-model-name qwen2.5-32b \
--host 0.0.0.0 --port 8000 \
--max-model-len 8192 \
--gpu-memory-utilization 0.90 \
--max-num-seqs 40 \
--enable-auto-tool-choice \
--tool-call-parser hermes
```
方式二:使用本地已下载模型
```bash
conda activate vllm
vllm serve ~/models/Qwen2.5-32B-Instruct-AWQ \
--served-model-name qwen2.5-32b \
--host 0.0.0.0 --port 8000 \
--max-model-len 8192 \
--gpu-memory-utilization 0.90 \
--max-num-seqs 40 \
--enable-auto-tool-choice \
--tool-call-parser hermes
```
---
## 步骤 9:验证服务
```bash
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5-32b",
"messages": [{"role":"user","content":"你好"}]
}'
```
---
## 步骤 10:后台常驻与开机自启(可选)
### 10.1 后台常驻
```bash
conda activate vllm
nohup vllm serve "Qwen/Qwen2.5-32B-Instruct-AWQ" \
--served-model-name qwen2.5-32b \
--host 0.0.0.0 --port 8000 \
--max-model-len 8192 \
--gpu-memory-utilization 0.90 \
--max-num-seqs 40 \
--enable-auto-tool-choice \
--tool-call-parser hermes \
> ~/vllm.log 2>&1 &
```
### 10.2 systemd 服务
创建 `/etc/systemd/system/vllm.service`:
```ini
[Unit]
Description=vLLM Qwen2.5-32B Inference Service
After=network.target
[Service]
Type=simple
User=你的用户名
Environment=VLLM_USE_MODELSCOPE=True
ExecStart=/bin/bash -lc "source ~/miniconda3/etc/profile.d/conda.sh && conda activate vllm && vllm serve Qwen/Qwen2.5-32B-Instruct-AWQ --served-model-name qwen2.5-32b --host 0.0.0.0 --port 8000 --max-model-len 8192 --gpu-memory-utilization 0.90 --max-num-seqs 40 --enable-auto-tool-choice --tool-call-parser hermes"
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
```
```bash
sudo systemctl daemon-reload
sudo systemctl enable vllm
sudo systemctl start vllm
sudo systemctl status vllm
```