Logotipo de Zephyrnet

Biblioteca Rust Burn para aprendizaje profundo – KDnuggets

Fecha:

Biblioteca Rust Burn para aprendizaje profundo
Imagen del autor

Rust Burn es un nuevo marco de aprendizaje profundo escrito íntegramente en el lenguaje de programación Rust. La motivación detrás de la creación de un nuevo marco en lugar de utilizar los existentes como PyTorch o TensorFlow es crear un marco versátil que se adapte bien a varios usuarios, incluidos investigadores, ingenieros de aprendizaje automático e ingenieros de software de bajo nivel.

Los principios de diseño clave detrás de Rust Burn son la flexibilidad, el rendimiento y la facilidad de uso. 

Flexibilidad proviene de la capacidad de implementar rápidamente ideas de investigación de vanguardia y realizar experimentos. 

Rendimiento se logra mediante optimizaciones como aprovechar características específicas del hardware, como Tensor Cores en las GPU de Nvidia. 

Facilidad de uso surge de simplificar el flujo de trabajo de entrenamiento, implementación y ejecución de modelos en producción.

Características Clave:

  • Gráfico computacional flexible y dinámico.
  • Estructuras de datos seguras para subprocesos
  • Abstracciones intuitivas para un proceso de desarrollo simplificado
  • Rendimiento increíblemente rápido durante el entrenamiento y la inferencia
  • Admite múltiples implementaciones de backend tanto para CPU como para GPU
  • Soporte completo para registros, métricas y puntos de control durante la capacitación
  • Comunidad de desarrolladores pequeña pero activa

Instalación de óxido

Burn es un potente marco de aprendizaje profundo basado en el lenguaje de programación Rust. Requiere un conocimiento básico de Rust, pero una vez que lo domines, podrás aprovechar todas las funciones que Burn tiene para ofrecer.

Para instalarlo usando un oficial guía. También puede consultar Geeksparageeks Guía para instalar Rust en Windows y Linux con capturas de pantalla. 

 

Biblioteca Rust Burn para aprendizaje profundo
Imagen de Instalar óxido

Instalación de grabación

Para utilizar Rust Burn, primero debe tener Rust instalado en su sistema. Una vez que Rust esté configurado correctamente, puede crear una nueva aplicación Rust usando carga, administrador de paquetes de Rust.

Ejecute el siguiente comando en su directorio actual: 

cargo new new_burn_app

 

Navegue a este nuevo directorio:

cd new_burn_app

 

A continuación, agregue Burn como dependencia, junto con la función de backend WGPU que permite las operaciones de GPU:

cargo add burn --features wgpu

 

Al final, compila el proyecto para instalar Burn:

cargo build

 

Esto instalará el marco Burn junto con el backend WGPU. WGPU permite a Burn ejecutar operaciones de GPU de bajo nivel.

Adición inteligente de elementos

Para ejecutar el siguiente código, debe abrir y reemplazar el contenido en 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);
}

 

En la función principal, creamos dos tensores con backend WGPU y realizamos la suma. 

Para ejecutar el código, debes ejecutar cargo run en la terminal 

Salida:

Ahora debería poder ver el resultado de la adición.

Tensor { data: [[3.0, 4.0], [5.0, 6.0]], shape: [2, 2], device: BestAvailable, backend: "wgpu", kind: "Float", dtype: "f32",
}

 

Nota: el siguiente código es un ejemplo de Burn Book: Cómo comenzar.

Módulo de avance de posición inteligente

A continuación se muestra un ejemplo de lo fácil que es utilizar el marco. Declaramos un módulo de avance de posición y su paso hacia adelante usando este fragmento de código.

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

 

El código anterior es de GitHub. repositorio.

Proyectos de ejemplo

Para obtener más ejemplos y ejecutarlos, clone el https://github.com/burn-rs/burn repositorio y ejecute los siguientes proyectos:

Modelos Pre-entrenados

Para crear su aplicación de IA, puede utilizar los siguientes modelos previamente entrenados y ajustarlos con su conjunto de datos. 

Rust Burn representa una nueva e interesante opción en el panorama de los marcos de aprendizaje profundo. Si ya es desarrollador de Rust, puede aprovechar la velocidad, la seguridad y la simultaneidad de Rust para ampliar los límites de lo que es posible en la investigación y producción de aprendizaje profundo. Burn se propone encontrar los compromisos adecuados en flexibilidad, rendimiento y usabilidad para crear un marco excepcionalmente versátil adecuado para diversos casos de uso. 

Aunque aún se encuentra en sus primeras etapas, Burn se muestra prometedor a la hora de abordar los puntos débiles de los marcos existentes y satisfacer las necesidades de diversos profesionales en el campo. A medida que el marco madura y la comunidad que lo rodea crece, tiene el potencial de convertirse en un marco listo para producción a la par de las opciones establecidas. Su nuevo diseño y elección de idioma ofrecen nuevas posibilidades para la comunidad de aprendizaje profundo.

Recursos

 
 

Abid Ali Awan (@ 1abidaliawan) es un profesional científico de datos certificado al que le encanta crear modelos de aprendizaje automático. Actualmente, se está enfocando en la creación de contenido y escribiendo blogs técnicos sobre aprendizaje automático y tecnologías de ciencia de datos. Abid tiene una Maestría en Gestión de Tecnología y una licenciatura en Ingeniería de Telecomunicaciones. Su visión es construir un producto de IA utilizando una red neuronal gráfica para estudiantes que luchan contra enfermedades mentales.

punto_img

Información más reciente

punto_img