一文读懂全新深度学习库Rust Burn

Rust Burn是一个全新的完全使用Rust编写的深度学习框架,具有灵活性、高性能和易用性的特点。

长按关注《Python学研大本营》,加入读者群,分享更多精彩

一、什么是Rust Burn?

Rust Burn是一个全新的深度学习框架,完全使用Rust编程语言编写。创建这个新框架而不是使用现有框架(如PyTorch或TensorFlow)的动机是为了构建一个适应多种用户需求的通用框架,包括研究人员、机器学习工程师和底层软件工程师。

Rust Burn的关键设计原则包括灵活性、高性能和易用性。

灵活性:能够快速实现前沿研究想法,并进行实验。

高性能:通过优化措施,例如利用特定硬件功能,如Nvidia GPU上的张量内核(Tensor Cores)。

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

Rust Burn的主要特点:

  • 灵活而动态的计算图。

  • 线程安全的数据结构。

  • 直观的抽象,简化开发过程。

  • 在训练和推理过程中实现极快的性能。

  • 支持CPU和GPU的多种后端实现。

  • 完全支持训练过程中的日志记录、度量和检查点功能。

  • 小型但活跃的开发者社区。

二、快速入门

2.1、安装Rust

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

按照官方指南进行安装。也可以查看GeeksforGeeks在Windows和Linux上安装Rust的指南和截图。

【官方指南】:https://www.rust-lang.org/tools/install

图片来自Install Rust

【安装指南和截图】:https://www.geeksforgeeks.org/how-to-install-rust-on-windows-and-linux-operating-system/

2.2、安装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

这将安装Burn框架以及WGPU后端。WGPU允许Burn执行底层的GPU操作。

三、代码示例

3.1、逐元素相加

要运行以下代码,用户需要打开并替换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后端创建了两个张量,并进行了相加运算。

在终端中运行cargo run,执行该代码。

输出:

查看相加的结果:

Tensor {
  data: [[3.04.0], [5.06.0]],
  shape:  [22],
  device:  BestAvailable,
  backend:  "wgpu",
  kind:  "Float",
  dtype:  "f32",
}

3.2、位置智能前馈模块

以下是使用Burn框架的一个简单示例。示例创建了一个前馈模块,并使用以下代码片段定义了它的前向传播。

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)
    }
}

3.3、项目示例

要了解更多示例并运行它们,请复制https://github.com/burn-rs/burn存储库,并运行以下项目:

  • MNIST:使用各种后端在CPU或GPU上训练模型。

【MNIST】:https://github.com/burn-rs/burn/tree/main/examples/mnist

  • MNIST网络推理:在浏览器中进行模型推理。

【MNIST网络推理】:https://github.com/burn-rs/burn/tree/main/examples/mnist-inference-web

  • 文本分类:在GPU上从头开始训练一个Transformer编码器。

【文本分类】:https://github.com/burn-rs/burn/tree/main/examples/text-classification

  • 文本生成:在GPU上从头开始构建和训练自回归Transformer。

【文本生成】:https://github.com/burn-rs/burn/tree/main/examples/text-generation

3.4、预训练模型

要构建AI应用程序,可以使用以下预训练模型,并根据数据集对其进行微调。

  • SqueezeNet:squeezenet-burn

【链接】:https://github.com/burn-rs/models/blob/main/squeezenet-burn/README.md

  • Llama 2:Gadersd/llama2-burn

【链接】:https://github.com/Gadersd/llama2-burn

  • Whisper:Gadersd/whisper-burn

【链接】:https://github.com/Gadersd/whisper-burn

  • Stable Diffusion v1.4:Gadersd/stable-diffusion-burn

【链接】:https://github.com/Gadersd/stable-diffusion-burn

四、结论

Rust Burn在深度学习框架领域提供了一个令人兴奋的新选择。如果你已经是一名Rust开发者,就可以利用Rust的速度、安全性和并发性来推动深度学习研究和生产的发展。Burn致力于在灵活性、性能和可用性方面找到合适的折衷方案,从而创建一个适用于各种用例的、独特的多功能框架。

尽管Burn还处于早期阶段,但它在解决现有框架的痛点并满足该领域内各种从业者的需求方面已显示出前景。随着该框架的成熟和社区的发展,它有可能成为与现有框架相媲美的生产就绪框架。其新颖的设计和语言选择为深度学习社区带来了新的可能性。

资源

  • 【文档】:https://burn-rs.github.io/book/overview.html

  • 【网站】:https://burn-rs.github.io/

  • 【GitHub】:https://github.com/burn-rs/burn

  • 【演示】:https://burn-rs.github.io/demo

推荐书单

《Python高效编程——基于Rust语言》

《Python高效编程——基于Rust语言》详细阐述了基于Rust语言的Python高效编程,主要包括从Python的角度认识Rust、使用Rust构建代码、理解并发性、在Python中构建pip模块、为pip模块创建Rust接口、在Rust中使用Python对象、在Rust中使用Python模块、在Rust中构建端到端Python模块、构建Python Flask应用程序、将Rust注入Python Flask应用程序、集成Rust的最佳实践等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。

本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。

【半价促销中】购买链接:https://item.jd.com/13712917.html

精彩回顾

《10个必知必会的VSCode实用快捷键》

《使用Pandas进行时间重采样,充分挖掘数据价值》

《10个提高VS Code工作效率的技巧》

《5个不能错过的PyCharm插件》

《利用Python群组分析方法剖析客户行为》

《使用Python分析时序数据集中的缺失数据》

长按关注《Python学研大本营》,加入读者群,分享更多精彩长按访问【IT今日热榜】,发现每日技术热点

相关推荐

  • 15.7K Star开源一款开源的智能旋钮设备,可自定义端点位置,虚拟制动,触觉反馈
  • 【CVPR2023】利用虚拟仿真环境对车辆检测的对抗性稳健性进行基准测试
  • 面试华为终端事业部,历时半个月,还是凉了...
  • 又裁员了...
  • 美国的LP们也在为DPI头疼
  • 如何确定Apache Kafka的大小和规模
  • 宿华辞任快手董事长;小米澎湃OS开启“人车家全生态”;Hugging Face 被限制访问;朝鲜开发者被指控冒名从事美企远程外包
  • 懂点 React Hooks,就这么香?| 极客时间
  • Kubernetes 上 API 网关的未来
  • Presto 在知乎的缓存加速实践
  • 智谱 AI“超 25 亿融资”的背后
  • 【深度学习】ScienceAI 案例汇总 | 医学研究最新动向
  • 为什么 Maven 总是拉不到包?
  • 官宣:2024年,博士再扩招!
  • Python文本终端GUI框架,太酷了
  • Meta普林斯顿提出LLM上下文终极解决方案!让模型化身自主智能体,自行读取上下文节点树
  • GPT-4教会机器手转笔、玩魔方!RL社区震惊:LLM设计奖励竟能超越人类?
  • 每年10亿刀,全面对标微软OpenAI!苹果全员发力AI「全家桶」,新款iMac月底来
  • 阿里腾讯豪华阵容参投,智谱AI投资版图曝光
  • 百度大模型加持,元宇宙竟然还能「卷」出新玩法!AI一键作画、智能NPC秒回