本文最后更新于28 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
一、GPU 驱动与 CUDA 安装
1. GPU 驱动核心认知
- 本质:操作系统与 GPU 硬件之间的 “翻译官”,负责让系统识别、调用并控制显卡
- 核心功能:识别硬件信息(温度 / 显存 / 功耗)、管理显存分配回收、控制运行状态(风扇 / 时钟 / ECC/MIG/ 多卡通信)
- 无驱动后果:
nvidia-smi 不可用、CUDA 失效、PyTorch 检测不到 GPU、仅基础显示无加速,显卡性能完全无法发挥
2. 驱动安装方式对比
| 安装方式 | 是否联网 | 包含内容 | 版本管理 | 适用场景 |
|---|
| APT 在线安装 | 是 | 仅驱动及系统依赖 | 仓库统一管理,易升级 / 回滚 | 有外网的生产 / 开发环境、批量自动化部署 |
| run 离线安装 | 否 | 驱动 + CUDA Toolkit + 运行库 + 示例 | 手动管理,需重新下载安装包 | 无外网、临时环境、快速安装指定版本 |
国内生产环境补充方案
- 自建内网 APT 仓库:下载一次内网复用,安全可控、可审计,适合大规模集群统一部署
- 海外专线安装:无需自建仓库,实时获取最新版,适合小规模、有更新需求的环境
3. APT 在线安装步骤(Ubuntu)
- 硬件检查:
lspci | grep -i tesla 确认物理显卡存在
- 查看支持驱动:
ubuntu-drivers devices
- 安装驱动:添加 NVIDIA 官方源 →
apt install -y nvidia-driver-535
- 重启生效:
reboot
- 安装验证:
nvidia-smi
4. SXM 机型
SXM 多卡 NVSwitch 架构服务器,安装驱动后必须安装对应版本的 Fabric Manager:
- 作用:初始化和管理 NVSwitch/NVLink Fabric
- 要求:版本必须与驱动版本严格匹配
5. CUDA Toolkit
- 定义:NVIDIA 官方 GPU 开发环境,核心包含 NVCC 编译器、CUDA 运行时库、cuDNN 深度学习库、调试分析工具
- 用途:并行计算、深度学习训练推理、图形渲染、视频图像处理
- 安装步骤:
- 下载对应版本
.run 安装包
chmod +x cuda_xxx.run 添加执行权限
- 运行安装,取消 Driver 勾选(驱动已单独安装),仅安装 CUDA Toolkit
- 配置环境变量(
~/.bashrc 中添加 PATH 和 LD_LIBRARY_PATH)
- 验证:
source ~/.bashrc 后执行 nvcc --version
驱动与 CUDA 版本对应
- 驱动 535 → CUDA 12.2;驱动 570 → CUDA 12.8;驱动 580 → CUDA 13.0
- 兼容原则:向下兼容,最终以 NVIDIA 官方兼容性文档为准
二、GPU 监控与管理命令
1. nvidia-smi(⭐)
基础命令
- 查看所有 GPU 状态:
nvidia-smi
- 查看指定 GPU:
nvidia-smi -i 0
- 核心关注 4 项指标:温度、功耗、GPU 利用率、显存占用与进程
实时监控
- 每秒自动刷新:
nvidia-smi -l 1
- 高亮变化值刷新:
watch -n 2 -d nvidia-smi
高级管理命令汇总
| 功能 | 命令 | | | |
|---|
| 查看 GPU 上运行的进程 | nvidia-smi pmon | | | |
| 重置指定 GPU(解决卡死) | nvidia-smi -i 0 -r | | | |
| 查看 GPU 拓扑矩阵 | nvidia-smi topo -m | | | |
| 查看 NVLink 链路状态 | nvidia-smi nvlink -s | | | |
| 查看功耗详细信息 | nvidia-smi -q -d POWER | | | |
| 设置 GPU 0 功耗上限为 200W | nvidia-smi -i 0 -pl 200 | | | |
| 查看 ECC 报错统计 | nvidia-smi -q -d ECC | | | |
| 查看系统层面硬件报错 | `dmesg -T | grep -iE “NVRM | Xid | ECC”` |
GPU 掉卡排查思路
- 先执行
lspci | grep -i nvidia 与 nvidia-smi 交叉判断
- lspci 可见、nvidia-smi 不可见:优先怀疑驱动、GPU 初始化、XID、Fabric Manager 等软件 / 固件问题
- lspci 也不可见:偏向 PCIe 链路、GPU 模组、SXM 基板、供电等硬件问题
- 结合交叉测试(换槽、换卡)判断故障是否转移
2. nvitop(交互式监控)
- 特点:信息更丰富、彩色界面直观、支持交互式操作、带历史趋势曲线
- 安装:
pip3 install nvitop
- 启动:
nvitop
- 常用快捷键:q 退出、h 帮助、p 按进程排序、m 按显存排序、u 按利用率排序、k 杀死进程
3. gpustat(轻量监控)
- 特点:纯 Python 实现、轻量简洁、支持 JSON 输出、易集成
- 安装:
pip3 install gpustat
- 常用命令:
gpustat:快速查看状态
gpustat --watch:实时监控
gpustat --json:JSON 格式输出,便于程序集成
三、大模型基础概念与分类
1. 大模型分类
按模态划分
- 文本大模型:处理文本输入输出,擅长问答、写作、翻译;代表:Llama 3.1、Qwen3
- 多模态大模型:同时理解文本、图片,部分支持音频视频;代表:GPT-4o、Qwen3.5-Omni
- 推理大模型:强调多步思考与复杂推理,擅长数学、代码、分析;代表:DeepSeek-R1
- 生成式媒体模型:专门生成图片 / 视频 / 音频;代表:Sora、Kling、Midjourney
按能力与用途划分
- 基座模型(Base):大规模预训练,学习通用语言规律,是所有能力的基础
- 指令 / 对话模型:在基座上做人类偏好对齐,更懂指令、擅长对话
- 推理模型:强化思考能力,复杂问题拆解能力强
- 代码 / Agent 模型:支持代码生成、工具调用、任务执行
按生态与商业模式划分
- 闭源商用:API 调用,产品成熟生态完善;代表:GPT、Claude、Gemini
- 开源开放:权重公开,可本地部署、微调、二次开发;代表:Llama、Qwen、DeepSeek
- 垂直行业模型:在通用模型基础上,面向医疗 / 金融 / 工业等场景做专业增强
2. 核心术语(必记)
| 术语 | 含义 |
|---|
| Token | 大模型处理文本的最小单位;中文 100 字≈120-180 Token |
| 上下文长度 | 模型一次最多能记住的 Token 数,如 8K、32K、128K |
| 训练 | 让模型通过海量数据学习知识与规律的过程 |
| 推理 | 使用训练好的模型回答问题、生成内容的过程 |
| 微调(Fine-tuning) | 在已有模型上用少量数据继续训练,适配特定领域 / 任务 |
| TFLOPS | GPU 算力单位,每秒万亿次浮点运算 |
| 7B/70B | 模型参数量级;1B = 10 亿参数,参数量越大能力越强、显存要求越高 |
3. 常见模型文件格式
| 格式 | 特点 | 典型场景 |
|---|
.safetensors | 安全(无可执行代码)、加载速度快,当前主流 | 服务端训练与推理 |
.pt/.pth/.bin | 传统 PyTorch 格式,存在安全漏洞、加载慢 | 旧版模型、训练流程 |
.gguf | 单文件集成(权重 + 分词器 + 配置)、极致量化,硬件要求低 | 本地部署、端侧、Ollama |
.onnx | 跨平台、脱离 Python 环境 | 端侧部署、异构硬件加速 |
4. 本地部署的核心价值
- 数据安全合规:数据流转完全在企业内网,满足金融、医疗、政务等强监管要求
- 定制化与控制权:支持深度微调、RAG 知识库搭建,模型版本完全可控
- 长期成本优势:前期一次性硬件投入,高频使用场景下 1-2 年回本,边际成本趋近于零
- 低延迟与离线可用:内网传输延迟极低,支持断网、保密、野外等离线环境
四、大模型推理框架
1. 传统部署(Transformers+PyTorch)的局限性
- 无动态批处理:串行或静态 Batch,长请求阻塞短请求,算力浪费严重、延迟高
- KV Cache 管理粗糙:为每个请求盲目预留最大显存,碎片化严重,显存利用率极低
- 缺乏生产级优化:流式输出、多卡并行、请求调度、超时重试都需自行开发,维护成本高
2. 推理框架四大核心优化
- 连续批处理(Continuous Batching) 请求生成完成立即返回,空出的位置动态插入新请求,无需等待整批完成,吞吐量提升数倍。
- PagedAttention(分页 KV 缓存) 借鉴操作系统虚拟内存思想,将显存切分为 “页”,按需动态分配、用完即回收,消除约 96% 显存浪费,大幅提升并发数。
- 模型量化 将 FP16 精度压缩为 INT4/INT8,显存需求降低数倍,整数运算速度更快,在可接受精度损失下大幅降低硬件门槛。
- 工程化接口 开箱提供 OpenAI 兼容 API、自动多卡并行、流式输出、请求队列调度,无需重复造轮子。
3. 主流推理框架
Llama.cpp
- 定位:轻量级 C/C++ 推理引擎
- 特点:无外部依赖、支持 CPU/GPU 全平台、多种量化精度
- 适用:资源受限环境、端侧设备、底层定制开发
Ollama !!!
- 定位:零门槛本地推理平台,底层基于 llama.cpp
- 架构:经典 Client-Server 架构,服务端 = HTTP 接口层 + llama.cpp 推理引擎
- 特点:一键部署、自动 GPU 加速、模型生态丰富、支持命令行与 API 双模式
- 适用:个人本地使用、轻量私有化部署、快速验证场景
五、Ollama 本地部署实战
1. 安装方式
- 在线一键安装:
curl -fsSL https://ollama.com/install.sh | sh
- 离线安装步骤:
- 安装解压依赖:
apt install -y zstd
- 解压安装包:
tar --use-compress-program=unzstd -xvf ollama-linux-amd64.tar.zst -C /root/ollama
- 配置软链接:
ln -sf /root/ollama/bin/ollama /usr/local/bin/ollama
- 编写 systemd 服务,设置开机自启,监听 0.0.0.0:11434
- 启动服务并验证:
ollama -v
2. 常用命令汇总
| 命令 | 功能 |
|---|
ollama list | 列出本地所有模型 |
ollama pull 模型名 | 从远程仓库拉取 / 增量更新模型 |
ollama run 模型名 | 运行模型并进入终端对话 |
ollama ps | 查看当前正在运行的模型 |
ollama stop 模型名 | 停止运行中的模型,释放显存 |
ollama rm 模型名 | 删除本地模型文件 |
ollama cp 原名称 新名称 | 复制模型(用于自定义修改) |
3. API 调用(默认端口:11434)
非流式调用(一次性返回结果)
curl http://localhost:11434/api/generate -d '{
"model": "qwen3.5:4b",
"prompt": "从运维角度介绍Docker的作用",
"stream": false
}'
流式调用(逐字返回)
curl http://localhost:11434/api/generate -d '{
"model": "qwen:7b",
"prompt": "为什么草是绿的?"
}'