1. 环境准备:华为云CentOS 7.X基础配置

在华为云CentOS 7.X服务器上部署Ollama GPU版本前,需要确保基础环境符合要求。我实测发现,华为云的弹性云服务器(ECS)选择计算加速型实例(如p2s/p2v规格)最为合适,这类机型配备NVIDIA Tesla T4或V100显卡,完美支持CUDA计算。建议配置至少4核CPU、16GB内存,系统盘选择40GB以上的SSD云硬盘。

安装系统后首先要关闭防火墙和SELinux,这个坑我踩过三次。执行以下命令:

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

接着更新系统基础组件:

yum -y update
yum -y install epel-release
yum -y groupinstall "Development Tools"
yum -y install kernel-devel-$(uname -r) kernel-headers-$(uname -r)

这里有个细节要注意:kernel-devel版本必须与当前内核完全一致,否则后续NVIDIA驱动安装会失败。可以用uname -r查看内核版本,再用yum list kernel-devel确认仓库是否有对应版本。

2. GPU驱动与CUDA工具链安装

2.1 NVIDIA驱动部署

华为云部分机型已预装驱动,建议先用nvidia-smi检查。如果未安装,需要手动部署:

# 添加ELRepo仓库
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

# 安装驱动(以470版本为例)
yum -y install nvidia-detect
nvidia-detect -v
yum -y install kmod-nvidia

安装后需要配置持久化模式,否则GPU可能进入省电状态:

nvidia-smi -pm 1

2.2 CUDA Toolkit配置

建议使用CUDA 11.7版本,兼容性最好。通过官方仓库安装:

wget https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
mv cuda-rhel7.repo /etc/yum.repos.d/cuda.repo
yum -y install cuda-11-7

关键环境变量配置(写入~/.bashrc):

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

验证安装时我发现个小技巧:用nvcc --version看版本号的同时,最好运行/usr/local/cuda/extras/demo_suite/deviceQuery测试实际计算能力。

3. Docker环境搭建与GPU支持

3.1 Docker-CE安装

官方源安装太慢,改用阿里云镜像:

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce-23.0.6 docker-ce-cli-23.0.6 containerd.io

配置镜像加速(创建/etc/docker/daemon.json):

{
  "registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}

启动服务并设置开机自启:

systemctl enable docker
systemctl start docker

3.2 NVIDIA Container Toolkit

这是让Docker支持GPU的关键组件:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.repo | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
yum -y install nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker
systemctl restart docker

验证GPU是否对Docker可见:

docker run --rm --gpus all nvidia/cuda:11.7.1-base-ubuntu20.04 nvidia-smi

如果看到与宿主机相同的GPU信息输出,说明配置成功。

4. Ollama容器化部署实战

4.1 基础容器部署

使用官方镜像启动服务:

docker run -d --name ollama \
  --gpus all \
  -v ollama_data:/root/.ollama \
  -p 11434:11434 \
  --restart always \
  ollama/ollama

这里有个性能优化点:数据卷建议挂载到SSD云盘,华为云可以额外挂载一块高效云盘,然后这样启动:

mkdir -p /data/ollama
docker run ... -v /data/ollama:/root/.ollama ...

4.2 模型下载与测试

我推荐先下载小模型测试:

docker exec -it ollama ollama pull qwen:0.5b

大模型如llama2需要更多资源:

docker exec -it ollama ollama pull llama2:13b

下载进度可以通过日志查看:

docker logs -f ollama

4.3 WebUI集成

推荐使用open-webui项目:

docker run -d \
  -p 3000:8080 \
  -e OLLAMA_BASE_URL=http://<内网IP>:11434 \
  -v open_webui:/app/backend/data \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

安全组需要放行3000端口。访问时用http://<公网IP>:3000,首次登录要注册账号。我在华为云上实测发现,WebUI启动较慢(约3-5分钟),可以通过docker logs -f open-webui查看进度。

5. 性能调优与问题排查

5.1 容器资源限制

建议通过--cpus--memory限制资源:

docker update --cpus 4 --memory 16g ollama
docker update --cpus 2 --memory 4g open-webui

5.2 常见问题解决方案

问题1:模型下载中断

# 进入容器手动继续下载
docker exec -it ollama bash
ollama pull qwen:0.5b

问题2:GPU显存不足

# 修改模型加载方式(以llama2为例)
docker exec -it ollama ollama run llama2:7b --num_gpu 1

问题3:端口冲突

# 查看占用端口
netstat -tunlp | grep 11434
# 修改Ollama启动端口
docker run ... -p 11435:11434 ...

华为云特有的网络问题:如果遇到下载速度慢,可以尝试绑定EIP后,在容器内设置代理:

docker exec -e http_proxy=http://<代理IP>:<端口> -it ollama ollama pull ...

最后建议设置定时任务清理缓存:

(crontab -l 2>/dev/null; echo "0 3 * * * docker exec ollama sh -c 'rm -rf /root/.ollama/.cache/*'") | crontab -
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