写点什么

使用 EC2 C5 实例和 BigDL 来利用低精度和量化进行深度学习

  • 2019-10-08
  • 本文字数:2789 字

    阅读完需:约 9 分钟

使用 EC2 C5 实例和 BigDL 来利用低精度和量化进行深度学习

最近,AWS 发布了基于最新一代 Intel Xeon Scalable Platinum 处理器的全新计算密集型 Amazon EC2 C5 实例。这些实例专为计算量大的应用程序设计,并且与 C4 实例相比,性能明显改进。它们还为每个 vCPU 提供更多内存,是矢量和浮点工作负载的两倍。


在本博客中,我们将演示 BigDL,适用于 Apache Spark 的开源分布式深度学习框架,它可以利用 AWS C5 实例中提供的新功能,这些功能可以显着改善大型深度学习工作负载。具体来说,我们将展示 BigDL 如何使用 C5 实例来利用低精度和量化,以便最多将模型大小缩小 4 倍,使推理速度提升近 2 倍。

为什么要在 C5 实例上进行深度学习?

新的 AWS C5 实例利用 Intel Xeon Scalable 处理器功能,例如更高的处理器频率下更多的核心数、更快的系统内存、大型每核中级缓存(MLC 或 L2 缓存),以及新的宽 SIMD 指令 (AVX-512)。这些功能旨在提升深度学习中涉及的数学运算,使得新的 C5 实例成为大规模深度学习的绝佳平台。


BigDL 是适用于 Apache Spark 的分布式深度学习框架,由 Intel 开发并开放源代码,它允许用户在现有的 Hadoop/Spark 集群上构建和运行深度学习应用程序。自 2016 年 12 月首次开放源代码以来,业界和开发人员社区已经广泛采用 BigDL(例如:Amazon、Microsoft、Cray、阿里巴巴、京东、MLSlistings 以及 Gigaspaces 等等)。


BigDL 经过优化后,可在大型大数据平台上运行,这些平台通常以基于 Xeon 的分布式 Hadoop/Spark 集群为基础构建。它利用 Intel 数学内核库 (MKL) 和多线程计算实现高性能,并使用底层 Spark 框架进行有效的扩展。因此,它可以有效利用 AWS 提供的新 C5 实例中的功能,而且与前几代实例系列相比,速度明显提升。

利用低精度和量化

除了使用 C5 实例获得的原始性能改进之外,BigDL 0.3.0 版本还引入了模型量化支持,允许使用较低精度的计算进行推理。在 AWS 提供的 C5 实例上运行,可以看到模型大小缩小了 4 倍,推理速度提升了近 2 倍。

什么是模型量化?

量化是一个一般术语,是指使用以比其原始格式(例如,32 位浮点)更紧凑和更低精度的形式存储数字并对其执行计算的技术。BigDL 利用这种低精度计算来量化预先训练的模型以进行推理:它可以采用在各种框架(例如 BigDL、Caffe、Torch 或 TensorFlow)中训练的现有模型,使用更紧凑的 8 位整数格式量化模型参数和输入数据,然后应用 AVX-512 向量指令快速进行 8 位计算。

量化在 BigDL 中如何工作?

BigDL 允许用户直接加载使用 BigDL、Caffe、Torch 或 TensorFlow 训练的现有模型。加载模型后,BigDL 首先可以使用以下公式将某些选定层的参数量化为 8 位整数,以生成量化模型:


Math.round(1.0 * value / Math.max(Math.abs(max), Math.abs(min)) * Byte.MaxValue).toByte


在模型推理期间,每个量化层动态地将输入数据量化为 8 位整数,使用量化参数和数据应用 8 位计算(例如 GEMM),并将结果反量化为 32 位浮点。许多这类运算可以融合在实施中,因此,推理时的量化和反量化开销非常低。


