我正在开发一款针对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
也许使用 LIBTORCH_STATIC=1 进行构建可能会有所帮助,请参阅 crate tch。下载后,libtorch 共享对象存储在项目构建文件夹中的 torch-sys 下