Rust 用于机器学习的一个小的尝试: bleuscore

查看 16|回复 0
作者:huangyezhufeng   
TLDR
  • WHAT: Rust 实现BLEU Score计算
  • GitHub: https://github.com/shenxiangzhuang/bleuscore
  • PyPI: https://pypi.org/project/bleuscore/
  • crates: https://crates.io/crates/bleuscore
  • Docs: https://docs.rs/bleuscore/latest/bleuscore/

    Why
  • Huggingface 的 Evaluate 库真的不好用,且慢,见issue
  • Talk is cheap: 看了太多和 Rust 相关的争论,还是决定动手写一下再做判断
  • BLEU 的计算是难度相对较低,比较适合作练习的项目

    Overview

  • Rust 实现 BLEU Score 计算(采用和 Huggingface evaluate完全一致的算法),通过 Binding 构建 Python 库

  • 做了大量的结果对比测试来保证此 Rust 实现的结果和 Huggingface 结果是一致的
  • 基于 Hypothesis ,一个仿 Haskell QuickCheck 的 property test 库

  • 做了较为充分的 Benchmark 来测试当前 Rust 实现的性能

    初步结论
  • 开发体验: 总体的过程(编译,测试,文档,依赖管理等)还是很丝滑的(个人之前并没有太多 Rust 基础),主要得益于 Rust 完整的生态
  • 机器学习: 当算法正已经在 Python 实现,想追求更好的性能时,用 Rust 来实现算法可以有效提升算法运行效(同时可以用 Python 实现来验证当前 Rust 实现的正确性)
  • 性能: 当前 bleuscore 的性能提升在大规模数据集上更为显著,性能提升主要来自目前的实现用了多核并行(基于 rayon)。在数据集本身比较小或没有使用多核时,其实性能提升并不大(详情见 Benchmark )

    最后
    欢迎理性讨论,欢迎 PR !
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部