【高效部署】Ollama GPU版在华为云CentOS 7.X上的Docker实践
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 -
更多推荐
所有评论(0)