Baichuan-M2-32B-GPTQ-Int4在Ubuntu20.04上的Docker-Compose部署

1. 引言

想快速部署一个强大的医疗AI助手吗?Baichuan-M2-32B-GPTQ-Int4作为百川智能推出的医疗增强推理模型,在医疗领域表现卓越,现在通过Docker-Compose可以轻松在Ubuntu20.04上部署。本文将手把手带你完成整个部署过程,无需深厚的技术背景,跟着步骤走就能搞定。

这个部署方案最大的优势是一键启动,不仅包含了Baichuan-M2模型服务,还集成了MySQL和Redis等配套服务,开箱即用。无论你是想进行医学研究、健康咨询还是临床辅助决策,这个方案都能为你提供稳定可靠的服务基础。

2. 环境准备与系统要求

在开始部署之前,先确认你的系统环境是否符合要求。Ubuntu20.04是最佳选择,其他Linux发行版可能需要适当调整。

2.1 硬件要求

要流畅运行Baichuan-M2-32B-GPTQ-Int4模型,建议配置:

  • GPU:至少RTX 4090(24GB显存)或同等级别显卡
  • 内存:32GB以上系统内存
  • 存储:100GB可用磁盘空间(模型文件约60GB)
  • CPU:8核以上处理器

2.2 软件依赖

确保系统已安装以下基础软件:

# 更新系统包
sudo apt update && sudo apt upgrade -y

# 安装基础工具
sudo apt install -y curl wget git python3 python3-pip

2.3 Docker环境安装

如果系统还没有Docker,需要先安装:

# 安装Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# 将当前用户加入docker组
sudo usermod -aG docker $USER
newgrp docker

安装完成后,验证Docker是否正常工作:

docker --version
docker-compose --version

3. 部署文件准备

接下来我们需要准备部署所需的配置文件。创建一个项目目录来存放所有相关文件。

3.1 创建项目结构

# 创建项目目录
mkdir baichuan-m2-deployment
cd baichuan-m2-deployment

# 创建必要的子目录
mkdir -p configs/models data/mysql data/redis logs

3.2 Docker-Compose配置文件

创建docker-compose.yml文件,这是整个部署的核心:

version: '3.8'

services:
  # Baichuan-M2模型服务
  baichuan-m2:
    image: ghcr.io/huggingface/text-generation-inference:latest
    container_name: baichuan-m2-service
    runtime: nvidia
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    ports:
      - "8080:80"
    environment:
      - MODEL_ID=baichuan-inc/Baichuan-M2-32B-GPTQ-Int4
      - QUANTIZE=gptq
      - GPTQ_BITS=4
      - GPTQ_GROUPSIZE=128
      - MAX_INPUT_LENGTH=4096
      - MAX_TOTAL_TOKENS=8192
      - MAX_BATCH_PREFILL_TOKENS=8192
      - MAX_BATCH_TOTAL_TOKENS=16384
    volumes:
      - ./models:/data
      - ./logs:/logs
    command: --model-id ${MODEL_ID} --quantize ${QUANTIZE} --gptq-bits ${GPTQ_BITS} --gptq-groupsize ${GPTQ_GROUPSIZE}
    depends_on:
      - redis
      - mysql
    restart: unless-stopped

  # MySQL数据库服务
  mysql:
    image: mysql:8.0
    container_name: baichuan-mysql
    environment:
      MYSQL_ROOT_PASSWORD: baichuan_root_password
      MYSQL_DATABASE: baichuan_db
      MYSQL_USER: baichuan_user
      MYSQL_PASSWORD: baichuan_password
    volumes:
      - ./data/mysql:/var/lib/mysql
      - ./configs/mysql.cnf:/etc/mysql/conf.d/custom.cnf
    ports:
      - "3306:3306"
    restart: unless-stopped

  # Redis缓存服务
  redis:
    image: redis:7-alpine
    container_name: baichuan-redis
    volumes:
      - ./data/redis:/data
    ports:
      - "6379:6379"
    command: redis-server --appendonly yes
    restart: unless-stopped

  # 可选:Web管理界面
  adminer:
    image: adminer:latest
    container_name: baichuan-adminer
    ports:
      - "8081:8080"
    depends_on:
      - mysql
    restart: unless-stopped

networks:
  default:
    driver: bridge

3.3 环境变量配置

创建.env文件来管理环境变量:

# 模型配置
MODEL_ID=baichuan-inc/Baichuan-M2-32B-GPTQ-Int4
QUANTIZE=gptq
GPTQ_BITS=4
GPTQ_GROUPSIZE=128

# 服务配置
MAX_INPUT_LENGTH=4096
MAX_TOTAL_TOKENS=8192
MAX_BATCH_PREFILL_TOKENS=8192
MAX_BATCH_TOTAL_TOKENS=16384

