【python\Deep Learning】用Anaconda配置python环境&深度学习框架 || 软件手册

【start:2022.12.21】

1. 目标

在这里插入图片描述

一般来说,每个代码项目都会有独特的python库需求,为了更有条理地管理python library,我们可以为每个代码项目都新建一个python environment,这样可以防止不同项目所需的python library版本冲突——具体地,我们可以用Anaconda来管理多个python environment,以便为每种项目创建一个python environment,甚至可以为每个项目都创建一个新的python environment。

2. 快速通道:conda命令

(本章是常用的 cmd conda 命令;初学者安装python时,请直接阅读第三章)

nvidia-smi(查询最大可兼容的cuda版本)
nvcc --version(查询当前cuda版本)
安装cudacuda-toolkit工具包

pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple/(pip全局镜像源加速)
·
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/(conda全局镜像源加速)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

conda create -n env_name python=3.8(创建环境)
conda activate env_name(激活环境)
conda info --envs(查看已有的环境)

pip install -r requirements.txt(安装官方项目库;whl文件;库的介绍参考:https://pypi.org/
·
pip install torchvision==0.11.0+cu113 torchaudio==0.10.0 --extra-index-url https://download.pytorch.org/whl/cu113(先装非torch部分,防止依赖覆盖目标版本的torch;whl文件
pip install torchvision==0.11.0+cu113 --extra-index-url https://download.pytorch.org/whl/cu113 --no-deps(另外可以加入参数--no-deps防止自动重装别的版本的torch)
·
pip install torch==1.10.0+cu113 --extra-index-url https://download.pytorch.org/whl/cu113(通过云链接安装torch;注意,安装torch时,torch要和cuda(或cpu)、python的版本匹配)
pip install torch-1.10.0+cu113-cp38-cp38-win_amd64.whl(或者直接手动下载 pytorch whl文件,再用pip安装)

pip install jupyter(安装jupyter分块插件)
jupyter notebook --generate-config(生成默认配置文件)

conda install cudnn=8.1
conda install cudatoolkit=11.2
·
pip install tensorflow-2.5.0-cp38-cp38-win_amd64.whl (手动下载 tensorflow whl文件 )
pip install tensorflow-estimator==2.5.0
·
pip install tensorboard==2.5.0 (tensorboard 图形化界面)
pip install tensorboard-data-server
pip install tensorboard-plugin-wit


# 检查gpu版torch是否可以正常使用
import torch
print(torch.cuda.is_available())
# 修改max_split_size_mb,改善显存碎片化引起的OOM
import os
os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "max_split_size_mb:32"

3. 安装Anaconda

3.1. 安装

Conda是一种用于管理Python环境的工具,在安装了 Anaconda 或 Miniconda 之后,可以使用其管理的Python环境来运行程序。

首先,我们需要安装最新版本 Anaconda 或 Miniconda:

【Anaconda 镜像源】https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

【Miniconda 镜像源】https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/

下载上面的链接中的exe文件,在管理员模式下打开,根据提示一路安装Anaconda;安装后,如果在cmd中输入conda能返回相关信息,就说明安装成功了;但是如果不能返回相关信息,则需要进行“手动添加环境变量”等操作。

3.2. 添加环境变量

安装anaconda时,如果没有选择自动添加环境变量,需要手动在环境变量 PATH 中添加:

D:\Codes\Anaconda
D:\Codes\Anaconda\Scripts
D:\Codes\Anaconda\Library\bin

【ref】vscode conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称–解决方案

3.3. 设置镜像源加速

可以通过镜像源加快conda、pip安装新的库的速度

3.3.1. conda 源

添加镜像源:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

conda config --set show_channel_urls yes

删除镜像源:

conda config --remove-key channels,或在C:\Users\xx\pip路径删除配置文件pip.ini,即可复原默认源;

如果还是会出现网络错误的话,在cmd中输入:conda config --show-sources来查找.condarc文件的路径,然后修改该文件的内容为:

channels:
  - defaults
show_channel_urls: true
channel_alias: http://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

或者

ssl_verify: true
show_channel_urls: true

channels:
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64/

3.3.2. pip 源

清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

豆瓣源
pip config set global.index-url http://pypi.douban.com/simple/

阿里云源
pip config set global.index-url http://mirrors.aliyun.com/pypi/simple/

中科大源
pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple/

单次使用源
pip install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

为源添加信任
xxx + --trusted-host pypi.douban.com

删除镜像源
pip config unset global.index-url

【ref】使用pip config (pip3 config)配置pip相关的参数失败,怎么解决?

3.4. 修改conda环境的保存路径

安装anaconda时,如果没有特别指定“安装路径”,之后由conda创建(管理)的python环境会默认安装在用户目录C:\Users\username.conda\envs

如果转移这些环境,可以在用户目录C:\Users\username下,修改anaconda的位置为:

envs_dirs:
  - F://CS//Anaconda3//envs

()注意,要修改一下envs文件夹的权限,“prompt命令行”才能正常运行:选中Anaconda3文件夹,然后右击选则属性,找到安全,Users权限全部允许。

【ref】改变conda虚拟环境的默认路径


另外,欲彻底卸载conda,需删除C:\Users\lenovo下的.condarc文件

4. 配置python代码编辑器

使用 vscode、jupyter notebook 等 IDE(代码编辑器)来编辑python代码,能较好地提高工作效率

4.1. vscode IDE

Visual Studio Code,也称为VS Code,是一款支持Linux,Windows和macOS的代码编辑器。它既能编辑简单文本,也能像集成开发环境(IDE)一样管理整个代码库。它还可以通过插件进行扩展,被广泛认为是一个可靠的文本编辑器。

安装与使用方案参考:【VSCode】visual studio code 使用总结

第一次在vscode中激活conda创建的虚拟环境时,可以在vscode的terminal中执行:conda init

然后再管理员模式下打开power shell,执行:set-ExecutionPolicy RemoteSigned

【ref】第一次在vscode中尝试激活conda创建的虚拟环境

4.2. jupyter插件

.ipynb文件(jupyter notebook)相当于matlab的.mlx文件,可以实现代码的实时运行

jupyter插件的安装方法:

  • 安装jupyter notebook,在cmd中输入:pip install jupyter

  • 安装分块模式插件,在cmd中输入:conda install -n env_name ipykernel --update-deps --force-reinstall

4.3. pycharm IDE

【ref】pycharm如何设置Ctrl+鼠标滚轮调整代码字体大小

ctrl+mouse自动缩放

pycharm markdown标题分级自动编号插件

jupyter:

pip install jupyter
jupyter notebook --generate-config
jupyter notebook

5. 配置python环境

安装好anaconda后,就可以为特定的代码项目安装python环境了

下面是python的环境配置与“增删改查” 方法:

5.1. 创建环境

5.1.1. 选择版本

对于深度学习环境,需要根据torch、torchvision和numpy版本,来选择python版本

在这里插入图片描述

【ref】总结:pytorch对应版本安装

5.1.2. 新建环境

直接新建一个环境
conda create -n env_name python=3.8
其中,env_name就是你创建环境的名字,可以自己命名;3.8是指定python 的版本。

默认路径:
conda create -n env_name python=3.8

指定路径:
conda create --prefix=“F:\CS\Anaconda\envs\env_name ” python=3.8
注意prefix前有两个杠,不是一个!n前只有一个杠!

指定频道:
conda create -c https://conda.anaconda.org/conda-forge -n env_name python=3.8

更新pip:
python -m pip install --upgrade pip

yaml文件:
conda env create -f requirements.yaml
【ref】pycharm配置深度学习环境:conda env create -f environment.yml报错

【ref】解决创建conda环境时Solving environment: failed 和 ResolvePackageNotFound 的错误

5.1.3. conda升级python

conda install python=3.8

5.2. 克隆环境

5.2.1. 直接克隆

拷贝一个原有的环境
conda create -n new_env_name --clone old_env_name

默认路径:
如:conda create -n F:\CS\Anaconda\envs\nlp --clone F:\CS\Anaconda\envs\deeplearning

指定路径:
如:conda create --prefix=“F:\CS\Anaconda\envs\nlp” --clone F:\CS\Anaconda\envs\deeplearning

5.2.2. txt文件克隆

生成txt文件
pip freeze > requirements.txt
pip install -r requirements.txt
生成的文件会保存在当前cmd目录下

5.3. 查询环境

列出所有的环境名
conda info --envs

5.4. 删除环境

退出激活状态
conda.bat deactivate

删除环境
conda remove -n 环境名 --all
conda env remove envs_name --all
conda env remove --prefix F:\CS\Anaconda\envs\nlp

5.5. 使用环境

5.5.1. 进入Anaconda prompt

win+r,然后直接搜索

【ref】安装了 Anaconda 却找不到 Anaconda prompt ?

5.5.2. 激活环境

激活环境
conda activate env_name

当env_name是关键字时,需要使用绝对路径
conda activate F:\CS\Anaconda\envs\env_name

如:conda activate F:\CS\Anaconda\envs\deeplearning

报错:
CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate’.
If using ‘conda activate’ from a batch script, change your invocation to ‘CALL conda.bat activate’.

powershell prompt:

conda init cmd.exe
conda init powershell

5.5.3. 进入项目

切换文件夹后才可以cd

powershell prompt:

F:
cd F:\CS\Anaconda\envs\deeplearning

6. 安装python库

Python库是指在Python编程语言中,一组完成特定任务的代码集合——它们可以实现多种附加功能,需要我们手动按需安装

6.1. pip

安装库时,执行命令:

pip install -r requirements.txt

pip install -i http://pypi.douban.com/simple/ -r requirements.txt --trusted-host pypi.douban.com

各种python库的介绍参考:https://pypi.org/


疑问:

在windows中用 pip install -r requirements.txt 安装requirements.txt,部分包找不到时会报错卡住时,要如何跳过报错呢?

pip install --no-binary :all: -r requirement.txt (这个命令会尝试安装requirement.txt中的所有包,但如果某个包无法下载,它将跳过并继续尝试安装其他包)

【ref】Stop pip from failing on single package when installing with requirements.txt

一种方法是:逐个pip install xxx

import sys
import pip
from pip._internal import main as pip_main

# pip version >18
def pip_install(package):
    pip_main(['pip_install', package])

# # pip version <18
# def pip_install(package):
#     pip.main(['pip_install', package])

path = r'D:\JoeOffice\jupyter_notebook\computer_vision\segmentation\ICCV-2019-IIC-master\requirements.txt'

with open(path, "r") as f:
    data = f.readlines()
    print(data)

wrong_box=[]
for i, line in enumerate(data):
    try:
        pip_install(line)
        print(i,line)
    except:
        wrong_box.append([i,line])
        print(i,line, ' wrong')

print('wrong_box:',wrong_box)


可以使用以下命令将当前Python环境中的所有包和版本号制作成一个requirement.txt文件:
pip freeze > requirement.txt

6.2. conda

安装库时,执行命令:

conda install requirements.txt

conda install --yes --file requirements.txt # 这种执行方式,一遇到安装不上就整体停止不会继续下面的包安装

requirements.txt的格式很多种,怎么样才是对应pip还是conda的,怎么样又才是对的?

在这里插入图片描述
【ref】【python】使用conda或pip 导出及安装requirements.txt

6.3. python常用重要库

直接pip:

pip install matplotlib
pip install scipy
pip install pandas
pip install pillow
pip install opencv-python
pip install scikit-learn


或者在https://mirrors.bfsu.edu.cn/pypi/web/simple/下载whl文件,然后再pip install xxx.whl


6.4. python重新加载库

import importlib
import xxx
importlib.reload(xxx)

7. 安装CUDA

【ref】conda下安装pytorch最详细教程 // 安装pytorch踩坑记录 // cuda11.5下pytorch安装 // torch.cuda.is_available()输出False解决办法

7.1. 驱动、CUDA和显卡的区别

7.1.1. 概念

驱动、CUDA和显卡是三个不同的概念。

驱动:驱动是一种软件,可以让计算机操作系统与硬件设备(例如显卡、声卡、网卡等)进行通信。驱动程序提供了一种接口,使得操作系统可以控制硬件设备并执行相应的功能。在显卡中,驱动程序是一个重要的组成部分,因为它决定了显卡如何工作以及如何与其他组件交互。

CUDA:CUDA是英伟达(NVIDIA)开发的一种并行计算平台和编程模型。它允许开发者在显卡上运行并行计算任务,可以加速许多科学计算、图形渲染和深度学习任务。CUDA需要特定的硬件支持,通常是NVIDIA显卡。

显卡:显卡(也称为显示适配器)是一种硬件设备,用于将计算机的数字信号转换为图形输出。显卡通常包含一个或多个GPU(图形处理器),可以执行大量的并行计算任务,用于渲染3D图像、处理视频和加速计算任务。

因此,驱动、CUDA和显卡是三个不同的概念,它们在计算机中扮演着不同的角色。驱动程序可以控制显卡的行为,CUDA可以让开发者在显卡上运行并行计算任务,而显卡则是执行这些计算任务的硬件设备。

7.1.2. 安装

安装驱动、CUDA和显卡的方法略有不同。下面是简要的安装步骤:

安装显卡驱动:通常可以从显卡厂商的官方网站下载驱动程序。下载适合自己显卡型号和操作系统版本的驱动,然后运行安装程序即可。

安装CUDA:首先需要确认自己的显卡是否支持CUDA。如果支持,可以从NVIDIA官方网站下载适合自己操作系统和显卡型号的CUDA安装包。下载后运行安装程序,按照提示进行安装。安装完成后,需要在环境变量中设置CUDA的路径。

安装显卡:显卡通常是通过PCI Express插槽连接到计算机主板上的。首先需要确认自己的计算机主板是否支持对应显卡的插槽类型。如果支持,可以将显卡插入对应的插槽中,并连接电源和显示器。安装完成后,需要安装显卡驱动程序。

需要注意的是,安装驱动、CUDA和显卡之前需要确保自己的计算机符合相应的硬件和软件要求,否则可能会导致安装失败或者无法正常工作。另外,安装过程中需要仔细阅读安装指南和提示,按照步骤进行操作,以避免安装错误或者损坏硬件设备。

7.2. 显卡

即GPU

7.3. 驱动

NVIDIA官网选择自己GPU型号的最新驱动,进行下载安装:
【link】https://www.nvidia.com/Download/index.aspx?lang=cn
比如NVIDIA GeForce GTX 1050 GPU。

7.4. CUDA

CUDA是 NVIDIA推出的一种并行计算平台和编程模型,可以在NVIDIA GPU上运行
C/C++代码;

CUDAToolkit是NVIDIA的CUDA工具包,包含了CUDA的全部工具。

安装CUDA Toolkit:
https://developer.nvidia.com/cuda-toolkit-archive

https://developer.nvidia.com/cuda-zone

比如,在CUDA Toolkit 11.7 Downloads中,有:

在这里插入图片描述
下载并安装exe文件后,用nvcc --version检测是否安装成功

7.4.1. 显卡、cuda、torch的兼容

高版本的显卡可以兼容低版本的cuda吗?
高版本的cuda可以兼容低版本的torch吗?

Answer:一般都可以

7.4.2. nvidia-smi 与 nvcc --version

Q:nvidia-smi 与 nvcc --version 都会返回cuda版本,但是为什么有时候返回值版本号不一样?

nvcc --version与nvidia-smi区别:
查询到的版本号是不一样的,nvidia-smi是查看支持的最大版本,nvcc --version查看当前服务器安装的版本

在cmd中,具体地:

 nvcc --version:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Wed_Jun__2_19:25:35_Pacific_Daylight_Time_2021
Cuda compilation tools, release 11.4, V11.4.48
Build cuda_11.4.r11.4/compiler.30033411_0
 nvidia-smi:
Sun May 28 14:29:20 2023       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 526.56       Driver Version: 526.56       CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ... WDDM  | 00000000:01:00.0 Off |                  N/A |
| N/A   39C    P8    11W /  N/A |   2211MiB /  6144MiB |     14%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

CUDA有 runtime api 和 driver api,两者都有对应的CUDA版本, nvcc --version 显示的就是前者对应的CUDA版本,而 nvidia-smi显示的是后者对应的CUDA版本。

通常,driver api的版本能向下兼容runtime api的版本,即 nvidia-smi 显示的版本大于nvcc --version 的版本通常不会出现大问题。

【ref】nvcc和nvidia-smi显示的版本不一致?

对于 nvidia-sminvcc --version 命令返回不同 CUDA 版本的情况,还可能存在其他这几种原因:

  1. 驱动程序和 CUDA Toolkit 的兼容性:nvidia-smi 提供的 CUDA 版本是与 NVIDIA 驱动程序捆绑在一起的版本,而 nvcc --version 提供的 CUDA 版本是 CUDA 编译器和 CUDA Toolkit 的版本。这意味着 NVIDIA 驱动程序和 CUDA Toolkit 可能不完全匹配,即使在同一系统上。因此,它们可能显示不同的 CUDA 版本号。

  2. 多个 CUDA 版本的安装:如果在系统上安装了多个 CUDA 版本,可能会导致 nvidia-sminvcc --version 返回不同的 CUDA 版本。这可能是因为系统中存在多个 CUDA Toolkit 安装,而 nvidia-sminvcc 分别指向不同版本的 CUDA。

7.4.3. cudatoolkit

running build_ext
E:\CS\Anaconda3\envs\de38\lib\site-packages\torch\utils\cpp_extension.py:782: UserWarning: The detected CUDA version (11.7) has a minor version mismatch with the version that was used to compile PyTorch (11.3). Most likely this shouldn't be a problem.

【ref】conda安装的cudatoolkit与Nvidia官方提供的cudatoolkit的区别

7.4.4. debug

报错:running build_ext error: [WinError 2] 系统找不到指定的文件

【ref】running build_ext error: [WinError 2] 系统找不到指定的文件

原因:只随着pytorch安装了CUDA、Cudnn的运行环境,但是CUDA的开发环境没有安装

成功后,显示:

running build_ext
E:\CS\Anaconda3\envs\de38\lib\site-packages\torch\utils\cpp_extension.py:782: UserWarning: The detected CUDA version (11.7) has a minor version mismatch with the version that was used to compile PyTorch (11.3). Most likely this shouldn't be a problem.

8. 配置深度学习框架:PyTorch

8.1. pytorch cpu版本

torch_stable:https://download.pytorch.org/whl/torch_stable.html

pip install torch==1.6.0+cpu torchvision==0.7.0+cpu -f https://download.pytorch.org/whl/torch_stable.html

pip install -i https://pypi.douban.com/simple/ torch==1.6.0+cpu torchvision==0.7.0+cpu -f https://download.pytorch.org/whl/torch_stable.html

8.2. pytorch gpu版本

【ref】在anaconda下安装pytorch + python3.8+GPU/CPU版本 详细教程

nvidia-smi(查询最大cuda版本)
nvcc --version(查询当前cuda版本)

 nvcc --version:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Wed_Jun__2_19:25:35_Pacific_Daylight_Time_2021
Cuda compilation tools, release 11.4, V11.4.48
Build cuda_11.4.r11.4/compiler.30033411_0
 nvidia-smi:
Sun May 28 14:29:20 2023       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 526.56       Driver Version: 526.56       CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ... WDDM  | 00000000:01:00.0 Off |                  N/A |
| N/A   39C    P8    11W /  N/A |   2211MiB /  6144MiB |     14%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

【official document】下载低于cuda的版本的torch
【torch whl】https://download.pytorch.org/whl/torch/
【torch_stable mirror 】https://download.pytorch.org/whl/torch_stable.html

  1. 含有cu标志的才是gpu版

  2. 查找对应的版本(如torch=1.10.0版本),如果自己的CUDA Version=11.4,那就Ctrl+F搜cu小于等于114的版本下载,发现最大的是cu113版本(CUDA Version=11.3),然后再确定cp、amd(cp38代表python3.8,amd64代表64位操作系统),就可以开始下载啦

  3. 分别下载torch、torchvision、torchaudio

  4. 为了兼容cuda的上限,同时满足库的最低要求,尽量安装1.x.x系列的最高级,而不是2.x.x系列的最低级——一般torch最大会是1.12.0版本

  • torch
    torch
  • torchvision
    torchvision
  • torchaudio
    torchaudio

以上是直接下载whl文件,下好后可以直接pip install xxx.whl

pip命令见下一节;在pip时如果被限速(Wifi或网络发包频率过小,等待时间过长),可以加入:pip --default-timeout=100 install -U pip

8.2.1. cu113+python=3.8系列

torch版本只有1.10~1.12

conda create -n pytorch38 python=3.8
conda activate pytorch38 

【torch whl】https://download.pytorch.org/whl/torch/
欲使用不同版本的torch,只需要修改“==号”后的版本号:

pip install torch==1.10.0+cu113 --extra-index-url https://download.pytorch.org/whl/cu113

pip install --no-deps torchvision==0.11.0+cu113 torchaudio==0.10.0 --extra-index-url https://download.pytorch.org/whl/cu113

【torch_stable mirror 】https://download.pytorch.org/whl/torch_stable.html
cu113/torch-1.10.0%2Bcu113-cp38-cp38-win_amd64.whl
cu113/torchvision-0.11.0%2Bcu113-cp38-cp38-win_amd64.whl
cu113/torchaudio-0.10.0%2Bcu113-cp38-cp38-win_amd64.whl

8.2.2. cu102+python=3.8系列

torch版本只有1.5~1.12

conda create -n pytorch38 python=3.8
conda activate pytorch38 

【torch whl】https://download.pytorch.org/whl/torch/
欲使用不同版本的torch,只需要修改“==号”后的版本号:

pip install torch==1.10.0+cu102 --extra-index-url https://download.pytorch.org/whl/cu102

pip install --no-deps torchvision==0.10.0+cu102 torchaudio==0.10.0 --extra-index-url https://download.pytorch.org/whl/cu102

【torch_stable mirror 】https://download.pytorch.org/whl/torch_stable.html
cu102/torch-1.10.0%2Bcu102-cp38-cp38-win_amd64.whl
cu102/torchvision-0.10.0%2Bcu102-cp38-cp38-win_amd64.whl
cu102/torchaudio-0.10.0%2Bcu102-cp38-cp38-win_amd64.whl

8.2.3. download debug

安装Totchvision 时自动安装cpu版本的torch

在安装指定版本的torchvision后,pip总是会自动下载别的torch版本,很是烦人!只需在pip中指定一些参数(–no-deps )即可!

pip install --no-deps torchvision==0.10.0+cu102 torchaudio==0.10.0 --extra-index-url https://download.pytorch.org/whl/cu102

8.3. pytorch debug

RuntimeError: CUDA out of memory. Tried to allocate 6.18 GiB (GPU 0; 24.00 GiB total capacity; 11.39 GiB already allocated; 3.43 GiB free; 17.62 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

修改max_split_size_mb(改成大于20):

import os
os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "max_split_size_mb:32"

如果不修改,jupyer内核会在第二次执行代码时崩溃

在这里插入图片描述

修改后就正常了

在这里插入图片描述


cannot import name ‘QuantStub’ from ‘torch.ao.quantization’

Lib\site-packages\torch\ao\quantization\__init__.py里粘贴下面的内容

class QuantStub(nn.Module):
    r"""Quantize stub module, before calibration, this is same as an observer,
    it will be swapped as `nnq.Quantize` in `convert`.
    Args:
        qconfig: quantization configuration for the tensor,
            if qconfig is not provided, we will get qconfig from parent modules
    """
    def __init__(self, qconfig=None):
        super(QuantStub, self).__init__()
        if qconfig:
            self.qconfig = qconfig
 
    def forward(self, x):
        return x

RuntimeError:No CUDA GPUs are available

import torch
print(torch.cuda.is_available())
print(torch.cuda.device_count())

如果上面没问题,则把:

os.environ["CUDA_VISIBLE_DEVICES"]="2"

改成:

os.environ["CUDA_VISIBLE_DEVICES"]="0"

OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading “F:\CS\Anaconda3\envs\cv38\lib\site-packages\torch\lib\caffe2_detectron_ops_gpu.dll” or one of its dependencies.

改小batch_size


RuntimeError: CUDA error: device-side assert triggered CUDA kernel
errors might be asynchronously reported at some other API call,so the
stacktrace below might be incorrect. For debugging consider passing
CUDA_LAUNCH_BLOCKING=1.

num_workers是加载数据(batch)的线程数目

num_workers通过影响数据加载速度,从而影响训练速度。每轮dataloader加载数据时:dataloader一次性创建num_worker个worker,worker就是普通的工作进程,并用batch_sampler将指定batch分配给指定worker,worker将它负责的batch加载进RAM。

  • num_workers=0表示只有主进程去加载batch数据,这个可能会是一个瓶颈。
  • num_workers =1表示只有一个worker进程用来加载batch数据,而主进程是不参与数据加载的。这样速度也会很慢。
  • num_workers>0 表示只有指定数量的worker进程去加载数据,主进程不参与。增加num_works也同时会增加cpu内存的消耗。所以num_workers的值依赖于batch size和机器性能。

一般开始是将num_workers设置为等于计算机上的CPU数量

最好的办法是缓慢增加num_workers,直到训练速度不再提高,就停止增加num_workers的值。

9. 配置深度学习框架:TensorFlow

9.1. 显卡驱动

9.2. cudnn

cudnn:“NVIDIA cuDNN(CUDA Deep Neural Network)是用于深度神经网络的GPU加速库

【ref】Tensorflow与CUDA、cudnn版本对应关系

【download link】cuDNN Archive: https://developer.nvidia.com/rdp/cudnn-archive
(需要注册才能下载)

先下载:

下载文件:cudnn-windows-x86_64-8.6.0.163_cuda11-archive.zip文件

然后移动文件:

a) 把cuda\bin目录下的文件复制到 C:\Program Files
\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin 目录下.
b) 把\cuda\ include目录下的文件复制到 C:\Program Files
\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include 目录下.
c) 把\cuda\lib\x64\目录下的文件复制到C:\Program Files
\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64 目录下.

