记录tensorflow2.0源码单元测试(使用bazel)流程——在windows10上进行测试

搞了好多天终于跑通了tensorflow源码中的各个以test结尾的测试文件,下面记录一下整个流程以及过程中踩过的无数的坑。

整个流程大概可以分为三个部分:

  1. 下载源码
  2. 安装Bazel
  3. 运行测试程序

我在win10ubuntu18.04上都分别进行了以上三个步骤。结果是:win10测试失败,ubuntu可以测试
win10在第三步”运行测试程序“步骤出现很多错误,根据stackoverflow上的一些方法解决了一部分,但最终仍有无法解决的问题。
stackoverflow上有一个与这个问题类似的贴子,讲的是他们在windows上也出现了相同的问题,而在Mac和linux上则无错误。所以,我又给电脑装了个ubuntu18.04(非虚拟机),打算在linux上进行测试。

ubuntu18.04执行这三个步骤过程非常流畅(可能是因为一些坑我在windows上已经踩过了),在第三步运行的过程中也无错误出现(即有一些在windows上出现的且可以被解决的问题在ubuntu中也没有出现),测试程序可以执行。
详情请参阅记录tensorflow2.0源码单元测试(使用bazel)流程2——在ubuntu18.04上进行测试

一、WIN10上运行

  1. 下载源码
    想要跑通tensorflow源码的测试程序,首先得把源码整到电脑上,这个就不多说了,我使用的是2.0版本,直接找个空文件夹打开git bash执行(你得先安装好git)
    git clone -b r2.0 https://github.com/tensorflow/tensorflow.git
    此处贴一个通用的加速git clone的方法,此方法来自于知乎用户 sergio
    那就是把git clone这句话改成:
    git clone -b r2.0 https://github.com.cnpmjs.org/tensorflow/tensorflow.git
    即在github.com后面多了个.cnpmjs.org,使用镜像下载,速度可提升数倍,亲测有效(对于多数github上的资源应该都可以,不光是tensorflow)
    下载下来tensorflow的源码之后,我们打开其根目录下的configure.py,查看大概在52行左右的_TF_MIN_BAZEL_VERSION = '0.24.1'_TF_MAX_BAZEL_VERSION = '0.26.1',这个是当前版本tensorflow源码编译所需的Bazel的版本范围,可以看到tensorflow2.0对应的Bazel版本是0.24.1~0.26.1。

  2. 安装Bazel
    首先放出官方的教程
    根据官方的指引,我们找到github上的Bazel,点击右边的Releases,或者直接点这里,一直往下翻,找到0.24.1~0.26.1之间的版本,这里我选择的是0.25.1,下载bazel-0.25.1-windows-x86_64.exe(当然这里你根据你的情况下载)
    下载好之后将其重命名为bazel并且将其目录添加进PATH,或者把它放进已有的PATH目录中。此时打开命令行运行bazel version应该就可以看到版本了,但是还不够,还需要根据官方教程的”Installing compilers and language runtimes”这部分继续安装MSYS2,JDK和visual studio

  3. 运行测试程序
    安装完成之后,我们就可以进入tensorflow的源码文件夹中,在命令行中输入代码测试对应的test文件了,具体代码可以参考stackoverflow的这个问题
    比如我们执行:bazel test //tensorflow/core/kernels:unique_op_test,程序就会开始运行了,表示要对tensorflow/core/kernels:unique_op_test.cc这个文件进行测试,这里强调一点:
    .cc文件的具体名称与bazel命令中冒号后面的名称的对应关系是在build文件里定义的
    (比如上面这个例子,它的文件名是“unique_op_test.cc”,如果想测试该文件,bazel指令后面跟的参数应该是 该文件的所在文件夹 + 冒号 + 该文件对应的package名 ,在tensorflow源码中,大部分package名都是该文件的名字去掉.cc,所以我们可以很方便地根据文件名就知道在bazel的时候如何写对应的package名。
    比如上面这个unique_op_test.cc文件的位置是tensorflow/core/kernels/unique_op_test.cc,其对应的package定义就写在了tensorflow/core/kernels文件夹的BUILD文件中,具体位置是tensorflow/core/kernels/BUILD,打开这个BUILD文件,找到2137行的tf_cc_test,就可以看到对应的文件与package的定义关系了,unique_op_test.cc文件对应的package名定义为了unique_op_test,因此我们刚才测试该文件的时候输入的指令是bazel test xxxx:unique_op_test。关于BUILD文件,有兴趣的小伙伴可以自行查阅。
    但是也有一部分test文件在BUILD之中并没有对应的package定义,这些文件需要自行定义package之后再bazel,此情况之后再进行说明。2021.05.09,已发布,请参阅:记录tensorflow2.0源码单元测试(使用bazel)流程3——遇到Skipping ‘:xxx_test‘: no such target怎么办

    讲了半天以上都是测试的前置操作,所有的步骤都是为了成功运行test文件,然而在windows上在执行bazel xxxx(比如bazel test //tensorflow/core/kernels:unique_op_test)之后,会发生很多错误,以下是遇到的错误及我找到的对应可解决的方法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值