warp-transducer是可以在CPU和GPU上实现并行RNN-transducer的开源库,现在支持pytroch和tensorflow的调用,主要用来计算RNNTLoss,

本文是在ubuntu18.04的系统上进行的。

warp-transducer下载地址

源码编译warp-transducer

首先获取warp-transducer的代码:

git clone https://github.com/HawkAaron/warp-transducer.git
cd warp-transducer

创建一个build文件夹:

mkdir build
cd build

编译:

cmake -DCUDA_TOOLKIT_ROOT_DIR=$CUDA_HOME ..
make

如果你的cuda不是标准安装,那么需要用-DCUDA_TOOLKIT_ROOT_DIR=cuda的安装路径,使cmake能够发现CUDA

如果有以下logs:

-- cuda found TRUE
-- Building shared library with no GPU support

请运行rm CMakeCache.txt,然后重新cmake

编译失败请注意

如果在make的时候出现这个错误:

/home/gaoliqing/lhb/warp-transducer-master/src/rnnt_entrypoint.cu(1): error: this declaration has no storage class or type specifier/home/gaoliqing/lhb/warp-transducer-master/src/rnnt_entrypoint.cu(1): error: expected a ";"2 errors detected in the compilation of "/tmp/tmpxft_000014f2_00000000-13_rnnt_entrypoint.compute_70.cpp1.ii".
CMake Error at warprnnt_generated_rnnt_entrypoint.cu.o.cmake:266 (message):
Error generating file
/home/gaoliqing/lhb/warp-transducer-master/build/CMakeFiles/warprnnt.dir/src/./warprnnt_generated_rnnt_entrypoint.cu.oCMakeFiles/warprnnt.dir/build.make:192: recipe for target 'CMakeFiles/warprnnt.dir/src/warprnnt_generated_rnnt_entrypoint.cu.o' failed
make[2]: *** [CMakeFiles/warprnnt.dir/src/warprnnt_generated_rnnt_entrypoint.cu.o] Error 1
CMakeFiles/Makefile2:141: recipe for target 'CMakeFiles/warprnnt.dir/all' failed
make[1]: *** [CMakeFiles/warprnnt.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

解决方法
找到warp-tranducer-master/src/rnnt_entrypoint.cu文件,打开文件你会发现,只有一行代码:rnnt_entrypoint.cpp。删除这行代码,将wrap-transducer-master/src/rnnt_entrypoint.cpp中的内容复制到warp-transducer-master/src/rnnt_entrypoint.cu中,然后重新make就可以通过了。

warprnnt-pytorch

warp-transducer提供了包装warpRNNT库的pytorch内核。

安装

首先编译通过warp-transducer,然后需要安装pytorch环境。网上有许多安装pytorch的教程,这里就不做说明了。

如果你有一个GPU,需要确保CUDA_HOME被设置了,如下:

export CUDA_HOME="/usr/local/cuda"

"/usr/local/cuda"是CUDA的路径,请替换自己的路径

现在开始安装:(推荐在pytorch环境下安装,推荐使用anaconda创建pytorch环境)

cd pytorch_binding
python setup.py install

然后终端会输出安装成功的信息。(我是在anaconda创建的pytorch环境下安装的,系统会直接把包输出anaconda3/envs/pyEnv/lib/python3.7/site-packages下,就可以直接使用了)

install出错请注意

如果提示cuda.hcuda_runtime.h等找不到,首先确保CUDA_HOME已经设置了。如果已经设置了,但是还是有下面的错误,请运行下面的指令:

vim ~/.bashrc

在bashrc中写入:

export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/opt/software/cuda/cuda-10.0/include
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/opt/software/cuda/cuda-10.0/include

/opt/software/cuda/cuda-10.0/includecuda.h所在的路径,请改为自己的。

保存退出,执行

source  ~/.bashrc

使更改生效,重新install就可以通过了。

warp-transducer源码安装,warprnnt_pytorch生成相关推荐

  1. 【小程序源码】检讨书生成微信小程序工具源码-安装搭建简单

    对于经常写检讨的小伙伴来说,福音来了 因为这是一款检讨书生成小程序 所以再也不用为了写检讨而烦恼了哦 支持自定义字数下线,主题自定义 支持多种类型检讨比如:学生党的,男朋友,领导演讲稿,共青团申请书等 ...

  2. 源码安装apache实例

    在Redhat/Centos系统中一个软件包的安装一般分为两种方式RPM与compile安装. RPM安装方式: 优点 : 提供快速安装,减少编译安装侦错.困扰. 缺点 : 因为相关设定需考量普遍性之 ...

  3. Linux软件安装管理---源码安装

    在Linux平台下,软件包的类型可以划分为两类:源码包.二进制包. 源码包: 即程序软件的源代码(一般也叫Tarball,即将软件的源码以tar打包后再压缩的资源包). 二进制包: 如 Red Hat ...

  4. centos6源码安装mysql5.6.29

    为什么80%的码农都做不了架构师?>>>    1.下载源码 # wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5. ...

  5. OpenStack Swift源码安装

    1.安装拓扑 2.准备环境(所有节点) 2.1 由于本次安装选择的Ubuntu Server 12.04,需要安装以下必需软件包: apt-get install build-essential gi ...

  6. 在 CentOS 7.0 上源码安装 Xen 4.5

    上周 CentOS 7.0 正式版发布了,Xen4CentOS 项目还没来得及更新支持 CentOS 7.0,所以目前要在 CentOS 7.0 上玩 Xen 的唯一办法只有编译源代码了.貌似这次 C ...

  7. 源码安装zabbix3.2.7时PHP ldap Warning

    问题如下: 解决方法: 1.首先查看源码安装的php模块中是否有ldap.so [root@nms ldap]# ll /usr/local/php/lib/php/extensions/no-deb ...

  8. 一般源码安装添加的GD库 是不支持 jpeg 格式的图片的

    一般源码安装添加的GD库 是不支持 jpeg 格式的图片的,只支持如下格式 GD Support enabled  GD Version bundled (2.0.34 compatible)  GI ...

  9. ansible1.7.2源码安装教程

    ansible1.7.2源码安装教程 ================================================================================= ...

  10. Linux源码安装步骤

    Linux上几乎所有的软件都经过了GPL授权,因此几乎所有的软件都会提供源码.  而一个软件要在Linux上执行,必须是二进制文件,因此当我们拿到软件源码后,需要将它编译成二进制文件才能在Linux上 ...

最新文章

  1. BZOJ-1005 明明的烦恼
  2. 互联网如何“升级”制造业?《“人工智能+制造”产业发展研究报告》发布
  3. CTFshow 爆破 web24
  4. 使用 Drools 规则引擎实现业务逻辑,可调试drl文件
  5. 什么是I帧,P帧,B帧
  6. exchange邮件服务器_基于Spring Boot快速实现发送邮件功能
  7. 前端http请求跨域问题解决
  8. linux内核中TCP接收的实现
  9. 晨哥真有料丨宁缺毋滥会等来一个很好的人吗?
  10. Linux一些软件的安装
  11. python标准库学习笔记
  12. JavaScript 开发进阶:理解 JavaScript 作用域和作用域链
  13. Extjs4.1.1视频教程下载
  14. 机器学习之数据预处理——降噪
  15. matlab一键计算平均值与标准偏差
  16. 银联支付(chinapay)java接入避坑指南
  17. 计算机键盘打不出字来了,电脑键盘打不出来字怎么办?
  18. 谈VI设计的审美情趣
  19. 【ThreadPoolTaskExecutor】 SpringBoot 的线程池的使用
  20. v3 微信api 请求微信_V3版JSAPI微信开发

热门文章

  1. DayDream模拟手柄操作
  2. 数组扁平化——flat方法理解
  3. C++经典编程题目(九)玩火柴棍游戏
  4. 炫富神器 | 辣条专业国内首开,网友:中国吃货石锤了 ​!
  5. 怎样查找计算机死机日志,死机和日志错误
  6. java.lang.IllegalStateException: Current state = FLUSHED, new state = CODING_END问题查找
  7. sql盲注特点_sql盲注
  8. 今晚与小妹亚美合作了一把qq游戏,大获全胜!
  9. Hive-WARN: Establishing SSL connection without server‘s identity verification is not recommended. Ac
  10. mysql怎么删除临时表里的数据_MySQL如何创建和删除临时表 | 学步园