# 数据库配置
MYSQL_ROOT_PASSWORD=baichuan_root_password
MYSQL_DATABASE=baichuan_db
MYSQL_USER=baichuan_user
MYSQL_PASSWORD=baichuan_password

4. 部署与启动

一切准备就绪后,现在开始部署服务。

4.1 启动所有服务

# 在项目根目录下执行
docker-compose up -d

这个命令会在后台启动所有服务。首次运行时会下载所需的Docker镜像,这可能需要一些时间,具体取决于你的网络速度。

4.2 查看服务状态

# 查看所有容器状态
docker-compose ps

# 查看日志输出
docker-compose logs -f baichuan-m2

如果一切正常,你应该看到类似下面的输出:

baichuan-m2-service | Starting text generation inference
baichuan-m2-service | Downloading model files...
baichuan-m2-service | Model loaded successfully

4.3 模型下载说明

首次启动时,系统会自动从Hugging Face下载模型文件。由于模型较大(约60GB),下载可能需要较长时间。你可以通过以下命令查看下载进度:

docker-compose logs -f baichuan-m2 | grep -i "download"

如果下载中断,可以重新启动服务,下载会从中断处继续。

5. 服务验证与测试

部署完成后,需要验证服务是否正常工作。

5.1 检查服务健康状态

# 检查模型服务健康状态
curl http://localhost:8080/health

# 检查MySQL连接
docker exec -it baichuan-mysql mysql -ubaichuan_user -pbaichuan_password -e "SELECT 1"

# 检查Redis连接
docker exec -it baichuan-redis redis-cli ping

5.2 测试模型推理

创建一个测试脚本来验证模型功能:

# test_inference.py
import requests
import json

url = "http://localhost:8080/generate"
headers = {"Content-Type": "application/json"}

payload = {
    "inputs": "出现蚊虫叮咬后肿胀很大,需要帮助消肿",
    "parameters": {
        "max_new_tokens": 512,
        "temperature": 0.7,
        "top_p": 0.9
    }
}

response = requests.post(url, headers=headers, data=json.dumps(payload))
result = response.json()

print("生成的文本:")
print(result["generated_text"])

运行测试脚本:

python3 test_inference.py

如果一切正常,你应该能看到模型生成的医疗建议文本。

5.3 使用Web界面

通过Adminer管理数据库:

  • 访问:http://你的服务器IP:8081
  • 系统:MySQL
  • 服务器:mysql
  • 用户名:baichuan_user
  • 密码:baichuan_password
  • 数据库:baichuan_db

6. 常用管理命令

日常运维中可能会用到的一些命令:

6.1 服务管理

# 停止所有服务
docker-compose down

# 重启特定服务
docker-compose restart baichuan-m2

# 查看服务资源使用情况
docker stats

# 进入容器内部
docker exec -it baichuan-m2-service bash

6.2 日志管理

# 查看实时日志
docker-compose logs -f

# 查看特定服务的日志
docker-compose logs baichuan-m2

# 清理旧日志
sudo find ./logs -name "*.log" -type f -mtime +7 -delete

6.3 备份与恢复

# 备份数据库
docker exec baichuan-mysql sh -c 'exec mysqldump -ubaichuan_user -p"baichuan_password" baichuan_db' > backup.sql

# 恢复数据库
docker exec -i baichuan-mysql sh -c 'exec mysql -ubaichuan_user -p"baichuan_password" baichuan_db' < backup.sql

7. 常见问题解决

部署过程中可能会遇到的一些问题及解决方法:

7.1 GPU相关问题

问题:GPU无法识别

# 检查NVIDIA驱动
nvidia-smi

# 安装NVIDIA容器工具包
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

7.2 内存不足问题

如果遇到内存不足的错误,可以调整Docker资源限制:

# 编辑Docker配置
sudo nano /etc/docker/daemon.json

# 增加以下内容
{
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}

7.3 模型下载缓慢

如果从Hugging Face下载模型速度慢,可以考虑预先下载:

# 使用huggingface-hub工具下载
pip install huggingface-hub
huggingface-cli download baichuan-inc/Baichuan-M2-32B-GPTQ-Int4 --local-dir ./models

8. 总结

通过本文的步骤,你应该已经成功在Ubuntu20.04上部署了Baichuan-M2-32B-GPTQ-Int4模型及其配套服务。这个Docker-Compose方案提供了完整的一键部署体验,包含了模型服务、数据库和缓存等必要组件。

实际使用中,这个部署方案表现稳定,医疗推理能力强大,特别适合需要处理医疗相关任务的场景。如果遇到任何问题,可以参考常见问题解决部分,或者查看相关日志来排查问题。

记得定期检查服务状态和资源使用情况,确保服务稳定运行。如果需要扩展或调整配置,可以相应修改docker-compose.yml文件来满足你的具体需求。


获取更多AI镜像

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

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