UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Highlighted
433 次查看
注册日期: ‎05-27-2019

请问是否有人在Pynq上使用过Pytorch

转到解答

如题,我打算在Pynq-z2开发板上测试一个深度增强学习的网络模型,使用Pytorch编写的程序,同时用到了gem,想问下有没有人在FPGA上实现过这几个函数库呢?

0 项奖励
1 个已接受解答

已接受的解答
Moderator
Moderator
362 次查看
注册日期: ‎05-27-2018

回复: 请问是否有人在Pynq上使用过Pytorch

转到解答

Hi aocui22@outlook.com ,

    这个想法很新颖,但是你的需求表述地不是特别清晰,可以通过以下几个途径尝试一下:

    1、用纯嵌入式的方法实现编译pytorch

         如果想在arm上使用pytorch的话,可以用完全的嵌入式开发的思想去尝试,需要手动编译,网上关于使用树莓派3或者用英伟达Jetson Nano运行PyTorch的例程都有。

         目前没有使用PYNQ编译pytorch的例程,有鉴于PYNQ的PS部分使用的是Cortex A9双核而且DDR只有512MB,CPU性能可能不够

    2、使用FPGA的PL部分实现GEMM进行硬件加速

        (1)仍在PYNQ框架下开发:

         这个方法下如果你还你需要在PYNQ框架里面做的话就要比较困难,要自己把硬件加速函数用HLS封装成Ip,构建custom overlay,写driver去调用,github 上有用这个方式自主搭建深度学习框架的,但是难度较大。你可以参考一下SDSoC的矩阵乘法的例子https://github.com/Xilinx/gemx  ,这个例子是针对使用SDAccel平台且器件也不支持PYNQ,但是里面的gemx的关键cpp源码可以借鉴。

        利用一些已有的BNN-Pynq框架也是一种选择,这个页面里面有相关链接  

       LSTM-PYNQ 这个Overlay可以了解一下,这是一个基于Pytorch的允许训练全精度或量化的双向LSTM的库,可以对包含的数据集执行OCR。 

        (2)以zynq流程开发,使用SDSoc工具

         目前使用SDSoc工具需要选择工具支持板子,PYNQ目前不支持。如果你换到ZC702 、ZC706、ZedBoard系列板子的话,就可以使用SDsoc开发。这需要在SDsoc中shared library模式重新编译一个gemm_pl的库,修改makefile,让pytorch编译的时候可以调用这个库,难度还是较大的。

     3、更改硬件平台或框架去实现需求

          这要根据你的深度学习的模型、FPGA的设计功底,设计需求,综合考虑选择自己开发平台还是使用已开发的平台,是否使用PYNQ框架,使用什么器件等等。

      欢迎讨论

Wen

          

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------

在原帖中查看解决方案

2 条回复2
Moderator
Moderator
363 次查看
注册日期: ‎05-27-2018

回复: 请问是否有人在Pynq上使用过Pytorch

转到解答

Hi aocui22@outlook.com ,

    这个想法很新颖,但是你的需求表述地不是特别清晰,可以通过以下几个途径尝试一下:

    1、用纯嵌入式的方法实现编译pytorch

         如果想在arm上使用pytorch的话,可以用完全的嵌入式开发的思想去尝试,需要手动编译,网上关于使用树莓派3或者用英伟达Jetson Nano运行PyTorch的例程都有。

         目前没有使用PYNQ编译pytorch的例程,有鉴于PYNQ的PS部分使用的是Cortex A9双核而且DDR只有512MB,CPU性能可能不够

    2、使用FPGA的PL部分实现GEMM进行硬件加速

        (1)仍在PYNQ框架下开发:

         这个方法下如果你还你需要在PYNQ框架里面做的话就要比较困难,要自己把硬件加速函数用HLS封装成Ip,构建custom overlay,写driver去调用,github 上有用这个方式自主搭建深度学习框架的,但是难度较大。你可以参考一下SDSoC的矩阵乘法的例子https://github.com/Xilinx/gemx  ,这个例子是针对使用SDAccel平台且器件也不支持PYNQ,但是里面的gemx的关键cpp源码可以借鉴。

        利用一些已有的BNN-Pynq框架也是一种选择,这个页面里面有相关链接  

       LSTM-PYNQ 这个Overlay可以了解一下,这是一个基于Pytorch的允许训练全精度或量化的双向LSTM的库,可以对包含的数据集执行OCR。 

        (2)以zynq流程开发,使用SDSoc工具

         目前使用SDSoc工具需要选择工具支持板子,PYNQ目前不支持。如果你换到ZC702 、ZC706、ZedBoard系列板子的话,就可以使用SDsoc开发。这需要在SDsoc中shared library模式重新编译一个gemm_pl的库,修改makefile,让pytorch编译的时候可以调用这个库,难度还是较大的。

     3、更改硬件平台或框架去实现需求

          这要根据你的深度学习的模型、FPGA的设计功底,设计需求,综合考虑选择自己开发平台还是使用已开发的平台,是否使用PYNQ框架,使用什么器件等等。

      欢迎讨论

Wen

          

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------

在原帖中查看解决方案

317 次查看
注册日期: ‎05-27-2019

回复: 请问是否有人在Pynq上使用过Pytorch

转到解答

感谢回复!您的回复大致上解决了我的疑惑。

我这个想法是来源于一个在CPU上训练的增强学习网络模型,我在最近的一篇论文上看到了它。结合手头一些基于PYNQ开发板的工作,因此我想试着测试一下在FPGA器件上训练该网络的功耗,甚至不需要使用PL部分,仅仅测试一下在arm上的功耗,作为验证来为下一步工作提供思路。

根据您的解答,我可能会考虑使用性能更好的arm器件进行测试,有机会的话也会考虑在PYNQ下进行开发。

再次感谢!

0 项奖励