然后添加各种环境路径

最后检验:

E:\CS\CUDA\cuda_v11.8\extras\demo_suite + cmd

【ref】window11系统CUDA、cuDNN 安装以及环境变量配置

【ref】win10 64位 环境下安装CUDA 11.8和 cuDNN v8.6.0


欲安装cudnn,执行下列命令:

conda install cudnn=8.1
conda install cudatoolkit=11.8

9.3. cudatoolkit

如下图,下载cudnn时会自带cudatoolkit:

## Package Plan ##

  environment location: F:\CS\Anaconda3\envs\gptpinn

  added / updated specs:
    - cudnn=8.1


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    cudatoolkit-11.8.0         |      h09e9e62_11       638.9 MB  https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge
    cudnn-8.1.0.77             |       h3e0f4f4_0       610.8 MB  https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge
    ------------------------------------------------------------
                                           Total:        1.22 GB

【ref】CUDA, cudatoolkit, cudnn 等技术总结

9.4. TensorFlow 1

【ref】Tensorflow1.0GPU版本最全最详细的安装
【whl】https://pypi.tuna.tsinghua.edu.cn/simple/tensorflow/

python=3.6

conda create -n tf36 python=3.6
conda activate tf36
pip install tensorflow-gpu==1.15.0 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

python=3.7

