前言
最近要使用 GPU 服务器做实验,可惜的是,有网络连接的服务器显卡旧,算力不够;显卡较新的机器没有联网。于是有需求将旧机器上配置好的 conda 环境迁移至新机器。网上给的默认方法生成 yaml 文件迁移等 需要联网,只有直接把库文件都拷贝过去才不需要网络。下面记录一下迁移过程。
备注:请确保机器 B 已经安装 CUDA 等必要环境,以及系统架构(amd64 etc.)与机器A一致。
正文
下文中,旧机器(可以联网的机器)称为机器A,不能联网的目标机器称为机器B。
首先在机器 B 中需要先安装 conda。这里 conda 的安装不做赘述,我使用的是 Miniconda 3。
安装过程在另一篇博客中有记录。
语音、机器学习环境搭建记录_"file \"/data/miniconda3/envs/qt-torch/lib/python3_Haulyn5的博客-CSDN博客上一个 docker 容器让我安装奇奇怪怪的库的时候,动了一个系统库的文件,然后之间用的 ohmyzsh 给崩了……正好上一个容器忘了多开几个端口,这次重新搭建一个环境,把零零碎碎的东西记录下来。主要安装了 miniconda, pytorch, coqui ttshttps://blog.csdn.net/Haulyn5/article/details/126780167?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167706416616800186519066%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=167706416616800186519066&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-4-126780167-null-null.blog_rank_default&utm_term=conda#:~:text=26/ohmyzsh%2Dinstallation/-,miniconda,-%E4%B8%8B%E8%BD%BD%E5%9C%B0%E5%9D%80%EF%BC%9A然后大力出奇迹的时候到了。
scp -rP 30724 ~/miniconda3/ root@10.201.200.199:/root/tmp_miniconda3/
在主机 A 上执行类似上面的命令,当然要做一些修改。
scp 命令是远程拷贝,首先要有机器 B 的 ssh 权限,-rP 后面的数字是 ssh 连接的端口号,默认是 22;假设主机 A 上 miniconda 的安装目录为 "~/miniconda3",如果不是修改为你的安装路径;将 root 修改为使用主机 B 的用户名,10.201.200.199 修改为机器 B 的 IP 地址,IP地址冒号后面的路径修改为你希望拷贝到的目的路径。
执行后会提醒输入 机器 B 指定用户的 password。输入并回车后就可以看到开始拷贝。大致的效果如下图。
滚动的屏幕可以让你有自己是 hacker 的错觉(
这里其实是将所有的 env 都迁移过去了,如果细致到某一个 env,可能就要细节很多了,但是我这边就两个 envs,所以就不做细致考究了,直接大力出奇迹把 miniconda3 目录都扔过去覆盖。具体时间取决于 AB 两台机器之间的网络速度以及库的大小。
12万个文件,共计 8 GB,千兆网线连接,传输用时 1 小时2分钟。
拷贝完,这里我简单将过去的 miniconda 备份了一下,其实不用,反正可以重新安装。如果不重命名的话,记得用 rm 命令删掉,这样干净一点不容易冲突。
mv ~/miniconda3/ ~/miniconda3_backup/
最后一步,将拷贝来的 conda 重命名为 miniconda。
mv /root/tmp_miniconda3/ ~/miniconda3
考虑到现在使用的 shell 也在使用 conda,使用命令 exit 退出重新登陆一下。
重新登陆后使用下面的命令检查环境,然后使用 conda activate 激活环境,至此迁移结束。
conda info -e