PPU显卡环境配置
PPU 显卡服务器深度学习环境配置指南,介绍如何继承系统 PPU 版 PyTorch、创建虚拟环境、安装安全依赖,并处理 torch 不可用和依赖冲突等常见问题。
PPU 显卡服务器环境配置指南
在深度学习项目中,我们平时接触比较多的是NVIDIA GPU服务器。对于这类服务器,常见做法是创建一个 conda 环境,然后根据项目的 requirements.txt 安装 PyTorch、CUDA、torchvision 等依赖。
但是 PPU 显卡服务器和普通 GPU 服务器不太一样。PPU 服务器通常已经预装了适配硬件的定制版 PyTorch,如果按照普通 GPU 的方式重新安装 torch,很容易导致原本可用的环境被覆盖,最后出现模型无法调用显卡、torch.cuda.is_available() 为 False、训练程序无法启动等问题。
所以,在 PPU 服务器上配置深度学习环境时,最重要的不是“重新安装一套 PyTorch”,而是正确继承服务器已有的 PPU 版 PyTorch。本文主要记录一套适合 PPU 服务器的项目环境配置流程。
一、PPU 环境配置的核心原则
PPU 服务器不能完全按照普通 GPU 服务器的方式来配置。
普通 GPU 服务器上,我们可能会习惯性地执行:
pip install torch
pip install torchvision
pip install -r requirements.txt
但在 PPU 服务器上,这种做法风险很高。
原因是 PPU 服务器使用的通常是定制版 PyTorch,例如:
torch 1.13.0a0+nv2208
cuda available = True
cuda = 11.7
这个版本并不是普通 PyPI 源里随便安装的标准版 PyTorch,而是已经适配当前服务器硬件和驱动环境的版本。
因此,PPU 服务器配置环境时要遵守三个原则:
一个项目一个虚拟环境;
虚拟环境继承系统自带 PPU torch;
不要随便安装或覆盖 torch 相关依赖。
尤其不要随意安装下面这些包:
torch
torchvision
torchaudio
xformers
deepspeed
这些包和底层深度学习框架关系很密切,一旦版本不兼容,就可能导致整个训练环境失效。
简单来说,PPU 服务器环境配置的重点不是“装 torch”,而是“保护好已有的 torch”。
二、创建项目虚拟环境
假设现在要配置一个新项目,项目名叫 new_project。
首先进入项目代码所在目录:
cd /home/projects/new_project
然后创建虚拟环境:
/usr/local/bin/python3.8 -m venv --system-site-packages /home/envs/new_project
这里最关键的是:
--system-site-packages
这个参数非常重要。
它的作用是:让新创建的虚拟环境可以访问系统环境中已经安装好的 Python 包,其中就包括服务器自带的 PPU 版 PyTorch。
如果不加这个参数,新建出来的虚拟环境会比较“干净”,它可能找不到系统原本安装好的 PPU torch。这样后面运行项目时,就可能出现无法导入 torch,或者 torch 无法识别 PPU 计算资源的问题。
所以,在 PPU 服务器上创建项目环境时,不建议直接使用普通的:
python -m venv /home/envs/new_project
而应该使用:
/usr/local/bin/python3.8 -m venv --system-site-packages /home/envs/new_project
这样做既能让不同项目拥有独立环境,又能共享服务器原本配置好的 PPU 深度学习底层环境。
三、激活虚拟环境
虚拟环境创建完成后,需要先激活:
source /home/envs/new_project/bin/activate
激活成功后,终端命令行前面一般会出现环境名,例如:
(new_project) root@server:/home/projects/new_project#
这说明当前已经进入了 new_project 这个虚拟环境。
后续安装依赖、运行训练脚本,都应该在这个虚拟环境中进行。
如果想退出当前虚拟环境,可以执行:
deactivate
退出后,终端前面的环境名会消失。
四、验证 PPU torch 是否可用
创建并激活环境后,第一步不是安装项目依赖,而是先检查 torch 是否正常。
执行下面的命令:
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.version.cuda)"
正常情况下,输出应该类似:
1.13.0a0+nv2208
True
11.7
这里需要重点关注三个信息。
第一个是 PyTorch 版本:
1.13.0a0+nv2208
这说明当前使用的是服务器自带的定制版 torch。
第二个是:
True
它对应的是:
torch.cuda.is_available()
虽然这里显示的是 cuda,但在很多国产或定制硬件环境中,深度学习框架仍然会沿用 CUDA 风格的接口。只要这里返回 True,就说明当前环境可以正常调用加速设备。
第三个是 CUDA 版本:
11.7
这个版本需要和服务器底层环境匹配,不建议手动乱改。
如果这里输出的是:
False
说明当前虚拟环境没有正确继承系统的 PPU torch,或者底层驱动环境没有正确加载。此时不要急着安装新的 torch,而应该先检查虚拟环境创建方式是否正确。
五、安装项目依赖
很多深度学习项目都会提供 requirements.txt 文件。普通情况下,我们可能会直接执行:
pip install -r requirements.txt
但是在 PPU 服务器上,不建议这样做。
因为 requirements.txt 里面可能包含:
torch
torchvision
torchaudio
xformers
deepspeed
如果直接安装,就可能把系统自带的 PPU torch 覆盖掉。
正确做法是先查看依赖文件:
cat requirements.txt
确认里面有哪些包。
然后生成一个安全版依赖文件,过滤掉可能破坏 PPU 环境的包:
grep -v -E '^(torch|torchvision|torchaudio|xformers|deepspeed)' requirements.txt > requirements_safe.txt
如果项目中还包含一些会间接安装 torch 的包,也需要一起过滤。
例如有些项目中的 open_flamingo 可能会自动拉取 torch,因此可以这样处理:
grep -v -E '^(torch|torchvision|torchaudio|xformers|deepspeed|open_flamingo)' requirements.txt > requirements_safe.txt
然后设置 pip 源,例如使用清华源:
export PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
最后安装安全依赖:
pip install -r requirements_safe.txt
安装过程中需要注意终端输出。
如果看到:
Collecting torch
应该立即停止:
Ctrl + C
这说明某个依赖正在尝试安装 torch。此时需要检查 requirements_safe.txt,找出是哪个包触发了 torch 的安装,然后把它移除或单独处理。
在 PPU 服务器上,安装依赖的原则是:
普通工具包可以装;
torch 相关包不要乱装;
会自动拉 torch 的包也要谨慎。
六、常见问题与解决方法
1. 缺少 Python 包
如果运行项目时报错:
ModuleNotFoundError: No module named 'xxx'
说明当前环境缺少某个 Python 包。
可以单独安装:
pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple
例如缺少 yacs:
pip install yacs -i https://pypi.tuna.tsinghua.edu.cn/simple
缺少 opencv-python:
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
但是如果缺少的是 torch、torchvision、torchaudio 这类包,不要直接安装,需要先确认服务器是否已经提供了对应版本。
2. torch 可以导入,但不能调用显卡
如果执行:
python -c "import torch; print(torch.cuda.is_available())"
输出是:
False
说明 torch 虽然能导入,但当前环境没有正确识别 PPU 计算资源。
这时可以重新创建虚拟环境:
rm -rf /home/envs/new_project
/usr/local/bin/python3.8 -m venv --system-site-packages /home/envs/new_project
source /home/envs/new_project/bin/activate
然后再次验证:
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.version.cuda)"
如果重新创建后仍然是 False,就需要进一步检查服务器底层驱动、环境变量或管理员提供的 PPU SDK 是否正常。
3. 安装依赖时自动拉取 torch
如果安装依赖时出现:
Collecting torch
这通常说明某个包依赖了 torch,并且 pip 准备从外部源安装标准版 PyTorch。
在 PPU 环境中,这种情况需要立刻停止:
Ctrl + C
然后检查依赖文件:
cat requirements_safe.txt
可以逐个排查哪些包可能会触发 torch 安装。
常见需要特别注意的包包括:
torch
torchvision
torchaudio
xformers
deepspeed
open_flamingo
如果确实需要这些包,需要优先确认服务器是否已经提供 PPU 适配版本,而不是直接从 PyPI 安装普通版本。
4. pip 安装速度很慢
如果 pip 下载速度很慢,可以临时指定国内源:
pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple
也可以在当前终端会话中设置默认源:
export PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
这样后续执行 pip install 时,会默认使用清华源。
不过需要注意,如果某些包在国内源没有同步,可能需要换回官方源或使用其他镜像源。
5. requirements.txt 安装失败
有些旧项目的依赖版本比较老,直接安装可能会失败。
例如可能出现:
ERROR: Could not find a version that satisfies the requirement xxx==x.x.x
这种情况可以尝试几种方法:
第一,去掉严格版本限制。
例如把:
xxx==1.2.3
改成:
xxx
第二,手动安装相近版本:
pip install xxx
第三,先跳过这个包,等运行时报错时再单独处理。
深度学习项目复现时,不一定要一次性把所有依赖都装完。更稳妥的方式是:先保护好 torch 环境,再根据报错逐个补包。
七、确定当前环境是否正常
如果不确定当前环境是否正常,可以先执行:
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.version.cuda)"
只要能看到:
True
一般说明 PPU torch 可以正常使用。
八、PPU 环境配置中的注意事项
PPU 服务器配置环境时,最需要注意的是不要破坏系统原有环境。
尤其不要执行:
pip install torch
pip install torchvision
pip install torchaudio
pip install -r requirements.txt
特别是:
pip install -r requirements.txt
这条命令在普通服务器上很常见,但在 PPU 服务器上风险比较大。
更推荐的方式是:
先查看 requirements.txt;
过滤 torch 相关依赖;
生成 requirements_safe.txt;
再安装安全依赖;
运行项目时缺什么再补什么。
这样虽然步骤稍微多一点,但稳定性更好,不容易把系统环境弄坏。
相关文章
项目迁移到持久化目录后Git显示所有文件Modified
记录一次项目迁移到持久化目录后,Git将大量文件标记为modified的问题排查过程。
Linux 容器实验环境的数据持久化迁移
记录在 Linux 容器实验环境中,将 /home 下的项目、数据集、环境和输出迁移到持久化目录 /data,并通过软链接保持原路径可用的方法。
服务器访问外网:Clash + SSH 反向代理 + 自动重连
本地Windows电脑开启 Clash 代理,然后通过SSH反向隧道,让服务器访问本地Clash代理,从而实现服务器访问外网。
评论
#评论正在加载。如果这里一直没有内容,请检查手机网络是否能访问 GitHub Discussions 和 giscus.app。