conda create -n tf37 python=3.7
conda activate tf37
# 先在https://www.lfd.uci.edu/~gohlke/pythonlibs下载最新的whl文件(如1.9.0)
# 将whl放入Scripts文件夹并install
# 再将tensorflow降级为tensorflow==1.15
cd F:\CS\Anaconda3\envs\tf37\Scripts
pip install tensorflow-1.9.0-cp37-cp37m-win_amd64.whl
pip install tensorflow-gpu==1.15.0 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

报错:

No module named ‘_distutils_hack’

解决:

pip install setuptools==57.5.0


报错:

ImportError: DLL load failed: 找不到指定的模块。

解决:

直接降TensorFlow的级:pip install tensorflow==1.15

【ref】导入tensorflow模块时出现ImportError: DLL load failed找不到指定的模块的问题

9.5. TensorFlow 2

注意:避开2.5版本,bug很多!

【whl】https://pypi.tuna.tsinghua.edu.cn/simple/tensorflow/

常用whl:

tensorflow-2.2.0-cp38-cp38-win_amd64.whl

tensorflow-2.4.1-cp38-cp38-win_amd64.whl

tensorflow-2.5.0-cp38-cp38-win_amd64.whl

pip install 对应 whl 即可

9.6. 验证

import tensorflow as tf
gpus = tf.config.experimental.list_physical_devices(device_type='GPU')
cpus = tf.config.experimental.list_physical_devices(device_type='CPU')
print(gpus, cpus)

