跳到主要内容

Ubuntu Server 与 NVIDIA GPU 环境

建议学时

2 学时。

建议安排:

课时内容产出
1检查 Ubuntu Server、GPU、驱动、CUDA runtime、工具链环境基线日志
2建立实验目录、运行检查脚本、确认 Git 忽略边界可复用实验工作区

本实验对应理论章节:

学习目标

完成本实验后,学习者应能:

  • 建立可复查的 Ubuntu Server 实验基线。
  • 确认 NVIDIA 驱动、CUDA runtime、Python、CMake、Git 和磁盘空间。
  • 区分课程仓库、模型权重、第三方源码、构建产物和实验日志。
  • 解释为什么环境检查是端侧部署实验的第一步。
  • 生成一份可放入实验报告的 env-check.txt

问题背景

很多部署失败不是模型问题,而是环境问题。

常见情况包括:

  • nvidia-smi 不可用,说明驱动或 GPU 可见性有问题。
  • 驱动可见,但 llama.cpp 构建时没有启用 CUDA。
  • CMake、编译器或 Git 缺失,导致 runtime 无法构建。
  • 模型权重放进课程仓库,导致 Git 仓库膨胀。
  • 磁盘空间不足,下载模型或构建时中断。
  • 远程服务器没有记录版本,后续无法复现实验结果。

本实验先不追求跑模型,而是把机器状态记录清楚。

实验边界

本实验只做环境检查和目录准备。

不会把以下内容写入 Git:

  • 模型权重。
  • llama.cpp 第三方源码。
  • build/ 构建产物。
  • 大型 profiling 日志。
  • 本机敏感路径或密钥。

课程仓库只保存教材、脚本、模板和少量示例。

图示讲解

实验目录建议:

前置条件

开始前确认:

项目要求说明
操作系统Ubuntu Server建议 22.04 或 24.04,同学按实际环境记录
GPUNVIDIA GPU需要能被系统识别
权限普通用户可创建实验目录安装驱动或系统包可能需要管理员权限
网络能访问模型来源和 GitHub离线环境需提前准备源码和模型
磁盘有足够空间具体空间随模型大小变化,记录实际可用空间

如果课堂设备已经由教师预配置,不需要学员自行安装驱动。

如果设备未配置驱动,应先按系统管理员要求完成安装,再继续实验。

核心概念

项目需要确认失败表现
OS发行版、内核、架构驱动和 CUDA 包不匹配
CPU核心数、架构CPU fallback 时性能异常
内存总内存和可用内存模型加载失败或被系统杀死
磁盘可用空间下载、解压、构建中断
驱动nvidia-smi 正常显示 GPUCUDA 不可见、GPU offload 失败
CUDA runtimeruntime 能被程序调用llama.cpp 只能 CPU 跑
Pythonsmoke test 和辅助脚本可运行API 测试脚本无法执行
CMake/Git构建和获取源码runtime 无法构建

Step 1:建立实验目录

模型、源码和日志放在用户目录下的实验工作区。

mkdir -p ~/edge-ai-lab/{models/qwen,src,logs,results}
cd ~/edge-ai-lab

检查目录:

find ~/edge-ai-lab -maxdepth 2 -type d | sort

预期能看到:

/home/用户名/edge-ai-lab
/home/用户名/edge-ai-lab/logs
/home/用户名/edge-ai-lab/models
/home/用户名/edge-ai-lab/models/qwen
/home/用户名/edge-ai-lab/results
/home/用户名/edge-ai-lab/src

Step 2:记录系统信息

uname -a
lsb_release -a
lscpu
free -h
df -h

如果 lsb_release 不存在,可以用:

cat /etc/os-release

记录重点:

项目记录位置
Ubuntu 版本实验报告“环境”部分
内核版本驱动排查时使用
CPU 型号和核心数CPU baseline 解释
总内存和可用内存模型加载能力判断
磁盘可用空间模型下载和构建能力判断

Step 3:检查 NVIDIA GPU

nvidia-smi

需要记录:

