J.Xiao 发表于 2024-4-29 11:30:50

深度学习框架对比及安装

本帖最后由 J.Xiao 于 2024-4-29 11:36 编辑 <br /><br /><h2>一、深度学习框架介绍</h2>
<p>随着当今技术的快速发展,人工智能已经进入到我们生活中的方方面面,并且越来越变得不可或缺。深度学习是一种基于人工神经网络 (ANN) 的机器学习类型。对于许多应用程序,浅层机器学习模型和传统的数据分析方法无法达到深度学习模型的性能。比如一些常见的深度学习架构包括卷积神经网络 (CNN)、生成对抗网络 (GAN)、递归神经网络 (RNN)、长短期记忆 (LSTM)、门控循环单元 (GRU)、深度置信网络 (DBN) 和深度堆叠网络 (DSN)等,已经大规模应用于计算机视觉 (CV)、音频、语音识别以及自然语言处理 (NLP) 等这些任务中来。 </p>
<p>深度学习 (DL) 框架为开发人员、研究人员和数据科学家提供了设计、训练和验证深度神经网络的高级编程接口。同时还提供了卓越的性能和更好的依赖项管理。目前,有许多框架可供我们使用,其中比较出名是PyTorch和TensorFlow。</p>
<h3>1、什么是 PyTorch</h3>
<p>根据官方网站的定义,PyTorch 是一个开源机器学习框架,可加速从研究原型到生产部署的过程。它是一种开发工具,可消除构建、训练和部署神经网络所涉及的认知开销。 </p>
<p>PyTorch框架运行在Python上,基于Torch库(基于Lua的深度学习框架)。主要由FaceBook(Meta AI)开发。从 PyTorch 框架的架构风格可以看出与 Torch 相比,整个深度建模过程更加透明和直接。 </p>
<h3>2、什么是TensorFlow</h3>
<p>TensorFlow是一个用于机器学习的端到端开源平台。它拥有全面、灵活的工具、库和社区资源生态系统,使研究人员能够推动最先进的 ML,开发人员可以轻松构建和部署 ML 驱动的应用程序。TensorFlow是迄今为止最流行的深度学习框架之一。它由Google Brain开发,支持Python,C++和R等语言。</p>
<p>TensorFlow使用数据流图来处理数据。图中的节点表示数学运算,而图形边缘表示在它们之间流动的多维数组(张量)。在构建这些神经网络时,可以借助一些工具查看数据如何流经神经网络。</p>
<h3>3、PyTorch和TensorFlow的差异</h3>
<p>两者的差异大致可以归为如下表:</p>
<figure class='table-figure'><table>
<thead>
<tr><th style='text-align:left;' >对比项</th><th style='text-align:left;' >TensorFlow</th><th style='text-align:left;' >PyTorch</th></tr></thead>
<tbody><tr><td style='text-align:left;' >程序设计语言</td><td style='text-align:left;' >用 Python、C++ 和 CUDA 编写</td><td style='text-align:left;' >用Python,C++,CUDA编写,基于Torch(用Lua编写)</td></tr><tr><td style='text-align:left;' >开发 人员</td><td style='text-align:left;' >Google</td><td style='text-align:left;' >Facebook(现为Meta AI)</td></tr><tr><td style='text-align:left;' >计算图</td><td style='text-align:left;' >TensorFlow 1.0基于静态图。集成了Keras的TensorFlow 2.0可以使用预先执行的动态图。</td><td style='text-align:left;' >动态图</td></tr><tr><td style='text-align:left;' >API级别</td><td style='text-align:left;' >高级和低级接口</td><td style='text-align:left;' >低级接口</td></tr><tr><td style='text-align:left;' >安装</td><td style='text-align:left;' >复杂的图形用户界面安装</td><td style='text-align:left;' >简单的图形用户界面安装</td></tr><tr><td style='text-align:left;' >调试</td><td style='text-align:left;' >难以进行调试,需要 TensorFlow 调试器工具</td><td style='text-align:left;' >易于调试,因为它使用动态计算过程。</td></tr><tr><td style='text-align:left;' >架构</td><td style='text-align:left;' >TensorFlow很难使用和实现,但有了Keras,它变得更容易一些。</td><td style='text-align:left;' >复杂且难以阅读和理解。</td></tr><tr><td style='text-align:left;' >学习曲线</td><td style='text-align:left;' >陡峭且难以学习</td><td style='text-align:left;' >易于学习。</td></tr><tr><td style='text-align:left;' >分布式训练</td><td style='text-align:left;' >若要允许分布式训练,必须手动编码并优化在特定设备上运行的每个操作。</td><td style='text-align:left;' >通过依赖对 Python 异步执行支持,所以在数据并行性领域性能很高</td></tr><tr><td style='text-align:left;' >部署API</td><td style='text-align:left;' >TensorFlow serving</td><td style='text-align:left;' >TorchServe</td></tr><tr><td style='text-align:left;' >关键差异化因素</td><td style='text-align:left;' >易于开发的模型</td><td style='text-align:left;' >高度“Pythonic”,注重可用性,性能优异。</td></tr><tr><td style='text-align:left;' >生态系统</td><td style='text-align:left;' >广泛应用于工业生产层面</td><td style='text-align:left;' >PyTorch在研究界更受欢迎。</td></tr><tr><td style='text-align:left;' >工具</td><td style='text-align:left;' >TensorFlow Serving, TensorFlow Extended, TF Lite, TensorFlow.js, TensorFlow Cloud, Model Garden, MediaPipe and Coral</td><td style='text-align:left;' >TorchVision、TorchText、TorchAudio、PyTorch-XLA、PyTorch Hub、SpeechBrain、TorchX、TorchElastic 和 PyTorch Lightning</td></tr><tr><td style='text-align:left;' >应用/利用率</td><td style='text-align:left;' >大规模部署</td><td style='text-align:left;' >以研究为导向的快速原型开发</td></tr><tr><td style='text-align:left;' >人气</td><td style='text-align:left;' >该库在深度学习从业者、开发人员社区中广受欢迎,是广泛使用的库之一</td><td style='text-align:left;' >近年来,越来越受欢迎,对PyTorch的兴趣也在迅速增长。它已成为深度学习项目的首选工具,这些项目依赖于优化自定义表达式,无论是学术项目还是行业。</td></tr><tr><td style='text-align:left;' >项目</td><td style='text-align:left;' >DeepSpeech, Magenta, StellarGraph</td><td style='text-align:left;' >CycleGAN, FastAI, Netron</td></tr></tbody>
</table></figure>
<h3>4、框架选择</h3>
<p>关于哪个框架更优越,一直存在争议,每个阵营都有自己的热心支持者。随着PyTorch和TensorFlow在其相对较短的生命周期中迅速发展,辩论格局也在不断发展。重要的是要注意,由于不完整或过时的信息很多,到2023年,关于哪个框架占主导地位的讨论要微妙得多,为了向您展示TensorFlow和PyTorch深度学习框架的使用和需求增长的广泛情况,我们先来看一下Google搜索关键字TensorFlow与PyTorch在过去5年中的全球趋势图:</p>


