惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
Recent Announcements
Recent Announcements
IT之家
IT之家
人人都是产品经理
人人都是产品经理
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
大猫的无限游戏
大猫的无限游戏
U
Unit 42
罗磊的独立博客
博客园 - Franky
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
SecWiki News
SecWiki News
V
Vulnerabilities – Threatpost
P
Privacy International News Feed
P
Palo Alto Networks Blog
F
Fortinet All Blogs
P
Proofpoint News Feed
博客园 - 叶小钗
C
CERT Recently Published Vulnerability Notes
T
Tor Project blog
Spread Privacy
Spread Privacy
S
Securelist
C
Cisco Blogs
I
Intezer
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Cyberwarzone
Cyberwarzone
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy & Cybersecurity Law Blog
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
S
Schneier on Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
GbyAI
GbyAI
T
Troy Hunt's Blog
T
Threatpost
博客园 - 司徒正美
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
AWS News Blog
AWS News Blog
T
The Blog of Author Tim Ferriss
G
GRAHAM CLULEY
N
Netflix TechBlog - Medium
酷 壳 – CoolShell
酷 壳 – CoolShell
Google DeepMind News
Google DeepMind News
Know Your Adversary
Know Your Adversary
S
SegmentFault 最新的问题

任霏博客

我将关闭服务器:AI彻底掐死了奄奄一息的个人博客 - 博客文章 - 任霏的个人博客网站 Vibe Coding 实现本地模型 Token 自由 IntelliJ IDEA + LM Studio + LM Link + Continue - 博客文章 - 任霏的个人博客网站 1Password涨价后,别急着退订1Password,这个操作能帮你省25% - 博客文章 - 任霏的个人博客网站 我,吃饱了撑的注册了个域名,Cloudflare账号没了,不建议将域名放在Cloudflare - 博客文章 - 任霏的个人博客网站 临时邮箱:保护隐私与免骚扰的新方式 - 博客文章 - 任霏的个人博客网站 价值4100万美元SOL被盗SwissBorg在Solana上遭遇安全事件超200万枚ETH排队退出质押 - 博客文章 - 任霏的个人博客网站 注意 Web3 钱包遭遇 NPM 超大规模供应链攻击投毒事件 - 博客文章 - 任霏的个人博客网站 我受到以太坊ERC-20假代币地址投毒攻击记录一下大家谨防上当受骗 - 博客文章 - 任霏的个人博客网站 在2025年使用显卡 NVIDIA RTX 2080 Ti 挖矿收益记录和分析还能不能挖矿 - 博客文章 - 任霏的个人博客网站 分享我是如何成功戒烟的经验(包含失败的经验) - 博客文章 - 任霏的个人博客网站 在 OpenWRT 中配置 PassWall2 插件的教程记录 - 博客文章 - 任霏的个人博客网站 Office Professional Plus 2019 VL 版下载与 KMS 激活 - 博客文章 - 任霏的个人博客网站 最近几天我的 CDN 流量受到来自电信[山东烟台]、[江苏扬州]两地家庭宽带的攻击 - 博客文章 - 任霏的个人博客网站 各代英特尔Intel芯片组主板适配兼容的CPU和DDR内存数据统计 - 博客文章 - 任霏的个人博客网站 GitLab Global 国际站将在60天内删除中国大陆、香港、澳门地区的账号 - 博客文章 - 任霏的个人博客网站 Github Copilot Free 开放免费版所有人均可使用 OpenAI GPT-4o、Anthropic Claude 3.5 AI 代码生成服务 - 博客文章 - 任霏的个人博客网站 Cloudflare 更新了订阅协议明确禁止优选IP和搭建梯子的行为 - 博客文章 - 任霏的个人博客网站 Linux(systemd)手动离线安装二进制(binary)MairaDB数据库指定版本 - 博客文章 - 任霏的个人博客网站 流程引擎 Flowable/Activiti 无法启动报错:liquibase - Waiting for changelog lock.... - 博客文章 - 任霏的个人博客网站 Spring Boot 全局异常捕获 ControllerAdvice 无法捕获 过滤器(Filter)和拦截器(Interceptor)中的异常 - 博客文章 - 任霏的个人博客网站 Freenom 收回了全部免费域名(.tk/.cf/.gq/.ga/.ml) - 博客文章 - 任霏的个人博客网站 Alibaba Druid 数据库连接池 takeLast() AQS 死锁导致程序无响应 - 博客文章 - 任霏的个人博客网站 你的网站加入 HSTS preload 预加载列表了吗 - 博客文章 - 任霏的个人博客网站 我的博客网站接入使用 Cloudflare 的架构分享 - 博客文章 - 任霏的个人博客网站 在 Ubuntu 上的 Nginx 高并发配置实践 - 博客文章 - 任霏的个人博客网站 技术分析黑客敲诈勒索站长的新手法百度对此也无能为力 - 博客文章 - 任霏的个人博客网站 百度站长平台快速收录权限和sitemap提交权限被全部收回 - 博客文章 - 任霏的个人博客网站 极狐 GitLab 免费时代结束不升级付费账号将禁止登陆 - 博客文章 - 任霏的个人博客网站 免费.ml域名10年委托合同到期被马里共和国收回域名经营权 - 博客文章 - 任霏的个人博客网站 从极狐Gitlab看各种中间件技术选型 - 博客文章 - 任霏的个人博客网站 时隔十年首次收到 Google AdSense 的付款 - 博客文章 - 任霏的个人博客网站 ga域名被加蓬共和国从Freenom公司手中收回域名经营权 - 博客文章 - 任霏的个人博客网站 Freenom 被 Meta(Facebook) 起诉导致暂停 .tk/.ga/.ml/.cf/.gq 等新域名注册 - 博客文章 - 任霏的个人博客网站 生花妙笔信手来 – 基于 Amazon SageMaker 使用 Grounded-SAM 加速电商广告素材生成 [1] - 博客文章 - 任霏的个人博客网站 github.renfei.net 不再完整代理 Github 页面改为代理指定文件 - 博客文章 - 任霏的个人博客网站 优雅的源代码管理(三):本地优雅的使用 Git Rebase 变基 - 博客文章 - 任霏的个人博客网站 优雅的源代码管理(二):Git 的工作原理 - 博客文章 - 任霏的个人博客网站 优雅的源代码管理(一):版本控制系统 VCS(Version Control System)与软件配置管理 SCM(Software Configuration Management) - 博客文章 - 任霏的个人博客网站 ChatGPT 开发商 OpenAI 买下极品域名 AI.com - 博客文章 - 任霏的个人博客网站 火爆的 AI 人工智能 ChatGPT 国内注册教程、使用方式和收费标准 - 博客文章 - 任霏的个人博客网站 解决 SpringCloud 中 bootstrap.yml 不识别 @activatedProperties@ 参数 - 博客文章 - 任霏的个人博客网站 Cron表达式书写教程搞定Linux、Spring、Quartz的定时任务 - 博客文章 - 任霏的个人博客网站 阿里云香港可用区C发生史诗级故障 - 博客文章 - 任霏的个人博客网站 国产统信UOS服务器操作系统V20提供免费使用授权 - 博客文章 - 任霏的个人博客网站 开源站长推送工具效果评测推荐(百度/必应/谷歌) - 博客文章 - 任霏的个人博客网站 获取公网IP服务「ip.renfei.net」升级增加地理定位数据字段公示 - 博客文章 - 任霏的个人博客网站 腾讯微信成为 GitHub 秘钥扫描合作伙伴 - 博客文章 - 任霏的个人博客网站 免费设置亚马逊远程桌面 - 博客文章 - 任霏的个人博客网站 我关站了-个人备案核查要求关闭论坛系统 - 博客文章 - 任霏的个人博客网站 Linux 中 chmod 644、755、777权限的含义和使用方法 - 博客文章 - 任霏的个人博客网站 Spring Boot 3.0 发布啦但是我还是暂时放弃升级了 - 博客文章 - 任霏的个人博客网站 过时老旧电脑安装 Windows11 跳过 Win11 TPM、RAM、Secure Boot 最低系统要求限制检查 - 博客文章 - 任霏的个人博客网站 IT资讯网站 cnBeta.com 网站被关停域名已经被 clientHold - 博客文章 - 任霏的个人博客网站 当你 git push 时,极狐GitLab上发生了什么? - 博客文章 - 任霏的个人博客网站 昨晚接口又被日了,接口被疯狂调用的背后是人是鬼?是道德的沦丧还是人性的扭曲? - 博客文章 - 任霏的个人博客网站 Mac破解软件站MacWk下线破产了,我想分享Mac破解软件却不太敢 - 博客文章 - 任霏的个人博客网站 我和极狐GitLab的故事回顾 - 博客文章 - 任霏的个人博客网站 极狐 GitLab 可以集成石墨文档作为Wiki管理了 - 博客文章 - 任霏的个人博客网站 关于基于极狐 GitLab 的知识库探索思路 - 博客文章 - 任霏的个人博客网站 在极狐 Gitlab 流水线配置里设置镜像拉取策略 - 博客文章 - 任霏的个人博客网站 极狐 GitLab Markdown 可排序、可过滤的数据表格实现 - 博客文章 - 任霏的个人博客网站 极狐 GitLab Issue 统计的思路分享 - 博客文章 - 任霏的个人博客网站 把极狐 GitLab Runner 搬回家运行,指定专属 Runner - 博客文章 - 任霏的个人博客网站 给极狐 GitLab SaaS 安装百度统计代码统计仓库访问量 - 博客文章 - 任霏的个人博客网站 关于我在极狐GitLab造机器人这件事儿我觉得很酷 - 博客文章 - 任霏的个人博客网站 如何参与极狐GitLab开源项目成为贡献者 - 博客文章 - 任霏的个人博客网站 关于 Cloudflare R2 Storage 的使用体验测评和我的观点 - 博客文章 - 任霏的个人博客网站 西部数据(WD40NMZW) 4TB Elements(2060-800041-003)移动硬盘拆解记录 - 博客文章 - 任霏的个人博客网站 获取公网IP服务「ip.renfei.net」升级,支持根据请求头 Accept 响应不同格式数据 - 博客文章 - 任霏的个人博客网站 我站再次受到扫描攻击的公告 - 博客文章 - 任霏的个人博客网站 我站近期遭受到恶意不友好访问攻击公告 - 博客文章 - 任霏的个人博客网站 讨论下Java中的volatile和JMM(Java Memory Model)Java内存模型 - 博客文章 - 任霏的个人博客网站 Java中说的CAS(compare and swap)是个啥 - 博客文章 - 任霏的个人博客网站 大佬们在说的AQS,到底啥是个AQS(AbstractQueuedSynchronizer)同步队列 - 博客文章 - 任霏的个人博客网站 草根站长利用极狐GitLab作为图床外链 JIHULAB 101 - 博客文章 - 任霏的个人博客网站 极狐GitLab上的Building风云 - 之API如此多娇 JIHULAB 101 - 博客文章 - 任霏的个人博客网站 极狐GitLab上的Building风云 - 之Security风云再起 JIHULAB 101 - 博客文章 - 任霏的个人博客网站 极狐GitLab上的Building风云 - 之Docker风云必胜 JIHULAB 101 - 博客文章 - 任霏的个人博客网站 极狐GitLab上的Building风云 - 之Java Maven雄霸天下 JIHULAB 101 - 博客文章 - 任霏的个人博客网站 正确使用 Optional 优雅的解决 null 空指针 NPE 异常 - 博客文章 - 任霏的个人博客网站 世界排名网站Alexa将于2022年5月1日停止服务 - 博客文章 - 任霏的个人博客网站 免费IP数据库IP2Location的Java版客户端与BIN文件下载 - 博客文章 - 任霏的个人博客网站 人大金仓 KingbaseES V8 R3 安装包、驱动包和 License 下载地址 - 博客文章 - 任霏的个人博客网站 极狐(GitLab)SaaS平台内测试用报告 - 博客文章 - 任霏的个人博客网站 软件设计开发经验分享:文字应当使用透明度而不是固定色值 - 博客文章 - 任霏的个人博客网站 国内版 Gitlab.cn(极狐)正在为期一个月的内测阶段中 - 博客文章 - 任霏的个人博客网站 谷歌 Google Indexing 推送接口教程的更新 - 博客文章 - 任霏的个人博客网站 在苹果 MacOS 上基于 Docker 容器运行人大金仓(Kingbase)V8 R3 数据库的教程 - 博客文章 - 任霏的个人博客网站 软路由 OpenWRT(LEDE)x86_64 安装刷机教程 - 博客文章 - 任霏的个人博客网站 软路由 OpenWRT(LEDE)编译教程:使用 Github 的 Actions Workflows 免费云上编译教程 - 博客文章 - 任霏的个人博客网站 软路由 OpenWRT(LEDE)自己编译教程记录 - 博客文章 - 任霏的个人博客网站 Java中高级高并发与多线程系列(六):经典的生产者-消费者模型 - 博客文章 - 任霏的个人博客网站 Redis 未授权访问漏洞分析 cleanfda 脚本复现漏洞挖矿 - 博客文章 - 任霏的个人博客网站 记录一次 Redis 6379 被黑攻击 被设置主从同步和挖矿门罗币 - 博客文章 - 任霏的个人博客网站 Java中高级高并发与多线程系列(五):线程的 synchronized 同步与死锁 - 博客文章 - 任霏的个人博客网站 我要吐槽一下码云 Gitee 引用第三方图片失败和 issues 处理机制 - 博客文章 - 任霏的个人博客网站 站长推送工具发布并已开源,支持百度/必应/谷歌搜索引擎的主动推送 - 博客文章 - 任霏的个人博客网站 Java中高级高并发与多线程系列(四):线程运行状态的切换与操作 - 博客文章 - 任霏的个人博客网站 Java中高级高并发与多线程系列(三):FutureTask 类与 Callable 接口 - 博客文章 - 任霏的个人博客网站 Java中高级高并发与多线程系列(二):Thread 类与 Runnable 接口 - 博客文章 - 任霏的个人博客网站
自建AI服务器使用PVE配置显卡直通虚拟机安装驱动、CUDA和cuDNN运行LLM大模型进行AI炼丹 - 博客文章 - 任霏的个人博客网站
任霏 · 2025-02-21 · via 任霏博客

