在 Debian 上使用 Rust 进行机器学习
一 环境准备与工具链
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh,随后执行 source $HOME/.cargo/env,并用 rustc --version 验证安装是否成功。为提升国内依赖下载速度,可在 ~/.cargo/config.toml 中配置 crates.io 清华镜像:[source.crates-io]
replace-with = 'tuna'
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
cargo new ml_project && cd ml_project 初始化项目,依赖通过 Cargo.toml 管理,常用命令包括 cargo build、cargo run、cargo add <crate>。二 常用库与适用场景
| 库 | 类型 | 主要用途 | 备注 |
|---|---|---|---|
| linfa | 传统机器学习 | 分类、回归、聚类等 | 类似 scikit-learn 的 API 设计 |
| smartcore | 传统机器学习 | 决策树、SVM、k-NN 等 | 强调易用性与完整性 |
| tch-rs | 深度学习 | 基于 PyTorch 的模型训练与推理 | 支持 CPU/GPU |
| candle | 深度学习 | 轻量框架,CPU/GPU 计算 | 适合训练与推理 |
| ndarray | 数值计算 | 多维数组运算 | 类似 NumPy |
| polars | 数据处理 | 高性能 DataFrame | 类似 Pandas |
| tract | 推理部署 | ONNX 模型推理 | 轻量、无外部运行时依赖 |
| wonnx | 推理部署 | ONNX 模型推理 | 跨平台、易集成 |
| 以上库在 Debian 上均可直接用 Cargo 拉取与编译,适合从传统 ML 到深度学习、再到部署的完整链路。 |
三 快速上手示例
use linfa::prelude::*;
use ndarray::array;
fn main() {
let x = array![[1.0, 2.0], [2.0, 3.0], [3.0, 4.0]];
let y = array![3.0, 5.0, 7.0];
let model = linfa::linear_regression::LinearRegression::default();
let result = model.fit(&x, &y).unwrap();
let prediction = result.predict(&x);
println!("Prediction: {:?}", prediction);
}
use tch::{nn, nn::Module, Device, Tensor};
fn main() -> anyhow::Result<()> {
let device = Device::cuda_if_available();
let model = tch::CModule::load("model.pt")?; // 导出自 PyTorch
let input = Tensor::randn(&[1, 3, 224, 224], (tch::Kind::Float, device));
let output = model.forward_ts(&[input])?;
println!("推理结果: {:?}", output);
Ok(())
}
上述示例覆盖了从训练(linfa)到部署(tch-rs 推理)的典型路径,适合在 Debian 上快速验证与迭代。
四 GPU 加速与模型部署
Cargo.toml 添加 tch = "0.13",代码中通过 Device::cuda_if_available() 自动选择 CUDA 设备;确保系统已安装 NVIDIA 驱动 与 CUDA Toolkit,并使用支持 CUDA 的 tch 预编译包或自行从源码构建。Cargo.toml 启用 candle 的 CUDA 特性(如 candle-nn = { version = "...", features = ["cuda"] }),并配置相应 CUDA 环境。torch.onnx.export 导出模型,在 Rust 端用 tract 或 wonnx 加载 .onnx 文件进行高效推理,适合跨语言与跨平台服务化部署。五 实践建议与排错要点
Cargo.toml 中固定依赖版本,避免破坏性更新;大数据集与 GPU 场景建议开启 发布构建(cargo build --release)以获得更好性能。tch/candle 是否启用 CUDA 特性、运行环境是否可见 /dev/nvidia*。cargo build -j <N>)、分离训练与推理的构建配置以减少依赖体积。