如果返回:

[PhysicalDevice(name=‘/physical_device:GPU:0’, device_type=‘GPU’)]
[PhysicalDevice(name=‘/physical_device:CPU:0’, device_type=‘CPU’)]

说明安装gpu版本的TensorFlow成功

10. 配置tensorboard平台

10.1. 安装

conda install cudatoolkit=10.0
conda install cudnn=7.3

F:\CS\Anaconda3\envs\whl\tensorflow-2.2.0-cp38-cp38-win_amd64.whl

tensorboard-plugin-wit==1.6.0
tensorflow==2.2.0
tensorflow-base==2.2.0
tensorflow-estimator==2.2.0

因为版本的问题,我在原来的环境上改了很多次,甚至把各个库的版本都对标上新创建的可运行的环境,但原来的环境还是各种bug

所以:

如果乱升级各种库,导致程序运行不了,不如直接新建一个环境,然后再次安装所有该有的库

10.2. 运行

在终端中输入:

python -m tensorboard.main --logdir=D:\JoeOffice\jupyter_notebook\computer_vision\instance_segmentation\MultiStar-main\experiments\results\run4 --host=127.0.0.1

就可以打开tensorboard,实时监视模型的训练过程,观察训练指标的变化,并及时调整模型或训练策略。

【ref】TensorBoard 1.12.0 报错的解决方案