随着开源大模型的普及,还有各种大佬开源的程序,AI大模型已经逐渐普及到每个人身边了,很多同学已经可以在本地笔记本上运行大模型了,但是本地笔记本毕竟性能差,而且笔记本还需要干别的活呢,不可能一直运行大模型,我习惯用PVE,所以记录一次我的部署过程,给我未来重复部署留下指南。运行环境

  • 主板:ASUS Z97-K R2.0
  • CPU:Intel CORE i7-4790 @ 3.6GHz
  • 内存:32G[4*8G] DDR3 1600MHz
  • 显卡:NVIDIA GeForce RTX 2080 Ti 22G

这套硬件去跑4位量化的Qwen2.5 32B Q4_K_M模型是比较流畅的,整个模型全部在 GPU 和显存上运行,对 CPU 和内存几乎没有负载;如果运行更大的模型比如72B的话,就需要分配到 CPU 和内存上一部分,运行的速度就非常慢了,只能说能跑,但不好用。本文以外另一台机器

  • 主板:X99-F8D PLUS
  • CPU:2颗 Intel Xeon E5-2660 v3
  • 内存:512G[8*64G] 4DRX4 2400T
  • 显卡:2张 NVIDIA GeForce RTX 2080 Ti 22G

这台机器是可以运行满血版4位量化的 Deepseek-R1 671B Q4_K_M模型,GPU 显存放不下,所以有一部分分配到 CPU 和内存中运行,速度就很慢了,只能说可以跑,但是用的话,就不太好了,两三秒种出一个字儿。PVE 初始化设置PVE的安装过程在此处省略,我们认为你已经安装完PVE了。修改软件仓库源为清华源

