使用Docker部署ollama,无法利用宿主机的GPU资源做CUDA并行加速计算(回答:NVIDIA CUDA Toolkit和NVIDIA Container toolkit能同时安装吗?)

动态监视docker容器中Ollama的透传过去的英伟达显卡记录 

sudo docker exec -it ollama watch -n 1 nvidia-smi

查看ollama正在运行模型的情况: 

sudo docker exec -it ollama ollama ps

动态监视英伟达显卡记录 

sudo watch -n 1 nvidia-smi

发现记录虽然有cuda版本,但并不代表已经安装了cuda:

nvidia-smi显示的CUDA Version指的是这个驱动支持的最新版本的CUDA,而非安装的CUDA ,下载英伟达驱动的时候CUDA不会默认安装,需要手动安装

 验证宿主机上CUDA是否安装

nvcc --version

报错:

由于ollama官网是只让下载了,docker运行ollama只需要NVIDIA Container Toolkit就可以了,但是只有NVIDIA Container Toolkit 确实能实现GPU的透传,能够使用宿主机的GPU,却无法调用宿主机的CUDA 核心做加速计算,因为宿主机的cuda没有安装,使用 NVIDIA Container Toolkit 时,不需要在容器内部单独安装 CUDA,因为容器可以利用宿主机上的 NVIDIA 驱动和 CUDA 环境,所以我们再宿主机上安装CUDA即可

正确的顺序是先装驱动,再装cuda工具包,然后装容器工具包
Ollama is now available as an official Docker image · Ollama Blog 
如何下载NVIDIA Container Toolkit:
Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit


 

CUDA是GPU加速计算的核心依赖,发现并没有安装CUDA Toolkit ,需要安装相应驱动的CUDA:

使用以下命令查看当前驱动CUDA的版本,安装驱动支持的最新版本的CUDA

sudo nvidia-smi

nvidia-smi显示的CUDA Version指的是这个驱动支持的最新版本的CUDA,而非安装的CUDA 

 这里nvidia-smi显示的CUDA Version是12.8,你需要修改为你自己驱动对应的CUDA版本

# 添加NVIDIA CUDA仓库
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/ /"

# 安装CUDA 12.8
sudo apt update
sudo apt install -y cuda-toolkit-12-8

配置环境变量

如何添加环境变量?
# 编辑 ~/.bashrc(仅影响当前用户)

 vi ~/.bashrc
# CUDA 12.8
export PATH=/usr/local/cuda-12.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH

然后运行:

source ~/.bashrc

验证是否生效:

nvcc --version

 重启 Docker 服务

# 重启 Docker 服务
sudo systemctl restart docker

在容器内运行 CUDA 示例程序验证计算能力:

docker run --gpus all -it --rm nvidia/cuda:12.8.0-runtime-ubuntu22.04 /bin/bash

 也可进入ollama容器使用

nvcc --version

显示如下,说明宿主机上的CUDA程序也被透传到了容器内 ,可以做CUDA并行加速计算了

 如何宿主机内的CUDA已经安装,但是容器内nvcc 仍然 检查不到cuda版本,可能是安装顺序错了,NVIDIA CUDA Toolkit和NVIDIA Container toolkit能同时安装,都是装在宿主机上,正确的顺序是先装英伟达驱动,再装cuda工具包 NVIDIA CUDA Toolkit,然后装容器工具包NVIDIA Container Toolkit

可以在宿主机内重新安装一遍NVIDIA Container Toolkit,然后重启docker服务,再进入docker即可看到cuda已经成功透传,​Ollama​​ 会自动使用 ​​CUDA​​ 进行 GPU 加速,所以docker容器内cuda能被检测到即可

后续还可以在宿主机上安装cudnnCUDA Deep Neural Network library),继续透传,进一步加速计算

PS:驱动、CUDA、 cudnn的关系:

CUDA依赖于驱动运行,而cudnn有依赖于CUDA 运行,所以安装顺序是先安装驱动再安装CUDA再安装cudnn

CUDA 相当于工作台,cudnn相当于工作台上的螺丝刀,运行ollama等大语言模型相当于拧螺丝的工作,有了CUDA 工作更快,但是还是用手上螺丝,有了cudnn就更快了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值