11. Git clone方法

下载github文件分支:
git clone --branch master https://github.com/CompVis/taming-transformers.git


使用Git的时候,若因为VPN导致:fatal: unable to access ‘https://github.com
则可以: git config --global --unset http.proxy


如果我们在开发的过程中将代码copy了好几个版本,每个版本做不同的更改,则这样你在跳到其他版本的时候,也一定要在其他版本的目录下pip install -e . 切换一下目录,否则如果用到相关代码的话,python还是会去原来的目录找程序执行


12. 其他技巧

12.1. linux用.sh文件执行python语句

执行python代码

12.2. 用setup.py文件进行模块安装

python setup.py install

12.3. pip install -e设置可编辑模式

pip install -e .

其中,-e means installing a project in editable mode

12.4. 一次执行多条cmd命令

把所有命令分行写入commands.txt中,然后新建一个execute_commands.py文件,在其中写入下面的代码,执行execute_commands.py文件便可以一次执行多条命令

import subprocess

# 读取命令行语句文件
with open('commands.txt', 'r') as file:
    commands = file.readlines()

print(f'commands : {commands}')

# 逐行执行命令行语句
for command in commands:
    # 去除每行命令的换行符
    command = command.strip()

    # 执行命令行语句
    print(f'command : {command}')
    subprocess.run(command, shell=True)
    
'''
参考命令:

tensorboard --logdir=D:\JoeOffice\jupyter_notebook\computer_vision\instance_segmentation\MultiStar-main\experiments --host=127.0.0.1

python apply.py -m /path/to/training/output/dir -i input_raw_image.tif -o output.tif
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值