cp /etc/apt/sources.list /etc/apt/sources.list.bak
nano /etc/apt/sources.list

改为:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
# deb-src https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

然后编辑/etc/apt/sources.list.d/pve-no-subscription.list文件

nano /etc/apt/sources.list.d/pve-no-subscription.list
deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve bookworm pve-no-subscription

删除企业源

rm /etc/apt/sources.list.d/ceph.list
rm /etc/apt/sources.list.d/pve-enterprise.list

更新软件源并且升级软件

apt update
apt upgrade

安装你习惯的软件我比较习惯 vim 编辑器,后续我都是用 vim 进行编辑,这里安装:

vim:apt install vim

显卡直通BIOS修改

  • 开启VT-d/AMD-Vi技术
  • 确保主板和CPU支持IOMMU(Intel VT-d或AMD-Vi)技术,并在BIOS中启用
  • 同时启用UEFI引导和禁用CSM

启用IOMMU编辑/etc/default/grub文件,在GRUB_CMDLINE_LINUX_DEFAULT中添加IOMMU相关参数:Intel系统:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

AMD系统:

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"

更新GRUB配置:

update-grub

重启系统后,检查IOMMU是否正常启用:

dmesg | grep -e DMAR -e IOMMU

配置PCI直通识别显卡的PCI设备ID: 使用以下命令查看显卡的设备ID(如01:00.0为GPU,01:00.1为显卡的音频设备):

