手把手教你离线搞定CUDA和cuDNN:从下载到配置,再到打包迁移完整流程(含超算实战) 手把手教你离线搞定CUDA和cuDNN从下载到配置再到打包迁移完整流程含超算实战在科研机构或企业内部经常会遇到需要在内网服务器或超算平台上部署深度学习环境的场景。这些环境通常严格限制外网访问甚至完全隔离给依赖大量开源工具和库的深度学习工作带来了不小挑战。本文将详细介绍如何在完全离线的Linux系统中从零开始搭建CUDA和cuDNN环境创建隔离的Anaconda虚拟环境并最终将整个环境打包迁移到其他机器上使用。1. 准备工作与环境检查在开始安装之前我们需要做好充分的准备工作。首先确认目标机器的硬件配置和操作系统版本这将直接影响后续软件版本的选择。关键检查项GPU型号与驱动版本nvidia-smi命令可以查看Linux发行版与内核版本cat /etc/*release和uname -r系统架构uname -m通常为x86_64注意CUDA Toolkit需要与NVIDIA驱动版本匹配。驱动版本过低可能导致无法安装最新CUDA。推荐使用以下命令收集系统信息# 查看GPU信息 nvidia-smi # 查看系统信息 cat /etc/*release uname -a版本匹配参考表NVIDIA驱动版本支持的CUDA最高版本450.80.02CUDA 11.0470.82.01CUDA 11.4515.65.01CUDA 11.7525.85.12CUDA 12.0535.86.10CUDA 12.22. 离线安装CUDA Toolkit2.1 下载合适的CUDA版本在有网络连接的机器上访问 NVIDIA开发者网站 下载对应版本的CUDA Toolkit。选择Linux→x86_64→Runfile(local)格式的安装包。下载示例wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run2.2 传输安装包到目标机器将下载好的.run文件通过U盘或内网传输工具如scp复制到目标机器scp cuda_12.2.2_535.104.05_linux.run usernameremote_host:/path/to/destination2.3 安装CUDA Toolkit在目标机器上执行以下步骤赋予执行权限chmod x cuda_12.2.2_535.104.05_linux.run运行安装程序./cuda_12.2.2_535.104.05_linux.run安装过程中需要注意输入accept接受许可协议取消勾选所有组件只保留CUDA Toolkit修改安装路径到有写入权限的目录如家目录下不安装驱动通常由系统管理员维护2.4 配置环境变量编辑~/.bashrc文件添加以下内容export PATH/path/to/cuda/bin:$PATH export LD_LIBRARY_PATH/path/to/cuda/lib64:$LD_LIBRARY_PATH使配置生效source ~/.bashrc验证安装nvcc --version3. 离线安装cuDNN3.1 下载匹配的cuDNN版本访问 NVIDIA cuDNN下载页面 下载与已安装CUDA版本对应的cuDNN Library for Linux。版本匹配原则CUDA 12.x → cuDNN 8.xCUDA 11.x → cuDNN 8.xCUDA 10.x → cuDNN 7.x3.2 安装cuDNN将下载的压缩包传输到目标机器后执行以下步骤解压文件tar -xzvf cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz复制文件到CUDA目录cp cudnn-*-archive/include/cudnn*.h /path/to/cuda/include/ cp -P cudnn-*-archive/lib/libcudnn* /path/to/cuda/lib64/ chmod ar /path/to/cuda/include/cudnn*.h /path/to/cuda/lib64/libcudnn*4. 离线创建Anaconda环境4.1 安装Miniconda下载Miniconda安装脚本并传输到目标机器wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh安装命令bash Miniconda3-latest-Linux-x86_64.sh -b -p /path/to/miniconda初始化condasource /path/to/miniconda/bin/activate conda init4.2 创建离线虚拟环境在有网络的机器上准备环境conda create -n myenv python3.9 conda activate myenv conda install numpy pandas scipy导出环境配置conda env export environment.yml下载所有依赖包conda pack -n myenv -o myenv.tar.gz在目标机器上恢复环境mkdir -p /path/to/envs/myenv tar -xzf myenv.tar.gz -C /path/to/envs/myenv5. 环境打包与迁移实战5.1 使用conda-pack打包环境conda install -c conda-forge conda-pack conda pack -n myenv -o myenv.tar.gz --ignore-editable-packages5.2 跨机器传输环境包使用scp命令传输打包好的环境scp myenv.tar.gz usernameremote_host:/path/to/destination5.3 在目标机器上恢复环境创建环境目录mkdir -p ~/.conda/envs/myenv解压环境包tar -xzf myenv.tar.gz -C ~/.conda/envs/myenv激活环境source ~/.conda/envs/myenv/bin/activate5.4 验证环境完整性import torch print(torch.cuda.is_available()) # 应返回True print(torch.backends.cudnn.version()) # 应显示cuDNN版本6. 超算平台实战技巧在超算平台上部署深度学习环境有其特殊性这里分享几个实用技巧模块系统集成许多超算使用环境模块系统可以创建自定义模块文件# 示例模块文件 #%Module1.0 prepend-path PATH /path/to/cuda/bin prepend-path LD_LIBRARY_PATH /path/to/cuda/lib64作业脚本配置在提交作业时正确加载环境#!/bin/bash #SBATCH --gresgpu:1 source /path/to/miniconda/bin/activate conda activate myenv python your_script.py存储优化超算通常有临时存储空间合理利用# 使用$TMPDIR加速IO密集型任务 cp /slow/storage/data $TMPDIR/ cd $TMPDIR多节点注意事项确保环境在所有计算节点上可用# 使用rsync同步环境到所有节点 rsync -avz /path/to/env/ compute-node:/same/path/在实际项目中我发现将CUDA安装在用户目录而非系统目录可以避免权限问题特别是在没有root权限的超算环境中。另外定期使用conda clean -a可以节省宝贵的存储空间。