在机器学习的应用上,软件工程师和FPGA真的有着难以逾越的鸿沟吗?

 在机器学习的应用上,软件工程师和FPGA真的有着难以逾越的鸿沟吗?

人工智能和机器学习正在渗透所有的行业。随着人工智能算法的成熟,支持这些算法的硬件平台也日趋成熟。目前,这些硬件平台包括 ASIC,CPU,GPU以及 FPGA 。在 Plunify,尽管我们的强项是FPGA的设计优化,但是我们中的很多人本质上还是软件工程师。当然,这里所说的“软件工程师”并不包括嵌入式工程师,固件工程师或者研发驱动的工程师;我们所说的是使用 .NET, Java, Python, R, SQL, C++ 或者 JavaScript 来写代码的开发者们。

我们最近正在研究的项目是在芯片设计上使用机器学习驱动的布局。我们用成千上万不同的布局来训练,并使用机器学习技术,在布线之前预测设计的最终时序性能。

使用哪一个框架来开启机器学习项目?
市面上有很多选择,但是我们最终的答案是Tensorflow。这似乎有些难以置信,毕竟我们已经开发了赛灵思 Vivado 的插件 Plunify Cloud 以及设计优化软件 InTime,难道不应该选择一个可以轻易把FPGA作为硬件的框架吗?我们已经对FPGA有所了解,而Tensorflow和FPGA的关系并不是很密切。

请不要误解。我们虽然对FPGA的加速性能充满信心,但是,在每一个机器学习项目开始的时候,挑选一个合适开发环境首先要考虑的应该是自己的已有技能和可供学习的资源。对于已有技能,我们了解上述所有语言和其他的一些语言;至于可供学习的资源,Tensor Flow+Keras 教程和文档可以轻易的击败所有的对手。有这么多选择,您一定想马上开启项目来测试您的方法是否可行。

 在机器学习的应用上,软件工程师和FPGA真的有着难以逾越的鸿沟吗?

应该选择哪个加速平台?
在生成了成千上万个拥有不同布局和资源要求的设计时,我们应该如何加速机器学习的训练和推理?关于加速的问题终于来了-究竟是用GPA,TPU还是FPGA呢?很明显,FPGA由于对用户不友好胜算不大。合理的选择仍然是谷歌的云平台或者GPU。

对我们来说,我们已经解决了如何将正在进行的项目转换成基于FPGA的加速环境。这里所说的“转换”并不是完全的重写。也许我们已经开启了Caffe,但是软件工程师在开始阶段不会考虑加速平台。

“不了解发动机,也可以选一台好车?”
这里有一种替代方法 – 高层综合(High LevelSynthesis)。用C/C++写代码然后转换成Verilog或者VHDL(这个方法已经存在很久并且也有很多批评)。在Hastlayer有一群工程师提供一个.NET的软件开发工具包可以把.NET程序转换成VHDL.。这个开发包当然有一些局限性,但是从软件工程师的角度上来说,这已经是一个从试图理解时钟,频率,器件类型的极大飞跃。我们这些软件工程师比较自我,大多只关心机器学习的训练可以有多快。如果眼下的程序在CPU上需要运行一天,而在FPGA上只需要两个小时,我是不是可以用一个更优化的版本(比如同样的.NET程序但是被InTime优化过)30分钟就完成运行呢?

采用自然习惯还是稍后再转换?
让软件工程师采用他们早期的自然习惯肯定是有帮助的。看看这个领域扩展地有多快吧,编写机器学习算法的程序员绝大多数都不会成为拥有数学博士的数据科学家或者FPGA/ASIC设计工程师。他们大多是像你我这样拥有一个计算机学位的普通人,使用已经编写好的库。在没有一个大公司或团队的支持下,很难创造一个属于自己的机器学习框架。这条路行不通的话,拥有一个简单自动的转换路径似乎就是一个最好的选择了。

所以别再说“你需要一开始就学习FPGA”这样的话了,我们应该说“将Tensorflow / Pytorch转换成适用于FPGA的代码”。或者直接让我们来帮您在FPGA上运行吧。

这两种选择,都需要逾越一条鸿沟。如果您是一个已经遇见这些问题的软件工程师,我们十分希望能听见您的心声。

InTime是一款使用机器学习来优化 FPGA 设计的软件。如果您有兴趣,点击这里来了解更多 InTime 的信息,或者直接申请免费试用。