lspci -nn | grep -i nvidia

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti Rev. A] [10de:1e07] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation TU102 High Definition Audio Controller [10de:10f7] (rev a1)
01:00.2 USB controller [0c03]: NVIDIA Corporation TU102 USB 3.1 Host Controller [10de:1ad6] (rev a1)
01:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU102 USB Type-C UCSI Controller [10de:1ad7] (rev a1)

隔离设备到VFIO驱动: 编辑/etc/modprobe.d/vfio.conf:

options vfio-pci ids=10de:1e07,10de:10f7

将10de:1e07和10de:10f7替换为你机器的实际的显卡和音频设备ID。屏蔽默认驱动: 编辑/etc/modprobe.d/blacklist.conf,添加以下内容:

blacklist nouveau
blacklist nvidia
blacklist nvidiafb
blacklist rivafb

然后生成新的initramfs:

update-initramfs -u

重启系统验证设备隔离: 重启系统后,检查设备是否被vfio-pci驱动绑定:

lspci -nnv | grep -i vfio

配置虚拟机创建虚拟机,注意是KVM虚拟机,不是CT容器,LXC不一样,需要注意的地方:

  • 类型必须选择q35
  • CPU类型必须选择 host
  • 不要选择UEFI模式,安全启动Secure Boot要验证内核签名比较麻烦
  • 在硬件中,添加PCIE设备,选择原始设备,选择我们的显卡,勾选所有功能、PCI-Express。

