本地部署大语言模型

# 本地搭建大语言模型完整流程

> 本文为纯安装流程,每一步执行前都先检查是否已存在,已存在则跳过。

---

## 步骤 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
```

发表评论

邮箱地址不会被公开。 必填项已用*标注