千问3.5-2B在Ubuntu服务器上的生产环境部署详解

1. 准备工作与环境搭建

在开始部署千问3.5-2B模型之前,我们需要确保服务器硬件和基础软件环境满足要求。生产环境部署不同于开发测试,需要考虑稳定性、安全性和性能优化。

1.1 服务器硬件选型建议

对于千问3.5-2B这样的中型语言模型,推荐以下硬件配置:

  • CPU:至少16核,建议Intel Xeon Silver或AMD EPYC 7002系列以上
  • 内存:64GB起步,128GB更佳,确保模型加载和推理有足够缓冲
  • GPU:NVIDIA A10G或RTX 4090起步,显存24GB以上(如A100 40GB更佳)
  • 存储:1TB NVMe SSD用于系统,2TB以上高速存储用于模型和数据
  • 网络:千兆以太网,生产环境建议10Gbps网络接口

1.2 Ubuntu系统安装与优化

我们选择Ubuntu Server 22.04 LTS作为操作系统,以下是安装要点:

  1. 下载官方ISO镜像并制作启动盘
  2. 安装时选择最小化安装(不安装额外服务)
  3. 分区建议:
    • /:100GB
    • /var:50GB
    • /home:剩余空间
  4. 安装完成后立即执行:
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential git curl wget htop tmux
  1. 系统优化设置:
# 调整swappiness
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf

# 禁用IPv6(可选)
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf

# 应用修改
sudo sysctl -p

2. GPU驱动与CUDA环境配置

2.1 NVIDIA驱动安装

首先确认服务器已正确安装GPU设备:

lspci | grep -i nvidia

安装官方驱动:

# 添加官方PPA
sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt update

# 查找推荐驱动版本
ubuntu-drivers devices

# 安装推荐驱动(示例为515版本)
sudo apt install -y nvidia-driver-515

# 重启后验证
nvidia-smi

2.2 CUDA Toolkit安装

千问3.5-2B推荐使用CUDA 11.7或更高版本:

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
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /"
sudo apt update
sudo apt install -y cuda-11-7

配置环境变量:

echo 'export PATH=/usr/local/cuda-11.7/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

2.3 cuDNN安装

下载对应版本的cuDNN(需要NVIDIA开发者账号),然后安装:

sudo dpkg -i libcudnn8_8.5.0.96-1+cuda11.7_amd64.deb
sudo dpkg -i libcudnn8-dev_8.5.0.96-1+cuda11.7_amd64.deb

3. Docker与模型服务部署

3.1 Docker环境安装

# 卸载旧版本
sudo apt remove docker docker-engine docker.io containerd runc

# 安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

# 添加官方GPG key
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 设置仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 添加用户到docker组
sudo usermod -aG docker $USER
newgrp docker

3.2 使用Docker Compose编排服务

创建部署目录结构:

mkdir -p qianwen-deploy/{model,config,logs,data}
cd qianwen-deploy

编写docker-compose.yml

version: '3.8'

services:
  qianwen:
    image: registry.cn-hangzhou.aliyuncs.com/qianwen/qianwen-3.5-2b:latest
    container_name: qianwen-service
    restart: unless-stopped
    ports:
      - "8000:8000"
    volumes:
      - ./model:/app/model
      - ./config:/app/config
      - ./logs:/app/logs
    environment:
      - MODEL_NAME=qianwen-3.5-2b
      - DEVICE=cuda
      - MAX_MEMORY=24GB
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

  redis:
    image: redis:7.0
    container_name: qianwen-redis
    restart: unless-stopped
    volumes:
      - ./data/redis:/data
    ports:
      - "6379:6379"
    command: redis-server --appendonly yes

  monitoring:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: unless-stopped
    volumes:
      - ./config/prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"

创建Prometheus配置文件config/prometheus.yml

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'qianwen'
    static_configs:
      - targets: ['qianwen-service:8000']
  - job_name: 'redis'
    static_configs:
      - targets: ['qianwen-redis:6379']

启动服务:

docker compose up -d

4. Nginx配置与SSL证书

4.1 安装Nginx

sudo apt install -y nginx
sudo systemctl enable nginx

4.2 配置反向代理

创建配置文件/etc/nginx/sites-available/qianwen.conf

upstream qianwen {
    server 127.0.0.1:8000;
}

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://qianwen;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        # WebSocket支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    access_log /var/log/nginx/qianwen_access.log;
    error_log /var/log/nginx/qianwen_error.log;
}

启用配置:

sudo ln -s /etc/nginx/sites-available/qianwen.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

4.3 使用Let's Encrypt配置SSL

安装Certbot:

sudo apt install -y certbot python3-certbot-nginx

获取证书:

sudo certbot --nginx -d yourdomain.com

证书会自动续期,可以通过以下命令测试续期:

sudo certbot renew --dry-run

5. 监控与日志系统

5.1 Prometheus与Grafana配置

安装Grafana:

docker run -d --name=grafana -p 3000:3000 grafana/grafana-enterprise

配置数据源:

  1. 访问 http://yourdomain.com:3000
  2. 添加Prometheus数据源(URL: http://prometheus:9090
  3. 导入千问模型监控仪表板(ID: 1860)

5.2 日志收集方案

使用Loki和Promtail收集日志:

# 在docker-compose.yml中添加
services:
  loki:
    image: grafana/loki:latest
    ports:
      - "3100:3100"
    volumes:
      - ./config/loki.yml:/etc/loki/local-config.yaml
    command: -config.file=/etc/loki/local-config.yaml

  promtail:
    image: grafana/promtail:latest
    volumes:
      - ./logs:/var/log/qianwen
      - ./config/promtail.yml:/etc/promtail/config.yml
    command: -config.file=/etc/promtail/config.yml

创建config/promtail.yml

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://loki:3100/loki/api/v1/push

scrape_configs:
- job_name: qianwen
  static_configs:
  - targets:
      - localhost
    labels:
      job: qianwen
      __path__: /var/log/qianwen/*.log

5.3 设置告警规则

在Prometheus中添加告警规则config/alert.rules.yml

groups:
- name: qianwen-alerts
  rules:
  - alert: HighErrorRate
    expr: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.1
    for: 10m
    labels:
      severity: critical
    annotations:
      summary: "High error rate on {{ $labels.instance }}"
      description: "Error rate is {{ $value }}"

然后在prometheus.yml中引用:

rule_files:
  - '/etc/prometheus/alert.rules.yml'

6. 总结与后续优化建议

经过以上步骤,我们已经完成了千问3.5-2B模型在生产环境中的完整部署。这套方案考虑了企业级应用所需的各个方面,包括性能优化、高可用性、安全防护和监控告警。

实际运行中,建议定期检查以下几个方面:GPU显存使用情况、API响应时间、错误日志分析。随着业务量增长,可以考虑引入Kubernetes进行容器编排,实现自动扩缩容。对于模型性能优化,可以尝试量化技术减少显存占用,或者使用Triton Inference Server提升推理效率。

部署完成后,建议进行全面的压力测试,了解系统的瓶颈和极限。可以使用Locust或JMeter等工具模拟高并发请求,确保系统在业务高峰期也能稳定运行。同时,建立完善的备份策略,定期备份模型参数和业务数据。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