深度学习锈烧图书馆
深度挖掘锈迹馆藏:探索图书馆的美学
什么是Rust Burn?
Rust Burn是一个全新的深度学习框架,完全由Rust编程语言编写。创建这个新框架的动机是为了构建一个多功能的框架,能够满足各种不同的用户,包括研究人员、机器学习工程师和低层软件工程师。
Rust Burn的关键设计原则是灵活性、性能和易用性。
灵活性来自于快速实现前沿研究想法并进行实验的能力。
性能通过优化实现,例如利用Nvidia GPU上的张量核心等硬件特性。
易用性通过简化训练、部署和在生产环境中运行模型的工作流程来实现。
主要特性:
- 灵活和动态的计算图
- 线程安全的数据结构
- 直观的抽象,简化开发过程
- 训练和推断过程中的快速性能
- 支持CPU和GPU的多种后端实现
- 完全支持训练过程中的日志记录、度量和检查点
- 活跃的开发者社区
开始使用
安装Rust
Burn是一个基于Rust编程语言的强大深度学习框架。使用它需要对Rust有基本的了解,但一旦掌握了这些知识,你就能够充分利用Burn提供的所有功能。
可以使用官方的指南进行安装。你也可以查看GeeksforGeeks的指南,了解在Windows和Linux上安装Rust的详细步骤。
安装Burn
要使用Rust Burn,首先需要在系统上安装Rust。一旦正确设置了Rust,就可以使用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 Backend = WgpuBackend;fn main() { // 创建两个张量,第一个包含明确的值,第二个张量包含与第一个张量相同的形状的值为1的元素 let tensor_1 = Tensor::::from_data([[2., 3.], [4., 5.]]); let tensor_2 = Tensor::::ones_like(&tensor_1); // 打印两个张量的逐元素加法(使用WGPU后端) println!("{}", tensor_1 + tensor_2);}
在主函数中,我们使用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 Book中的示例:开始使用。
位置智能前馈模块
这是一个使用框架的示例。我们声明一个位置智能前馈模块及其前向传递,使用以下代码片段。
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的代码库。
示例项目
要了解更多示例并运行它们,请克隆https://github.com/burn-rs/burn代码库并运行以下项目:
- MNIST:在CPU或GPU上使用不同后端训练模型。
- MNIST Inference Web:在浏览器中进行模型推理。
- 文本分类:使用GPU从头开始训练Transformer编码器。
- 文本生成:从头开始构建和训练基于自回归Transformer的模型。
预训练模型
要构建您的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://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
****[Abid Ali Awan](https://www.polywork.com/kingabzpro)**** (@1abidaliawan)是一名认证的数据科学家,热衷于构建机器学习模型。目前,他专注于内容创作,并撰写有关机器学习和数据科学技术的技术博客。Abid拥有技术管理硕士学位和电信工程学士学位。他的愿景是利用图神经网络为患有心理疾病的学生构建人工智能产品。