与许多现有实施不同,BigDL 使用新的本地量化架构进行模型量化。也就是说,它在每个小型本地量化窗口、参数或输入数据的小型子数据块(例如补丁或内核)中执行量化和反量化运算(如前所述)。因此,BigDL 可以在具有极低的模型精度下降率(小于 0.1%)的模型量化中使用非常低位的整数(例如 8 位),并且可以实现超高效率,如下面的图表所示,其中包含博客末尾列出的实际基准配置的详细信息。


C5 实现推理加速:相对性能(量化与非量化模型)- 在 BigDL 中使用量化可以实现 1.69~2.04 倍的推理加速



C5 实现的推理精度:(量化与非量化模型)- 在 BigDL 中使用量化时,精度下降率不到 0.1%



模型大小(量化与非量化模型)- 在 BigDL 中使用量化时,模型大小缩小了大约 3.9 倍



如何在 BigDL 中使用量化?


要在 BigDL 中对模型进行量化,首先要按以下方式加载现有模型(有关 Caffe 支持和 TensorFlow 支持的更多详细信息,请参阅 BigDL 文档):


//load BigDL model
model = Model.load(bigdl_model)
//load Caffe model
model = Model.load_caffe_model(caffe_prototxt, caffe_model)
//load TensorFlow model
model = Model.load_tensorflow(model_def, …)
复制代码


之后,您只需将模型量化,并按照以下方式将其用于推理即可:


quant_model = model.quantize()
quant_model.predict(…)
复制代码


此外,BigDL 还提供命令行工具 (ConvertModel),用于将预先训练的模型转换为量化模型。有关模型量化支持的更多详细信息,请参阅 BigDL 文档。

自己试试吧!

  • 立即通过 AWS Marketplace 在 AWS 上试用 BigDL。

  • 您可以在此处了解有关 BigDL 和模型量化的更多信息。

  • 要在 Amazon EMR 上运行 BigDL,您可以按照我们之前博文 Running BigDL, Deep Learning for Apache Spark, on AWS 中的说明进行操作。


基准配置详细信息:


基准类型推理
基准指标映像/秒
框架BigDL
拓扑SSD、VGG16、VGG19
节点数量1
Amazon EC2 实例C5.18xlarge
插槽2S
处理器“Skylake”代
启用的核心36c (c5.18xlarge)
内存总量144GB (c5.18xlarge)
存储经过 EBS 优化的 GP2
OSRHEL 7.4 3.10.0-693.el7.x86_64
HT开启
Turbo开启
计算机类型服务器
框架版本https://github.com/intel-analytics/BigDL
数据集,版本COCO、Pascal VOC、Imagenet-2012
性能命令以映像/秒衡量的推理吞吐量
数据设置数据存储在本地存储中,在训练之前缓存在内存中
Oracle Java1.8.0_111
Apache Hadoop2.7.3
Apache Spark2.1.1
BigDL0.3.0
Apache Maven3.3.9
Protobuf2.5


优化注意事项:Intel 的编译器可能会针对非 Intel 微处理器进行相同程度的优化,以实现并非 Intel 微处理器所独有的优化。这些优化包括 SSE2、SSE3 和 SSSE3 指令集以及其他优化。Intel 不保证非 Intel 制造的微处理器的任何优化的可用性、功能或有效性。本产品中依赖于微处理器的优化适用于 Intel 微处理器。Intel 微处理器保留了某些非 Intel 微架构独有的优化。有关本注意事项所涵盖的特定指令集的更多信息,请参阅适用的产品“用户及参考指南”。


Intel、Intel 徽标、Xeon 是 Intel Corporation 在美国和/或其他国家/地区的商标。


作者介绍:


Jason Dai


