最全面部署指南:轻松在Ollama上安装与配置DeepSeek R1-32B!
〇、本文术语
0.1、CUDA
CUDA 是什么?
CUDA(Compute Unified Device Architecture)是 NVIDIA 开发的一个并行计算平台和编程模型,旨在利用图形处理器(GPU)的强大计算能力来加速各种应用程序的执行。
主要组成部分:
CUDA Toolkit: 提供开发人员所需的工具、库和文档,用于编写、构建和优化 CUDA 应用程序。
CUDA Runtime API: 一组高级函数接口,简化了在 GPU 上执行计算任务的过程。
CUDA Driver API: 提供低级接口,允许开发者更直接地与 GPU 进行通信和管理。
CUDA Libraries: 包括优化过的数学库(如 cuBLAS、cuFFT 等),这些库可以加速常见数值运算的执行。
工作原理:
并行计算: CUDA 允许在 GPU 上同时执行大量线程,从而实现高效的并行计算。
核函数 (Kernel Functions): 开发者使用特殊语法扩展(如 global 和 device)编写在 GPU 上执行的代码段,这些代码段被称为核函数。
内存管理: CUDA 提供了高效的数据传输机制,允许开发者将数据从 CPU 传输到 GPU 并在计算完成后返回结果。
应用领域:
科学计算: 在需要处理大量数据和复杂算法的领域(如物理学、化学、生物学)中,CUDA 可以显著加速计算过程。
数据分析与机器学习: CUDA 被广泛应用于训练深度学习模型、执行大数据分析等任务,利用 GPU 的并行计算能力提升性能。
图形渲染与视觉效果: 由于 GPU 在处理图像和视觉数据方面的天然优势,CUDA 在影视制作、虚拟现实等领域也有重要应用。
一、环境介绍
资源名称 | 信息 |
---|---|
操作系统 | CentOS Linux release 8.5.2111 |
框架 | Ollama |
模型 | DeepSeek R1-32B |
GPU | NVIDIA A100 *1 80GB |
CPU | AMD EPYC 7V13 64-Core Processor *24 |
内存 | 216 GB |
磁盘 | 512GB SSD |
以上是本文的实验环境,根据个人环境使用需求得出,并不代表推荐或最低要求配置。
有没有推荐的配置?
我该选择哪个模型?
二、环境检查
在开始操作之前检查一遍环境还是有必要的
了解操作系统软件版本,以RHEL系列为例:
[root@T-GPU-07 ~]# cat /etc/redhat-release
CentOS Linux release 8.5.2111
查看PCI总线上是否识别到了显卡设备,并确认显卡型号和显存容量
[root@T-GPU-07 ~]# lspci | grep -i nvidia
0001:00:00.0 3D controller: NVIDIA Corporation GA100 [A100 PCIe 80GB] (rev a1)
[root@T-GPU-07 ~]#
查看CPU核数
[root@T-GPU-07 ~]# cat /proc/cpuinfo |grep processor |wc -l
24
[root@T-GPU-07 ~]#
查看内存容量
[root@T-GPU-07 ~]# free -g
total used free shared buff/cache available
Mem: 216 2 194 0 19 212
Swap: 0 0 0
[root@T-GPU-07 ~]#
查看磁盘容量
[root@T-GPU-07 ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 109G 0 109G 0% /dev
tmpfs tmpfs 109G 0 109G 0% /dev/shm
tmpfs tmpfs 109G 8.6M 109G 1% /run
tmpfs tmpfs 109G 0 109G 0% /sys/fs/cgroup
/dev/sda2 xfs 512G 42G 470G 9% /
/dev/sda1 xfs 496M 213M 283M 43% /boot
/dev/sda15 vfat 495M 7.3M 488M 2% /boot/efi
/dev/sdb1 ext4 63G 53M 60G 1% /mnt/resource
tmpfs tmpfs 22G 0 22G 0% /run/user/1001
[root@T-GPU-07 ~]#
三、了解和安装ollama
3.1 什么是ollama?
Ollama 是一个开源的深度学习框架,主要用于构建和部署机器学习模型。它提供了灵活且高效的工具,支持多种深度学习任务,如图像识别、自然语言处理等。
主要特点:
- 简洁易用:API 简洁,方便快速上手。
- 高性能:优化的计算引擎,加速模型训练和推理。
- 跨平台支持:支持多操作系统和硬件(如 CPU、GPU)。
- 社区驱动:开源项目,依赖社区贡献和维护。
使用场景:
- 研究:快速原型设计和实验。
- 生产部署:将模型部署到服务器或移动设备。
3.2 通过官网安装ollama
通过Ollama官网提供的安装脚本部署:Ollama官网
将命令拷贝到虚拟机执行:
curl -fsSL https://ollama.com/install.sh | sh
详细的脚本内容可直接访问https://ollama.com/install.sh
查看
这个脚本通过检测操作系统、识别包管理器、检查GPU和CUDA的状态,选择合适的安装方法来自动化NVIDIA CUDA驱动的安装过程。它还处理内核模块的加载,解决 Nouveau 驱动的冲突,并确保驱动在重启后仍然有效。整个流程自动化程度高,极大地方便了用户的安装体验。
执行完毕后检查是否成功安装NVIDIA 显卡驱动和CUDA
nvcc
是NVIDIA CUDA Compiler
的缩写,用于编译CUDA代码。
-V
或--version
参数用于显示当前安装的CUDA编译器版本信息。
[root@T-GPU-07 ~]# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Mar_28_02:18:24_PDT_2024
Cuda compilation tools, release 12.4, V12.4.131
Build cuda_12.4.r12.4/compiler.34097967_0
[root@T-GPU-07 ~]#
nvidia-smi
是NVIDIA System Management Interface
的缩写,用于监控和管理NVIDIA GPU设备。
主要功能包括:查看GPU使用情况、温度、功耗、监控进程等。
[root@T-GPU-07 ~]# nvidia-smi
Tue Feb 11 05:45:56 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.144.03 Driver Version: 550.144.03 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA A100 80GB PCIe Off | 00000001:00:00.0 Off | 0 |
| N/A 44C P0 65W / 300W | 21933MiB / 81920MiB | 0% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 9454 C ...rs/cuda_v12_avx/ollama_llama_server 21920MiB |
+-----------------------------------------------------------------------------------------+
[root@T-GPU-07 ~]#
如何查看Ollama是否成功
[root@T-GPU-07 ~]# ollama
Usage:
ollama [flags]
ollama [command]
Available Commands:
serve Start ollama
create Create a model from a Modelfile
show Show information for a model
run Run a model
stop Stop a running model
pull Pull a model from a registry
push Push a model to a registry
list List models
ps List running models
cp Copy a model
rm Remove a model
help Help about any command
Flags:
-h, --help help for ollama
-v, --version Show version information
Use "ollama [command] --help" for more information about a command.
[root@T-GPU-07 ~]#
修改Ollama的配置,默认情况下,Ollama 仅监听 127.0.0.1:11434,需修改为允许外部访问:
sudo vim /etc/systemd/system/ollama.service
# 在service段下新增一行
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
# 保存后需要重载和重启服务
sudo systemctl daemon-reload
sudo systemctl restart ollama
3.3 Ollama脚本未能成功安装驱动和CUDA
手动安装NVIDIA驱动
安装必要的组件
sudo yum install gcc
sudo yum install gcc-c++
sudo yum -y install kernel-devel
sudo yum -y install kernel-headers
sudo yum -y install epel-release
sudo yum -y install dkms
备份并修改配置文件
vim /usr/lib/modprobe.d/dist-blacklist.conf
# 添加以下两行内容
# 禁用nouveau显卡驱动
blacklist nouveau
options nouveau modeset=0
# 注释这一行
# blacklist nvidiafb
重建 initramfs image
了解基本概念:
initramfs(Initial RAM File System) 是Linux启动过程中使用的临时根文件系统,存储在内存中。
initramfs图像 指的是生成这个初始内存文件系统的镜像文件。
作用和重要性:
加载必要的驱动程序和工具:内核无法直接访问复杂的文件系统或硬件设备,因此需要通过“initramfs”提供基本的驱动程序和支持工具。
完成系统初始化:在正式根文件系统被挂载之前,“initramfs”负责执行关键的系统初始化任务。
创建和管理:
使用mkinitramfs命令:大多数Linux发行版提供了“mkinitramfs”或类似的工具,用于生成“initramfs图像”。
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
重启服务器
reboot
查看nouveau是否禁用, 如果没有输出代表成功
lsmod | grep nouveau
下载显卡驱动
英伟达官网:https://www.nvidia.cn/drivers/lookup/
输入显卡信息,可以参考以下内容:
下载到本地后需要自行上传到服务中。
上传后赋予运行权限以安装驱动
chmod +x NVIDIA-Linux-x86_64-440.118.02.run
执行脚本安装驱动
sh ./NVIDIA-Linux-x86_64-440.118.02.run
安装脚本过程中需要选择配置一些选项
输入accept后:
CUDA Installer
-[X] Driver
[X] 450.51.06
+[X] CUDA Toolkit 11.0
[X] CUDA Samples 11.0
[X] CUDA Demo Suite 11.0
[X] CUDA Documentation 11.0
Options
Install
直接选择install
其他询问配置参考
dkms: yes
32 位兼容: yes
nvidia-xconfig: no
至此显卡驱动安装结束,输入nvidia-smi
命令检查是否正常
安装CUDA
从官网获取安装包下载: CUDA
赋予执行权限以执行安装脚本
chmod +x cuda_12.4.1_550.54.15_linux.run
sudo sh cuda_12.4.1_550.54.15_linux.run
输入accept接受协议,回车取消driver安装选项
安装完毕显示以下内容:
[root@T-GPU-07 nvidia-driver]# sh ./cuda_12.4.1_550.54.15_linux.run
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-12.4/
Please make sure that
- PATH includes /usr/local/cuda-12.4/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-12.4/lib64, or, add /usr/local/cuda-12.4/lib64 to /etc/ld.so.conf and run ldconfig as root
To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-12.4/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 550.00 is required for CUDA 12.4 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run --silent --driver
Logfile is /var/log/cuda-installer.log
[root@T-GPU-07 nvidia-driver]#
CUDA导出为环境变量
编辑配置文件
vi ~/.bashrc
在then 和 fi 块中添加
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
在当前shell中执行,使环境变量生效
source ~/.bashrc
检查是否安装成功
nvcc -V
四、Ollama启动DeepSeek R1-32B模型
运行模型
ollama run deepseek-r1:32b
检查端口是否在监听
[root@T-GPU-07 ~]# netstat -tlunap |grep oll
tcp 0 0 127.0.0.1:38127 0.0.0.0:* LISTEN 13837/ollama_llama_
tcp6 0 0 :::11434 :::* LISTEN 1424/ollama
tcp6 0 0 10.0.0.5:11434 111.11.11.30:2881 ESTABLISHED 1424/ollama
tcp6 0 0 10.0.0.5:11434 111.11.11.26:2103 ESTABLISHED 1424/ollama
tcp6 0 0 10.0.0.5:11434 111.11.11.26:2107 ESTABLISHED 1424/ollama
tcp6 0 0 10.0.0.5:11434 111.11.11.30:2880 ESTABLISHED 1424/ollama
tcp6 0 0 10.0.0.5:11434 111.11.11.30:2882 ESTABLISHED 1424/ollama
[root@T-GPU-07 ~]#
五、应用
这里以ChatBoxAI为例。