如何将 libtorch 与我的 Rust 二进制文件捆绑在一起?

问题描述 投票:0回答:1

我正在开发一款针对Apple M芯片的AI聊天桌面应用程序。该应用程序利用嵌入模型和重新排序模型,我选择了 Rust-Bert,因为它能够有效地处理此类模型。 Rust-Bert 依赖于 tch,即 LibTorch 的 Rust 绑定。

为了增强用户体验,我想将 LibTorch 库(专门用于 MPS(金属性能着色器)后端)与应用程序捆绑在一起。这将防止用户需要单独安装 LibTorch,使应用程序更加用户友好。

但是,我无法找到 MPS 后端的 LibTorch 预编译二进制文件,这些二进制文件可以通过 Cargo build.rs 文件直接捆绑到应用程序中。我需要帮助找到合适的二进制文件或替代解决方案,以便在构建过程中将库与应用程序捆绑在一起。

我已经设置了LD 导出 DYLD_LIBRARY_PATH=/opt/homebrew/Cellar/pytorch/2.2.0_10/lib:$DYLD_LIBRARY_PATH 但编译并运行后。

*[main][~/Programs/pyano/rust-backend]$ ./target/release/rust-backend

dyld[93114]: Symbol not found: __ZN2at4_ops10layer_norm4callERKNS_6TensorEN3c108ArrayRefINS5_6SymIntEEERKNS5_8optionalIS2_EESC_db
  Referenced from: <1138FCDA-AB1A-3CC6-B540-4DE31C13A6CF> /Users/saurav/Programs/pyano/rust-backend/target/release/rust-backend
  Expected in:     <8F36AFD3-91CB-3828-BD48-4381DB5297F2> /opt/homebrew/Cellar/pytorch/2.2.0_10/libexec/lib/python3.12/site-packages/torch/lib/libtorch_cpu.dylib
rust pytorch libtorch
1个回答
0
投票

也许使用 LIBTORCH_STATIC=1 进行构建可能会有所帮助,请参阅 crate tch。下载后,libtorch 共享对象存储在项目构建文件夹中的 torch-sys 下

© www.soinside.com 2019 - 2024. All rights reserved.