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

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

转到解答

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

0 项奖励
1 个已接受解答

已接受的解答
Highlighted
Moderator
Moderator
460 次查看
注册日期: ‎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
Highlighted
Moderator
Moderator
461 次查看
注册日期: ‎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.
-------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------

在原帖中查看解决方案

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

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

转到解答

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

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

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

再次感谢!

0 项奖励