图片由作者提供
1. Google 网络安全证书 - 快速进入网络安全职业道路。
2. Google 数据分析专业证书 - 提升你的数据分析技能
3. Google IT 支持专业证书 - 支持你的组织的 IT 工作
Rust Burn 是一个完全用 Rust 编程语言编写的新深度学习框架。创建一个新框架而不是使用现有的框架如 PyTorch 或 TensorFlow 的动机是构建一个多功能的框架,能够很好地服务于各种用户,包括研究人员、机器学习工程师和底层软件工程师。
Rust Burn 的关键设计原则是灵活性、性能和易用性。
灵活性 来自快速实现前沿研究思想和进行实验的能力。
性能 通过优化实现,例如利用 Nvidia GPU 上的 Tensor Cores 等硬件特性。
易用性 来自简化训练、部署和在生产中运行模型的工作流程。
关键特性:
-
灵活且动态的计算图
-
线程安全的数据结构
-
直观的抽象以简化开发过程
-
在训练和推理过程中具有极快的性能
-
支持多种后端实现,适用于 CPU 和 GPU
-
完全支持训练过程中的日志记录、度量和检查点
-
小而活跃的开发者社区
Burn 是一个强大的深度学习框架,基于 Rust 编程语言。它需要对 Rust 有基本了解,但一旦掌握,你将能够利用 Burn 提供的所有功能。
使用官方 指南 安装它。你也可以查看 GeeksforGeeks 提供的安装 Rust 的指南,其中包括 Windows 和 Linux 的截图。
图片来源于 安装 Rust
要使用 Rust Burn,你首先需要在系统上安装 Rust。Rust 正确设置后,你可以使用 cargo 创建一个新的 Rust 应用程序,cargo 是 Rust 的包管理器。
在当前目录下运行以下命令:
cargo new new_burn_app
进入这个新目录:
cd new_burn_app
接下来,添加 Burn 作为依赖项,并包括启用 GPU 操作的 WGPU 后端功能:
cargo add burn --features wgpu
最后,编译项目以安装 Burn:
cargo build
这将安装 Burn 框架及其 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::<backend>::from_data([[2., 3.], [4., 5.]]);
let tensor_2 = Tensor::<backend>::ones_like(&tensor_1);
// Print the element-wise addition (done with the WGPU backend) of the two tensors.
println!("{}", tensor_1 + tensor_2);
}</backend></backend>
在主函数中,我们创建了两个带 WGPU 后端的张量并执行了加法。
要执行代码,你必须在终端中运行 cargo run
。
输出:
现在你应该能够查看添加的结果。
Tensor {
data: [[3.0, 4.0], [5.0, 6.0]],
shape: [2, 2],
device: BestAvailable,
backend: "wgpu",
kind: "Float",
dtype: "f32",
}
注意: 以下代码来自 Burn 书籍的示例:入门指南。
这是一个展示如何轻松使用框架的例子。我们声明了一个位置-wise 前馈模块及其前向传递,使用了这个代码片段。
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 <b: backend="">PositionWiseFeedForward<B> {
pub fn forward<const d:="" usize="">(&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)
}
}</const></b:>
上述代码来自 GitHub 仓库。
要了解更多示例并运行它们,请克隆 github.com/burn-rs/burn
仓库,并运行以下项目:
-
MNIST:在 CPU 或 GPU 上使用各种后端训练模型。
-
MNIST 推理网页:在浏览器中进行模型推理。
-
文本分类:从头开始在 GPU 上训练一个变换器编码器。
-
文本生成:从头开始在 GPU 上构建和训练自回归变换器。
要构建你的 AI 应用程序,你可以使用以下预训练模型并用你的数据集进行微调。
-
SqueezeNet: squeezenet-burn
-
Llama 2: Gadersd/llama2-burn
-
Whisper: Gadersd/whisper-burn
-
稳定扩散 v1.4: Gadersd/stable-diffusion-burn
Rust Burn 代表了深度学习框架领域的一个激动人心的新选择。如果你已经是 Rust 开发者,你可以利用 Rust 的速度、安全性和并发性来推动深度学习研究和生产的可能性。Burn 旨在在灵活性、性能和可用性之间找到适当的妥协,以创建一个独特的、多用途的框架,适用于各种用例。
尽管仍处于早期阶段,Burn 显示出解决现有框架痛点和满足领域内各种从业者需求的潜力。随着框架的成熟和社区的扩展,它有可能成为一个与成熟选项并驾齐驱的生产级框架。其新颖的设计和语言选择为深度学习社区提供了新的可能性。
-
GitHub:
github.com/burn-rs/burn
Abid Ali Awan (@1abidaliawan) 是一位认证的数据科学专家,热爱构建机器学习模型。目前,他专注于内容创作和撰写关于机器学习和数据科学技术的技术博客。Abid 拥有技术管理硕士学位和电信工程学士学位。他的愿景是使用图神经网络构建一个 AI 产品,以帮助那些面临心理健康问题的学生。