HPC
DCV 应用教程
DCV | Nice DCV 安装手册
DCV | RLM 提取 HOSTID
EF Portal and DCV HA Solution
Enginframe 应用教程
Enginframe | 技术参数说明
毅硕HPC教程
毅硕HPC | HPC环境下的LDAP配置
毅硕HPC | Rocky Linux 9 SLURM软件编译安装
毅硕HPC | RHEL 8 上的NVIDIA驱动安装
毅硕HPC | 配置SLURM作业队列优先级
毅硕HPC | Pritunl + ECS + Frp 搭建远程办公VPN
毅硕HPC | 在HPC集群上优雅地使用 Conda
毅硕HPC | 一文详解HPC环境中的MPI并行计算
毅硕HPC | NVIDIA DGX Spark 万字硬核评测:将AI超级工厂带上桌面
毅硕HPC | Lustre文件系统在HPC集群中的部署实战
毅硕HPC | InfiniBand网络在HPC集群中的核心应用
毅硕HPC | OpenPBS构建高效稳定的HPC作业调度环境
毅硕HPC | HPC集群LSF调度系统部署指南
毅硕HPC | 轻量高效的XFCE桌面环境
毅硕HPC | Ubuntu 24 SLURM 编译安装
-
+
首页
毅硕HPC | 在HPC集群上优雅地使用 Conda
在高性能计算(HPC)的世界里,除了编写高效的代码,构建一个稳定、可复现的运行环境同样至关重要。作为 HPC 平台的技术人员,我们发现超过 50% 的用户工单都与环境配置有关。 本文将为你详细拆解Conda在 HPC 环境下的最佳实践,助你从“环境配置的苦海”中脱身,专注于科研本身。 * * * # 一、Conda 与 HPC:为何它是你的必备技能? ## 1. 什么是 Conda? 简单来说,Conda 是一个开源的软件包管理系统和环境管理系统。它允许你在计算机上安装、运行和更新软件包及其依赖项,并且能够轻松地在不同的环境之间切换。 ## 2. 为什么 HPC 用户离不开 Conda? 在个人电脑上,你可能有 Root 权限,可以随意使用 `apt` 或 `pip` 安装全局软件。但在 HPC 集群上,环境完全不同,Conda 完美解决了以下三大痛点: * 用户级权限(No Root, No Problem):HPC 集群通常不向普通用户开放 Root 权限。这意味着你无法使用系统级的包管理器安装软件。Conda 允许你在自己的用户目录下安装任何软件,完全绕过系统权限限制。 * 环境隔离(告别“依赖地狱”) :你的项目 A 可能需要 Python 3.8 和 TensorFlow 1.x,而项目 B 需要 Python 3.11 和 PyTorch 2.x。如果将它们混装在一起,版本冲突在所难免。Conda 允许你为每个项目创建独立的“沙盒”环境,互不干扰。 * 复现性保障(科研的基石):通过简单的 `conda env export > environment.yml` 命令,你可以导出当前环境的所有细节。无论你是换了一台超算,还是将代码分享给合作者,对方只需一行命令即可精确复现你的计算环境,确保“跑出的结果一致”。 * * * # 二、HPC 实战:Conda 的安装与初始配置 ## 1. 为什么选择 Miniconda? 很多初学者习惯下载 Anaconda,它预装了数百个科学计算包,体积庞大(几 GB)。在 HPC 环境下,这是极大的资源浪费。 推荐使用 Miniconda:它只包含 Conda、Python 和极少量的基础包,体积小巧,按需安装,既节省了宝贵的存储空间,也减少了潜在的包冲突。 ## 2. 关键步骤:选择合适路径进行安装 默认情况下,Conda 会安装在 `$HOME` 目录下。 * 痛点:HPC 的 `$HOME` 目录通常有严格的配额限制(如 20GB),很快就会被撑爆。 * 最佳实践:请务必将 Conda 安装在你的大容量工作目录(如 `/work/$USER` 或 `/lustre/project/$USER`)。 **安装演示:** ``` # 下载安装脚本,使用清华源提升下载速度 wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh # 添加执行权限 chmod +x Miniconda3-py39_4.10.3-Linux-x86_64.sh # 执行安装,使用 -p 参数指定大容量存储路径 bash Miniconda3-py39_4.10.3-Linux-x86_64.sh -p /work/zhangsan/miniconda3 -u ``` ## 3. 初始化与镜像加速 安装完成后,Conda 会提示你是否初始化。运行 `conda init` 后,你的 `~/.bashrc` 会被修改,以便你登录时能使用 `conda` 命令。 提示是否运行conda init ,选择yes  可以看到安装成功,已经写入.bashrc环境  **核心技巧:** 配置国内镜像源由于 HPC 集群通常对公网访问有限制,或者连接官方源速度极慢,配置国内镜像(如清华 TUNA)是必做的优化。 创建或修改 `~/.condarc` 文件: ``` channels: - defaults - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ show_channel_urls: true default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud ``` 激活miniconda环境: ``` source ~/.bashrc ``` 可以看到conda命令已识别:  这一步能将你的下载速度从几十KB/s 提升到满速,并解决大量的连接超时错误。 * * * # 三、在 HPC 中高效管理 Conda 环境 ## 1. 环境创建:位置决定格局 * 基础用法: `conda create -n my_env python=3.9` 这会将环境创建在默认的 `envs` 目录下。 * HPC进阶用法(推荐):使用 `-p` (prefix) 参数。 ``` conda create -p /work/zhangsan/projects/test/env python=3.9 ``` * 优势:将环境直接放在项目文件夹内。这样不仅方便管理,更便于通过文件系统权限控制,与课题组其他成员共享这个环境。 ## 2. 软件安装的“洁癖” * 原则:优先使用 `conda install`,当 Conda 仓库中没有时,再考虑 `pip install`。 * 警告:尽量避免混合使用(即先 pip 后 conda),这极易导致库文件被覆盖或破坏。 * **HPC特别提醒:** 除非万不得已,不要在 Conda 里安装 GCC、MPI 等系统级编译工具。HPC 管理员通常已经配置好了针对硬件优化的编译器模块(Module),直接使用系统模块通常性能更好且兼容性更佳。 ## 3. 环境激活的本质 当你运行 `conda activate my_env` 时,实际上是 Conda 修改了你当前的 `$PATH` 环境变量,将 `my_env/bin` 放在了最前面。理解这一点,对于后续写作业脚本至关重要。 ## 4. 常用命令 以下是一些常用的conda命令,你可以尝试运行这些命令来熟悉conda的使用: ``` conda create -n py38 python=3.8:创建一个名为py38的新环境,并安装Python 3.8。 conda activate py38:激活名为py38的环境。 conda deactivate:退出当前激活的环境。 conda install package_name:在当前环境中安装包名为package_name的包。 conda remove package_name:在当前环境中卸载包名为package_name的包。 conda env list:列出所有已创建的环境。 conda env export > environment.yml:导出当前环境的配置信息到environment.yml文件中。 conda env create -f environment.yml:根据environment.yml文件中的配置信息创建一个新的环境。 ``` * * * # 四、从交互式到批处理:在 Slurm 作业中使用 Conda 以下场景是用户最容易出错的环节。 ## 1. 交互式作业(调试用) 当你需要临时测试代码时,先申请一个计算节点,再激活环境: ``` # 1. 申请计算节点资源 srun -p compute --pty bash # 2. 像在登录节点一样激活环境 conda activate my_env # 3. 运行测试 python test.py ``` ## 2. 批处理作业脚本(生产用) 在非交互式的 Slurm 脚本中,直接写 `conda activate` 往往会报错(因为 shell 初始化机制不同)。 **标准 Slurm 作业脚本模板:** ``` #!/bin/bash #SBATCH -J ai_training #SBATCH -p gpu #SBATCH -N 1 #SBATCH --gres=gpu:1 #SBATCH -o job_%j.out # --- 关键部分开始 --- # 1. 加载 HPC 系统模块(如 CUDA),利用系统优化库 module load cuda/11.8 # 2. 激活 Conda 环境 # 方法 A (推荐):使用 source 直接加载激活脚本 # 假设你的 miniconda 安装在 /work/zhangsan/miniconda3 source /work/zhangsan/miniconda3/bin/activate /work/zhangsan/projects/alphafold/env # 或者 方法 B:先初始化 shell 再 activate (较繁琐,不推荐) # eval "$(/work/zhangsan/miniconda3/bin/conda shell.bash hook)" # conda activate my_env # --- 关键部分结束 --- # 3. 运行程序 echo "Current Python: $(which python)" python train_model.py ``` **重点强调:** 使用 `source /path/to/activate <env_path>` 是最稳健的方法,它确保了无论当前 Shell 是否初始化,环境变量都能被正确加载。 * * * # 五 、HPC 环境下的常见问题与调试 FAQ ## 1. 我的存储空间(Quota)又满了,怎么办? Conda 会缓存所有下载的压缩包和解压后的包,长期使用会占用大量空间。 * 检查命令: `du -sh ~/.conda` 或 `du -sh /work/zhangsan/miniconda3` * 清理神器:定期运行 `conda clean -a`。它可以删除未使用的安装包和缓存,通常能瞬间释放数 GB 空间。 ## 2. 作业脚本里提示 "conda: command not found"? 这是因为作业脚本运行在非交互式 Shell 中,默认不加载 `.bashrc`。 * 解决:参照第四部分,使用绝对路径的 `source /path/to/miniconda/bin/activate` 方式来激活,不要依赖系统自带的 conda 命令别名。 ## 3. 程序运行慢,或者 GPU 无法调用? 这通常是因为 Conda 安装的库(如 cudatoolkit)与 HPC 硬件驱动不匹配。 * 解决:采用 "Hybrid"(混合)模式。 利用 HPC 系统管理员维护的 Environment Modules 加载底层驱动(如 `module load cuda/11.8` `module load gcc/9.3`),只用 Conda 安装上层 Python 库(如 PyTorch)。这样既能享受 Conda 的便捷,又能利用 HPC 的硬件性能。 # 六、卸载Conda,回归纯净环境 ## 1. 检查 Miniconda 是否已安装 在开始卸载之前,首先需要确认 Miniconda 是否已经在您的系统中安装。您可以通过以下命令检查: ``` conda info --all ``` 如果 Miniconda 已安装,您将看到它的安装路径和其他相关信息:  ## 2. 退出 Miniconda 环境和终端 如果您正在使用 Miniconda 的环境,请使用以下命令退出: ``` conda deactivate ``` 可以看到(base)已不显示  同时,如果您正在使用 Miniconda 的终端,请关闭它。 ## 3. 卸载 Miniconda 要卸载 Miniconda,请按照以下步骤操作: a)删除 Miniconda 安装目录 找到 Miniconda 的安装目录,通常位于 `/home/用户名/miniconda3` 或 `/usr/local/miniconda`。使用以下命令删除该目录: ``` sudo rm -rf /path/to/miniconda ``` 请将 `/path/to/miniconda` 替换为您的实际安装路径。 b)删除 Miniconda 的配置文件 Miniconda 在安装过程中会创建一些配置文件,如 `.bashrc` 或 `.profile` 中的别名。您需要编辑这些文件,删除 Miniconda 相关的配置。以下是编辑 `.bashrc` 文件的示例: ``` nano ~/.bashrc ``` 在打开的文件中,查找类似于以下内容的行,并将其删除: ``` # >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/opt/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/opt/miniconda3/etc/profile.d/conda.sh" ]; then . "/opt/miniconda3/etc/profile.d/conda.sh" else export PATH="/opt/miniconda3/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<< ``` 保存并关闭文件。 c)删除 Miniconda 的环境 使用以下命令删除所有 Miniconda 环境: ``` conda env remove --name '*' ``` 这将删除所有以 `*` 结尾的环境。 ## 4. 清理残留文件 在卸载 Miniconda 后,可能还会有一些残留文件。您可以使用以下命令查找并删除这些文件: ``` sudo find / -name "*conda*" -type f -delete ``` 请谨慎使用此命令,因为它可能会删除系统中其他与 Conda 相关的文件。 * * * # 七、结语 掌握 Conda 在 HPC 上的正确打开方式,不仅是对公共计算资源的爱护,更是提升科研效率的关键。通过本教程,你已经掌握了在HPC集群中从零开始部署并高效利用Conda的核心技能。从因地制宜的安装策略、镜像源的加速配置,到最终与Slurm工作流的无缝集成,这一整套工作流将使你能够: 1. 自主掌控软件环境,不再受限于系统权限。 2. 大幅提升部署效率,快速复现他人的研究成果。 3. 可靠地投入生产,将自定义环境用于大规模并行计算任务。 现在,你可以自信地在你的HPC项目中使用Conda了。不妨就从为你的下一个课题创建一个干净的environment.yml文件开始,让你的科研计算之旅更加规范、高效和可复现。
chsnp
2026年1月28日 11:27
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期