当前位置: 首页 > news >正文

手把手教你离线搞定CUDA和cuDNN:从下载到配置,再到打包迁移完整流程(含超算实战)

手把手教你离线搞定CUDA和cuDNN:从下载到配置,再到打包迁移完整流程(含超算实战)

在科研机构或企业内部,经常会遇到需要在内网服务器或超算平台上部署深度学习环境的场景。这些环境通常严格限制外网访问,甚至完全隔离,给依赖大量开源工具和库的深度学习工作带来了不小挑战。本文将详细介绍如何在完全离线的Linux系统中,从零开始搭建CUDA和cuDNN环境,创建隔离的Anaconda虚拟环境,并最终将整个环境打包迁移到其他机器上使用。

1. 准备工作与环境检查

在开始安装之前,我们需要做好充分的准备工作。首先确认目标机器的硬件配置和操作系统版本,这将直接影响后续软件版本的选择。

关键检查项:

  • GPU型号与驱动版本:nvidia-smi命令可以查看
  • Linux发行版与内核版本:cat /etc/*releaseuname -r
  • 系统架构:uname -m(通常为x86_64)

注意:CUDA Toolkit需要与NVIDIA驱动版本匹配。驱动版本过低可能导致无法安装最新CUDA。

推荐使用以下命令收集系统信息:

# 查看GPU信息 nvidia-smi # 查看系统信息 cat /etc/*release uname -a

版本匹配参考表:

NVIDIA驱动版本支持的CUDA最高版本
450.80.02CUDA 11.0
470.82.01CUDA 11.4
515.65.01CUDA 11.7
525.85.12CUDA 12.0
535.86.10CUDA 12.2

2. 离线安装CUDA Toolkit

2.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.run

2.2 传输安装包到目标机器

将下载好的.run文件通过U盘或内网传输工具(如scp)复制到目标机器:

scp cuda_12.2.2_535.104.05_linux.run username@remote_host:/path/to/destination

2.3 安装CUDA Toolkit

在目标机器上执行以下步骤:

  1. 赋予执行权限:

    chmod +x cuda_12.2.2_535.104.05_linux.run
  2. 运行安装程序:

    ./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 --version

3. 离线安装cuDNN

3.1 下载匹配的cuDNN版本

访问 NVIDIA cuDNN下载页面 ,下载与已安装CUDA版本对应的cuDNN Library for Linux。

版本匹配原则:

  • CUDA 12.x → cuDNN 8.x
  • CUDA 11.x → cuDNN 8.x
  • CUDA 10.x → cuDNN 7.x

3.2 安装cuDNN

将下载的压缩包传输到目标机器后,执行以下步骤:

  1. 解压文件:

    tar -xzvf cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz
  2. 复制文件到CUDA目录:

    cp cudnn-*-archive/include/cudnn*.h /path/to/cuda/include/ cp -P cudnn-*-archive/lib/libcudnn* /path/to/cuda/lib64/ chmod a+r /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

初始化conda:

source /path/to/miniconda/bin/activate conda init

4.2 创建离线虚拟环境

  1. 在有网络的机器上准备环境:

    conda create -n myenv python=3.9 conda activate myenv conda install numpy pandas scipy
  2. 导出环境配置:

    conda env export > environment.yml
  3. 下载所有依赖包:

    conda pack -n myenv -o myenv.tar.gz
  4. 在目标机器上恢复环境:

    mkdir -p /path/to/envs/myenv tar -xzf myenv.tar.gz -C /path/to/envs/myenv

5. 环境打包与迁移实战

5.1 使用conda-pack打包环境

conda install -c conda-forge conda-pack conda pack -n myenv -o myenv.tar.gz --ignore-editable-packages

5.2 跨机器传输环境包

使用scp命令传输打包好的环境:

scp myenv.tar.gz username@remote_host:/path/to/destination

5.3 在目标机器上恢复环境

  1. 创建环境目录:

    mkdir -p ~/.conda/envs/myenv
  2. 解压环境包:

    tar -xzf myenv.tar.gz -C ~/.conda/envs/myenv
  3. 激活环境:

    source ~/.conda/envs/myenv/bin/activate

5.4 验证环境完整性

import torch print(torch.cuda.is_available()) # 应返回True print(torch.backends.cudnn.version()) # 应显示cuDNN版本

6. 超算平台实战技巧

在超算平台上部署深度学习环境有其特殊性,这里分享几个实用技巧:

  1. 模块系统集成:许多超算使用环境模块系统,可以创建自定义模块文件:

    # 示例模块文件 #%Module1.0 prepend-path PATH /path/to/cuda/bin prepend-path LD_LIBRARY_PATH /path/to/cuda/lib64
  2. 作业脚本配置:在提交作业时正确加载环境:

    #!/bin/bash #SBATCH --gres=gpu:1 source /path/to/miniconda/bin/activate conda activate myenv python your_script.py
  3. 存储优化:超算通常有临时存储空间,合理利用:

    # 使用$TMPDIR加速IO密集型任务 cp /slow/storage/data $TMPDIR/ cd $TMPDIR
  4. 多节点注意事项:确保环境在所有计算节点上可用:

    # 使用rsync同步环境到所有节点 rsync -avz /path/to/env/ compute-node:/same/path/

在实际项目中,我发现将CUDA安装在用户目录而非系统目录可以避免权限问题,特别是在没有root权限的超算环境中。另外,定期使用conda clean -a可以节省宝贵的存储空间。

http://www.jsqmd.com/news/924939/

相关文章:

  • Arduino星形投影夜灯制作:从PWM调光到电位器控制的完整实践
  • 基于TCS3200与Arduino的智能画框灯光反馈系统实战
  • Gemini跨境数据脱敏策略失效真相:动态掩码密钥轮转机制(附AWS KMS+HashiCorp Vault双活配置模板)
  • 3天掌握ODrive:开源电机控制器的高性能控制算法实战
  • Gemini服务条款变更实录:从免费试用到商用收费的3个临界点,及替代方案迁移时间窗(仅剩18天)
  • RimSort终极指南:如何用智能模组管理器告别《RimWorld》加载冲突
  • 构建高可用音乐播放器:洛雪音乐多平台音源集成实战指南
  • 2026常州汽车贴膜有哪些?2026常州优质汽车贴膜门店实力排行 - 资讯纵览
  • 2026年10款论文降AI率网站横评:从90%降至10%的宝藏之选
  • 【免费开源】STM32电导率测量仪交流激励四电极水质TDS检测仪表完整源码项目分享
  • 为什么你的Gemini模型在Q3风控召回率断崖下跌?——基于37家金融机构的模型衰减周期分析(附可立即执行的衰减预警SOP)
  • Gemini异常行为检测SOP手册(含Google内部验证的12项合规性检查清单与自动化脚本)
  • 解锁2026浪琴官方售后新体验:实地鉴证服务全面革新新址及售后热线启用 - 资讯纵览
  • 深度学习生成模型(五)—— 自回归生成与 Normalizing Flow(五十三)
  • 2026常州汽车贴膜门店排名推荐|隐形车衣、改色膜、太阳膜优选榜单 - 资讯纵览
  • Gemini韩文生成质量突降事件复盘:从4月12日模型热更新到当前v2.5,3个未公开token限制正在拖垮本地化交付
  • Java程序员面试必备Spring全家桶笔记公开!
  • 解决Keil MDK中RTX5调试信息丢失问题
  • Obsidian PDF++:3个革命性功能重新定义你的PDF标注工具
  • 2026年8月四川7天6晚纯玩团推荐|用户评价、费用参考与避坑指南 - 随峰国旅
  • Java程序员面试必备并发编程笔记公开!
  • 深度学习表征学习(一)—— 对比学习与 CLIP(五十四)
  • 2026温州家电回收|专业中央空调回收、二手空调设备上门回收(首选满意家电维修) - 资讯纵览
  • JDK源码学习从入门到精通!
  • 微信聊天记录永久保存完全指南:告别数据丢失的终极解决方案
  • DsHidMini深度探索:Windows平台PS3手柄虚拟HID驱动实战解析
  • 如何快速配置ok-ww鸣潮自动化工具:面向新手的完整实践指南
  • 告别依赖Vivado!手把手教你用Modelsim独立仿真Vivado IP核(附PLL报错解决方案)
  • ArcGIS Enterprise 10.8 Linux部署后,如何用命令行高效运维?这些脚本和诊断工具你得知道
  • 基于随机森林的城市空气质量等级预测系统的设计与实现