1. 环境准备与硬件要求
在Ubuntu 22.04系统上部署GLM-5大模型需要满足特定的硬件和软件要求。以下是详细的配置说明:
1.1 硬件配置检查
首先需要验证服务器硬件配置是否满足最低要求:
bash复制# 检查CPU核心数
lscpu | grep "CPU(s):"
# 检查内存大小
free -h
# 检查GPU信息
nvidia-smi
# 检查磁盘空间(建议至少50GB可用空间)
df -h
硬件要求标准:
- CPU核心数 ≥ 8
- 内存 ≥ 32GB
- GPU显存 ≥ 32GB(推荐NVIDIA A100或RTX 4090)
- 磁盘可用空间 ≥ 50GB(SSD推荐)
1.2 软件环境验证
确保操作系统版本和内核版本符合要求:
bash复制# 检查Ubuntu版本
lsb_release -a
# 检查内核版本
uname -r
软件要求:
- Ubuntu 22.04 LTS
- 内核版本 ≥ 5.15
- NVIDIA驱动版本 ≥ 525.60.13
- CUDA版本 ≥ 12.0(推荐12.1)
1.3 GPU驱动安装
如果尚未安装NVIDIA驱动和CUDA,可以按以下步骤安装:
bash复制# 添加NVIDIA官方PPA
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
# 安装推荐版本的驱动
sudo ubuntu-drivers autoinstall
# 安装CUDA Toolkit 12.1
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-ubuntu2204-12-1-local_12.1.0-530.30.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-1-local_12.1.0-530.30.02-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-12-1
# 配置环境变量
echo 'export PATH=/usr/local/cuda-12.1/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 离线环境安装方案
对于无法连接互联网的生产环境,需要预先下载所有依赖包。
2.1 准备工作(在可联网机器上)
2.1.1 创建下载目录结构
bash复制mkdir -p offline_packages/{system,python/packages,models}
cd offline_packages
2.1.2 下载系统依赖包
使用清华镜像源下载Ubuntu 22.04的deb包:
bash复制cd system
wget https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/main/p/python3.12/python3.12_3.12.3-1ubuntu0.13_amd64.deb
wget https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/main/p/python3.12/python3.12-minimal_3.12.3-1ubuntu0.13_amd64.deb
wget https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/main/p/python3.12/python3.12-dev_3.12.3-1ubuntu0.13_amd64.deb
wget https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/main/p/python3.12/libpython3.12-dev_3.12.3-1ubuntu0.13_amd64.deb
wget https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/main/p/python3-pip/python3-pip_23.0.1+dfsg-1_all.deb
2.1.3 下载Python依赖包
创建requirements.txt文件:
bash复制cd ../python
cat > requirements.txt << 'EOF'
vllm==0.4.2
torch==2.2.1
transformers==4.40.0
accelerate==0.28.0
sentencepiece==0.2.0
protobuf==4.25.3
tiktoken==0.6.0
modelscope==1.11.0
safetensors==0.4.3
tokenizers==0.15.2
flash-attn==2.5.6
EOF
下载Python包(指定Linux平台):
bash复制pip download -r requirements.txt -d ./packages --platform manylinux2014_x86_64 --python-version 312 --only-binary=:all:
2.1.4 下载GLM-5模型
使用ModelScope下载模型:
bash复制cd ../models
pip install modelscope
modelscope download --model ZhipuAI/glm-4-9b-chat --local_dir ./glm-4-9b-chat
2.2 离线环境部署步骤
将打包好的文件传输到目标服务器后:
2.2.1 安装系统依赖
bash复制cd system
sudo dpkg -i *.deb
sudo apt-get install -f
2.2.2 创建Python虚拟环境
bash复制python3.12 -m venv ~/vllm_env
source ~/vllm_env/bin/activate
2.2.3 安装Python包
bash复制cd python
pip install --no-index --find-links=./packages -r requirements.txt
2.2.4 部署模型文件
bash复制sudo mkdir -p /opt/models
sudo chown $USER:$USER /opt/models
mv ../models/glm-4-9b-chat /opt/models/
3. 联网环境安装方案
对于可以连接互联网的环境,安装过程更为简便。
3.1 系统环境准备
更新系统并安装基础依赖:
bash复制sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y \
build-essential \
git \
curl \
wget \
python3.12 \
python3.12-venv \
python3.12-dev \
python3-pip
3.2 安装vLLM及依赖
创建并激活虚拟环境:
bash复制python3.12 -m venv ~/vllm_env
source ~/vllm_env/bin/activate
pip install --upgrade pip setuptools wheel
安装PyTorch和vLLM:
bash复制pip install torch==2.2.1 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install vllm==0.4.2
安装其他依赖:
bash复制pip install \
transformers==4.40.0 \
accelerate==0.28.0 \
sentencepiece==0.2.0 \
protobuf==4.25.3 \
tiktoken==0.6.0 \
modelscope==1.11.0
3.3 下载GLM-5模型
bash复制sudo mkdir -p /opt/models
sudo chown $USER:$USER /opt/models
modelscope download --model ZhipuAI/glm-4-9b-chat --local_dir /opt/models/glm-4-9b-chat
4. 服务启动与验证
4.1 创建启动脚本
bash复制cat > ~/start_vllm_server.sh << 'EOF'
#!/bin/bash
source ~/vllm_env/bin/activate
export CUDA_VISIBLE_DEVICES=0
export VLLM_WORKER_MULTIPROC_METHOD=spawn
python -m vllm.entrypoints.openai.api_server \
--model /opt/models/glm-4-9b-chat \
--trust-remote-code \
--dtype float16 \
--max-model-len 8192 \
--gpu-memory-utilization 0.9 \
--host 0.0.0.0 \
--port 8000 \
--tensor-parallel-size 1
EOF
chmod +x ~/start_vllm_server.sh
4.2 启动服务
前台启动(测试用):
bash复制~/start_vllm_server.sh
后台启动(生产环境):
bash复制nohup ~/start_vllm_server.sh > ~/vllm_server.log 2>&1 &
使用systemd管理服务:
bash复制sudo tee /etc/systemd/system/vllm-glm.service << EOF
[Unit]
Description=vLLM GLM-4-9B-Chat Service
After=network.target
[Service]
Type=simple
User=$USER
WorkingDirectory=/home/$USER
Environment="PATH=/home/$USER/vllm_env/bin:/usr/local/cuda-12.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="CUDA_VISIBLE_DEVICES=0"
Environment="VLLM_WORKER_MULTIPROC_METHOD=spawn"
ExecStart=/home/$USER/vllm_env/bin/python -m vllm.entrypoints.openai.api_server \
--model /opt/models/glm-4-9b-chat \
--trust-remote-code \
--dtype float16 \
--max-model-len 8192 \
--gpu-memory-utilization 0.9 \
--host 0.0.0.0 \
--port 8000
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl start vllm-glm
sudo systemctl enable vllm-glm
4.3 验证服务
检查服务状态:
bash复制curl http://localhost:8000/v1/models
测试聊天接口:
bash复制curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/opt/models/glm-4-9b-chat",
"messages": [
{"role": "user", "content": "你好,请介绍一下你自己。"}
],
"max_tokens": 100,
"temperature": 0.7
}'
5. 性能优化与问题排查
5.1 常见问题解决方案
CUDA内存不足
bash复制# 调整启动参数
--gpu-memory-utilization 0.8
--max-model-len 4096
模型加载失败
确保模型文件完整:
bash复制ls -lh /opt/models/glm-4-9b-chat/
应有以下关键文件:
- config.json
- model-*.safetensors
- model.safetensors.index.json
- tokenizer.model
5.2 性能优化建议
启用Flash Attention加速:
bash复制pip install flash-attn --no-build-isolation
# 启动时添加参数
--enable-flash-attn
调整批处理大小:
bash复制--max-num-seqs 128
监控GPU使用情况:
bash复制watch -n 1 nvidia-smi
6. 生产环境部署建议
- 资源监控:设置Prometheus监控GPU使用率和显存占用
- 日志管理:配置日志轮转,避免日志文件过大
- 安全防护:配置防火墙规则,限制API访问IP
- 备份策略:定期备份模型文件和配置文件
- 版本控制:记录所有软件包和模型的精确版本号
对于高可用需求,可以考虑:
- 使用Nginx做负载均衡
- 配置多个vLLM实例
- 设置健康检查端点
实际部署中,根据具体硬件配置调整以下参数:
--gpu-memory-utilization(0.7-0.95)--max-num-seqs(32-256)--tensor-parallel-size(多GPU时)
最后提醒:在生产环境部署前,务必在测试环境充分验证稳定性和性能。