Intel 大数据技术部门的高级首席工程师兼首席技术官,领导全球工程团队开发先进的大数据分析(包括分布式机器学习和深度学习)。他是 Apache Spark 的发起者、PMC 成员、北京 O’Reilly AI Conference 的项目联合主席,也是 BigDL 的首席架构师。BigDL (https://github.com/intel-analytics/BigDL/) 是 Apache Spark 上的分布式深度学习框架。


Joseph Spisak


领导 AWS 的合作伙伴生态系统专注于人工智能和机器学习。他在 Amazon、Intel 和 Motorola 等公司从事深度技术工作超过 17 年,主要从事视频,机器学习和人工智能等方面的工作。在业余时间,他喜欢打冰球和阅读科幻小说。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/ec2-c5-bigdl-deep-learning/


2019-10-08 11:58762
用户头像

发布了 1908 篇内容, 共 147.1 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

租赁舞台LED屏的注意事项及问题排除

Dylan

活动 LED显示屏 led显示屏厂家 效果广告

reptimeAI + Xinference 联合方案:高效部署并监控你的 LLM 应用

Greptime 格睿科技

监控 openai LLM模型 Greptime GreptimeDB

Python实现科学式占卜

芯动大师

Python 编程 科学卜卦

2023 年度技术盘点:从13个企业关心的问题看懂用云范式的改变

阿里巴巴云原生

阿里云 容器 云原生

Atlassian 停服 Bamboo,CI/CD 用不了了?教你快速迁移到极狐GitLab CI

极狐GitLab

uniapp vuecli项目融合[小记]:将多个项目融合,打包成一个小程序/App,拆分多个H5应用

达摩

小程序 uni-app vue cli

活动回顾|分享成果&展望未来,一起走进隐语年度嘉年华精彩现场叭!

隐语SecretFlow

隐私计算 数据要素流通 隐语开源社区

软件测试/测试开发|学习两个个月后拿到4个知名企业Offer,他是怎么做到的?

霍格沃兹测试开发学社

《设计模式之美》PDF

程序员李木子

《设计模式:可复用面向对象软件的基础》PDF

程序员李木子

谈谈 RocketMQ 5.0 分级存储背后一些有挑战的技术优化

阿里巴巴云原生

阿里云 RocketMQ 云原生

精彩推荐 | 【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(实战技术总结)

码界西柚

Docker 容器 云原生 容器技术 2024年第二十一篇文章

文心一言 VS 讯飞星火 VS chatgpt (186)-- 算法导论14.1 3题

福大大架构师每日一题

福大大架构师每日一题

CES 2024的亮点仅仅聚焦AI深度赋能和产业创新吗?| DALL-E 3、Stable Diffusion等20+ 图像生成模型综述

GPU算力

C# 方法详解:定义、调用、参数、默认值、返回值、命名参数、方法重载全解析

小万哥

C# 程序人生 编程语言 软件工程 后端开发

《2024年金融业生成式AI应用报告》:已有6家上市银行发布大模型技术应用进展

科技热闻

在游戏里开公司!基于ERNIE SDK的多智能体游戏应用

飞桨PaddlePaddle

百度 paddle 游戏开发 飞桨 飞桨国赛

隐私计算 互联互通又一成果,相关代码已在隐语社区发布!欢迎加入隐语标准生态

隐语SecretFlow

技术标准 数据安全 隐私计算 数据要素 互联互通

国产 Web 组态软件在玻璃生产线中的应用

图扑物联

百度智能云千帆 AppBuilder 构建 AI 原生应用开发新范式

百度Geek说

人工智能 百度智能云

vivo 海量基础数据计算架构应用实践

vivo互联网技术

大数据

Go 定时器:Timer 和 Ticker

陈明勇

Go golang Go定时器

目标主力能源:华为智能光伏的时代指南针

脑极体

AI 能源

vue-office文档预览跨域问题

麦兜

源码交付:定制软件开发的重要保障

飞算JavaAI开发助手

申万宏源基于 StarRocks 构建实时数仓

StarRocks

数据仓库 数据分析 实时数仓 StarRocks

使用 EC2 C5 实例和 BigDL 来利用低精度和量化进行深度学习_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章