Rust Burn是一个全新的深度学习框架,完全使用Rust编程语言编写,旨在平衡对研究人员、机器学习工程师和开发人员的灵活性、性能和易用性。
Rust Burn是通过自己构建一个全新的框架而不是使用现有的框架(如PyTorch或TensorFlow)的目的是为了构建一个能够很好地满足各种用户需求的多功能框架,包括研究人员、机器学习工程师和低级软件工程师。
Rust Burn的主要设计原则是灵活性、性能和易用性。
灵活性来自于能够快速实现前沿研究思想并运行实验。
性能通过优化实现,例如利用Nvidia GPU上的Tensor Cores等硬件特性来实现。
易用性源于简化训练、部署和运行模型的工作流程。
主要特点:
入门指南:
安装Rust
Rust Burn是一个基于Rust编程语言的强大深度学习框架。它需要对Rust有基本的了解,但一旦掌握了这些知识,你就能够充分利用Burn提供的所有功能。
安装Burn
要使用Rust Burn,首先需要在系统上安装Rust。一旦正确设置了Rust,你可以使用cargo,Rust的包管理器,创建一个新的Rust应用程序。
在当前目录中运行以下命令:
cargo new new_burn_app
cd new_burn_app
cargo add burn --features wgpu
cargo build
示例代码
元素智能添加
若要运行以下代码,必须打开并替换中的内容:src/main.rs
use burn::tensor::Tensor;
use burn::backend::WgpuBackend;
// Type alias for the backend to use.
type Backend = WgpuBackend;
fn main() {
// Creation of two tensors, the first with explicit values and the second one with ones, with the same shape as the first
let tensor_1 = Tensor::::from_data([[2., 3.], [4., 5.]]);
let tensor_2 = Tensor::::ones_like(&tensor_1);
// Print the element-wise addition (done with the WGPU backend) of the two tensors.
println!("{}", tensor_1 + tensor_2);
}
在 main 函数中,我们创建了两个使用 WGPU 后端的张量并执行了加法。
要执行代码,你必须在终端中运行。
输出:
你现在应该能够查看添加的结果。
Tensor {
data: [[3.0, 4.0], [5.0, 6.0]],
shape: [2, 2],
device: BestAvailable,
backend: "wgpu",
kind: "Float",
dtype: "f32",
}
位置智能前馈模块
use burn::nn;
use burn::module::Module;
use burn::tensor::backend::Backend;
#[derive(Module, Debug)]
pub struct PositionWiseFeedForward<B: Backend> {
linear_inner: Linear<B>,
linear_outer: Linear<B>,
dropout: Dropout,
gelu: GELU,
}
impl PositionWiseFeedForward<B> {
pub fn forward(&self, input: Tensor<B, D>) -> Tensor<B, D> {
let x = self.linear_inner.forward(input);
let x = self.gelu.forward(x);
let x = self.dropout.forward(x);
self.linear_outer.forward(x)
}
}
预训练模型
要构建你的AI应用程序,你可以使用以下预训练模型并使用你的数据集对其进行微调。
SqueezeNet:squeezenet-burn
Llama 2: Gadersd/llama2-burn
Whisper:Gadersd/whisper-burn
Stable Diffusion v1.4: Gadersd/stable-diffusion-burn
结论
Rust Burn代表了深度学习框架领域的新选择。 如果你已经是一名Rust开发人员,你可以利用Rust的速度、安全性和并发性来推动深度学习研究和生产的可能性。 Burn致力于在灵活性、性能和可用性方面找到合适的折衷方案,以创建一个适合不同用例的独特通用框架。
虽然仍处于早期阶段,但Burn在解决现有框架的痛点和满足该领域各种从业者的需求方面表现出了希望。 随着框架的成熟和围绕它的社区的发展,它有可能成为一个生产就绪的框架。 其全新的设计和语言选择为深度学习社区提供了新的可能性。