ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SurrealML 如何本地构建 Rust 二进制、训练模型并运行 core 库测试

SurrealML 如何本地构建 Rust 二进制、训练模型并运行 core 库测试 SurrealML 如何本地构建 Rust 二进制、训练模型并运行 core 库测试【免费下载链接】surrealdbA scalable, distributed, collaborative, document-graph database, for the realtime web项目地址: https://gitcode.com/GitHub_Trending/su/surrealdb要在 SurrealDB 仓库中本地跑通 SurrealML 的 Python 测试与 Rustcore库测试需要依次完成三件事先编译 Rust 二进制并把动态库放到 Python 包能引用的位置再按机器学习框架分别训练测试模型最后用 feature 参数只运行对应框架的core库测试。SurrealML 的模型存储与执行逻辑是用 Rust 实现的所以 Python 测试实际引用的是编译出来的 Rust 库测试 README 明确指出如果 Rust 二进制没有编译单元测试会因为引用到不存在的二进制而失败。准备条件以下要求来自 surrealml/tests/README.md 与 surrealml/README.md机器上有python3编译脚本要用python3 -m venv创建虚拟环境和 Rust 工具链pip install会触发 Rust 编译。每个机器学习库Scikit Learn、PyTorch、TensorFlow、ONNX都要用独立的 Python 环境。README 说明原因各机器学习库之间存在依赖冲突。如果你还要把模型上传到 SurrealDB 节点上运行需要 SurrealDB 已安装并运行只跑本文章的本地构建与测试时不涉及服务器。注意 SurrealML 当前仓库结构与测试脚本假设的路径不完全一致脚本在代码里按modules/core、包目录surrealml/等旧布局解析路径见 build_assets.py而当前仓库中模型目录实际是 surrealml/core/model_stash/。本文按仓库文档给出命令执行时以你机器上的实际目录为准。编译 Rust 二进制运行 local_build.pysurrealml包根目录下执行对应当前仓库的surrealml/目录python tests/scripts/local_build.py运行前提README 逐条列出必须处于 repo 根目录运行前不要激活任何虚拟环境因为脚本会自建一个临时虚拟环境用于构建。副作用必须清楚脚本 local_build.py 开始时会清理旧文件删除tests/venv、build/、surrealml.egg-info、target/这些目录以及包内已有的rust_surrealml.so然后新建 venv、执行pip install编译 Rust 库并把产物移动到包目录、命名为rust_surrealml.so。这些目录如果包含你的本地改动会直接丢失执行前自行确认。脚本完成后Python 测试就能引用到rust_surrealml.so。这一步存在的意义README 的表述是模型在 Python 包内本地能跑就能保证在生产环境的 Rust 里以同样的方式跑。训练测试模型每个框架一个独立环境surml目标支持能转换为 ONNX 的模型。为了保持反馈闭环测试集是围绕刚训练出来的模型跑的由于各机器学习库依赖冲突训练与生成脚本按框架拆成了独立文件。在对应框架的独立环境里从surrealml包根目录执行# Scikit Learn python tests/model_builder/sklearn_assets.py # PyTorch python tests/model_builder/torch_assets.py # TensorFlow python tests/model_builder/tensorflow_assets.py # ONNX python tests/model_builder/onnx_assets.py这些脚本会训练模型并把产物存到测试所需的位置训练产物落在core/model_stash/下按框架分目录每个框架下有surml/与onnx/两个子目录以 surrealml/core/model_stash/ 的结构为准。各脚本自己pip install固定版本依赖例如 sklearn_assets.py 安装skl2onnx1.16.0和scikit-learn1.4.0onnx_assets.py 安装onnx1.16.0、scikit-learn1.4.0、skl2onnx1.16.0脚本会先删除该框架的 stash 子目录再重新生成。如果你刚克隆仓库或者要为 CI 流程准备模型README 提醒需要确保在依赖这些模型之前运行 build_assets.py。与上面的单框架脚本不同它会一次性训练 sklearn、onnx、torch、tensorflow 四套模型并且会先删除整个model_stash目录再重建、结束前删除.surmlcache。只训练某个框架时不要误用这个全量入口。运行 core 库测试core库的测试逻辑是加载surml文件并对从surml文件加载的模型执行一次推理见 surrealml/core/README.md。因为你可能只针对某个机器学习库训练了模型README 要求测试也只跑那个库。先cd到core目录测试 README 写作cd ../core再按已训练的框架选择 feature# Scikit Learn cd ../core cargo test --features sklearn-tests # PyTorch cd ../core cargo test --features torch-tests # TensorFlow cd ../core cargo test --features tensorflow-tests # ONNX cd ../core cargo test --features onnx-tests这些 feature 开关在 surrealml/core/Cargo.toml 中定义sklearn-tests、onnx-tests、torch-tests、tensorflow-tests另有gpuREADME 未给出本地用法。cargo test通过即说明该框架的surml模型加载与推理测试通过没有测试通过的输出即代表失败。编译core时还有两个与运行环境相关的设置来自 surrealml/core/README.md默认不配置任何东西时crate 会把 ONNX runtime 直接编译进二进制不需要单独安装 ONNX runtime也不会有与其他 runtime 的版本冲突。使用这个 crate 时ONNX 版本必须和客户端一致core README 声明当前 Surml 版本的 ONNX 是1.16.0。如果想改用系统已安装的 ONNX runtime在编译 crate 之前设置环境变量ONNXRUNTIME_LIB_PATH指向它README 说明 Nix 环境目前不直接支持默认编译方式必须定义该变量。可选用 Docker 容器跑一遍 CI 检查surrealml/README 提供了一条不依赖上面手工环境的替代路径在仓库中执行cargo make --no-workspace preflight它会在一组 docker 容器里运行动态 C 库加载测试以及sklearn、tensorflow、pytorch的core测试。需要可用的 docker 环境它与上面的本地路径是二选一的关系不需要同时执行。【免费下载链接】surrealdbA scalable, distributed, collaborative, document-graph database, for the realtime web项目地址: https://gitcode.com/GitHub_Trending/su/surrealdb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表