Skip to content

RoadMap #1

@petrizhang

Description

@petrizhang

目标:

基于Spark平台和FPGA实现高效语音识别。

具体地,以BigDL为基础,在FPGA上实现DeepSpeech2模型的inference。

最终的功能是可以由BigDL支持的模型checkpoint文件,生成FPGA代码并部署到FPGA上进行inference。
并且能够在标准的Spark程序中调用FPGA代码,进行分布式的inference,这里的分布式只是简单的将数据分区,然后在每个结点上执行相同的inference,最终汇总为完整的结果。

计划使用的器件是2块intel的arria10 FPGA,使用官方的OpenCL SDK进行开发。

交付

最终要交付的软硬件有:

  1. 翻译模型checkpoint文件到OpenCL代码的翻译器(这是主要的工作内容)
  2. 编译OpenCL代码并部署到集群的工具/库
  3. 能够在scala中调用FPGA上任意OpenCL kernel的适配库(saoclib)
  4. 能够实际运行的语音识别模型
  5. 一块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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions