二、人工智能讲义(工具篇)

目录

基础设施-芯片

基础设施-芯片-CPU vs GPU 

开源框架

开源框架-TensorFlow

简介

特点

开源框架-Keras 

简介

典型的Keras工作流程

开源框架-Caffe

简介

特点

开源框架-MXNet 

特点

开源框架-PaddlePaddle 

开源框架-Pytorch 


基础设施-芯片

(ASIC: Application Specific Integrated Circuit,专用集成电路)

当前GPU占据大部分的AI训练市场,CPU占据了大部分的AI推理市场。

基础设施-芯片-CPU vs GPU 

从架构上看,GPU采用了数量众多的计算单元,但只有非常简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据 了大量空间,而且还有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分。CPU是通用处理 器, 擅长处理复杂指令、逻辑判断、中端处理。GPU是专用处理器,擅长处理计算密集型的并行任务。 

影响GPU性能的3个维度: 计算能力、显存容量、显存带宽(显卡位宽指的是显存位宽,即显存在一个时钟周期内所能传送数据的位数)

开源框架

开源框架-TensorFlow

简介

  • Google开源的用于机器学习和深度学习的框架,深受广大机器学习开发者欢迎
  • 基于数据计算图(data flow graphs)的框架,用于大规模分布式机器学习
  • 节点(nodes)表示数学计算,边(edges)表示节点之间相互联系的数组,即张量(tensor)

特点

  • 架构灵活:支持各种神经网络类型,具有很好的通用性
  • 可扩展性:通过对OP的扩展支持,能够扩展不同的功能
  • 多语言支持:支持使用C++/Python/Java构建和执行计算图
  • 以C API为分界线,将系统分为前端 和后端2个系统 
  • 前端系统:负责提供编程模型,构造 计算图
  • 后端系统:负责提供运行时环境,执 行前端构建的计算图 
  •  分布式运行时层:分割计算子图,分配到 不同设备的Worker上 

开源框架-Keras 

简介

  • Keras是一个模型级(model-level)的库,为开发深度学习模型提供了高层次的构建模块。
  • 它不处理张量操作、求微分等低层次的运算。相反,它依赖于一个专门的、高度优化的张量库来完成这些运算,这个张量库就是Keras的后端引擎(backend engine)。 Keras 没有选择单个张 量库并将 Keras 实现与这个库绑定,而是以模块化的方式处理这 个问题。因此,几 个不同的后端引擎都可以无缝嵌入到 Keras 中。目前, Keras 有 三个后端实现: TensorFlow 后端、 Theano 后端和微软认知工具包(CNTK, Microsoft cognitive toolkit)后端

典型的Keras工作流程

  1. 定义训练数据:输入张量和目标张量。
  2. 定义层组成的网络(或模型),将输入映射到目标。
  3. 配置学习过程:选择损失函数、优化器和需要监控的指标。
  4. 调用模型的 fit 方法在训练数据上进行迭代。

开源框架-Caffe

简介

  •  Caffe 全 称 为 Convolutional Architecture for Fast Feature Embedding,是一个被广泛使用的开源深度学习框架 

特点

  • 容易上手,网络结构都是以配置文件形式(一个JSON类型的.prototxt文件)定义,不需要 用代码设计网络。 
  • 训练速度快,能够训练state-of-the-art的模型与大规模 的数据。
  • 组件模块化,可以方便地拓展到新的模型和学习任务上。 

开源框架-MXNet 

Amazon于2016年11月22日宣布将选择MXNet作为AWS上 的深度学习框架。

特点

  • 灵活:同时支持命令式编程和符号式编程。命令式编程提供类 似numpy一样的张量借口, 符号式编程可以通过配置来定义和训练神经网络。 
  • 便捷:MXNet可以在CPU和GPU上运行,同时可以在服务器, 桌面,以及移动手机上运行。 
  • 多语言支持:内核由C++编写,同时提供多语言的API,包括 C++,Python,R,Julia, Perl,Matlab以及Javascript。 
  • 高性能:优化的C++后台计算引擎,实现对数据I/O以及计 算的并行化
  • 云端分布式:支持多CPU/GPU的分布式训练,包括AWS, GCE,Azure,以及Yarn集群
  • 自动微分:训练模型过程中自动计算梯度

开源框架-PaddlePaddle 

PaddlePaddle框架的开源始于2016年9月份,特点和定位是 easy to use,因此对很多算法进行了完整的封装,不仅是针 对只目前现成的CV、NLP等算法 (如VGG、ResNet、LSTM、 GRU等),它在模型库models (https://github.com/PaddlePaddle/models)模块下,封装 了词向量(包括Hsigmoid加速词向量训练和噪声对比估计加 速词向量训练)、RNN 语言模型、点击率预估、文本分类、 排序学习(信息检索和搜索引擎研究的核心问题之一)、 结构化语义模型、命名实体识别、序列到序列学习、阅读 理解、自动问答、图像分类、目标检测、场景文字识别、 语音识别等多个技术领域人工智能的通用解决方案。 

开源框架-Pytorch 

2017年1月,Facebook人工智能研究院(FAIR)团队在GitHub 上开源了PyTorch,并迅速占领GitHub热度榜榜首。 作为一个2017年才发布,具有先进设计理念的框架,PyTorch 的历史可追溯到2002年就诞生于纽约大学的Torch。 Torch使用了一种不是很大众的语言Lua作为接口。Lua简洁高 效,但由于其过于小众,用的人不是很多,以至于很多人听 说要掌握Torch必须新学一门语言就望而却步(其实Lua是一门 比Python还简单的语言)。

猜你喜欢

转载自blog.csdn.net/chenxy02/article/details/109314978