<p>当我们查看来自Papers with Code的数据时(该网站的使命是创建一个包含机器学习论文,代码,数据集,方法和评估表的免费和开放资源库),我们可以观察到使用PyTorch的论文的增长情况:</p>

<p>关于PyTorch和TensorFlow中哪个更好的争论没有一个正确的答案。尽管两者都是最先进的深度学习框架,但TensorFlow和PyTorch之间有一些关键的区别需要考虑。PyTorch支持动态计算图,并且通常更易于使用。TensorFlow更成熟,拥有更多的库,但它可能需要额外的时间来学习和理解这些概念。</p>
<p>所以,在本课程中,我们主要以PyTorch为主。在掌握PyTorch以后,再学习TensorFlow也会事半功倍。</p>
<h2>二、PyTorch安装</h2>
<h3>1、二进制文件安装</h3>
<p>PyTorch的安装非常简单,我们可以进入官网<a href='https://pytorch.org/'>PyTorch</a>,然后根据自身系统环境要求点击选项生成安装命令即可:</p>

<p>比如我们在安装了UBUNTU操作系统的NUC主机上,即可复制上图生成的的指令到操作系统的超级终端进行安装:</p>
<pre><code>pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
</code></pre>
<p>由于NUC没有显卡,所以只能安装CPU版本。对于带有Nivida显卡,且安装了CUDA的用户来说,强烈建议安装CUDA的版本,届时模型训练与推理都将会快很多。同理,如果使用的是AMD的显卡,则可尝试安装ROCm的版本。</p>
<h3>2、源代码安装(可选)</h3>
<p>如果是其他情况比如ARM平台等,则可能需要从源码安装。首先,需要准备好环境:</p>
<ul>
<li>Python 3.8 或更高版本(对于 Linux,需要 Python 3.8.1+)</li>
<li>与 C++17 兼容的编译器,例如 clang</li>

</ul>
<p>如果要使用 CUDA 支持进行编译,则需要安装CUDA和cuDNN。CUDA的安装请到<a href='https://developer.nvidia.com/cuda-downloads'>NVIDIA Developer</a>按照自身系统进行选择以生成安装指引:</p>

<p>然后会生成如下安装指令进行安装即可:</p>
<pre><code>wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda
</code></pre>
<p>至于cuDNN,则可以通过网站<a href='https://developer.nvidia.com/cudnn'>CUDA Deep Neural Network (cuDNN) | NVIDIA Developer</a>下载安装。</p>
<p>接下来,我们就可以在GITHUB上下载源码:</p>
<pre><code>git clone https://github.com/pytorch/pytorch.git
cd pytorch
# if you are updating an existing checkout
git submodule sync
git submodule update --init --recursive
</code></pre>
<p>安装依赖项:</p>
<pre><code>conda install cmake ninja
pip install -r requirements.txt
</code></pre>
<p>安装 PyTorch:</p>
<pre><code>python setup.py develop
</code></pre>
<p>&nbsp;</p>
页: [1]
查看完整版本: 深度学习框架对比及安装