萌新级深度学习配置环境笔记
以Python、PyCharm和PyTorch为基础
提供了有关搭建深度学习单机平台和准备所需软件的概念性普及
目标环境架构(???图怎么挂了) 目标环境架构(???图怎么挂了) 开发环境架构:Python深度学习环境 首先要明确 Python编程语言 虚拟环境 虚拟环境管理系统 深度学习框架 软件包管理系统 软件包 集成开发环境 的概念
Python 编程语言 Python是一种解释型语言,它以逐行转换为机器语言的方式运行程序,具有高效的执行效率。Python解释器将源代码转换为字节码,然后将编译好的字节码交给Python虚拟机(PVM)进行执行
在Python中,当首次执行脚本时,会生成.pyc文件,它是经过编译的字节码文件(c代表compiled),存储在pycache 目录中。与原始的.py文件相比,加载.pyc文件的速度更快,并且.pyc文件还可以隐藏源代码并在一定程度上防止反编译(在早期版本的Python中,".pyo"文件是作为优化版本的字节码文件存在的。但是,自从Python 3.5版本开始,默认优化级别已经提高,而不再需要单独生成".pyo"文件。优化级别由Python解释器的命令行参数控制,默认情况下启用了最高级别的优化)
如果选择的编程语言是Python,那么无论是tensorflow还是PyTorch,对Python而言,他们都是以Python包 的形式存在的,通过导入这些包 来使用它们提供的深度学习功能
虚拟环境 和 虚拟环境管理系统 虚拟环境 是一种用于隔离项目的独立Python环境。它允许在同一台计算机上同时管理多个项目,并确保它们之间的依赖关系不会冲突。虚拟环境管理系统 是一组工具和命令,用于创建、激活、切换和删除虚拟环境
软件包管理系统 软件包管理系统 是用于安装、管理和升级软件包 的工具。对于Python,常用的软件包管理系统包括pip和conda。它们可以帮助轻松地安装第三方库、框架和工具
在上下文中,提到的第三方库、框架和工具指的都是Python包 (Python packages)。Python包是一种组织和分发Python代码的方式,它可以包含模块、子包和其他资源文件,以提供特定功能或服务
第三方库是由Python社区开发并提供的可重用代码库,用于在Python项目中实现各种功能。常见的第三方库包括NumPy、Pandas、Matplotlib等
框架是一种提供了基础结构和工具的软件框架,用于开发特定类型的应用程序。在深度学习领域,TensorFlow和PyTorch就是两个流行的深度学习框架
工具是用于辅助开发、调试和测试的实用程序。例如,代码静态分析工具、调试器、性能分析工具等都属于开发工具
这些Python包 可以使用软件包管理系统 (如pip或conda)来安装、管理和升级它们。通过导入这些包 ,可以在Python项目中轻松地使用它们提供的功能和特性
Anaconda :是一个开源的软件包管理系统 和环境管理系统 ,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换
集成开发环境 集成开发环境 (IDE)是一种提供了多种开发工具和功能的软件,可帮助开发人员在编写代码时提高效率。
PyCharm :是一种Python IDE(Integrated Development Environment,集成开发环境 ),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发
深度学习框架 深度学习框架的出现降低了入门的门槛,使得不需要从复杂的神经网络开始编代码,可以根据需要选择已有的模型,通过训练得到模型参数,也可以在已有模型的基础上增加自己的layer,或者是在顶端选择自己需要的分类器和优化算法(比如常用的梯度下降法)
拿Google的TensorFlow举个例子:
Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程,TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统
当然也正因如此,没有什么框架是完美的,就像一套积木里可能没有你需要的那一种积木,所以不同的框架适用的领域不完全一致。 总的来说深度学习框架提供了一些列的深度学习的组件(对于通用的算法,里面会有实现),当需要使用新的算法的时候就需要用户自己去定义,然后调用深度学习框架的函数接口使用用户自定义的新算法
开始深度学习项目之前,选择一个合适的框架是非常重要的,因为选择一个合适的框架能起到事半功倍的作用。研究者们使用各种不同的框架来达到他们的研究目的,侧面印证出深度学习领域百花齐放。目前(2023)最为流行的深度学习框架有PyTorch 和 TensorFlow
不同的人,深度学习的框架使用感受是不一样的
不同时期,深度学习的框架排行榜的顺序也不一样
下面列出了 Keras、TensorFlow、PyTorch 和 PaddlePaddle 的主要区别,例如体系结构、功能、编程和各种属性(萌新可以跳过不看):
API级别 Keras 是一个高级 API,可以在 TensorFlow、Theano 或 CNTK 之上运行。它以其快速开发和简单语法而受到关注。TensorFlow 提供了低级和高级 API,而 PyTorch 同样提供了低级和高级 API,如 torch.nn 和 torch.optim。PaddlePaddle 提供了易于使用的 API,支持多种深度学习模型
框架的体系结构和性能 Keras 具有简单、清晰和易读的体系结构。TensorFlow 的使用要求更严格,但它提供了强大的性能和灵活性。PyTorch 的体系结构相对简单,它提供了动态计算图和简洁的 API,在研究领域非常受欢迎。PaddlePaddle 具有良好的可扩展性和分布式训练能力
调试过程 Keras 提供了简化网络调试的工具。然而,在 TensorFlow 中,调试是一个复杂的过程。PyTorch 提供了更灵活的调试功能,可以使用诸如 PyCharm、ipdb 和 PDB 等工具有效地计算神经网络中的操作时间。PaddlePaddle 提供了丰富的调试工具和文档,可以帮助用户快速定位和解决问题。例如,它提供了 VisualDL 工具,可以帮助用户可视化模型训练过程中的各种指标,以便更好地理解模型的行为。
框架的适用性 Keras 在小型数据集上表现出色,并提供快速原型设计和多个后端的扩展性支持。TensorFlow 在目标检测等方面提供了高性能和功能,并可适用于处理大型数据集。PyTorch 由于其灵活性和调试能力而越来越受欢迎,可以在最短的训练时间内进行调整。PaddlePaddle 提供了丰富的预训练模型和模型库,可以帮助用户快速构建和部署深度学习应用
神经网络中框架的性能 PyTorch 具有递归网络的多层和单元级别类。层对象管理输入数据和时间步骤,并表示具有双向属性的 RNN。因此,PyTorch 的网络可以在单元级别提供适当的封装,无需进一步优化。TensorFlow 包含 Dropout 包装、多个 RNN 单元以及实现深度神经网络的单元级别类。Keras 由完全连接层、GRU 和 LSTM 组成,用于创建循环神经网络
总结 Keras 是一个高级 API,可以在 TensorFlow、Theano 或 CNTK 之上运行。它以其快速开发和简单语法而受到关注。 TensorFlow 是由 Google 开发的深度学习框架,提供了低级和高级 API。它具有强大的性能和灵活性,在目标检测等方面表现出色。 PyTorch 是由 Facebook 开发的深度学习框架,提供了低级和高级 API。它具有动态计算图和简洁的 API,在研究领域非常受欢迎。 PaddlePaddle 是百度开发的深度学习框架。它提供了易于使用的 API,支持多种深度学习模型,并且具有良好的可扩展性和分布式训练能力。 这些框架各自都有自己的优缺点,选择哪个框架取决于具体的应用需求和个人喜好
ONNX深度学习模型格式 ONNX(Open Neural Network Exchange)是一个开放的深度学习模型格式,它旨在促进不同深度学习框架之间的模型互操作性。它由 Facebook 和 Microsoft 联合开发,目前已经得到了包括 Amazon、IBM、Intel 和 NVIDIA 在内的多家公司的支持
ONNX 不是一个深度学习框架,而是一种用于表示深度学习模型的标准格式。它允许开发人员在不同的深度学习框架之间转换模型,从而更容易地部署和共享模型
许多流行的深度学习框架,包括 TensorFlow、PyTorch、Keras 和 PaddlePaddle,都提供了对 ONNX 格式的支持。这意味着你可以使用这些框架训练模型,然后将模型转换为 ONNX 格式,以便在其他框架中使用
为什么需要虚拟环境 在使用Python语言时,通过pip(pip3)来安装第三方包 ,但是由于pip的特性,系统中只能安装每个包 的一个版本
但是在实际项目开发中,不同项目可能需要第三方包的不同版本,迫使我们需要根据实际需求不断进行更新或卸载相应的包,而如果我们直接使用本地的Python环境,会导致整体的开发环境相当混乱而不易管理
这时候我们就需要开辟一个独立干净的空间进行开发和部署,虚拟环境 可以帮助解决包管理的问题,使得不同项目可以独立使用不同的包版本,避免版本冲突和环境混乱
虚拟环境管理工具 Conda、Virtualenv、Pipenv都是Pyhton包 。其次,都是环境管理工具
软件包管理工具 ConConda是一个强大的软件包管理工具,它不仅适用于Python,还支持多种语言,如Python、R、Scala、Java、JavaScript、C/C++和FORTRAN。
Conda通常与Miniconda或Anaconda一起发行,因此安装Conda只需要安装Miniconda或Anaconda即可
Python包 在Python中,程序由包(package) 、模块(module)和函数组成。
包是由一系列模块组成的集合,它包含多个Python文件,并且其中必须包含一个名为init .py的文件,用于标识当前文件夹是一个包。模块是处理特定问题的函数和类的集合。
每个Python文件可以被理解为可导入的模块,而包则是由多个Python文件组成的工具箱,用于完成特定任务,例如pip、opencv、wheel、python和numpy等。
通过使用import语句,可以导入模块并使用其中定义的代码、函数和类程序由包(package) 、模块(module)和函数组成
包是由一系列模块组成的集合(包含有多个Python文件,同时 含有一个__init__.py 文件)
模块是处理某一类问题的函数和类的集合
每一个Python文件可以理解为可导入的模块,包是多个python文件组成的完成特定任务的工具箱,比如pip,opencv,wheel,python,numpy
包必须含有一个__init__.py 文件,它用于标识当前文件夹是一个包
Python的程序是由一个个模块组成的。模块把一组相关的函数或代码组织到一个文件中,一个文件即是一个模块
模块由代码、函数和类组成。导入模块使用import语句
集成开发环境 集成开发环境 (IDE,Integrated Development Environment)是为提供程序开发环境而设计的应用程序,集成了开发所需的所有工具
一般而言,IDE包括代码编辑器(具有代码补全和自动缩进功能)、编译器、调试器(支持断点和单步执行)以及图形用户界面等工具。
一些常见的Python IDE包括PyCharm、Jupyter、Spyder和Visual Studio等
值得注意的是,PyCharm在加载项目后会自动创建名为.idea的目录,其中.idea目录用于保存项目的相关信息,例如解释器版本和项目包含的文件等
一些其他的概念 API:(Application Programming Interface)= 应用程序编程接口
SDK:(Software Development Kit)= 软件开发工具包。辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做SDK。
把SDK想象成一个虚拟的程序包,在这个程序包中有一份做好的软件功能,这份程序包几乎是全封闭的,只有一个小小接口可以联通外界,这个接口就是API
软件安装 安装软件时其中会涉及到 PATH(系统环境变量)概念。Windows中设置环境变量是全局性的,对所有程序的运行都有影响,比如有些程序如果依赖于另一个Python环境而不是Anaconda提供的Python,就会造成冲突。设置环境变量作用是指定命令搜索路径,在i命令行下面执行命令,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序
Anaconda 安装 Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。包含了大量的科学包, 是一个开源的软件包管理系统 和环境管理系统 。正常安装即可,注意在结束后需要确保:
将以下路径添加到 环境变量 系统变量 Path 之中(如果更改了安装路径,自己对应修改下)
D:\ananconda :将Anaconda的根目录路径添加到环境变量,使得系统可以在任何位置访问Anaconda的命令和工具。例如,在命令行中可以直接运行conda
和python
命令,而不需要指定完整的文件路径D:\ananconda\Library\bin :将Anaconda库目录下的bin
路径添加到环境变量,这个路径包含了一些系统库和可执行文件,如某些编译器和工具链。这样,系统可以在需要的时候自动查找这些文件D:\ananconda\Library\mingw-w64\bin :将Anaconda库目录下的mingw-w64\bin
路径添加到环境变量,这个路径包含了MinGW-w64工具链的可执行文件。MinGW-w64是一个Windows平台上用于编译和链接C/C++代码的工具集,添加该路径可以让系统在编译C/C++代码时自动查找所需的工具D:\ananconda\Library\usr\bin :将Anaconda库目录下的usr\bin
路径添加到环境变量,这个路径包含了一些Unix-like系统下的二进制可执行文件,如make和sh。添加该路径可以让系统在执行相关命令时自动查找这些工具D:\ananconda\Scripts :将Anaconda的Scripts
目录路径添加到环境变量,这个目录包含了一些脚本文件和可执行文件,如activate
和deactivate
命令等。这样,在命令行中可以直接运行这些脚本和可执行文件通过将以上路径添加到环境变量,可以在任何位置使用Anaconda提供的命令、工具和相关文件,而不需要输入完整的路径。例如,可以在命令行中直接运行conda
命令来管理Python环境和软件包,或者运行activate
命令来激活特定的环境
IDE安装 Anaconda自带若干种已经安装好的IDE,也可以选择一个 自己喜欢的安装,这里记录两个
PyCharm 安装 PyCharm 是一种Python集成开发环境(IDE),用于开发Python应用程序。它不包含在Anaconda中,但可以从官方网站下载并安装。PyCharm有免费版和专业版可供选择,它是一个独立的应用程序。在使用PyCharm时,我们可以调用conda创建的虚拟环境
外部工具 在设计应用程序时,我们通常需要使用UI界面框架,如PyQt5或PySide6。为了方便使用UI文件,我们可以直接加载.ui
文件或使用工具将其转换为.py
文件。同时,资源文件也可以打包为.rcc
文件,而不是从本地调用素材资源。因此,我们需要将以下三个工具添加到PyCharm中
Qt Designer:Qt Designer是一个辅助开发工具,用于设计Qt界面 PyUIC:PyUIC是一个工具,用于将Qt Designer设计的.ui
文件转换为.py
文件 PyRCC:PyRCC是一个工具,用于将图片、数据等资源文件打包成.py
文件。通过使用PyRCC,我们可以将资源文件与应用程序一起打包,便于管理和部署 在安装和配置PySide6开发环境时,可以通过在文件资源管理器中搜索anaconda文件目录下的可执行文件(.exe)来添加工具,或者使用自己安装的工具或虚拟环境中的工具。然而,建议不要将这些工具与特定的项目虚拟环境绑定,以免在删除或移动项目后无法使用。相反,在base环境中安装这些工具,并在PyCharm中进行配置。这样做可以确保这些工具在任何项目中都可用,提供更好的灵活性和可维护性
程序(Program): 程序指的是要执行的命令行工具或脚本 。可以是系统自带的命令行工具(如Python解释器、Git、Pip等),也可以是自定义的脚本文件。程序可以通过指定路径来引用 实参(Arguments): 实参是指传递给程序或脚本的命令行参数 。可以为程序指定一组实参,这些实参将在运行时传递给该程序。实参可以是选项、标志、值等 工作目录(Working Directory): 工作目录是指程序或脚本的当前工作目录 。设置工作目录,以确定程序在执行时的基准位置。程序执行时,相对路径、文件读写等操作将基于该工作目录。如项目根目录,或者使用PyCharm的变量来表示当前项目的目录。 Name:Qt Designer program:Qt Designer的安装路径 parameter:不填 directory: $FileDir
$ Name:PyUIC program:pyuic的安装路径 parameter:$FileName$ -o $FileNameWithoutExtension
$.py directory: $FileDir
$ Name:PyRCC program:pyrcc的安装路径 parameter:$FileName$ -o $FileNameWithoutExtension
$_rc.py directory: $FileDir
$ Jupyter Notebook 安装 Anaconda预装,是一个Python包,其安装好的快捷方式版本使用方式仅限于Base环境,创建了一个新的虚拟环境中使用Jupyter调用其他项目依赖包需要在虚拟环境下重新安装Jupyter
使用方式 在命令行中先切换到该目录,然后再运行 jupyter notebook
命令。例如:
d:
cd D:\path\to\directory
jupyter notebook
CUDA CUDA(Compute Unified Device Architecture)是由显卡厂商NVIDIA于2007年推出的并行计算平台和编程模型。它利用图形处理器(GPU)的计算能力,显著提高计算性能。CUDA采用NVIDIA的通用并行计算架构,使得GPU能够解决复杂的计算问题,并通过编程控制底层硬件进行计算。它包括CUDA指令集架构(ISA)和GPU内部的并行计算引擎,开发人员可以使用C/C++/C++11语言编写CUDA程序
CUDA提供了一种灵活的编程模型,可以通过在主机(CPU)和设备(GPU)之间交互来实现并行计算。开发人员可以使用CUDA的接口函数和科学计算库,以编写并行程序并通过同时执行大量线程来实现并行计算的目标。CUDA的设计使得使用GPU进行通用计算变得简单和优雅
需要注意的是,CUDA并不仅限于图形处理任务,它提供了一种通用的并行计算架构,可用于解决各种复杂的计算问题。通过利用GPU的并行计算能力,CUDA可以在很多领域加速计算,包括科学计算、深度学习、数据分析等
举个具体例子,假设我们有两个向量A = [1, 2, 3, 4]和B = [5, 6, 7, 8],我们想要计算它们的和。使用传统的CPU计算方式,我们需要使用循环迭代遍历每个元素并执行相加操作。但是,这种方式在大规模数据集上效率较低
使用CUDA,我们可以编写一个CUDA程序,将向量A和B传输到GPU上,并编写一个内核函数(kernel function),该函数定义了每个线程执行的操作,即将对应位置的元素相加,并将结果存储在向量C中
在GPU上执行该CUDA程序时,每个线程将并行地执行元素相加操作,最终得到结果向量C = [6, 8, 10, 12]。通过利用GPU的并行计算能力,CUDA实现了高效的向量加法,加速了计算过程
这只是一个简单的示例,实际上CUDA可以应用于更复杂的计算任务,包括矩阵运算、神经网络训练、图像处理等。CUDA提供了丰富的接口函数和科学计算库,使得开发人员可以更方便地利用GPU的并行计算能力来加速各种计算任务
CUDA安装 分为两种情况,一种是深度学习框架在安装过程中自动安装 CUDA 工具包,一种是深度学习框架依赖系统环境中已经安装的 CUDA。下面介绍这两种情况。
对于第一种情况 ,当你使用 pip
或 conda
安装某些深度学习框架(如 PyTorch)的 GPU 版本时,它会自动安装与之兼容的 CUDA 工具包。这意味着你不需要单独安装 CUDA,深度学习框架会自动为你安装所需的 CUDA 版本。
这里插入一下pip安装和conda安装的区别,两者区别不大,个人感觉conda安装类似360软件管家,pip则为官网下载,优先使用pip,维护较好,最好不要混着使用。个人习惯不使用conda 对于第二种情况 ,如果你想在多个深度学习框架中使用 GPU,或者你想使用特定版本的 CUDA,你可以在系统环境中单独安装 CUDA 和 cuDNN。这样,所有的深度学习框架都可以使用已经安装好的 CUDA
CUDA+Pytorch(举例) 这是第一种情况
在选择不同CUDA版本时,PyTorch版本号尾部会出现CUXXX,PyTorch在安装时会自动安装所需的CUDA运行库,用户只需要确保其当前使用的GPU型号支持虚拟环境中PyTorch所需的CUDA版本,并保持向下兼容性即可
如果想在虚拟环境中使用 CUDA 11.3,你需要确保你的 GPU 驱动程序支持 CUDA 11.3。那我们可以先将Base环境的驱动程序升级到11.7,那我在下图创建的虚拟环境中安装了11.3版本的CUDA是没问题的,不需要将显卡的驱动程序支持的CUDA版本一定与虚拟环境的相匹配
CUDA+PaddlePaddle(举例) PaddlePaddle 的安装 包本身并不包含 CUDA。如果你想使用 PaddlePaddle 的 GPU 版本,你需要在安装 PaddlePaddle 之前先安装 CUDA 和 cuDNN
我们看到PaddlePaddle(某项目拿来举例)的CUDA版本是11.2,所以我们找到CUDA的历史版本 ,或者直接pip install 安装cuda,这里记录系统中安装CUDA:
注意,在安装时一定要注意区分是否为GPU版,及对应的版本号
先确认GPU显卡所支持的CUDA版本,打开NVIDIA的控制面板
在左下角 系统信息 点击 组件 选项卡
支持到CUDA11.4 支持到CUDA11.4 或者cmd里nvidia-smi
支持到CUDA11.6 支持到CUDA11.6 大部分项目支持的CUDA版本并非最新版,所以我们找到时期的代表版本CUDA,下载CUDA ,选择自定义
展开选项卡
NVIDIA GeForce Experience:帮助保持驱动程序( 显示驱动程序 )的最新状态,并优化游戏设置
Driver components:显示驱动程序 与 高清音频(在使用支持HD Audio的显卡时,可以通过显示器来传输音频信号)
Other components中PhysX:一种用于模拟和计算物理效果的软件引擎
都安装即可
如提示没有Visual Studio,这个是老的CUDA,我们有Visual Studio 2022先不管
安装成功后,在命令行输入nvcc -V 可以显示cuda的版本信息(有个空格)
如果提错误
我们则找到对应的位置,即C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\demo_suite,然后以管理员身份打开cmd,通过cd命令转换到相应的文件位置,输入上图圈中的命令进行测试,若会显示result=pass,则说明安装无误,那么应该是在安装之后没有设置好系统环境变量,重新设置变量之后(在下面和cudnn一起说)再进行测试
cuDNN 安装 安装了CUDA,获得了使用GPU进行通用计算的能力。然而,CUDA本身提供的函数和算法并不一定针对深度学习任务进行了高度优化。这时候,CuDNN就发挥了作用。
CuDNN是专门为深度神经网络设计的加速库,它针对常见的深度学习操作(如卷积、池化、归一化等)提供了高度优化的实现。它利用了CUDA的并行计算能力和深度学习算法的特点,提供了更高效的函数和算法,从而加速深度学习模型的训练和推断过程。
cuDNN(CUDA Deep Neural Network library)是NVIDIA打造的针对深度神经网络 的加速库,是一个用于深层神经网络的GPU加速库。它能将模型训练的计算优化之后,再通过 CUDA 调用 GPU 进行运算。cuDNN需要在有CUDA的基础上进行,cuDNN可以在CUDA基础上加速2倍以上。里面提供了很多专门的计算函数,如卷积等。从CUDA那张图也可以看到,还有很多其他的软件库和中间件,包括实现c++ STL的thrust、实现gpu版本blas的cublas、实现快速傅里叶变换的cuFFT、实现稀疏矩阵运算操作的cuSparse以及实现深度学习网络加速的cuDNN等等,具体细节可参阅GPU-Accelerated Libraries ,安装完CUDA后需要安装对应版本的cuDNN
下载完成后有三个文件夹,将它们分别复制到安装 cuda 的文件夹(默认的化是):C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2 里对应的文件夹 名下即可
将以下路径添加到 环境变量-系统变量 Path 之中(自己对应修改安装路径和版本号)。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\lib\x64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\CUPTI\lib64
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.2\bin\win64
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.2\common\lib\x64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\cudnn\bin
CUDA Toolkit CUDA Toolkit由以下组件组成:
Compiler : CUDA-C和CUDA-C++编译器NVCC
位于bin/
目录中。它建立在NVVM
优化器之上,而NVVM
优化器本身构建在LLVM
编译器基础结构之上。希望开发人员可以使用nvm/
目录下的Compiler SDK来直接针对NVVM进行开发Tools : 提供一些像profiler
,debuggers
等工具,这些工具可以从bin/
目录中获取Libraries : 下面列出的部分科学库和实用程序库可以在lib/
目录中使用(Windows上的DLL位于bin/
中),它们的接口在include/
目录中可获取cudart : CUDA Runtimecudadevrt : CUDA device runtimecupti : CUDA profiling tools interfacenvml : NVIDIA management librarynvrtc : CUDA runtime compilationcublas : BLAS (Basic Linear Algebra Subprograms,基础线性代数程序集)cublas_device : BLAS kernel interface... CUDA Samples ::演示如何使用各种CUDA和library API的代码示例。可在Linux和Mac上的samples/
目录中获得,Windows上的路径是C:\ProgramData\NVIDIA Corporation\CUDA Samples
中。在Linux和Mac上,samples/
目录是只读的,如果要对它们进行修改,则必须将这些示例复制到另一个位置CUDA Driver ::运行CUDA应用程序需要系统至少有一个具有CUDA功能的GPU 和与CUDA工具包兼容的驱动程序 。每个版本的CUDA工具包都对应一个最低版本的CUDA Driver,也就是说如果你安装的CUDA Driver版本比官方推荐的还低,那么很可能会无法正常运行。CUDA Driver是向后兼容的,这意味着根据CUDA的特定版本编译的应用程序将继续在后续发布的Driver上也能继续工作。通常为了方便,在安装CUDA Toolkit的时候会默认安装CUDA Driver。在开发阶段可以选择默认安装Driver,但是对于像Tesla GPU这样的商用情况时,建议在官方 安装最新版本的DriverTensorRT TensorRT是英伟达针对自家平台做的加速包,只负责模型的推理(inference)过程,一般不用TensorRT来训练模型的,而是用于部署时加速模型运行速度ensorRT主要做了这么两件事情,来提升模型的运行速度
TensorRT支持INT8和FP16的计算。深度学习网络在训练时,通常使用 32 位或 16 位数据。TensorRT则在网络的推理时选用不这么高的精度,达到加速推断的目的 2TensorRT对于网络结构进行了重构,把一些能够合并的运算合并在了一起,针对GPU的特性做了优化。现在大多数深度学习框架是没有针对GPU做过性能优化的,而英伟达,GPU的生产者和搬运工,自然就推出了针对自己GPU的加速工具TensorRT。一个深度学习模型,在没有优化的情况下,比如一个卷积层、一个偏置层和一个reload层,这三层是需要调用三次cuDNN对应的API,但实际上这三层的实现完全是可以合并到一起的,TensorRT会对一些可以合并网络进行合并 因为不需要更高性能和低延迟的需求,或者需要在实时应用或边缘设备上部署模型,所以没有特别关注TensorRT,仅记录概念
创建虚拟环境 首先明确运行一个项目需要其完整的项目源码 及虚拟环境
创建虚拟环境 接下来通过anaconda手动创建一个虚拟环境
win+r 打开 cmd
Conda创建环境名:PaddleOCR24_venv(自定义),Python版本:3.8(自定义),该命令会创建1个名为 PaddleOCR24_venv 、python版本为3.8的可执行环境,根据网络状态,需要花费一段时间
Python相关依赖项(whl包)将会被安装,是否同意, 输入y并回车继续安装
选择同意后将会下载 安装Python=3.8版本的虚拟环境
注意:如果此时挂了代理将会报错,在配置环境过程中需要全程把梯子关掉
显示的诸如certifi-2020.6.20都被称为python包
创建完成后,anaconda非常贴心的提示了我们如何激活 和关闭 虚拟环境
以上anaconda环境和python环境安装完毕
激活虚拟环境 # 激活paddle_env环境
conda activate PaddleOCR24_venv
# 查看当前python的位置
where python
Requirements.txt 项目所依赖的环境需要依赖大量Python包,所以只有Python的Python包是远远不够的
接下来安装项目所需要 的Python包
一个成熟的项目 会将所需要的Python包整合到源码内的requirements.txt以便于交流和移植
requirements.txt
是一个文本文件,通常用于记录一个项目所依赖的所有外部Python包及其对应的版本。每个包及其版本号通常以一行的形式进行记录,使用类似于包名称==版本号
的格式。这个文件可以帮助开发者和用户在不同环境中重现项目的依赖关系,确保在安装和部署项目时使用正确的包及其版本
==0.4.0为指定的Python包版本,会优先选择指定版本,没有指定版本的将会选择最新版
因为项目的运行环境可能各不相同,作者只提供了特定环境下的requirements.txt文件。熟悉的用户可能会采取一些额外操作,例如手动屏蔽CPU版本并直接下载GPU版本,或者在包可能为Linux系统的情况下从官方渠道寻找其Windows版本进行下载等,这里就默认下载原有的 requirements.txt 文件内容:
首先定位(cd) 到requirement所在文件夹,随后通过pip install -r requirements.txt 进行安装
安装过程将会通过已经配置好的网络地址 进行下载.whl文件
如果环境充足,可以用tar包或者tar.gz包,如果环境欠缺,比如缺少某些编译环境,或者想要快速且稳定,可以考虑whl包,PIP安装一般都用whl包
同时也可以下载source类型的文件安装,下载的是tar包、tar.gz包,解压后里面有个setup.py文件。虚拟环境下切换到setup.py所在的文件,执行:python setup.py install
pip install -r requirements.txt 的目标是完整的安装完requirements所需要的所有内容,提示Successflly installed即可!
PS:在安装完成后项目即可使用,但是项目是深度学习涉及到神经网络相关,需要用到显卡,这时候可能需要 下载相关whl包所需要对应的GPU版本,因为GPU版和CPU版往往不能共存,所以可能需要 先 pip uninstall XXX CPU的版本,再去官网找GPU版本
将虚拟环境配置给项目 打开一个新的项目,Pycharm(python IDE)会提示是否创建虚拟环境
我们已经创建好了,所以不用 这种方式创建(目前还未尝试这样方式与anaconda创建的虚拟环境有什么区别)取消
在设置 - 项目 - python解释器中 需要配置项目的Python解释器版本 ,添加选了conda环境然后选择我们已经创建好的现有环境python.exe进行配置
可以看到指定虚拟环境下已经安装好的Python包,然后确定
可以看到后台正在扫描Python SDK和项目本身,以及收集编码辅助的详细信息,等待索引更新好有项目就可以使用了
可能遇到的报错 Anaconda安装 VSCode 失败 在win10下安装Anaconda时,最后有一步是要安装VSCode,但是在联网正常的情况下提示失败。
# 在anaconda目录下,找到vscode_inst.py文档,第110行原为:
VSCODE_ENDPOINT = 'https://vscode-update.azurewebsites.net/api/update/{}/stable/version'.format(VSCODE_SUBDIR)
# 修改为:
VSCODE_ENDPOINT = 'https://update.code.visualstudio.com/api/update/{}/stable/version'.format(VSCODE_SUBDIR)
conda 更换为 清华源 修改镜像源的原因是pip和conda默认国外镜像源,所以每次安装模块pip install ×××或者 conda install ×××的时候非常慢或者遇到以下报错 CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.co 所以,切换到国内的镜像源会显著加快模块安装速度
下面代码为conda更换清华源
文件位置位于 C:\Users\用户名 \.condarc
# 生成.condarc 的文件
conda config --set show_channel_urls yes
# 修改.condarc文件
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
#清除缓存索引
conda clean -i
pypi更换为清华源 pip安装时更换源路径为 C:\Users\用户名 \AppData\Roaming\pip\pip.ini
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
# 注意,simple 不能少, 是 https 而不是 http
如果再安装过程中无限出现以下警告,建议换个源
INFO: pip is looking at multiple versions of sanic to determine which version is compatible with other requirements. This could take a while.
INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. If you want to abort this run, you can press Ctrl + C to do so. To improve how pip performs, tell us what happened here: https://pip.pypa.io/surveys/backtracking
安装whl包失败 在安装PaddleOCR过程中 :Failed to build python-Levenshtein
手动安装whl包通过非官方的Python包 进行下载
Ctrl+F找到所需要的whl包
PS:介绍一下文件名格式
文件后缀cp表示Python版本,win_amd64就是64位的
(至于64位版本为什么叫amd64,而不是intel64,因为64位架构是amd公司提出的,amd yes!)
举例:python_Levenshtein‑0.12.2‑cp310‑cp310‑win_amd64.whl 就是需要3.10版本的 64位的系统,然后下就可以了
(小tip:将.whl的后缀改为.zip即可可看到压缩包里面的内容)
下载对应的whl包然后定位到文件对应目录下 pip install + 文件名安装
解决了错误后可以重复安装一次 requirements.txt进行验证,看是否所有的包都被安装好了
pip安装报错(一) 在安装PaddleOCR过程中 :官方推荐安装
但是我们无论是 pip install paddleocr 或者 pip install paddleocr>=2.0.1 都会报错
提示是fasttext这个包无法正确安装,按照手动下载安装fasttext whl包手动安装的方式也不行,这时候请尝试下载paddleocr的上一个版本,pip install paddleocr==2.3.0.1
在此特别强调一下,我们从GitHub仓库下来的源码和pip install的源码是不同的
二次开发和打包时需注意import的位置
如果再部署好环境后仍然找不到某个模块或者其子项,就重新注意版本
pip安装报错(二) 在安装PaddleOCR过程中
安装Paddle Paddle过程中,需要根据自己的CUDA版本进入官网选择更多版本需求,pip PaddlePaddle-gpu 往往会安装一个错误的版本
在安装某个变种yolo过程中 :
注意不同版本的包运行环境有所不同,比如coco包可能作者是在Mac上运行的文件里直接pycocotools == 2.2但是我们在windows上运行需要注意其变形版本
Comments | NOTHING