当前位置:首页 » 《关于电脑》 » 正文

Rust AI:机器学习Candle 和Burn框架的简单对比

13 人参与  2024年10月11日 17:20  分类 : 《关于电脑》  评论

点击全文阅读


提到机器学习领域,大部分人第一时间想到了Python,相对于它成熟的生态和丰富的库,当然不可否认,它确实还是领域主导语言。

但是Rust 因其安全性、性能和并发特性而在机器学习 (ML) 和人工智能 (AI) 领域受到关注。马斯克也在推特公开承认,Rust才是AGI语言。虽然Rust还在积极的发展中,5月的编程排行榜也不过还是18名,但他的生态正在逐步发展,作为一个Rust爱好者,我始终相信他就是未来。

本文的重点在于讨论Rust中两个比较流行的机器学习框架,而不是歌颂Rust,也没有任何语言歧视,自然也不会试图无脑的劝各位入坑Rust


?Candle

一个简单且高性能的深度学习框架。

这是一个以简单和高性能为主打而设计的速度学习框架。它提供了一个用于定义个训练神经网络的简约API,利用基于强大的内核的并行计算功能。

实现上,Candle底层基于cuTENSORcuDNNv8库,这些库可以在NVIDIACPU上高效执行。下面是基于Candle定义和训练MLP的简单代码示例:

use candle::prelude::*;fn main() {    let mut model = MlpBuilder::new(vec![784, 128, 64, 10])        .with_activation(Activation::Relu)        .build();    let dataset = mnist::load_dataset();    let optimizer = AdamOptimizer::new(0.001);    for epoch in 0..10 {        let mut loss = 0.0;        for (inputs, targets) in dataset.train_iter().batched(128) {            let outputs = model.forward(&inputs);            loss += model.loss(&outputs, &targets);            model.backward(&outputs, &targets);            optimizer.update(&mut model);        }        println!("Epoch {}: Loss = {}", epoch, loss);    }}

Candle的简单性源于其专注于深度学习模型的方法,牺牲了一些灵活性来提高性能。这使得它非常适合哪些优先以性能为优先考量的应用程序。


?Burn

一个相对全面的机器学习技术栈。

相比之下,Burn 的目标是用 Rust 构建一个成熟的机器学习栈。它包含各种组件,包括数据加载、模型定义、训练、超参数优化等。同时采用自定义内核代码进行计算,提供对底层操作的更好控制。

以下是使用 Burn 训练逻辑回归模型的示例

use burn::prelude::*;fn main() {    let dataset = Dataset::from_csv("data.csv")?;    let model = LogisticRegression::new(dataset.num_features());    let optimizer = GradientDescent::new(0.01);    let mut history = optimizer.fit(&dataset, &model, 100)?;    println!("Training loss: {}", history.losses().last().unwrap());}

Burn 的综合性使开发人员能够在 Rust 生态系统中利用各种机器学习技术。然而,与 Candle 等更专业的框架相比,这种更广泛的范围可能会降低性能。这并不难理解,他们的定位不同,一个追求特定领域的专注,另一个则是主导全面的学习栈。


?简单对比

虽然 Candle 和 Burn 都是用 Rust 编写的,但它们的设计目标和方法有所不同。

Candle 主要专注于深度学习模型,而 Burn 则提供更全面的 ML 技术栈。Candle 利用现有的高性能库,能为深度学习任务提供更好的计算效率。Burn 允许更大的灵活性和对 ML 的控制,但可能会牺牲一些性能。Burn 的目标是在 Rust 中提供更完整的机器学习生态系统,而 Candle 的范围定义相对较小。

尽管存在差异,但这两个框架都具有 Rust 的安全性、性能和并发功能的优点,这使得它们对于具有严格要求的 ML 应用程序来说是非常不错的选择。


?选择建议

如果您的主要关注点是高性能深度学习模型和部署,那么 Candle 的专业方法可能更合适。但是,如果您需要具有更大灵活性的全面 ML 堆栈,Burn 可能是更好的选择。

如果优先考虑计算效率或自定义和扩展 ML 的能力。 Burn 是个不错的选择。

Burn 更广泛的功能集相比,Candle 的简约 API 的学习曲线更加平缓,特别是如果您不熟悉 Rust ML的情况下。

如果你的项目涉及与现有 Rust 代码库集成或利用其他 Rust 库,Burn 的综合性可能会更有优势。

当然,如果你足够熟悉,也可以综合对两个框架进行组合使用。


?总结

Candle Burn 代表了 Rust 生态系统在机器学习和人工智能方面令人兴奋的发展。 Candle 为深度学习任务提供了简单性和高性能,而 Burn 则提供了更全面的 ML 堆栈和更大的灵活性。

Candle

Burn


点击全文阅读


本文链接:http://zhangshiyu.com/post/170693.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1