提到机器学习领域,大部分人第一时间想到了
Python
,相对于它成熟的生态和丰富的库,当然不可否认,它确实还是领域主导语言。
但是
Rust
因其安全性、性能和并发特性而在机器学习 (
ML
) 和人工智能 (
AI
) 领域受到关注。马斯克也在推特公开承认,
Rust
才是
AGI
语言。虽然
Rust
还在积极的发展中,5月的编程排行榜也不过还是
18
名,但他的生态正在逐步发展,作为一个
Rust
爱好者,我始终相信他就是未来。
本文的重点在于讨论
Rust
中两个比较流行的机器学习框架,而不是歌颂
Rust
,也没有任何语言歧视,自然也不会试图无脑的劝各位入坑
Rust
。
🎂Candle
一个简单且高性能的深度学习框架。
这是一个以简单和高性能为主打而设计的速度学习框架。它提供了一个用于定义个训练神经网络的简约
API
,利用基于强大的内核的并行计算功能。
实现上,
Candle
底层基于
cuTENSOR
和
cuDNNv8
库,这些库可以在
NVIDIA
的
CPU
上高效执行。下面是基于
Candle
定义和训练
MLP
的简单代码示例:
usecandle::prelude::*;fnmain(){letmut 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 in0..10{letmut 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
训练逻辑回归模型的示例
useburn::prelude::*;fnmain(){let dataset =Dataset::from_csv("data.csv")?;let model =LogisticRegression::new(dataset.num_features());let optimizer =GradientDescent::new(0.01);letmut 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
版权归原作者 代号0408 所有, 如有侵权,请联系我们删除。