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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions