domain-ml 是一个面向 Rust 机器学习/AI 应用开发的领域约束技能,属于该技能体系中的第 3 层“领域约束”。其目标是把机器学习领域的规则转化为具体的设计约束,并进一步落到 Rust 的实现方式上。
主要用途:在 Rust 中构建 ML/AI 应用时,处理机器学习相关的领域问题,包括大数据内存效率、GPU 加速、模型可移植性、批处理、数值精度和可复现性等。
主要能力:技能给出“领域规则 → 设计约束 → Rust 含义”的映射,例如大数据需要高效内存,对应零拷贝与流式处理;GPU 加速需要 CUDA/Metal 支持,对应 candle、tch-rs;模型可移植需要标准格式,对应 ONNX;批处理需要吞吐优先于延迟,对应批量化推理;数值精度需要浮点处理,对应 ndarray 与谨慎的 f32/f64;可复现性需要确定性,对应带种子的随机与版本管理。技能同时列出用例到框架的推荐:仅推理推荐 tract(ONNX),理由是轻量、可移植;训练与推理推荐 candle、burn,理由是纯 Rust、支持 GPU;PyTorch 模型推荐 tch-rs,理由是直接绑定;数据管道推荐 polars,理由是快速、惰性求值。关键 crate 包括:张量 ndarray、ONNX 推理 tract、ML 框架 candle/burn、PyTorch 绑定 tch-rs、数据处理 polars、嵌入 fastembed。
使用方式:技能提供可参考的设计模式与代码模式。设计模式包括模型加载(一次加载、重复使用,使用 OnceLock<Model>)、批处理(提升吞吐,先收集再处理)、流式处理(大数据,基于迭代器)、GPU 异步(并行,数据加载与计算并行)。代码模式给出“推理服务”示例,使用 std::sync::OnceLock 与 tract_onnx::prelude,通过 get_or_init 加载并优化 ONNX 模型,再在 predict 中对输入张量运行模型并收集 f32 结果;另给出“批量推理”示例,按 batch_size 对输入分块,堆叠为批次张量后推理,再展开结果。
适用场景:在 Rust 中构建 ML/AI 应用、需要高效内存与数据管道、需要 GPU 推理、需要模型加载与 ONNX 部署、需要批处理提升吞吐量等场景。
限制与注意事项:资料以约束、推荐和代码模式为主,未提供完整项目结构、具体版本要求、性能基准、价格或收费信息、平台与部署细节,相关内容暂未提供。技能列出的常见错误包括克隆张量(内存浪费,应使用视图)、单条推理(GPU 利用率低,应批处理)、每请求加载模型(慢,应使用单例模式)、同步数据加载(GPU 空闲,应使用异步流水线)。相关技能包括性能 m10-performance、惰性初始化 m12-lifecycle、异步模式 m07-concurrency、内存效率 m01-ownership。