起因
起因是训练服务器为了安全期间,限制不能联网。而且想连接A100显卡的训练服务器必须通过堡垒机方可连接(即目标服务器既不能联网,也与本机不在同一个网段)
安装工具
首先,使用 conda env list
查看所有环境,要确保待迁移的环境不是默认的base环境(如果是base环境,要使用conda clone
命令复制成其它名字)
然后激活待迁移的环境,我这里的环境名为chatGLM
,所以相应的激活命令为conda activate chatGLM
然后使用pip命令安装 pip install conda-pack
打包原环境
使用 conda pack -n <环境名>
来打包环境(打包速度还是挺快的),打包后会生成一个 tar.gz 文件
这里只花了3分钟就把我装了一天的环境打包好了
将虚拟机环境上传到本机
注意:两个环境必须是相同的系统。例如我本机是centos,目标主机也是centos(如果你本机是window,安装的包可能不适用于centos,会导致迁移后无法正常使用)
虽然我本机是widnows,但是我使用Virtual box,搭建了一个centos的虚拟机,在虚拟机中安装anaconda,然后使用pip安装各自依赖
方案一:sz直接上传
Tabby终端支持的文件上传/下载命令
- sz :ZModem协议来从Linux服务器传送文件到本地
- rz :从本地上传文件到Linux服务器,可以使用rz命令
使用 sz <待拉取的文件路径>
将文件拉取到本地
方案二:split切片后,sz上传
注意:文件比较大,sz命令在全部传输完成后,可能报错,可以用 split
命令进行切分
split -b 512M -d -a 1 chatGLM.tar.gz
- -b 4096M 分割的每个压缩包大小为4G
- -d 参数指定生成的分割包后缀为数字的形式
- -a x来设定序列的长度(默认值是2),这里设定序列的长度为1
切到 512M 后,可以上传,但偶尔还是会报错很不方便。虽然支持通配符,但是每次还是会询问你要保存的文件夹(无法设置一次,后面就默认使用该文件夹,不方便)
方案三:Virtualbox安装辅助插件,共享文件夹
Virtual不能直接安装增强助手,参考了好几篇博客也不行,后面按照这篇的成功了。地址为:https://zhuanlan.zhihu.com/p/633877183
除了中文会有乱码,英文正常(使用 Tabby 或 XShell连接,不会存在乱码问题)
然后使用mv
命令,将文件拷贝到共享目录。拷贝后,切换到window端来看,可以发现,瞬间就出现了(比之前sz命令快太多)
将本机环境压缩包上传至目标服务器
然后Tabby切换到目标服务器,使用 rz
命令将该文件上传到服务器
删除目标服务器同名环境
现在来到目标主机,使用 conda env list
查看当前所有的环境
然后使用 conda env remove -p <环境路径>
来删除同名环境
还原环境
然后使用 conda env list
列出所有虚拟环境的路径
我这里,anaconda3的环境变量路径为:/opt/anaconda3/envs/
在该路径下新建一个“虚拟环境名”的文件夹 mkdir /opt/anaconda3/envs/<虚拟环境名>
然后将赋予所有权限 chmod 777 /opt/anaconda3/envs/<虚拟环境名>
然后将刚刚上传的压缩包解压到该目录下,使用如下命令
tar -xzvf <环境变量压缩包>.tar.gz -C /opt/anaconda3/envs/<虚拟环境名>
查看结果
修改好后,使用 conda env list
可以查看到刚刚添加进去的环境
然后使用 conda activate <虚拟环境名>
就可以激活该环境变量了
使用 conda list
命令,可以查看我们之前安装的库到底是否都存在