rust + python+ libtorch

1: 环境,ubuntu

        1.1 rust : rust-1.79.0   (在官方下载linux版本后,解压文件夹,内部有个install的sh文件,可安装)

安装成功测试:cargo --version

        1.2 python3.10   (直接使用apt install python 下载的)

        1.3 libtorch 最新版本2.3.1  Start Locally | PyTorch

因为后续出现bug:

找不到tch 1.8.0 , 所以重新下载历史版本

历史版本下载: https://download.pytorch.org/libtorch/cpu/

2:  配置

libtorch 环境变量配置: 使用的 GitHub - LaurentMazare/tch-rs: Rust bindings for the C++ api of PyTorch.

 

注意解压文件夹和配置的地址保持一致。

最后修改 ~/.bashrc 后 记得要 source ~/.bashrc

3: 测试

        3.1 创建一新项目 

cargo new demo1

        3.2 进入demo1 直接运行

cargo run

        3.3 运行成功 ,开始关联libtorch测试,进入到src下修改main.rs

use tch::Tensor;

fn main() {
    let t = Tensor::from_slice(&[3, 1, 4, 1, 5]);
    let t = t * 2;
    t.print();
}

        这里主要是为了测试tch有没有成功引进,这个时候在运行 cargo run 会报错 找不到tch

        3.4 修改Cargo.Toml  ,添加tch 依赖,  这个相当于清单文件

4:  本文使用2.0.0的libtorch  tch= 0.15.0 ,tch版本和libtorch版本对比,可以根据下面的来

Previous PyTorch Versions | PyTorch

tch 0.16.0 - Docs.rs

如果版本不对,他会提示:

根据提示去调整版本

5: bugs

解决:

rm ~/.cargo/.package-cache

卡住在99,运行的时候使用 , 如果你是2核,下面写1,如果是4核,最高可以写3,防止cpu拉满导致编译一直卡住,这里会需要很长时间。。我用了2个多小时最终才完成编译

CARGO_BUILD_JOBS=2 cargo build

6:  rust和python 互调

        6.1 python 里使用rust

按照GitHub - PyO3/pyo3: Rust bindings for the Python interpreter 配置maturin

注意事项,因为当前环境装的python3

最后通过指令就可以访问你在rust文件里写的方法

6.2 在rust内访问python文件 Executing existing Python code - PyO3 user guide

按照官方说明填写python文件,

打印结果:

上一篇:你的字典还是乱序的吗?试试Python的OrderedDict吧!


下一篇:关于Apache Iceberg