linux下miniconda+torch环境配置

几个很简单的步骤却陆陆续续配置了一整天。记录一下。

部分步骤来自该博文: https://blog.csdn.net/m0_46336568/article/details/127836072

下载miniconda安装包

wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_4.9.2-Linux-x86_64.sh

执行安装脚本

bash Miniconda3-py39_4.9.2-Linux-x86_64.sh

conda换源

source ~/.bashrc
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda
conda config --set show_channel_urls yes
source ~/.bashrc

创建python3.7环境下的conda虚拟环境并进入

conda create -n yourEnvName python=3.7
conda activate yourEnvName

安装torch1.10+cuda10.2(cuda版本号可进入集群后使用nvidia-smi命令查看)

conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=10.2 -c pytorch

# cuda 11.2
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.2 -c pytorch -c conda-forge

进入集群,安装bmtrain

pip install bmtrain
pip install model-center

此时可以正常安装opendelta等包。进入Python查看是否安装成功

$ python3
>> import bmtrain
>> import opendelta

附录:conda常用命令

# 创建环境
conda create -n 环境名 python=3.x
# 进入环境
conda activate 环境名
# 查看虚拟环境列表
conda info --env
# 查看该环境下已有的安装包
conda list
# 退出环境
conda deactivate
# 删除某个环境
conda remove -n 环境名
# 删除某个环境下的某个包
conda remove -n 环境名 包名

注:conda install 和 pip install 的关系至今没有搞懂。。当conda 新建的 python版本号和全局不同时,在conda虚拟环境中遇到了无法引用pip install 的包的情况(ModuleNotFoundError: No module named ‘xxx‘)。但在命令行又可以正常import。尝试按网上教程加入:

import sys
sys.path.append("conda 虚拟环境中安装包的位置")
print(sys.path)

依然无法引用。


1.11中午12:30更新:将bash中的torchrun的路径改为conda虚拟环境bin下的torchrun(~/miniconda3/envs/yourENVNAME/bin/torchrun)即可运行。此时会报错找不到model-center,因为其安装在全局的python3.6安装包中,需要将其重新在虚拟环境安装。由于conda install找不到model-center和bmtrain,故可以使用 `--target 路径` 指定pip的安装位置(默认为全局路径)

pip install --target /home/xxx/miniconda3/envs/yourEnvName/lib/python3.7/site-packages model-center

将其使用pip安装在虚拟环境中。

此时可以成功运行。

注2:opendelta的包依赖

datasets==1.17.0 decorator gitpython rich scipy sentencepiece==0.1.96 sklearn web.py


1.11晚上23:20更新:又经历了整整一天的痛苦倒腾环境,一会是numpy报错ModuleNotFoundError: No module named 'numpy.core._multiarray_umath,按网上教程各种升级卸载都不成功。一会是bmtrain报错error:cannot import name‘_C‘,最后把bmtrain目录下的_C.cpython-36m-x86_64-linux-gnu.so文件两个点之间的中缀删掉之后发现这个_C仅支持python3.6,无法在python3.7的环境下加载!!!各种包安了又卸卸了又安,环境create了又remove,我真的会谢orz

好在,经历了一天的毒打,我终于(大致)弄明白各种python、pip、conda之间的关系了!当我再次看到

Python 3.7.4 (default, Aug 13 2019, 20:35:49) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import opendelta
>>> 

的时候真的无比激动。把一整天的过程总结记录在这里:

  • 每当用conda创建一个新环境时,会相应地备份一份python。与python相关的几个命令,如python3、pip、pip3、torchrun也会重新备份一份。新出现的这些脚本命令在新环境的路径/home/xxx/miniconda3/envs/环境名/bin/下,如

~/miniconda3/envs/环境名/bin/pip

可以使用which语句来判断当前在终端敲的pip是哪个pip:

$ which pip
$ which python3
$ which torchrun

一般来讲,pip和torchrun都是全局目录下的,即`/home/xxx/.local/lib/python3.6/site-packages`这个目录下面的,而python3则默认调用新环境中的python3。因此,如果直接pip install则会安装在全局目录~/.local/lib/python3.6/site-packages下面。综上,总结一下几种安装命令的安装位置:

  • pip install(pip uninstall):会装在全局~/.local/lib/python3.6/site-packages

  • conda install(conda remove): 会装在新环境~/miniconda3/envs/环境名/lib/python3.7/site-packages

  • 为在新环境中安装那些只能用pip而不能用conda安装的包,我们需要调用新环境中的那个pip命令:使用

$ ~/miniconda3/envs/环境名/bin/pip install 包名

就可以安装到新环境内了!

  • 使用

pip install --target ~/miniconda3/envs/环境名/lib/python3.7/site-packages 包名

确实可以安装在该目录下。但是这样安装之后的包就“丢”了,用pip uninstall只能清除全局内安装的包,conda remove也不会删掉被pip安装的包。因此要卸载该包只能进到该目录里手动删除相应的文件夹。当存在多个不同位置的相同的包(尤其是还有不同的版本并存)时,pip --target往往使得包卸载的时候卸不干净,造成混淆。下次不会再用了!

因此,能用conda安装的就用conda安,不能用conda的就用新环境中的~/miniconda3/envs/环境名/bin/pip安。我的做法是只有pytorch和cudatoolkit用conda安装。最后,不要忘记bash脚本的torchrun也要改成~/miniconda3/envs/环境名/bin/torchrun。

综上,总结一下opendelta的安装流程:

  1. 把乱七八糟的各种conda虚拟环境删干净,再用pip uninstall/conda remove 命令删除 numpy、bmtrain、torch等包,直到删得一干二净、删无可删为止(numpy会有出现在/usr/lib/的基础版本,那个是管理员安装的,删不掉也不用管它,因为他总是在最后才会被搜索)。

  1. conda创建新的虚拟环境(如果这里只输入python=3.7会默认安装3.7.12,which是个不太好用的版本)

$ conda create -n 环境名 python=3.7.4
  1. 安装pytorch1.10.0+cuda10.2

$ conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=10.2 -c pytorch
  1. 进集群安装bmtrain。由于bmtrain只能用pip安装,这里要用新环境下的pip:

$ ~/miniconda3/envs/环境名/bin/pip install bmtrain
$ ~/miniconda3/envs/环境名/bin/pip install model-center
  1. 继续安装opendelta。这里使用了github上的安装方式以获得适用于bmtrain的分支版本:

$ git clone -b with_bmtrain --single-branch https://github.com/thunlp/OpenDelta.git
$ cd OpenDelta
$ python setup.py install

5.1 期间可能还需要用pip安装opendelta的其他依赖,包括:

transformers
datasets==1.17.0
decorator
gitpython
rich
scipy
sentencepiece>=0.1.96
sklearn
web.py
yacs
oss2==2.15.0

然后就安装成功啦!此时在终端进入python3控制台可以顺利import bmtrain和import opendelta。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值