-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
目标:
基于Spark平台和FPGA实现高效语音识别。
具体地,以BigDL为基础,在FPGA上实现DeepSpeech2模型的inference。
最终的功能是可以由BigDL支持的模型checkpoint文件,生成FPGA代码并部署到FPGA上进行inference。
并且能够在标准的Spark程序中调用FPGA代码,进行分布式的inference,这里的分布式只是简单的将数据分区,然后在每个结点上执行相同的inference,最终汇总为完整的结果。
计划使用的器件是2块intel的arria10 FPGA,使用官方的OpenCL SDK进行开发。
交付
最终要交付的软硬件有:
- 翻译模型checkpoint文件到OpenCL代码的翻译器(这是主要的工作内容)
- 编译OpenCL代码并部署到集群的工具/库
- 能够在scala中调用FPGA上任意OpenCL kernel的适配库(saoclib)
- 能够实际运行的语音识别模型
- 一块FPGA开发板(我们希望能借给我们继续研究以及开展后续合作。。)
计划
第1月
- 相关工作调研;
- BigDL代码研究;
- 整体方案设计
第2月
- 完成scala调用FPGA的适配库(saoclib);
- 完成opencl矩阵乘;
- 完成翻译器雏形(使用写好的opencl文件作为模板,将各种层一对一翻译即可,工作量很小);
- 一个单机完整方案的示例,能够使用FPGA上的矩阵乘替换Lenet5/DeepSpeech模型中的一层并正确执行整个模型的inference
第3月
- 完成opencl卷积层;
- 完成神经网络2层/多层之间输出输入的对接(可以直接写主存,但是效率不高,更好的方式是使用片上- 内存);
第4月
- 完成opencl RNN;
- 完成各种激活函数、池化层、以及DeepSpeech2需要的TimeDistribute等等必要的层。
第5月
- 完成单机上的完整DeepSpeech2语音识别解决方案
第6月
- 完成分布式的部署与运行,形成完整的分布式DeepSpeech2语音识别解决方案
- 测试调优;
进度
第1月
-
相关工作调研;
-
BigDL代码研究;
-
整体方案设计
第2月
- 完成scala调用FPGA的适配库(saoclib);
- 完成opencl矩阵乘;
- 完成翻译器雏形(使用写好的opencl文件作为模板,将各种层一对一翻译即可,工作量很小);
- 一个单机完整方案的示例,能够使用FPGA上的矩阵乘替换Lenet5/DeepSpeech模型中的一层并正确执行整个模型的inference
第3月
- 完成神经网络2层/多层之间输出输入的对接(可以直接写主存,但是效率不高,更好的方式是使用片上内存);
- 完成opencl卷积层;
第4月
- 完成opencl RNN;
- 完成各种激活函数、池化层、以及DeepSpeech2需要的TimeDistribute等等必要的层。
第5月
- 完成单机上的完整DeepSpeech2语音识别解决方案
第6月
- 完成分布式的部署与运行,形成完整的分布式DeepSpeech2语音识别解决方案
- 测试调优;
Metadata
Metadata
Assignees
Labels
No labels