文章目录
第二章 Pytorch安装
PyTorch 是一个 Python 深度学习框架,它将数据封装成张量(Tensor)来进行运算。PyTorch 中的张量就是元素为同一种数据类型的多维矩阵。在 PyTorch 中,张量以 “类” 的形式封装起来,对张量的一些运算、处理的方法被封装在类中。
Pytorch的安装
在这个地方大家可以看到有不同的版本
命令:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
CUDA是英伟达出的一个提高计算速度,它的显卡提高这种计算速度的这样一个框架,当然前提是你电脑必须得装Anaconda,首先去 官网 https://www.anaconda.com/download/ 下载安装Anaconda,注意到路径这块,最好是全英文。
安装Anaconda
https://www.anaconda.com/download/ 下载, 傻瓜式安装Anaconda,注意到路径这块,最好是全英文。
在开始菜单下,找到带有绿色图标的Anaconda,点击就可以打开Anaconda的图形化界面:
virtualenv与conda
那么什么是virtualenv呢?又与conda有什么区别呢
virtualenv是一个环境管理工具,使用virtualenv可以创建一个完全隔离的环境,但virtualenv只能创建基于本机已存在的python版本的虚拟环境;使用virtualenv创建完成环境以后,可以使用pip安装python包,也可以使用conda安装python包。
conda结合了pip和virtualenv两者的功能,使用conda可以创建任意python版本的虚拟隔离环境,而且conda还是一个包管理工具,不但可以安装python包,而且可以安装其他语言的包,更重要的是conda具有完美的包依赖关系处理能力,可以轻松的安装所需的包而不用过分的去手动处理各种包之间的依赖关系
点击环境,看到base(root),这个就是默认的一个虚拟环境,代表我们安装成功了。
创建虚拟环境
上面两个是Anaconda命令窗口的位置,随便点击那个都可以。
查看当前有多少虚拟环境
conda env list
创建新的虚拟环境
conda create -n 虚拟环境名字 python=版本
conda create -n eliauk python=3.11
y
千万不要
conda create -n eliauk
,只是创建一个没有任何内容的空conda环境。(后面在pycharm想要用这个虚拟环境的时候发现文件夹里没有bin目录,没有python解释器。)
安装前这里还有一个问题,因为我们的安装指令都是从国外的通道下载,下载速度会非常慢。
所以我们想要下载快还是得用国内的镜像地址。
输入指令可以查看我们的通道地址
conda config --show
现在我们的环境中通道是defaults,也就是说它会从国外给我下载包。
也可以通过下面的指令看到
conda config --get
清华镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
北京外国语大学镜像
https://mirrors.bfsu.edu.cn/anaconda/pkgs/main
阿里巴巴镜像
http://mirrors.aliyun.com/anaconda/pkgs/main
添加通道
conda config --add channels 通道地址
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
PS: 关于加通道地址这块,推荐是下载时可以指定安装通道,而不是直接去改配置文件,这样出现bug的几率比较小。不推荐直接去改配置文件这种方法。
安装pytorch前想清楚一个问题,想把pytorch安装到那个环境里。
默认是在基础环境下(base),比如我现在想安装到eliauk这个虚拟环镜
conda activate eliauk
查看自己电脑驱动的版本,win+r,输入cmd,nvidia-smi
, 查看CUDA Version。
- conda安装法(不推荐)
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
下面介绍一种镜像的下载。
第一步:因为cudatoolkit下载很慢,所以也单独指定一个镜像
Conda install cudatoolkit=版本 –c 镜像地址
第二步:
conda install pytorch torchvision torchaudio -c 镜像地址
清华镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/
conda install pytorch torchvision torchaudio -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/
- pip安装法(推荐)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
输入pip list
,看有没有pytorch或者torch
conda activate eliauk
python
import torch
torch.cuda.is_available()
torch.cuda.is_available(),这个命令是检查我们pytorch的GPU能否用。
如果显示True,就说明我们这个PyTorch安装成功了!!!
pycharm环境配置
我的在
C:\Users\用户名\.conda\envs\eliauk
安装目录下: E:\ProgramFiles\anaconda3\Scripts\conda.exe
这个是默认环境的base
虚拟环境eliauk的:
import torch
print(torch.cuda.is_available())
这就代表成功了,注意CPU版本这里应该是False。
pycharm终端配置
默认base
在开始菜单中,找到文件所在位置,查看Anaconda Prompt的属性
拉到最左侧,从cmd.exe
开始复制目标中的内容:
cmd.exe "/K" E:\ProgramFiles\anaconda3\Scripts\activate.bat E:\ProgramFiles\anaconda3
Pycharm中打开菜单栏的File -> Settings
找到Terminal后,将刚才复制好的内容放在红框所在位置
设置成自己创建的虚拟环境
我的名字叫eliauk
注意:Pycharm2024.1.4
cmd.exe "/K" E:\ProgramFiles\anaconda3\Scripts\activate.bat C:\Users\用户名\.conda\envs\eliauk
解决PyCharm的Terminal终端conda环境默认为base无法切换的问题
conda config --show
在输出中找到 auto_activate_base
的行,发现被设置为 true
,表示每次启动conda时会自动激活base环境
我们要取消默认激活base环境,运行以下命令:
conda config --set auto_activate_base false
查看当前有多少虚拟环境
conda env list
进入某个虚拟环境
conda activate eliauk环境名
效果
Pycharm运行ipynb文件(解决遇到的两个问题)
- 一直在运行问题
- 没有内核问题:“浏览器可以,pycharm不行” 或者 “浏览器和pycharm都不行”
Pycharm+Anaconda:jupyter notebook内核配置,解决内核不匹配等错误
-
安装notebook
在独立anaconda环境中,假设环境名为eliauk,安装notebook(eliauk) C:\Users\xxx> conda install notebook # 或 pip install notebook
-
检查ipython是否安装
默认安装jupyter notebook包时会安装关联的ipython包,为确保此处无问题,可以检查一下,在eliauk环境下的terninal中输入如下代码:(注意:无特殊说明,后续都是在terminal中进行操作)python -m ipykernel --version
-
指定名称为eliauk666,不同环境最好指定不同命名
python -m ipykernel install --user --name eliauk666 --display-name "Python[conda env:eliauk666]"
-
检查已安装内核
已安装的内核有python3和刚刚安装的eliauk666。(eliauk) C:\Users\xxx>jupyter kernelspec list Available kernels: python3 C:\Users\xxx\.conda\envs\eliauk\share\jupyter\kernels\python3 eliauk666 C:\Users\xxx\AppData\Roaming\jupyter\kernels\eliauk666
-
删除不需要的内核
由于python3是出错的内核,名字也不是很合适,因为不同的环境可能都是python3版本,无法一眼进行区分,可以删除该内核。jupyter kernelspec remove python3
-
检查jupyter notebook是否正常工作
运行jupyter notebook 脚本,查看构建的eliauk666内核kernel是否正常工作,若还有问题,可卸载之前的jupyter版本,重新安装一遍,先删除已有内核,再安装新的内核(基本操作上述已有介绍)。
启动jupyter lab/notebook时,报错“ValueError: signal only works in main thread”问题( 运行时一直in[*] )
在启动jupyter lab(jupyter notebook同)后,无法在cell中执行代码,显示in[*]。通过控制台,可看到如下报错:
RuntimeError: This event loop is already running
...
ValueError: signal only works in main thread
ERROR:ttornado.general:Uncaught exception in ZMQStream callback
...
造成此问题的原因主要是由于安装了别的模块后造成的模块冲突。安装时会将tornado、ipykernel、ipython等模块降级,导致jupyter启动出现问题。
将tornado、ipykernel、ipython模块更新到最新版本。其中,更新ipykernel时,会直接更新ipython模块。因此,执行以下命令即可。
pip install tornado --upgrade
pip install ipykernel --upgrade
Pycharm运行ipynb文件
Jupyter服务器设置密码(避免每次输入token)
(eliauk) C:\Users\xxx> jupyter notebook password
Enter password:123456
Verify password:123456
[JupyterPasswordApp] Wrote hashed password to C:\Users\xxx\.jupyter\jupyter_server_config.json
我密码就设置简单点,123456
启动Jupyter Notebook 服务器
按win键,直接点
或者终端输入:
jupyter notebook
如图所示,终端中显示 Jupyter Notebook 服务器的 URL 地址(通常是 http://localhost:8888/
,我的图被占用了所以是8891),复制如下任一链接(包括token部分)
http://127.0.0.1:8891/tree?token=07b008e1ff53c34dd5b674c3f5eb7e8c1357541479738f7f
配置Jupyter服务器
打开Pycharm,新建一个ipynb文件
点击配置
刚刚复制的url粘贴到这里
访问令牌 token注意事项
每次Jupyter提供的token不一样,若重新启动Jupyter需重新填充token , 前面我们设置了123456
运行错误就是没启动jupyter
import torch报错:不是有效的 Win32 应用程序。
OSError Traceback (most recent call last)
Cell In[3], line 1
----> 1 import torch
File ~\AppData\Roaming\Python\Python311\site-packages\torch\__init__.py:132
130 err = ctypes.WinError(last_error)
131 err.strerror += f' Error loading "{dll}" or one of its dependencies.'
--> 132 raise err
133 elif res is not None:
134 is_loaded = True
OSError: [WinError 193] %1 不是有效的 Win32 应用程序。 Error loading "C:\Users\hzw\AppData\Roaming\Python\Python311\site-packages\torch\lib\cudnn_cnn_infer64_8.dll" or one of its dependencies.
OSError: [WinError 193] %1不是有效的Win32应用程序。加载“C:\Users\hzw\AppData\Roaming\Python\Python311\site-packages\torch\lib\ cudn_cnn_inter64_8 .dll”或其依赖项时出错。
原因有很多,例如版本冲突、检查显卡驱动有无问题, 默认路径在 C:\Program Files\NVIDIA Corporation\FrameViewSDK\bin
,nvcc -V
…那些,自己一点点排查,我也是试了好久,新建新环境重新装吧(我也试了很多遍,碰巧这次就行了)
conda create -n env_pytorch python=3.9
Y
conda activate env_pytorch
conda env list
(env_pytorch) C:\Users\xxx>pip list
Package Version
---------- -------
pip 24.0
setuptools 69.5.1
wheel 0.43.0
# 这里可以看到就3个,之前我conda create -n eliauk python=3.11
#然后pip list比这个多很多一些库,
#但是我这次就只有三个库,很干净
pip3 install numpy
# 最后再用官网找的命令
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip list
(env_pytorch) C:\Users\xxx>python
Python 3.9.19 (main, May 6 2024, 20:12:36) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> import torch
>>> torch.cuda.is_available()
True
>>>
删除虚拟环境
在 Anaconda中,要删除已经创建的虚拟环境,您可以按照以下步骤操作:
打开 Anaconda Prompt(Windows)或终端(Linux/macOS)。
确保您当前不在要删除的虚拟环境下,如果在的话,请先退出虚拟环境:
conda deactivate
删除指定的虚拟环境,替换 <env_name> 为您要删除的虚拟环境名称:
conda env remove --name <env_name>
这条命令会彻底删除指定的虚拟环境以及其中安装的所有软件包和配置文件。
conda env remove --name my_env
请注意,删除操作不可逆,请确保您确实不再需要该环境及其内容。在执行删除前,如有必要,请自行备份相关的数据和配置。
**撒花✿✿ヽ(°▽°)ノ✿**