Ubuntu server下使用Ollama+GPU+NVLink运行deepseek

本文将介绍:
1.如何在Ubuntu server上安装ollama并运行deepseek-r1模型。(CPU运行)
2.如何在Ubuntu-server上安装nvidia驱动和cuda。(GPU运行)
3.如何使用显卡nvlink。(多GPU+NVLink运行)

一、Ubuntu server安装ollama并运行deepseek-r1

ollama简介

Ollama是一个致力于推动本地人工智能模型开发和应用的工具和平台,可以使用ollama在本地运行、管理和调用各种AI模型。随着AI领域蓬勃发展,ollama以其便捷性高、模型资源丰富等特点已然成为当前本地运行大模型的首选工具。

安装步骤

1.系统更新

sudo apt update && sudo apt upgrade -y

2.使用ollama安装脚本

一条命令安装

curl -fsSL https://ollama.com/install.sh | sh

脚本安装会从GitHub下载资源,有条件建议科学上网,否则需要重试n次。

该自动化脚本会完成ollama的自动安装,执行完毕后使用ollama --version验证安装

请添加图片描述

安装完成后可以配置ollama开机自启systemctl enable ollama

3.设置局域网访问

如果ollama运行在本地GPU服务器等场景下,需要配置局域网访问才能调用ollama api。

配置环境变量export OLLAMA_HOST=0.0.0.0:11434

编辑ollama配置文件sudo vim /etc/systemd/system/ollama.service在[Service]加上Environment="OLLAMA_HOST=0.0.0.0:11434"

请添加图片描述

使用systemctl daemon-reload加载配置文件

重启ollama:systemctl restart ollama

4.配置防火墙端口

个人认为iptables足矣,可以选择直接sudo ufw disable关闭ufw防火墙,如果选择不关闭则按如下命令更新规则。

配置防火墙端口:sudo ufw allow 11434/tcp

最后可以使用任意局域网内设备访问http://服务器地址:11434验证局域网内是否可访问

请添加图片描述

5.运行大模型

如果选择CPU运行可直接进行此步骤,如果使用GPU运行需要先跳转到二、安装nvidia驱动和CUDA

ollama可以使用ollama run命令一键运行模型,如果模型未下载会先下载指定模型。同时还可以使用ollama list显示已下载的模型,使用ollama pull下载模型但是不运行等操作。

在https://ollama.com/search处可以看到ollama官方提供的模型列表。以deepseek-r1:32b为例,直接运行ollama run deepseek-r1:32b,如该模型未下载,ollama会先执行下载操作,下载完毕后运行。

ollama的下载操作普遍存在刚开始速度快,越下速度越慢的现象,通过科学上网也无法解决。如果知道原因或有好的解决方案欢迎讨论交流,目前有解决方案是利用ollama下载支持断点续传的特性,通过脚本在下载降速前结束下载而后再继续下载来避免单次下载时间长而慢,如果不嫌烦的话也可以在速度降下来后手动结束下载再运行ollama run deepseek-r1:32b继续下载。

运行成功后即可在命令行进行简单的对话操作,也可以通过ollama api来开发自己的AI应用。

请添加图片描述

二、安装nvidia驱动和CUDA

Ubuntu LTS和server在默认情况下都无法使用NVIDIA GPU,需要安装驱动和CUDA才能使用GPU运行模型。

1.安装nvidia驱动

查看是否安装gcc

gcc -v

如果未安装,运行sudo apt-get install build-essential

禁用nouveau驱动

Nouveau是一个开源的NVIDIA显卡驱动程序,由社区开发,通过对NVIDIA官方驱动进行逆向工程而来。它是X.Org的一部分,支持大多数NVIDIA显卡,优点是开源、与Linux内核和其他开源组件集成良好,通常在大多数Linux发行版中默认包含。但它的性能通常不如NVIDIA官方驱动,且对最新硬件的支持滞后,缺乏某些高级功能。

Nouveau和NVIDIA官方驱动程序都用于控制NVIDIA GPU,但一次只能有一个驱动程序控制GPU。Nouveau在内核中执行模式设置,即使X未运行,Nouveau也会被使用,其内核模块无法卸载,这将阻止NVIDIA内核模块加载。因此,在安装NVIDIA驱动之前,必须禁用Nouveau的内核模式设置。

使用sudo vim /etc/modprobe.d/blacklist-nouveau.conf添加以下内容:

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

关闭nouveau:

echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf

完成后,重新生成内核并重启:

