ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Anaconda与PyTorch环境配置指南:从零搭建深度学习工作站

Anaconda与PyTorch环境配置指南:从零搭建深度学习工作站 实验室里每年到了六七月份都会涌进来一批新人要么是刚进组的研一要么是做大创的本科生。大家拿到0705这一批工作站账号之后问我的第一个问题出奇一致怎么把Anaconda装好再把PyTorch的环境配起来这很正常我当年也是这么过来的。工作站性能确实不错显存大、内存足但环境没配好连个最简单的模型都跑不起来对着满屏红色报错发呆的滋味实在不好受。这篇我就按去年配置这批机器的完整流程来写从Anaconda下载安装、镜像源配置、虚拟环境创建到PyTorch的GPU版本安装和最终验证每一步命令、每一个坑都摊开来讲。如果你也是刚拿到工作站、还没建立起“环境是独立管理”这个概念的阶段跟着走完一遍基本就能踩熟这套工具链了。1. 动手之前先搞清楚环境配置的底层逻辑1.1 Anaconda是什么为什么深度学习机台上几乎人手一个Anaconda本质上是一个Python发行版它把Python解释器、pip、conda包管理器以及一大堆常用科学计算库打包到一起。听起来好像只是“自带全家桶”但它真正的价值在于conda这个包管理器。conda可以创建多个互相隔离的虚拟环境每个环境里都有自己独立的Python版本和第三方库版本。我把这个过程类比成合租房系统自带的Python就像公共客厅谁都能用但谁都没法保证自己在客厅里的东西不会被别人动。不同项目需要不同版本的库比如一个要numpy1.21另一个要numpy2.0如果全装在公共环境里分分钟打架。conda虚拟环境就是给每个项目开了一间独立卧室门一锁互不干扰。对做深度学习的人来说这几乎是必需品。PyTorch、TensorFlow这类框架对底层依赖很敏感CUDA版本、cuDNN版本、Python版本、numpy版本之间都存在兼容关系。今天跑A论文的代码明天复现B论文的实验如果所有依赖都堆在同一个环境里大概率是装一个坏一个。用conda建独立环境每个项目一套依赖坏了就删掉重建成本非常低。另外工作站通常是多人共用的。别人不小心升级了系统Python、往全局环境里装了个包你的代码可能就挂掉了。用conda自建环境之后你的环境和别人完全隔离从根本上杜绝了这种“被队友坑”的情况。1.2 上工作站之前需要确认的4项信息不要一登录工作站就开始无脑装软件先花两分钟确认以下4项信息可以避免后面90%的坑。第一操作系统和CPU架构。复旦的计算机工作站以Windows Server和Ubuntu为主少数跑在纯Linux终端环境。不同系统安装Anaconda的方式完全不同Windows要执行.exeLinux要执行.sh。架构方面现在工作站基本都是x86_64但你要是遇到ARM的机器安装包都得换一套。可以在终端里确认一下Windows看“此电脑-属性”Linux执行uname -m。第二GPU型号和驱动版本。深度学习环境最核心的依赖就是GPU驱动而GPU驱动决定你能装哪个版本的CUDACUDA版本又决定你能用哪个版本的PyTorch。用nvidia-smi这个命令查看显卡信息重点关注右上角的CUDA Version它表示驱动支持的最高CUDA版本。举个例子如果显示CUDA Version: 12.1说明驱动比较新可以安心安装需要CUDA 11.8或12.1的PyTorch。如果驱动版本很老只有10.2甚至更低那基本只能装旧版PyTorch或者先升级驱动升级驱动需要管理员权限碰上机房机器往往只能填工单。第三是否已经预装过Python或Anaconda。很多工作站的镜像里已经带了一个Anaconda或者预装了系统Python。如果已经有了conda不要急着自己另装一个先conda --version看看版本太旧就conda update conda升级新版则直接用。要是没有conda但装了Python也先不要卸载系统Python很多系统工具依赖它直接在用户目录下安装Anaconda就可以共存。第四磁盘剩余空间。Anaconda本体安装完大概要3到5GBconda缓存和虚拟环境会随着使用不断膨胀。深度学习的数据集动辄几十GB模型权重文件也是以GB为单位计算。至少确保主目录下有50GB以上空闲不然环境还没配完磁盘先满了。用df -hLinux或者在文件管理器里看Windows确认一下。2. Anaconda安装全过程从下载到命令行验证2.1 安装包去哪里下载怎么选择版本很多人第一反应是去Anaconda官网下载。官网地址本身没问题但Anaconda的安装包存放在国外服务器国内下载速度非常不稳定几个GB的文件可能下到一半就断而且在复旦校园网环境下访问国外源通常也不快。我的建议是直接用清华开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/在镜像站的文件列表里找最新版本命名格式大概是Anaconda3-2024.02-1-Windows-x86_64.exe或Anaconda3-2024.02-1-Linux-x86_64.sh。其中2024.02是版本号越新越好但也没必要追最新能下载到你需要的版本就行。Windows选.exeLinux选.sh这应该是最直观的判断标准。版本选择的另一个思路是如果你不追求Anaconda全家桶也可以用Miniconda代替。Miniconda只包含conda和Python基础环境体积只有几百MB安装更快占用空间更小。深度学习环境本来就需要自己单独创建Miniconda完全够用。复旦这边的机台上更推荐给新人用Miniconda轻量后续维护也简单。两者在conda命令使用上没有区别。2.2 一步步完成安装Windows下安装Anaconda基本就是一路Next。下载完.exe文件后双击运行安装界面有一步需要特别留意在Advanced Installation Options页会有两个复选框其中一个写着“Add Anaconda3 to my PATH environment variable”。如果你勾选它安装完成后可以在命令行直接使用conda命令方便很多。但Anaconda官方默认是推荐不勾的因为把Anaconda加入全局PATH可能与系统里已有的Python命令产生冲突。我的建议是如果你确认这台工作站是你自己的主力机勾上更好如果是多人共用、系统里已经有别的Python就别勾。这个选择不影响环境本身即使安装时没勾后面也能手动把Anaconda的Scripts目录加进PATH或者通过“Anaconda Prompt”快捷方式使用。不需要在这里纠结太长时间。安装路径方面Windows默认装在C:\Users\用户名\Anaconda3。如果C盘空间紧张可以改到D盘比如D:\Anaconda3但路径千万不要包含中文或空格否则后面很多工具解析路径时容易莫名其妙地出问题。Linux下安装更简单在终端进入安装包所在目录执行bash Anaconda3-2024.02-1-Linux-x86_64.sh然后按回车键浏览许可协议多次按空格或直接输入yes安装位置默认是~/anaconda3建议保持默认。安装快结束时它会问你是否运行conda init输入yes这样conda会自动写入shell配置文件。装完记得执行source ~/.bashrc刷新当前终端否则conda命令还是找不到。2.3 验证安装结果安装完成后第一步永远是验证。打开新的终端窗口在Windows的cmd或PowerShell里输入conda --version如果输出的是类似conda 24.x.x这样的版本号说明conda已经可用。紧接着再执行python --version这里要注意如果显示的是Python 3.12.x之类说明当前环境的Python确实是Anaconda自带的。如果显示的是别的版本或者提示找不到Python就需要回头检查PATH配置。再执行conda info可以看到当前conda的基本信息包括安装位置、环境路径等。其中active environment如果显示base说明你已经处在conda的默认环境中一切正常。到这里Anaconda本体就已经装好了。接下来要做的不是急着装PyTorch而是先把conda的下载源和pip的下载源都配置好不然安装依赖包的时候会被慢速网络折磨到心态崩溃。3. 让conda和pip都跑在“快车道”上3.1 配置国内镜像源前面提到Anaconda本体下载要镜像站其实后续的conda包下载、pip包下载同样面临这个问题。conda默认从官方源拉取软件包pip默认从PyPI拉取软件包这些源服务器大都在国外高峰期每秒几十KB的下载速度是常态一个复杂的包可能要装很久而且很容易因为超时中断。这就需要把conda和pip的源切换到国内镜像。清华TUNA的Anaconda镜像和PyPI镜像都比较稳定复旦校园网访问速度很快。配置conda源在终端依次执行conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes执行完之后conda在安装包时会优先从这些镜像地址拉取。可以随时用conda config --show channels确认当前生效的源列表。pip源配置也同样重要因为后面很大概率会用pip安装一些conda源里没有的包。执行下面这条命令把pip默认源切换到清华PyPI镜像pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这里多说一句复旦校内也有PyPI镜像服务在校园网内使用速度也非常快。如果你在校内可以直接用校内地址校外或者镜像不稳定的时候清华源是通用保底选择。这些镜像源本质上都是合法的公共加速服务日常使用不会有任何合规问题放心用。3.2 conda高频命令与环境管理逻辑源换好之后先花两分钟把conda最常用的命令过一遍环境配置阶段的效率会高很多。conda create -n 环境名 python3.10这条命令创建名为环境名的新环境并指定Python版本为3.10。-n是--name的简写环境名建议用全小写英文比如pytorch、tf、nlp不要用中文和特殊字符。conda activate 环境名 conda deactivate激活和退出环境。Windows下旧版本命令是activate 环境名新版conda统一用conda activate。如果提示conda activate不可用先执行一下conda init或者换到Anaconda Prompt里操作。conda env list列出当前所有环境带星号的是当前激活的环境。conda remove -n 环境名 --all删除整个环境。这个命令很实用环境坏了就删掉重建完全不用心疼。理解这些命令背后的逻辑其实是理解环境隔离。当你conda activate pytorch之后当前的python、pip命令都指向这个环境内部的路径安装的包也只存在于这个环境里。base环境是conda默认环境也是所有虚拟环境的“母环境”但它并不特殊到非要用它不可。我个人的习惯是把base当作战备基地保持干净所有正经任务都在单独的虚拟环境里完成。3.3 base环境要不要动Base环境里自带了不少Anaconda的默认包这些包在初始状态下通常能满足日常Python开发的需求但我不建议往base环境里塞太多东西。原因有两个第一base环境的包太杂刷新频次高容易产生依赖冲突一旦坏了影响所有环境第二你新建的环境默认基于base的Python版本如果base里的包版本被改动新环境也可能受到牵连。正确的做法是base环境只保留conda本身最多再放一两个全局工具类包比如jupyter。其他项目相关的内容一律建新环境。例如你想用PyTorch就建一个pytorch环境你想玩强化学习就建一个rl环境。不同环境之间是平行关系互不影响。另外如果不想每次打开终端都自动进入base环境可以执行conda config --set auto_activate_base false这样每次新开终端系统就不会自动激活base需要的时候再手动conda activate base。这一点在多人共用的工作站上很实用毕竟每个人对默认环境的需求不一样。4. 创建PyTorch深度学习环境4.1 决定Python版本与虚拟环境进入正题开始创建PyTorch环境。首先决定Python版本。截止到2024年PyTorch官方对Python 3.9到3.12都有较好的支持但我个人更推荐用Python 3.10。原因很朴实3.10的兼容性覆盖面最广主流深度学习代码几乎都兼容少部分老项目依赖的第三方库在3.11、3.12上可能还有编译问题但在3.10上都能找到预编译包。新项目也可以直接用3.10并不是非要追最新版本。在终端执行conda create -n pytorch python3.10 -y-y参数表示自动确认不用再手动输入y。conda会解析依赖并开始下载因为前面已经配好了清华镜像源这个过程一般几十秒到两三分钟就能完成。创建完成后激活环境conda activate pytorch激活后命令行前面应该会出现(pytorch)前缀提示你现在所处的环境。这一步就相当于从公共客厅走进了属于自己的独立房间后面装的PyTorch都放在这个房间里。4.2 根据CUDA版本选择PyTorch安装方式PyTorch安装最关键的决策点是CUDA版本。先回到前面提到的nvidia-smi命令看输出右上角显示的CUDA Version这个版本不是指你已经安装了CUDA toolkit而是指显卡驱动支持的最高CUDA版本。只要驱动支持PyTorch就能利用GPU算力。2024年这个节点主流PyTorch 2.x版本对应的CUDA支持主要有三个档位CUDA 11.8、CUDA 12.1、CUDA 12.4。如果驱动版本显示是12.x选12.1或12.4如果显示是11.8就选11.8稳一点。安装方式有两条路第一条是conda安装。在激活环境后执行conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia如果你用的是11.8档位把版本号对应替换。conda会负责把PyTorch以及配套的CUDA工具链都装好省心但包体积大而且conda源里PyTorch版本可能比PyPI晚一步更新。第二条是pip安装。PyTorch官方提供了专门针对各CUDA版本的pip源比如pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118这里cu118对应CUDA 11.8cu121对应CUDA 12.1cu124对应CUDA 12.4。如果驱动支持CUDA 12.x用cu121即可。pip安装的好处是速度快尤其配合之前配置的镜像源或者官方CDN、版本新而且不需要提前安装完整的CUDA toolkitPyTorch的轮子里已经包含了运行所需的CUDA库文件。我个人的推荐是在2024年的工作站上优先用pip安装。原因是conda安装PyTorch时依赖的CUDA相关包体积非常大而且conda在解析这些包时偶尔会卡在“Solving environment”阶段非常考验耐心。pip虽然下载量也不小但过程透明下载速度和失败提示都更清楚。4.3 完整安装流程展示下面以一台安装了NVIDIA驱动、驱动CUDA Version为12.1的工作站为例走一遍完整流程。第一步创建并激活环境conda create -n pytorch python3.10 -y conda activate pytorch第二步安装PyTorch这里选择pip方式用CUDA 12.1版本pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121这一步可能会有两种状况。如果网络状态好直接几分钟装完如果下载速度很慢说明PyTorch官方源连得吃力。这时候有两个备选方案一是改用https://download.pytorch.org/whl/cpu安装CPU版本先完成代码调试二是先把.whl文件下载下来再本地安装。比如你先从PyTorch官方索引页找到对应Python版本的torch-2.x.xcu121-cp310-cp310-win_amd64.whl文件放到工作站上然后执行pip install 本地路径/torch-2.x.xcu121-cp310-cp310-win_amd64.whl pip install torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121这样能把最大的包先落袋为安。需要注意的是本地安装时torch、torchvision、torchaudio这三个包的版本要匹配最好从同一个目录页面下载。第三步顺手安装深度学习过程中常用的几个包pip install numpy pandas matplotlib scikit-learn jupyter这些基础包放在环境里后面做数据处理和可视化就不用临时装了。装完以后不要急着关终端继续在同一个终端里执行验证命令。5. 验证、排错与工作站使用心得5.1 三个命令确认环境可用安装完成后的第一件事就是确认PyTorch确实能用GPU。依次执行下面几条命令python -c import torch; print(PyTorch版本:, torch.__version__) python -c import torch; print(CUDA可用:, torch.cuda.is_available()) python -c import torch; print(GPU名称:, torch.cuda.get_device_name(0))如果输出CUDA可用: True并且正确显示出GPU型号比如NVIDIA GeForce RTX 4090那Deep Learning环境基本上就算配置成功了。接着跑一段简单的张量运算验证GPU计算确实生效python -c import torch; atorch.randn(1000,1000).cuda(); b(aa).sum().item(); print(GPU计算正常, 结果:, b)这里把两个1000x1000的随机矩阵相乘最后输出一个标量值有结果且不报错就说明CUDA相关的库文件加载正常。如果torch.cuda.is_available()返回False先别慌按照下面一个章节的排查思路一步步检查十有八九是版本不匹配或驱动问题。5.2 常见问题排查速查表在实际配置过程中我遇到过不少报错有些问题让人查了很久才发现是低级错误。整理成一张速查表方便你遇到类似问题时直接对照。现象常见原因解决办法conda命令找不到Anaconda未加入PATH或安装时未勾选Add to PATH检查PATH环境变量手动添加Anaconda的Scripts目录或使用Anaconda Prompt创建环境速度非常慢conda源还是官方源没有配置国内镜像重新配置清华镜像源执行conda config --show channels验证torch.cuda.is_available()返回False安装的是CPU版PyTorch或驱动版本过低或GPU被其他进程占用查看安装命令是否带有cu118/cu121更新显卡驱动用nvidia-smi确认GPU状态pip安装时提示“找不到满足要求的torch版本”Python版本与PyTorch轮子不兼容或使用了错误的--index-url确认Python版本3.10通常最稳妥核对CUDA版本和对应URL安装torchvision时版本与torch不匹配混用了不同安装源或日期版本不一致将torch、torchvision、torchaudio从同一页面下载并一起安装运行代码时提示CUDA out of memory不是配置问题是显存不够减小batch size或换用小显存模型或在代码中设置torch.cuda.set_per_process_memory_fraction工作站重启后conda环境不见了Anaconda安装在用户目录但环境变量失效重新source ~/.bashrcLinux或打开Anaconda PromptWindowsconda activate无效shell还没执行conda init执行conda init bash后重启终端Windows下用Anaconda Prompt这个表格解决的是启动阶段最常见的问题。如果你遇到的问题不在表里也可以在报错信息中搜索关键词比如搜“No module named torch”或者“CUDA error”再对症下药。5.3 实操过程中踩过的几个坑第一条路径和空间是沉默杀手。去年给0705那批机器配环境时有一位同学装完Anaconda再装完PyTorch看着环境一切正常结果运行训练脚本时发现数据集没法下载最后排查发现是磁盘满了。Anaconda占用比想象中大实测一个带CUDA的PyTorch环境加上常用库要占2到3GBconda的缓存目录pkgs还会随着安装包数量不断增长。建议每隔一段时间做一次conda clean --all清掉缓存的旧安装包释放几个G是常有的事。第二条别把系统折腾坏。Windows工作站上如果原先已经装了其他Python发行版在公共的PATH里配置好Anaconda之后尽量使用conda activate切换环境不要动不动去动系统环境变量。Linux工作站上更要注意不要用sudo去把conda装在系统全局目录装在用户目录~/anaconda3就足够了既不需要管理员权限也不会污染系统文件。第三条版本号一定要记载。环境配好之后建议马上把当前的依赖导出到一个文件里方便以后复现和迁移conda env export environment.yaml或者用pip的方式pip freeze requirements.txt两种方式各有侧重environment.yaml保存的信息更完整包含conda的channel信息不同机器上复现时更可靠requirements.txt更通用pip直接就能安装。把文件存在项目目录下以后换机器或者别人要用你这个环境直接conda env create -f environment.yaml一键重建非常方便。这一步做好整个课题组的协作都会顺畅很多。最后再分享一个个人习惯每次配好环境后我会在项目根目录写一个README.md把当前环境的名字、Python版本、关键依赖版本、启动命令都写进去。这样过半年回头看哪怕自己都忘了当时怎么配的照着文档也能快速恢复。环境配置这个事最大的成本其实不是安装过程本身而是排查那些莫名其妙的问题。把过程和版本记录下来是最划算的长期投资。
返回列表