6 个版本
0.5.2 | 2022 年 10 月 31 日 |
---|---|
0.5.1 | 2022 年 10 月 31 日 |
0.4.2 | 2022 年 10 月 13 日 |
#714 在 机器学习 中
76KB
977 行
Rust 的附加工具
rust_hero 是一个利用自然语言处理(NLP)增强 Rust 代码质量的 Rust 助手。它支持 unsafe
和 lifetime
(待办)预测。
[dependencies]
rust_hero = "0.5"
分类 unsafe Rust 代码
对于 Rust 中的每个函数,unsafe
关键字使用了 unsafe 超能力。然而,如果可以在编译程序时移除它,则不需要 unsafe
关键字。
rust_hero
无需重新编译即可推断 unsafe
关键字的必要性。rust_hero
训练一个基于 microsoft/codebert 的模型,并利用 BERT 的强大推理能力来推断 unsafe
的必要性。
声明
本项目中的语言查询实现基于 BrianHicks/tree-grepper。
性能
在 Intel I7-12700K CPU 和 NVIDIA 3080 12GB GPU 上,rust_hero
推断一个 Rust 文件平均需要 2.06 秒和 2.90 秒。
rust_hero
用 Rust 编写,在 GPU 和 CPU 上分别比用 Python 语言编写的 rust_hero
快 6.58 倍和 13.04 倍。
rust_hero
相对于 Python 中 rust_hero
的推理加速安装
rust_hero 的运行时依赖项
sudo apt install build-essential cmake pkg-config libssl-dev wget zip git
下载 tree-grepper
供应商(cargo build
也会自动下载供应商)
bash ./scripts/runtime.sh
它使用 libtorch-1.12.0
(参见 rust-bert)进行 rust_hero 推理。请从以下链接下载 CPU 或 CUDA 版本的 libtorch
CPU: https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-1.12.0%2Bcpu.zip
CUDA: https://download.pytorch.org/libtorch/cu116/libtorch-cxx11-abi-shared-with-deps-1.12.0%2Bcu116.zip
解压文件并在 .bashrc 中设置环境路径
export LIBTORCH=$libtorchDir$/libtorch
export LD_LIBRARY_PATH=${LIBTORCH}/lib:$LD_LIBRARY_PATH
source .bashrc
或者在工作目录的 'envConfig' 中
export LIBTORCH=$libtorchDir$/libtorch
export LD_LIBRARY_PATH=${LIBTORCH}/lib:$LD_LIBRARY_PATH
source envConfig
准备 rust_hero 测试的 rust 数据(可选)
从包括 rust-openssl
、tokio
、anyhow
、hyper
、rand
、regex
和 rayon
在内的开源 rust 项目中精心挑选了 50 个 rust 文件用于测试
bash ./scripts/prepare_data.sh
rust_hero 的示例用法
cargo run data/error.rs
rust_hero
也支持将一个目录下所有的 rust 文件进行分类
cargo run data/
依赖项
~27–39MB
~678K SLoC