开启虚拟机并进入虚拟机然后虚拟机开机,通过SSH进入虚拟机。我安装的是 Ubuntu 24.04.1,安装步骤、修改软件库源为清华源在此忽略,我下面的命令都是在 root 用户下执行的;更新软件和安装需要的软件

apt update
apt upgrade
apt install gcc make dkms qemu-guest-agent

禁用开源的 nouveau 驱动,编辑 /etc/modprobe.d/blacklist-nouveau.conf 文件添加以下内容:

blacklist nouveau
options nouveau modeset=0

更新内核模块:update-initramfs -u重启系统:reboot重新SSH进入虚拟机。下载驱动:https://www.nvidia.cn/drivers/lookup/下载CUDA:https://developer.nvidia.com/cuda-downloads下载cuDNN:https://developer.nvidia.com/cudnn-downloads注意驱动和CUDA的版本要求,不是随意搭配的,我这里下载的版本是:

  • NVIDIA-Linux-x86_64-565.77.run
  • cuda_12.6.3_560.35.05_linux.run
  • cudnn-local-repo-ubuntu2404-9.6.0_1.0-1_amd64.deb

安装驱动然后先安装驱动:

sh ./NVIDIA-Linux-x86_64-565.77.run

中间的提示就是选Nvidia、选继续、同意,你不点继续就终止了。安装完成后,使用命令:nvidia-smi,当你看到下面的画面,说明安装成功!

+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 565.77                 Driver Version: 565.77         CUDA Version: 12.7     |
|-----------------------------------------+------------------------+----------------------+
| 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 GeForce RTX 2080 Ti     Off |   00000000:01:00.0 Off |                  N/A |
|  0%   50C    P0             33W /  260W |       1MiB /  22528MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

安装CUDA安装CUDA,需要禁止安装 OpenGL,加一个参数:—no-opengl-libs,表示只安装驱动文件,不安装OpenGL文件,避免Ubuntu系统的opengl冲突,否则会导致登陆界面死循环。

sh ./cuda_12.6.3_560.35.05_linux.run --no-opengl-libs