我们全新推出的 Plunify Cloud 是一款完全集成在 Vivado 界面的 FPGA 云平台,点击这里了解详情。

用户喜欢...

Infineon 面向智能手机、可穿戴设备和服务机器人的无线充电解决方案

Infineon 面向智能手机、可穿戴设备和服务机器人的无线充电解决方案 可确保绝佳用户体验的高性价比系统解决方案 无线电源在市场驱动下一直在不断增长,并且预期未来亦会持续对我们的日常...


机器学习更接近你身边的微控制器

机器学习(ML)是人工智能(AI)的一个分支,多年来一直在电子系统中应用。但是,直到现在,实施ML所需的处理能力大部分都被限制在基于云计算的活动中。然而,这种情况即将发生变化,随...



降低机器人风险:如何设计安全的工业环境

工业自动化(IA)的增加,特别是工业机器人的使用,正在增加人类操作员与其他移动设备或移动机器之间的意外交互的机会。设计师有责任采取适当且经常重叠的安全预防措施,以避免从生产...


降低机器人风险:如何设计一个安全的工业环境

工业自动化(IA)的增加,尤其是工业机器人的使用,正在增加人类操作员与其他移动设备或移动机器之间的意外交互的机会。设计人员有责任采取适当且经常重叠的安全措施,以避免从生产中...


Murata WSM-BL241 Bluetooth® 5.0低功耗模块适合用于智能设备、医疗和保健以及机器对机器 (M2M) 应用

Murata WSM-BL241 Bluetooth5.0低功耗模块 了解MBN52832开发套件详情 Murata WSM-BL241 Bluetooth5.0低功耗 (BLE) 模块可实现超低功率连接,用于数据通信。该模块将Nordic Bluetooth低功耗IC、射频前端和晶体集成到...


机器的崛起

现在是2035年,过去三年里,加利福尼亚州禁止汽车的手动驾驶。许多人追溯到2031年高速公路堆积如山的一场车祸,涉及72辆车,20多人死亡和多起诉讼,最终追溯到一名青少年司机因发短信而分...


LabVIEW图形化系统设计—机器人设计的前沿方法

引言 移动机器人构成复杂、应用灵活,目前商业化程度还不高,相对处于前沿研究的阶段,因此一直以来都是科学家和工程师们关注的重点。 移动机器人具有某些共同的构架和组成部分,是一...


对机器人选择电机的几点思考

机器人执行特定的,定义明确的任务,如装配线工作,手术协助,仓库交付/检索,甚至清理地雷等任务。今天的机器人既可以处理高度重复的任务,又可以处理需要灵活定位和操作的复杂功能...


随着机器人技术的全面发展,供应商对运动控制参考设计做出了回应

随着从液压机器人到全电动机器人执行器的转变,电子元件供应商现在可以提供全面的电机控制参考设计,包括电机,MOSFET和驱动器,处理器,算法甚至电源连接器。 机器人运动系统过去需要...


物联网三阶段演进 市场、安全、人力与并购均有影响

物联网演进可分为三个阶段,一、串连各系统;二、智能互连的对象不仅将终端设备连网,更让设备之间彼此相连,...


[原创] ST STSPIN820+STM32 Nucleo步进马达驱动方案

ST公司的STSPIN820是集成了控制逻辑和低RDSon功率级的步进马达驱动器,控制器采用有固定OFF时间的PWM电流控制,微步距分...


无人驾驶车离现实还有多远?

无人驾驶技术需要达到99.9999999999%的准确度才可能达到真正普及的条件,这似乎是一段不算短的路。...


主流机器学习算法简介与其优缺点分析

机器学习算法的分类是棘手的,有几种合理的分类,他们可以分为生成/识别,参数/非参数,监督/无监督等。 例如,Scikit-Learn的文档页面通过学习机制对算法进行分组。这产生类别如:1,广...


机器学习中如何选择分类器

在机器学习中,分类器作用是在标记好类别的训练数据基础上判断一个新的观察样本所属的类别。分类器依据学习的方式可以分为非监督学习和监督学习。 非监督学习顾名思义指的是给予分...


你的深度学习应用可能存在安全风险!

导语:深度学习框架和应用中存在许多漏洞,其中15个漏洞拥有CVE编号。漏洞的类型有堆溢出、数字溢出、Use-After-Free漏洞等。 360安全实验室(肖奇学 、Deyue Zhang)、佐治亚大学(李康)和弗...