conda&pytorch环境搭建笔记

1. 安装conda

官网安装地址:https://docs.anaconda.com/anaconda/install/linux/

下载Installer

python 复制代码
curl -O https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh

注:可以到这里查看和选择适合的版本:https://repo.anaconda.com/archive/
注:如果遇到curl: (60) SSL certificate problem: certificate has expired,可以加上-k选项来忽略SSL证书检查。

执行安装:

python 复制代码
bash ~/Downloads/Anaconda3-2024.06-1-Linux-x86_64.sh

一路按enter, 中间会提示查看和同意license。

选择自己的安装目录

手动初始化conda环境:

python 复制代码
source <PATH_TO_CONDA>/bin/activate
conda init

执行完毕后conda会提示"Thank you for installing Anaconda3!"表示安装完成。

配置每次打开shell时,是否有默认的环境:

python 复制代码
# The base environment is activated by default
conda config --set auto_activate_base True

# The base environment is not activated by default
conda config --set auto_activate_base False

如果配置为true,则每次打开终端会自动进入base环境。

2. 环境管理

2.1 配置镜像源

为了加速 conda 包的下载速度,你可以配置国内的镜像源(如清华大学的镜像源),编辑 ~/.condarc 文件:

python 复制代码
channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2/
show_channel_urls: true

重新加载conda配置:conda clean -i

2.2 创建环境

先查看目前有哪些环境

python 复制代码
# 或conda info --envs
conda env list

由于是刚安装的conda,所以只有base一个环境。

注:环境可以认为是python全部库的复制。

创建python环境:

  • myenv: 环境的名称
  • X.X:希望安装的Python版本号

为什么要创建新的环境?每个库都有不同的版本,每个版本都有不同的依赖关系,如果多个项目的python环境混用,很快就会陷入各种库的依赖冲突的泥潭中。

python 复制代码
conda create --name myenv python=X.X
# 或者:conda create --name myenv python=X.X anaconda

如果带anaconda后缀,将复制完整的anaconda软件包,大概900多M。

如果不带anaconda后缀,将只复制python环境。

2.3 环境激活

激活环境

python 复制代码
conda activate myenv

在新版本的conda中(从4.6开始),source activate和deactivate命令被标记为弃用。

退出当前环境:要从当前激活的环境中退出,你可以使用:

python 复制代码
conda deactivate

但是每次进来都要手动激活环境很麻烦,可以通过修改用户的shell配置文件来实现自动激活虚拟环境

shell的默认配置文件是 ~/.bashrc(或 ~/.bash_profile),打开并在文件最后输入激活指定环境的命令。

python 复制代码
conda activate myenv

保存后,后续每次打开ssh窗口,就会自动激活指定的虚拟环境。

3. 包管理

3.1 常用的包管理命令
  • 安装包:conda install <package_name>
  • 更新包:conda update <package_name>
  • 删除包:conda remove <package_name>
  • 查看已安装的包:conda list <package_name>
  • 查看可以安装的版本:conda search <package_name> --info
3.2 安装pytorch

这里有个误区,如果直接执行conda install pytorch 来安装pytorch,它默认安装的是cpu版本的pytorch。

此时,如果在pytorch中使用cuda时,会报如下 错误:

python 复制代码
import torch

tensor = torch.Tensor(3, 5).to('cuda')
tensor
shell 复制代码
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In[6], line 3
      1 import torch
----> 3 tensor = torch.Tensor(3, 5).to('cuda')
      4 tensor

File /data2/anaconda3/envs/anti-fraud/lib/python3.12/site-packages/torch/cuda/__init__.py:284, in _lazy_init()
    279     raise RuntimeError(
    280         "Cannot re-initialize CUDA in forked subprocess. To use CUDA with "
    281         "multiprocessing, you must use the 'spawn' start method"
    282     )
    283 if not hasattr(torch._C, "_cuda_getDeviceCount"):
--> 284     raise AssertionError("Torch not compiled with CUDA enabled")
    285 if _cudart is None:
    286     raise AssertionError(
    287         "libcudart functions unavailable. It looks like you have a broken build?"
    288     )

AssertionError: Torch not compiled with CUDA enabled

即使不甘心,用torch.cuda.is_available()来检测,仍然是False。