然后同意协议,需要输入:accept,敲回车然后按上下键,到 - [X] Driver 上面,按一下空格,将这个选择去掉,成为:- [ ] Driver然后按上下键,选择 Install,敲回车,开始安装,大部分情况能直接成功,我这里不知道为什么,给出了下面的提示:

===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-12.6/

Please make sure that
 -   PATH includes /usr/local/cuda-12.6/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-12.6/lib64, or, add /usr/local/cuda-12.6/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-12.6/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 560.00 is required for CUDA 12.6 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

Driver驱动没有安装是正常的,因为上面咱们自己安装了驱动,不需要CUDA帮我们再次安装了,Toolkit工具包已经安装成功,但是环境变量没有自动设置,需要手动将 /usr/local/cuda-12.6/bin 设置到 PATH 环境变量中;还有 LD_LIBRARY_PATH 环境变量、/etc/ld.so.conf文件。所以,如果你也看到了上面的提示,就跟我手动设置环境变量和/etc/ld.so.conf文件吧,如果没有这个提示,那么就忽略,直接下一步验证。修改环境变量,编辑 ~/.bashrc 文件,在文件末尾添加以下两行:

export PATH=/usr/local/cuda-12.6/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH

然后执行 source ~/.bashrc 立即生效。编辑 /etc/ld.so.conf 文件:添加 CUDA 库路径,在文件中添加:

/usr/local/cuda-12.6/lib64

然后运行 ldconfig 命令安装完成后,执行这个命令:nvcc -V,可以看到版本信息,就是成功了:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Tue_Oct_29_23:50:19_PDT_2024
Cuda compilation tools, release 12.6, V12.6.85
Build cuda_12.6.r12.6/compiler.35059454_0

安装cuDNN我的安装包是 cudnn-local-repo-ubuntu2404-9.6.0_1.0-1_amd64.deb,你需要改成你自己的,执行:

dpkg -i cudnn-local-repo-ubuntu2404-9.6.0_1.0-1_amd64.deb
cp /var/cudnn-local-repo-ubuntu2404-9.6.0/cudnn-*-keyring.gpg /usr/share/keyrings/
apt update
apt install cudnn

这个几乎没有安装失败的,所以就不验证了,还得找一个神经网络的程序运行才能验证,我懒得验证了。安装 Ollama我使用 Ollama 运行 LLM 大模型,所以我接下来是安装 Ollama 的步骤。一键安装脚本:

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

脚本执行内容是从 GitHub 上下载文件,如果你的网络受限,你可能会失败,手动安装的文档:https://github.com/ollama/ollama/blob/main/docs/linux.md我这里网络使用魔法,没有受限,所以直接自动安装完成了,如果你手动安装,需要技术支持,也可以联系我付费人工支持。输入 ollama -v 可以看到版本号,就是成功了。我这里还需要修改 /etc/systemd/system/ollama.service 文件,让 ollama 监听 0.0.0.0 IP地址,所以在服务文件中增加环境变量:

# 监听的地址和端口
Environment="OLLAMA_HOST=0.0.0.0:11434"
# 保持模型不被自动卸载
Environment="OLLAMA_KEEP_ALIVE=-1"
# 并发数
Environment="OLLAMA_NUM_PARALLEL=4"
# 模型加载超时时间,大型模型好几百G的加载很慢,所以需要设置大
Environment="OLLAMA_LOAD_TIMEOUT=90m"
# 给GPU预留的显存空间,不能占满,要不推理没地方了
Environment="OLLAMA_GPU_OVERHEAD=536870912"
# 启用 CUDA 统一内存
Environment="GGML_CUDA_ENABLE_UNIFIED_MEMORY=1"

然后重启 ollama 执行:

systemctl daemon-reload
systemctl restart ollama

使用命令,拉取模型,然后运行 ollama run 就可以开始对话了:

ollama pull deepseek-r1:32b
ollama run deepseek-r1:32b

安装Docker后续要安装Dify,依赖Docker环境,我这里一起把Docker也安装了吧,安装命令:

apt install ca-certificates curl

install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

chmod a+r /etc/apt/keyrings/docker.asc

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  
apt update

apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

下一篇文章要是有时间,咱们聊聊 Dify?