用于深度学习的Rust Burn库

2023年10月16日 由 camellia 发表 792 0

Rust Burn是一个全新的深度学习框架,完全使用Rust编程语言编写,旨在平衡对研究人员、机器学习工程师和开发人员的灵活性、性能和易用性。


2

Rust Burn是通过自己构建一个全新的框架而不是使用现有的框架(如PyTorch或TensorFlow)的目的是为了构建一个能够很好地满足各种用户需求的多功能框架,包括研究人员、机器学习工程师和低级软件工程师。


Rust Burn的主要设计原则是灵活性、性能和易用性。


灵活性来自于能够快速实现前沿研究思想并运行实验。


性能通过优化实现,例如利用Nvidia GPU上的Tensor Cores等硬件特性来实现。


易用性源于简化训练、部署和运行模型的工作流程。


主要特点:


  • 灵活而动态的计算图
  • 线程安全的数据结构
  • 直观的抽象化简化开发过程
  • 在训练和推理过程中快速的性能
  • 支持CPU和GPU的多个后端实现
  • 完全支持训练过程中的日志记录、度量和检查点
  • 小而活跃的开发者社区


入门指南:


安装Rust


Rust Burn是一个基于Rust编程语言的强大深度学习框架。它需要对Rust有基本的了解,但一旦掌握了这些知识,你就能够充分利用Burn提供的所有功能。


2.1

安装Burn


要使用Rust Burn,首先需要在系统上安装Rust。一旦正确设置了Rust,你可以使用cargo,Rust的包管理器,创建一个新的Rust应用程序。


在当前目录中运行以下命令:

cargo new new_burn_app
导航到此新目录:
cd new_burn_app
接下来,将Burn添加为依赖项,以及启用 GPU 操作的 WGPU 后端功能:
cargo add burn --features wgpu
最后,编译项目以安装 Burn:
cargo build
这将安装刻录框架以及WGPU后端。WGPU 允许Burn执行低级 GPU 操作。

示例代码


元素智能添加


若要运行以下代码,必须打开并替换中的内容: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)
}
}
上面的代码来自 GitHub 存储库。

预训练模型


要构建你的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在解决现有框架的痛点和满足该领域各种从业者的需求方面表现出了希望。 随着框架的成熟和围绕它的社区的发展,它有可能成为一个生产就绪的框架。 其全新的设计和语言选择为深度学习社区提供了新的可能性。


文章来源:https://www.kdnuggets.com/rust-burn-library-for-deep-learning
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消