python 复制代码
import torch
torch.cuda.is_available()

> False

正确的安装方式是要安装与你机器上cuda兼容的pytorch版本。先确认本地的cuda版本:

python 复制代码
nvcc --version

如果没有安装cuda驱动或需要更新驱动,可以到nvidia官网下载:https://www.nvidia.com/download/index.aspx?lang=cn

python 复制代码
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Mon_Oct_24_19:12:58_PDT_2022
Cuda compilation tools, release 12.0, V12.0.76
Build cuda_12.0.r12.0/compiler.31968024_0

然后去pytorch官网选择适合自己环境的pytorch版本:

pytorch官网地址:https://pytorch.org/

注:上面nvcc命令查到的cuda版本是12.0,但pytorch官网没有提供cuda 12.0的可选择版本,保险起见,选择了低于12.0的11.8作为兼容版本安装。

选择好后,会自动生成上面红框中的安装命令,再返回自己的机器上执行安装:

python 复制代码
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

安装进度如下图所示,要安装的包很多,需要很长时间等待。

安装完后,验证安装结果:

python 复制代码
import torch

tensor = torch.Tensor(3, 5).to('cuda')
torch.cuda.is_available(), tensor
python 复制代码
(True,
 tensor([[4.2039e-45, 4.2039e-45, 1.2612e-44, 2.9427e-44, 0.0000e+00],
         [0.0000e+00, 0.0000e+00, 1.4013e-43, 0.0000e+00, 4.2039e-45],
         [4.2039e-45, 3.0829e-44, 3.2230e-44, 0.0000e+00, 0.0000e+00]],
        device='cuda:0'))
3.3 关于conda和pip

在安装python包时,初学者可能会有一个疑问,一个包即可以用conda安装,也可以用pip来安装。那如果先后用conda 和pip 都执行了pytorch的安装(如下命令),最终结果是什么呢?

复制代码
$ conda install pytorch
$ pip install torch

最终会发生替换,因为不论用哪种方式安装,最终都是安装到了python环境的 site-packages 目录,,后安装的包会覆盖先前安装的包。

附:环境错误收集

错误1:引入pytorch时报import error
python 复制代码
>>> import torch
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/data2/anaconda3/envs/python3_10/lib/python3.10/site-packages/torch/__init__.py", line 239, in <module>
    from torch._C import *  # noqa: F403
ImportError: /data2/anaconda3/envs/python3_10/lib/python3.10/site-packages/torch/lib/../../nvidia/cusparse/lib/libcusparse.so.12: symbol __nvJitLinkAddData_12_1 version libnvJitLink.so.12 not defined in file libnvJitLink.so.12 with link time reference

原因 :pytorch与CUDA库版本不匹配导致,因为起先选择了cuda12.1(大于12.0)版本的pytorch,安装完后与本地的cuda12.0不匹配。
解法:重新选择了cuda11.8版本的pytorch。

参考资料

相关推荐
豆沙沙包?2 分钟前
8.学习笔记-Maven进阶(P82-P89)
笔记·学习·maven
蹦蹦跳跳真可爱5892 小时前
Python----深度学习(基于深度学习Pytroch簇分类,圆环分类,月牙分类)
人工智能·pytorch·python·深度学习·分类
刘婉晴7 小时前
【信息安全工程师备考笔记】第三章 密码学基本理论
笔记·安全·密码学
晓数9 小时前
【硬核干货】JetBrains AI Assistant 干货笔记
人工智能·笔记·jetbrains·ai assistant
老兵发新帖9 小时前
Ubuntu 上安装 Conda
linux·ubuntu·conda
我的golang之路果然有问题9 小时前
速成GO访问sql,个人笔记
经验分享·笔记·后端·sql·golang·go·database
lwewan9 小时前
26考研——存储系统(3)
c语言·笔记·考研
Sherlock Ma9 小时前
PDFMathTranslate:基于LLM的PDF文档翻译及双语对照的工具【使用教程】
人工智能·pytorch·语言模型·pdf·大模型·机器翻译·deepseek
搞机小能手10 小时前
六个能够白嫖学习资料的网站
笔记·学习·分类
nongcunqq10 小时前
爬虫练习 js 逆向
笔记·爬虫