字段用途
Driver Version判断驱动版本
CUDA Version判断驱动支持的 CUDA 版本上限
GPU 名称对比实验硬件
Memory-Usage记录推理前后的显存变化
Processes确认 llama.cpp 是否使用 GPU

保存一次基线:

nvidia-smi > ~/edge-ai-lab/results/nvidia-smi-before.txt

如果希望推理时连续观察:

watch -n 0.5 nvidia-smi

watch 命令用于观察,不需要保存到 Git。

Step 4:检查工具链

python3 --version
cmake --version
git --version
gcc --version
g++ --version

如果某个命令不存在,记录缺失项。

课堂环境可以由教师统一安装。

自行安装时,先确认课程机器是否允许改系统包。

常见安装命令如下:

sudo apt update
sudo apt install -y build-essential cmake git python3 python3-venv curl

不要在不了解机器用途的情况下随意升级驱动或 CUDA。

Step 5:运行课程环境检查脚本

从课程仓库根目录运行:

bash labs/scripts/env_check.sh | tee ~/edge-ai-lab/results/env-check.txt

如果脚本不可执行,直接用 bash 调用即可。

检查结果中至少应包含:

  • OS 信息。
  • CPU 信息。
  • 内存信息。
  • 磁盘信息。
  • GPU 信息。
  • Python、CMake、Git 版本。

Step 6:确认 Git 边界

回到课程仓库:

git status --short

确认模型和第三方源码没有出现在 Git 变更中。

如果你把模型放在 ~/edge-ai-lab/models,它不会进入课程仓库。

如果你误把模型放入课程仓库,应先移动到实验目录:

mkdir -p ~/edge-ai-lab/models/qwen
mv 路径/模型文件.gguf ~/edge-ai-lab/models/qwen/

不要把 .gguf 文件提交到 Git。

结果记录表

项目结果
日期待填
机器用途Ubuntu Server / 远程实验机 / 本地工作站
Ubuntu 版本待填
内核版本待填
CPU待填
内存待填
GPU待填
NVIDIA Driver待填
CUDA Version from nvidia-smi待填
Python待填
CMake待填
Git待填
可用磁盘空间待填
实验目录~/edge-ai-lab

验收结果

产物验收标准
~/edge-ai-lab 目录包含 models/qwensrclogsresults
env-check.txt包含 OS、CPU、内存、磁盘、GPU、Python、CMake、Git 信息
nvidia-smi-before.txt能看到 GPU 名称、驱动版本和显存
Git 状态没有模型文件、第三方源码和构建产物进入课程仓库
实验记录表关键版本字段已填写

失败排查

nvidia-smi 不存在

可能原因:

  • 没有安装 NVIDIA 驱动。
  • 机器没有 NVIDIA GPU。
  • 容器环境没有透传 GPU。
  • PATH 或驱动安装不完整。

处理:

  • 先确认硬件和课程环境说明。
  • 不要直接下载随机驱动安装包。
  • 按 Ubuntu 或 NVIDIA 官方文档安装。

nvidia-smi 显示 GPU,但后续程序无法用 CUDA

可能原因:

  • llama.cpp 未启用 CUDA 构建。
  • CUDA runtime 库路径不可见。
  • 程序运行在容器内但没有 --gpus all

处理:

  • Qwen 基线推理 中检查构建日志。
  • 运行时使用 -ngl 99
  • nvidia-smi 观察进程。

磁盘不足

处理:

  • 删除自己实验目录中不需要的临时模型或构建产物。
  • 不要清理系统目录。
  • 不要删除其他同学或系统服务的文件。

网络无法下载模型

处理:

  • 记录网络失败原因。
  • 使用教师提前准备的模型文件。
  • 保持模型文件名、来源和校验信息可追踪。

作业

提交一份环境记录,包含:

  1. env-check.txt 的关键摘要。
  2. nvidia-smi-before.txt
  3. 实验目录结构。
  4. 你认为后续 Qwen 推理最可能遇到的环境风险。

参考资料