第二章:环境准备——Linux基础操作、Docker与容器化、GPU驱动与CUDA安装

说实话,搭建机器学习平台这件事,很多人一上来就急着装框架、调模型。但我个人的经验是——环境搞不好,后面全是坑。我曾经在一个项目里,因为CUDA版本和驱动不匹配,整整折腾了两天。嗯,从那以后,我养成了一个习惯:先把地基打牢。

这一章,我们就来聊聊这个“地基”。说白了,就是三件事:Linux怎么用、Docker怎么玩、GPU怎么配

环境准备 三大支柱 Linux基础操作 文件管理 · 权限 · 进程 Docker与容器化 镜像 · 容器 · 挂载 GPU驱动与CUDA 驱动 · CUDA · cuDNN cd/ls/mkdir chmod/ps docker run Dockerfile nvidia-smi nvcc -V 打好地基,少走弯路

2.1 Linux基础操作——你绕不开的坎

做机器学习,Linux是标配。Windows当然也能跑,但到了生产环境、服务器部署,清一色都是Linux。我个人习惯用Ubuntu 20.04 LTS,稳定、社区活跃、踩坑了也好搜答案。

2.1.1 文件系统与常用命令

你想想看,每天跟服务器打交道,无非就是那几个操作:进目录、看文件、挪东西、改权限。我列几个高频命令,你记牢就行:

命令作用我的小贴士
cd切换目录cd - 可以回上一个目录,省事
ls -lh查看文件详情-h 显示人性化大小,别用裸 ls
mkdir -p创建多级目录比如 mkdir -p a/b/c,一步到位
chmod 755修改权限755 是常用套路,自己读写执行,别人读执行
ps aux查看进程配合 grep 过滤,比如 ps aux | grep python
💡 我的习惯:每次登录服务器,第一件事就是 df -h 看磁盘空间。我曾经因为磁盘写满,训练跑了三天直接崩了……从那以后,这个命令成了肌肉记忆。

2.1.2 权限管理——别小看它

很多新手在Linux上栽跟头,都是因为权限。你明明装了个包,却提示 Permission denied。为什么会这样?说白了,Linux把用户分成三类:所有者、同组人、其他人

我建议你养成一个习惯:不要一直用root。root权限太大,误操作可能删库。用普通用户,需要提权时加 sudo。比如:

# 查看当前用户
whoami

# 给脚本加执行权限
chmod +x train.sh

# 修改文件所有者
sudo chown yourname:yourname /data
⚠️ 避坑指南:我曾经在服务器上 sudo chmod 777 / -R,结果系统直接崩了。千万别对整个根目录递归改权限!

2.2 Docker与容器化——环境复制神器

做机器学习最头疼的是什么?环境不一致。你在本地跑得好好的,部署到服务器就报错。Docker就是来解决这个问题的——把你的环境打包成一个“集装箱”,到哪都能跑

2.2.1 核心概念

  • 镜像(Image):一个只读模板,包含操作系统、软件、代码。相当于一个“安装包”。
  • 容器(Container):镜像运行起来后的实例。你可以启动、停止、删除它。
  • Dockerfile:构建镜像的“配方文件”,告诉Docker怎么一步步搭建环境。

我个人习惯把Docker理解成“轻量级虚拟机”。但它比虚拟机快得多,因为它共享宿主机的内核。

2.2.2 常用操作

安装Docker很简单,一行命令搞定:

curl -fsSL https://get.docker.com | bash

然后你就可以开始玩了:

# 拉取一个PyTorch镜像
docker pull pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime

# 运行容器,挂载本地代码目录
docker run -it --gpus all -v /home/user/project:/workspace pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime bash
🔑 关键参数解释:
-it:交互式终端
--gpus all:让容器能访问所有GPU
-v:挂载卷,把宿主机目录映射到容器里

你想想看,有了Docker,你只需要维护一个Dockerfile。团队里任何人拉下来都能跑,再也不用“在我机器上是好的”这种借口了。

2.2.3 写一个简单的Dockerfile

FROM pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime

WORKDIR /workspace

# 安装依赖
RUN pip install numpy pandas scikit-learn

# 复制代码
COPY train.py .

# 默认命令
CMD ["python", "train.py"]

构建镜像:docker build -t my-ml-image .

💡 我的经验:Dockerfile里尽量把RUN命令合并,减少镜像层数。比如 RUN apt-get update && apt-get install -y package1 package2。这样镜像更小,构建更快。

2.3 GPU驱动与CUDA安装——让显卡跑起来

做深度学习,没有GPU就像开跑车没加油。但GPU环境配置,是很多人入门时最大的拦路虎。我当年第一次配CUDA,对着屏幕发呆了两个小时。

2.3.1 先装驱动

驱动是基础。没有驱动,系统根本认不出你的NVIDIA显卡。怎么检查?

# 查看显卡信息
lspci | grep -i nvidia

# 如果驱动已装,用这个命令
nvidia-smi

如果 nvidia-smi 报错,说明没装驱动。我推荐用Ubuntu自带的驱动管理器:

# 查看推荐驱动
ubuntu-drivers devices

# 自动安装推荐版本
sudo ubuntu-drivers autoinstall

# 重启
sudo reboot

重启后再次运行 nvidia-smi,你应该能看到类似这样的输出:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.85.05    Driver Version: 525.85.05    CUDA Version: 12.0     |
+-----------------------------------------------------------------------------+
⚠️ 避坑指南:我曾经手贱从NVIDIA官网下载.run文件手动装驱动,结果把图形界面搞崩了。后来学乖了——能用包管理器就别手动装

2.3.2 安装CUDA Toolkit

驱动装好了,但你还缺CUDA。驱动是“让系统认识显卡”,CUDA是“让程序能用显卡计算”。两者缺一不可。

我建议去NVIDIA官网下载runfile安装,或者用更省事的方法——用Miniconda装cudatoolkit

# 创建环境并指定CUDA版本
conda create -n pytorch_env python=3.9
conda activate pytorch_env
conda install cudatoolkit=11.6

验证CUDA是否装好:

nvcc -V

你会看到类似:

nvcc: NVIDIA (R) Cuda compiler driver
Cuda compilation tools, release 11.6, V11.6.124

2.3.3 cuDNN——深度学习加速器

cuDNN是NVIDIA针对深度学习优化的库。装它也很简单:

conda install cudnn

或者去NVIDIA官网下载,然后解压到CUDA目录。我个人更推荐用conda,省心。

🔑 版本匹配原则:
PyTorch版本 → 需要对应CUDA版本 → 需要对应驱动版本
比如PyTorch 1.13 需要 CUDA 11.6,而 CUDA 11.6 需要驱动版本 ≥ 450.80.02
记住:驱动版本 ≥ CUDA版本 ≥ 框架版本

2.3.4 最终验证

装完所有东西,跑一段代码验证:

import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))

如果输出 True 和你的显卡型号,恭喜你,环境配好了!

💡 我的建议:把上面这段代码保存成 check_env.py,每次换机器先跑一遍。省得后面训练报错了才回头查环境问题。

好了,这一章的内容就到这里。环境准备虽然琐碎,但值得你花时间认真搞定。后面我们就要开始真正搭建平台了——到时候你会发现,今天打下的基础,会帮你省下大把时间。


专注资料整理