前情:
-
背景:在重现text2cad文章的过程中,通过environment.yml下载环境和依赖(包括pythonocc-core,pytorch等需要conda安装的包)
-
开发环境:Ubuntu
-
待下载的包:
官方environment.yml中要求的包及对应版本要求(之后会根据我的cuda驱动版本等其他问题,对包的版本进行调整):
dependencies:- python=3.9- numpy- pytorch=2.2.1- torchvision=0.17.1- pythonocc-core=7.7.2- cuda- pip:- tqdm- prettytable- torchinfo==1.8.0- plyfile==0.9- trimesh==4.1.8- tensorboard- pyvista- rich==13.7.1- CythonGSL- loguru- torchdata==0.7.1- litdata- transformers- nltk- ipykernel- ipywidgets- rich- pillow- accelerate- python-dotenv- gradio- open3d
实际上如果自己电脑上cuda驱动的版本与上述pytorch版本是匹配的,同时自己的电脑可以访问外网,是可以直接在base环境下使用conda env create --file environment.yml
命令,直接新建一个名叫text2cad的虚拟环境,并直接下载好相关的包和依赖。就不存在之后的问题了。
遇到的问题及解决办法:
1.解决国内无法下载的问题————配置channels,使用国内镜像。
这里推荐一篇好的推文:配置channel基本可以按照它来:https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ==&mid=2247491983&idx=1&sn=2052e7a038f2db52eb282b88495a7dfd&scene=21#wechat_redirect
上述推文中不仅有conda的镜像,还有许多其他包管理工具的镜像,如有其他需求亦可以使用。这里贴上conda镜像的截图:
1.可以直接在命令行中以此运行如下指令:
2.或者使用nano打开~/.condarc文件,将渠道地址写入:
2.即使配置好channels,但在使用conda安装pythonocc-core包时,仍下载十分缓慢或直接失败————使用mamba作为conda的替代。
这里下载mamba仍然是需要conda来下载的,所以之后的操作要保证前面的channels配置好
由于mamba兼容conda,几乎所有的conda命令都可以使用mamba进行。
- 下载mamba:
conda install mamba -c conda-forge
- 安装pythonocc-core:
mamba install pythonocc-core=...
三个点处填写自己需要的pythonocc-core的版本,如果没什么特定要求可直接下载mamba install pythonocc-core
3.根据自己的cuda版本,在官网上查找pytorch对应版本,下载好pytorch之后用pip下载其他的包,最后训练时仍然报错版本不匹配————解决办法较长,见后文。
如下图所示:
报错nividia驱动版本太老,让我更新驱动,或重新调整pytorch的版本。
此时我就疑惑了,明明我就是按照官网对应的版本下载的pytorch啊,怎么又会不匹配呢?如下图:我的cuda版本是11.3,所以我下载的对应版本pytorch如下:
实际原因:当我使用pip下载好pytorch之后(这里我是用的pip下载的pytorch,而不是像官方environment.yml中显示的那样用的conda下载pytorch),再用pip下载其他的包的时候,由于有些包没有指定版本,mamba直接给我下的最新版本,并为了匹配包之间的版本直接将我的torch版本更新了!!(这里点名accelerate)
上图是我查了accelerate库中的说明才发现的(所以结果就是mamba给我下载了1.4.0的accelerate,但为了匹配torch版本擅作主张的把我原先的torch版本更新了,导致我用pip list
检查的时候发现torch版本变成了2.0,而其他的torch相关包没有变化)
解决办法:先下载pip管理的其他包,再下载pytorch。这样的话当你下载pytorch的时候,如果有和pytorch版本不匹配的依赖包,它会有详细的报错提醒,你就可以根据报错提示,针对性的更改不匹配的包的版本(一般是降版本)
这样就成功配置好环境啦!!!!