实验室服务器不让上网,所以我要想跑我的代码,只能花时间研究环境迁移。
坑1:一开始打算在笔记本上装一个Conda环境,再迁移到服务器上,结果在服务器上激活环境时报错没有装pip;后来才知道环境迁移要求平台一致,实验室服务器是Linux,而笔记本是Windows,二者不兼容导致报错。
解决方法:其实可以搭虚拟机的,但是嫌麻烦,最后考虑在AutoDL上租一个云服务器,然后在上面部署好环境。
因为AutoDL的云服务器上已经部署了miniconda和清华镜像源,所以也省去不少麻烦。关于如何conda 创建虚拟环境可以自行百度,稍微需要注意的是在AutoDL上第一次创建虚拟环境时需要先执行
conda init bash
然后才能使用conda activate XXX激活你的环境。
在虚拟环境中安装package的时候,建议统一使用pip install或conda install进行安装,以避免不必要的冲突。
现在已经安装好所需依赖,我们选择在base环境下进行打包。具体步骤如下:
第一步:安装conda-pack
pip install conda-pack
第二步:打包虚拟环境
conda pack -n XXX
坑2:就是打包的时候发现他总是会卡在70%左右,然后持续了5分钟后自动退出,没有任何报错信息,也没有生成任何的tar包。一开始问GPT,他要我更新conda,还是没用,唯一不一样的是更新conda后再打包终于会显示错误信息“killed”,查阅资料后才知道在资源有限的环境中(如某些云服务器或容器),Conda 在解析依赖关系时会消耗大量内存,尤其是在处理复杂的环境或大型的 environment.yml
文件时,如果系统检测到内存使用过高,可能会自动终止该进程。而我为了省钱,使用的是“无卡模式”开机,此时只提供了2GB内存,显然是不够的。
解决方法:不使用无卡模式开机,此时云服务器将会被分配20GB以上的内存,最终打包成功,在你运行该命令的目录下生成XXX.tar.gz的压缩文件。
第三步:迁移环境
现在已经将XXX.tar.gz上传到实验室的服务器了,需要将其解压到/anaconda3/envs下,先在/anaconda3/envs下创建对应的文件夹XXX,然后执行解压命令:
tar -xzvf XXX.tar.gz -C /anaconda3/envs/XXX
此时虚拟环境已迁移完毕,直接进入虚拟环境,就可以使用了:
source activate XXX