软件工具将GPU代码迁移到fpga以用于AI应用
软件工具将GPU代码迁移到fpga以用于AI应用
Software tools migrate GPU code to FPGAs for AI applications
人工智能软件初创公司Mipsology正与Xilinx合作,使fpga能够仅使用一个额外的命令就可以替换AI加速器应用程序中的gpu。Mipsology的“zero effort零努力”软件Zebra将GPU代码转换为在FPGA上运行Mipsology的AI计算引擎,而无需进行任何代码更改或重新培训。
Xilinx今天宣布,它将为Zebra运送最新版本的Alveo U50卡。Zebra已经在其他Xilinx板上支持推理加速,包括Alveo U200和Alveo U250。
The latest build of Xilinx’ Alveo U50 data center accelerator card now comes with Mipsology’s Zebra software for conversion of GPU AI code to run on FPGAs
“Zebra为我们的Alveo卡带来的加速水平让CPU和GPU加速器相形见绌,”Xilinx市场副总裁Ramine Roane说。“与Zebra相结合,Alveo U50满足了AI工作负载的灵活性和性能需求,并为任何部署提供了高吞吐量和低延迟性能优势。”
Plug-and-play即插即用
FPGA历来被视为非专业人士难以编程,但Mipsology希望将FPGA打造成一种即插即用解决方案,与CPU或GPU一样易于使用。其目的是尽可能容易地从其他类型的加速转换到FPGA。
Mipsology首席执行官拉祖尔(Ludovic Larzul)在接受《电子时报》(EE Times)采访时表示:“了解(Mipsology)的最佳方法是,我们在FPGA上安装软件,使其透明,就像Nvidia为AI用户打造的Cuda CuDNN一样。”。
关键的是,这可以由非专家完成,不需要深厚的人工智能专业知识或FPGA技能,因为转换不需要模型再培训。
拉祖尔说:“易用性非常重要,因为当你看到人们的人工智能项目时,他们通常无法接触到设计神经网络的人工智能团队。”。“一般来说,如果有人建立了一个机器人系统,或者视频监控系统……他们会有其他团队或其他团体开发并训练神经网络。一旦他们得到(经过训练的模型),他们就不想改变它,因为他们没有专业知识。”
Zebra’s stack. The technology is applicable across data center, edge and embedded applications
Versus Vitis
既然Xilinx已经有了一个全面的解决方案,让数据科学家和软件开发人员(即Vitis)都可以访问fpga,那么为什么Xilinx还要支持第三方软件呢?
拉祖尔说:“一句话的意思是:我们做得更好。”。“另一句话就是:我们的作品。”
Mipsology不使用Vitis的任何部分,也不以任何方式与之联系,也不使用XDNN,Xilinx的神经网络加速器引擎。Mipsology在Zebra中有自己的计算引擎,支持客户现有的卷积神经网络(CNN)模型,不像XDNN那样,Larzul说XDNN支持大量演示,但不太适合定制神经网络。他说,这使得使用XDNN建立和运行自定义网络变得“痛苦”。虽然XDNN可以在没有GPU威胁的应用程序中竞争,但Zebra的目标是使FPGA能够基于性能、成本和易用性迎头赶上GPU。
Zebra’s stack in detail. The aim is to make FPGAs a simpler switch from GPUs or CPUs for AI acceleration by hiding the hardware as much as possible
拉祖尔说,大多数客户改变GPU解决方案的动机是成本。
他说:“他们想降低硬件成本,但又不想重新设计神经网络。”。“有一个非经常性的成本(这是避免的),因为我们能够透明地替换GPU,而且不需要重新训练或修改神经网络。”
根据Larzul的说法,fpga还提供了可靠性,部分原因是它们在硅不动产上的攻击性较小,而且通常比其他类型的加速器(包括gpu)运行得更冷。这对于长期维护成本很高的数据中心尤其重要。
拉祖尔说:“总拥有成本不仅仅是董事会的价格。“确保系统正常运行也是要付出代价的。”
Zebra也致力于使FPGA在性能上具有竞争力。Larzul说,虽然FPGA通常比其他加速器提供更少的top(每秒tera操作),但由于Zebra精心设计的计算引擎,它们能够更有效地使用这些top。
他们说的是,他们不是在用一个更大的芯片来加速芯片的速度,而是用一个更大的芯片来加速6倍于顶部的数量。
这是如何实现的?虽然Larzul没有给出确切的细节,但他确实表示,他们不依赖于剪枝,因为准确度的降低太大了,不经过再培训是无法接受的。出于同样的原因,它们不使用极端量化(低于8位)。
Zebra的引擎加速了CNN,而CNN目前主要用于图像和视频处理应用,但Zebra也可以应用于BERT(谷歌的自然语言处理模型),后者使用类似的数学概念。Zebra的未来迭代可能会覆盖其他类型的神经网络,包括LSTM(长短期记忆)和RNNs(递归神经网络),但这是很难实现的,因为rnn在数学上更加多样化。
Team from EVE
Mipsology成立于2015年,约有30人在法国从事研发工作,在加州有一个小团队主要负责业务开发。该公司已获得总额700万美元的资金,其中200万美元是2019年法国政府创新竞赛的奖金。
Mipsology的核心团队来自EVE——Synopsys于2012年收购的一家ASIC仿真器公司,该公司生产ZeBu(零缺陷)硬件辅助验证产品,当时是Cadence钯验证平台的竞争对手。据Larzul称,几乎所有主要的ASIC公司都使用EVE技术在设计周期内验证ASIC;这项技术依赖于连接在一起的数千个fpga来重现ASIC的行为。
Mipsology有12项专利正在申请中,与Xilinx密切合作,并兼容第三方加速卡,如Western Digital small-form factor(SFF U.2)卡和Advantech卡(如Vega-4001)。
软件工具将GPU代码迁移到fpga以用于AI应用的更多相关文章
- 谈谈IC、ASIC、SoC、MPU、MCU、CPU、GPU、DSP、FPGA、CPLD
IC (integrated circuit) 集成电路:微电路.微芯片.芯片:集成电路又分成:模拟集成电路(线性电路).数字集成电路.数/模混合集成电路: 模拟集成电路:产生.放大.处理各种模拟信号 ...
- EF CodeFirs 代码迁移、数据迁移
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 标题叫EF CodeFirs 代码迁移.数据迁移. ...
- Python3中的新特性(3)——代码迁移与2to3
1.将代码移植到Python2.6 建议任何要将代码移植到Python3的用户首先将代码移植到Python2.6.Python2.6不仅与Python2.5向后兼容,而且支持Python3中的部分新特 ...
- 将 Objective-C 代码迁移到 Swift(Swift 2.0更新)-b
本节内容包括: 为你的Objective-c代码做好迁移准备 (Preparing Your Objective-C Code for Migration) 迁移过程(The Migration Pr ...
- ubuntu下lamp环境配置及将window代码迁移至linux系统
因为最近要用需要去实现项目中的一个功能,比较好的做法就是在http://i.cnblogs.com/EditPosts.aspx?opt=1linux中实现.所以最近就将自己的代码全部迁移到linux ...
- 为什么你需要将代码迁移到ASP.NET Core 2.0?
随着 .NET Core 2.0 的发布,.NET 开源跨平台迎来了新的时代.开发者们可以选择使用命令行.个人喜好的文本编辑器.Visual Studio 2017 15.3 和 Visual Stu ...
- 【重新发布,代码开源】FPGA设计千兆以太网MAC(1)——通过MDIO接口配置与检测PHY芯片
原创博客,转载请注明出处:[重新发布,代码开源]FPGA设计千兆以太网MAC(1)——通过MDIO接口配置与检测PHY芯片 - 没落骑士 - 博客园 https://www.cnblogs.com/m ...
- GPU、CPU、FPGA
一.计算核心增加 二者都由寄存器.控制器.逻辑单元构成,但比例很大不同,决定了CPU擅长指令处理,函数调用上:GPU在数据处理(算数运算/逻辑运算)强力很多. NIVIDA基于Maxwell构架的GP ...
- 记录项目代码迁移后,UI测试框架的搭建(配置文件的修改、测试脚本试运行)
前文:记录一次项目代码迁移过程 上文代码迁移的目的就是为了新增vue脚手架自带的UI测试框架,工具有了,就需要实践运行在项目中了(修改配置文件.编写测试脚本等). 一.单元测试 测试框架 karma ...
随机推荐
- DVWA之Reflected XSS(反射型XSS)
目录 Low Medium High Impossible Low 源代码: <?php header ("X-XSS-Protection: 0"); // Is ther ...
- POJ3160强连通+spfa最长路(不错)
题意: 给你一个有向图,每个点上有一个权值,可正可负,然后给你一些链接关系,让你找到一个起点,从起点开始走,走过的边可以在走,但是拿过权值的点就不能再拿了,问最多能拿到多少权值? 思路: ...
- 利用 ROP 技术绕过 DEP 保护的一次简单尝试
\x 01 前言 DEP是数据执行保护的英文缩写,全称为Data Execution Prevention.数据执行保护(DEP) 是一套软硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意 ...
- Web漏洞小结
本文是对Web中最常见漏洞的一个小结: 注入类漏洞: SQL注入:SQL注入漏洞详解 XML注入:XXE(XML外部实体注入) 代码注入:代码注入漏洞 CRLF注入:CRLF注入 注入类漏洞是应用违背 ...
- Linux-鸟菜-4-关机的正确姿势
Linux-鸟菜-4-关机的正确姿势 这章里面鸟哥介绍了基本的登录操作以及一些基本命令还有关机的正确姿势,基本的命令我都整理到常用命令3里面了,关机的这个感觉挺重要,单独整理下. 由于Linux本身是 ...
- vue-axios的总结及项目中的常见封装方法。
前言 我们知道 vue 2.0版本开始推荐使用 axios 来完成前端 ajax 请求,axios 是一个基于Promise 的 http 库,可以用在浏览器和 node.js 中,axios 成为v ...
- SpringBoot 项目 部署 war方式
SpringBoot部署 –war方式 步骤1部署方式 Springboot 和我们之前学习的web 应用程序不一样,其本质上是一个 Java 应用程序,那么又如何部署呢? 通常来说,Springbo ...
- 那些在GitHub能提高你的编程技能的项目
1.免费的编程书籍 免费的开发手册 167K Repo:github.com/EbookFoundation/free-programming.. 2. 很棒的话题 包含了各种有趣的话题 148k R ...
- Mybatis-spring-boot-starter自动配置的原理分析
相信大家在使用SpringBoot的过程中,经常会使用到mybatis,通过使用mybatis-spring-boot-starter依赖进行自动配置,省去了自己依赖配置和Bean配置的很多麻烦. 有 ...
- jQurey判断下一项是否为指定项、下一项是否有指定项
jQurey判断下一项是否为指定项.下一项是否有指定项 此例子中,如果某个列表项没有二级列表,那么去掉它的展开.收起按钮.就是前边那个减号. 此时我们需要判断VOC综合治理技术这一项是否含有二级菜单, ...