sudo update-initramfs -u
sudo reboot

重启后,执行lsmod | grep nouveau,如果没有输出则证明禁用nouveau成功,可以继续进行下面操作。

驱动安装

执行ubuntu-drivers devices获取可用驱动信息

请添加图片描述

建议直接安装带recommended的驱动版本,我这里是nvidia-driver-570,因此直接运行sudo apt install nvidia-driver-570

安装完成后,可以执行nvidia-smi输出GPU状态监控,如果成功输出则安装成功。

同时,监控输出中会显示CUDA version,我这里是12.8,接下来安装对应版本的cuda toolkit:

请添加图片描述

2.安装CUDA

在https://developer.nvidia.com/cuda-toolkit-archive找到自己对应的CUDA版本。

进入具体CUDA版本页面,选择自己的系统信息和安装方式,我这里选择的安装方式是runfile,直接运行官方给出的安装命令即可:

请添加图片描述

进入安装程序后首先选择continue,然后输入accept回车

请添加图片描述

**注意!**CUDA Installer页面的Driver默认是选中状态,这里需要取消选中,因为先前已经安装好了nvidia驱动程序。取消选中后选择Install进行安装,

请添加图片描述

安装完成后sudo reboot重启,不想重启可以手动添加环境变量:sudo vim ~/.bashrc,在末尾添加如下内容

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 -V,显示信息正常则安装成功。

到这一步就可以使用GPU运行模型了,按照5.运行大模型方式即可。如果是多显卡使用nvlink,则继续进行三、启用nvlink

三、启用nvlink

NVLink是由NVIDIA开发的一种高性能互联技术,用于实现GPU之间以及GPU与CPU之间的高速、低延迟通信。其主要特点是高带宽(最新版本的NVLink 4可提供高达900 GB/s的总带宽)、低延迟以及支持多GPU直接互连。NVLink通过专用硬件通道,相比传统的PCIe接口,能够显著提升数据传输速度。

在本地运行大语言模型时,NVLink的作用主要体现在加速多GPU之间的数据通信。大语言模型通常需要多个GPU协同工作,数据在GPU之间的传输效率会直接影响模型的推理速度。对于一个包含4096个token的输入,单次all reduce通信在NVLink 3.0上的延迟仅为603微秒,而在PCIe 4.0上则高达11369微秒。这种高效的通信能力使得NVLink在处理大规模模型时能够大幅减少数据传输时间,从而提升整体推理速度。

RTX3090/TI显卡是最后一代支持NVLink的消费级游戏显卡(40系开始取消NVLink接口,只有专业显卡保留)。因为有NVLink加持,3090成为了深度学习训练的入门显卡之一。

Ubuntu下默认不支持NVLink,需要手动启用。首先需要开启驱动持久化模式,执行nvidia-smi -pm 1,使用nvidia-smi查看状态发现显卡名称后面显示为On则为成功。成功后执行sudo reboot重启。

重启后执行nvidia-smi topo -m发现GPU间已启用NVLink连接:

请添加图片描述

至此可以使用多显卡高效本地运行大模型,运行方式参照5.运行大模型

### 配置 Ollama 使用 GPU 加速 为了使 Ubuntu 上的 Ollama 服务能够充分利用 N 卡 GPU 进行加速,需按照特定流程完成必要的软件栈部署。 #### 安装 NVIDIA 容器工具 确保已安装最新版本的 Docker 后,通过官方渠道获取并安装 NVIDIA 容器运行时环境以及相关驱动程序[^1]。这一步骤对于让容器识别宿主机上的 GPU 设备至关重要。 ```bash 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 ``` #### 创建 `docker-compose.yml` 文件支持 GPU 编辑或创建一个新的 `docker-compose.yml` 文件,在其中定义服务的同时指定使用 GPU 资源的方式: ```yaml version: '3' services: ollama_service: image: your_ollama_image_name deploy: resources: reservations: devices: - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=compute,utility runtime: nvidia ``` 上述 YAML 片段中的关键部分在于设置 `runtime: nvidia` 和指定了 GPU 的资源预留策略,从而允许容器内的应用程序访问到物理 GPU 并调用其计算能力。 #### 测试 GPU 支持情况 启动由 Compose 编排的服务之后,可以通过进入正在运行的容器内部执行命令来验证是否成功启用了 GPU 功能: ```bash docker exec -it <container_id> nvidia-smi ``` 如果一切正常,则会显示有关当前系统中可用 GPU 的信息列表及其工作状态。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值