总结
租服务器配好conda环境,把环境迁移到没联网的学校服务器,要注意一定要检查两个服务器的CUDA版本是不是不同的,这可能会带来一些问题,因为CUDA是不在conda环境里面的。
最后解决安装dgl版本问题还是采用下载whl文件pip离线安装的。所以我们最好一开始就在autodl租一个跟学校服务器配置相同的服务器喽(也有同学选择先用虚拟机配环境应该也是个不错的选择),学校服务器(teacher09) torch版本1.10.0+cu102,CUDA10.1
问题背景
租autodl服务器https://www.autodl.com/跑代码(pycharm链接远程服务器可以在其帮助文档最佳实践中查看)太花钱,学校服务器不联网用着太不舒服,尝试创建conda环境,配置好环境之后把conda环境打包到学校服务器,是不是完美解决
创建虚拟环境
conda安装成功
以最近跑的项目CKBC 常识库补全为例
conda create -n CKBC_myk python=3.8
conda env list
在activate之前,有时候需要先conda init 再重启shell
conda activate CKBC_myk
pip install torch==1.10.0
pip install numpy
pip install tqdm
pip install transformers
pip install matplotlib
安装dgl
安装dgl rgcn跑代码尝试,错误解决
https://www.dgl.ai/pages/start.html
https://pytorch-geometric.com/whl/torch-1.10.0%2Bcu113.html
# 查看cuda版本
nvcc --version
#------打印信息:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Mon_May__3_19:15:13_PDT_2021
Cuda compilation tools, release 11.3, V11.3.109
Build cuda_11.3.r11.3/compiler.29920130_0
# 安装dgl
pip install -U isort==5.10.1 -i https://pypi.mirrors.ustc.edu.cn/simple
pip install dgl-cu113 dglgo -f https://data.dgl.ai/wheels/repo.html
#pip install dgl-cu117 dglgo -f https://data.dgl.ai/wheels/repo.html
生成requirements
-
生成requirements.txt方便后续使用
进conda虚拟环境,cd到项目目录下,执行:好像还是会下很多多余的库
pip freeze > requirements.txt
注意:这个会把环境中的所有库都保存下来,配合virtualenv才好用。如果没有virtualenv,这个方法会保存很多多余的库。
可以采用
pip install pipreqs
pipreqs --force ./ # 如果报错,pipreqs ./ --encoding=utf-8
打包环境
找到其他环境迁移的方式:
https://huaweicloud.csdn.net/63806a8ddacf622b8df87613.html
推荐使用conda pack
第二种方式就是利用 conda-pack 命令直接对环境进行 打包。要想使用 conda-pack 包对环境打包实现环境迁移,我们需要提前安装一下 conda-pack包,conda-pack包是一个命令行工具,主要用于打包conda环境(包括环境中安装的软件包的所有二进制文件),此方法最好的地方就是 在没有网络的情况下仍可实现环境的复现,简直不要太优秀,下面说一下使用 conda-pack 的具体操作。
- 安装conda-pack包
conda install -c conda-forge conda-pack
或者pip install conda-pack
- 使用 conda pack 命令开始打包环境
# 将名字为 my_env 的虚拟环境 打包为 my_env.tar.gz(默认就是这形式)
conda pack -n my_env
# -o 就是给导出的虚拟环境重新命名,所以导出来的虚拟环境名字为 out_name.tar.gz
conda pack -n my_env -o out_name.tar.gz
# 指定虚拟环境包的输出路径
conda pack -p /explicit/path/to/my_env
解压tar.gz
tar -xzvf file.tar.gz -C /home_data/teacher09/anaconda3/envs/
报错了
# 部分报错信息:
import dgl
File "/home_data/teacher09/anaconda3/envs/CKBC_myk/lib/python3.8/site-packages/dgl/__init__.py", line 16, in <module>
self._handle = _dlopen(self._name, mode)
OSError: libcudart.so.11.0: cannot open shared object file: No such file or directory
解决问题
上面的报错,我最开始以为是环境打包有问题,重新弄了几遍还是不行,中间又尝试是dgl相关的几个包的问题,但是在学下服务器又报一些其他的错误,看文件以为是找不到那个文件,重新去找到python-package里的那个文件替换还是不行,同时又学了一下liunx中文件的权限等,解决问题还问了同学,网上查了很多资料,一直以为是环境打包或者可能是miniconda和anaconda两个服务器不同的问题,后面我有搬出来chatgpt,逐渐解决问题,把我与chatgpt的对话放在文末
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)