¿Qué es Fastai?

Fastai es una biblioteca de aprendizaje profundo de código abierto sobre PyTorch, diseñada para democratizar la IA haciendo el desarrollo y despliegue de redes neuronales fácil y accesible.

Componentes principales de Fastai

1. Biblioteca Fastai

La biblioteca Fastai está construida sobre el framework PyTorch y está diseñada para hacer que el aprendizaje profundo sea más accesible. Proporciona una API de alto nivel que abstrae muchas de las complejidades asociadas con el aprendizaje profundo, permitiendo a los usuarios centrarse en tareas específicas de la aplicación en lugar de en detalles de programación intrincados. Esta abstracción se logra mediante un diseño de API por capas, que proporciona tanto componentes de alto como de bajo nivel para diversas tareas de aprendizaje profundo. La funcionalidad de la biblioteca se extiende desde la visión y el procesamiento de texto hasta los datos tabulares y el filtrado colaborativo.

Fastai v2 representa una reescritura completa orientada a mejorar la velocidad, flexibilidad y facilidad de uso. Está construida sobre bibliotecas fundamentales como fastcore y fastgpu, que respaldan los componentes de alto nivel de Fastai y son útiles para muchos programadores y científicos de datos.

2. API por capas

La API por capas de Fastai está estructurada para atender diferentes necesidades de los usuarios, desde principiantes hasta investigadores avanzados. La API de alto nivel ofrece funciones listas para usar para entrenar modelos en varios dominios, incluyendo visión, texto, datos tabulares y filtrado colaborativo. Estas funciones vienen con valores predeterminados sensatos que agilizan el proceso de construcción de modelos. La API de nivel medio proporciona métodos básicos para aprendizaje profundo y procesamiento de datos, mientras que la API de bajo nivel ofrece primitivas y fundamentos optimizados para el desarrollo personalizado de modelos.

Una característica clave de la arquitectura por capas de Fastai es su capacidad para expresar patrones subyacentes comunes de muchas técnicas de aprendizaje profundo y procesamiento de datos a través de abstracciones desacopladas. Esto es posible gracias al dinamismo de Python y la flexibilidad de PyTorch, permitiendo un equilibrio entre facilidad de uso, flexibilidad y rendimiento.

3. Curso Práctico de Aprendizaje Profundo para Programadores

Fastai ofrece un curso gratuito, masivo y en línea (MOOC) titulado “Practical Deep Learning for Coders”. Este curso proporciona experiencia práctica con el aprendizaje profundo, utilizando solo conocimientos de Python como prerrequisito. Cubre varios temas de aprendizaje profundo como clasificación de imágenes, procesamiento de lenguaje natural y redes generativas antagónicas (GANs), con un enfoque en aplicaciones reales. El curso se complementa con el libro “Deep Learning for Coders with Fastai and PyTorch”, que profundiza en aplicaciones de IA sin requerir un doctorado.

Características clave de Fastai

1. API de alto nivel

La API de alto nivel de Fastai simplifica el entrenamiento de modelos de aprendizaje profundo al integrar la arquitectura, los datos y la optimización en un sistema cohesivo. Selecciona automáticamente funciones de pérdida y algoritmos de optimización apropiados, reduciendo la probabilidad de errores del usuario. Esta API es especialmente útil para principiantes y para aquellos interesados en aplicar métodos existentes de aprendizaje profundo sin profundizar en las complejidades del código subyacente.

2. Aprendizaje por transferencia

Una de las características más destacadas de Fastai es su soporte para el aprendizaje por transferencia, que permite entrenar modelos de forma rápida y eficiente aprovechando redes preentrenadas. Fastai optimiza este proceso mediante técnicas como la normalización por lotes, congelación de capas y tasas de aprendizaje discriminativas. Estas técnicas aceleran el proceso de aprendizaje y mejoran el rendimiento del modelo en diferentes tareas.

3. API de bloques de datos

La API de bloques de datos es un sistema flexible para definir flujos de procesamiento de datos. Permite a los usuarios especificar fuentes de datos, transformaciones y mecanismos de carga de manera modular. Esta API es fundamental para gestionar conjuntos de datos complejos y garantizar que los datos estén preparados correctamente para el entrenamiento del modelo. Proporciona un enfoque coherente en varios dominios, facilitando la aplicación de técnicas de aprendizaje profundo a distintos tipos de datos.

4. Sistema de callbacks bidireccional

Fastai introduce un novedoso sistema de callbacks bidireccional que proporciona hooks en el ciclo de entrenamiento, permitiendo cambios dinámicos en los datos, modelos u optimizadores en cualquier punto durante el entrenamiento. Este sistema mejora la flexibilidad y personalización de los procesos de entrenamiento de modelos, permitiendo la implementación de enfoques innovadores con un esfuerzo de codificación mínimo.

5. Código abierto y dirigido por la comunidad

Fastai es un proyecto de código abierto alojado en GitHub, licenciado bajo la Licencia Apache 2.0. Se beneficia de una comunidad vibrante de desarrolladores e investigadores que contribuyen a su desarrollo y mejora continua. La naturaleza de código abierto de la biblioteca asegura que los usuarios tengan acceso a técnicas de vanguardia y puedan contribuir a su evolución. La comunidad de Fastai también es una fuente de aprendizaje colaborativo y apoyo para usuarios de todo el mundo.

Casos de uso y aplicaciones

Visión

Fastai simplifica el desarrollo de modelos de visión por computadora con un código mínimo. Por ejemplo, un modelo de ImageNet puede afinarse en un conjunto de datos específico, como el Oxford IIT Pets, alcanzando alta precisión con solo unas pocas líneas de código. La integración de la biblioteca con PyTorch asegura que los usuarios puedan aprovechar arquitecturas y técnicas de vanguardia con facilidad.

Texto

Fastai está equipada con herramientas para el procesamiento de lenguaje natural (PLN), permitiendo tareas como análisis de sentimientos, clasificación de textos y modelado de lenguaje. La integración con PyTorch permite el uso de arquitecturas modernas de PLN, facilitando el desarrollo de modelos robustos capaces de comprender y generar lenguaje humano.

Datos tabulares

Fastai proporciona componentes para el procesamiento de datos tabulares, apoyando tareas como regresión y clasificación. Su API de bloques de datos es especialmente útil para transformar y cargar conjuntos de datos tabulares, asegurando que los datos se procesen de manera eficiente y precisa para el entrenamiento del modelo. Esta característica es esencial para aplicaciones en analítica empresarial, salud y finanzas, donde predominan los datos tabulares.

Filtrado colaborativo

El filtrado colaborativo es otra área donde Fastai sobresale, ofreciendo herramientas para construir sistemas de recomendación. La API de alto nivel de la biblioteca simplifica la creación y evaluación de modelos de filtrado colaborativo, facilitando el desarrollo de recomendaciones personalizadas para los usuarios en función de sus preferencias y comportamientos.

Despliegue

Fastai admite el despliegue de modelos entrenados en entornos de producción, permitiendo a los desarrolladores integrar capacidades de IA en aplicaciones de manera fluida. El enfoque de la biblioteca en la practicidad garantiza que las consideraciones de despliegue se aborden desde el principio, posibilitando soluciones eficientes y escalables para aplicaciones reales.

Fastai en artículos de investigación

Fastai es una biblioteca de aprendizaje profundo diseñada para proporcionar componentes de alto nivel que permitan a los profesionales lograr resultados de vanguardia de manera rápida y sencilla en dominios estándar de aprendizaje profundo. Al mismo tiempo, ofrece componentes de bajo nivel para que los investigadores puedan crear nuevos enfoques sin comprometer la facilidad de uso, flexibilidad o rendimiento. Esta doble capacidad se logra mediante una arquitectura cuidadosamente estructurada que aprovecha el dinamismo de Python y la flexibilidad de PyTorch. La biblioteca introduce varias características innovadoras, incluyendo un sistema de despacho por tipo para Python, una biblioteca de visión por computador optimizada para GPU, un optimizador que simplifica los algoritmos modernos de optimización y un novedoso sistema de callbacks bidireccional. Fastai se ha utilizado con éxito para crear un curso integral de aprendizaje profundo, y es ampliamente empleada en investigación, industria y docencia. Para más detalles, puedes acceder al artículo en arXiv.

  • Ejemplo en Agricultura:
    En el campo de la agricultura, Fastai se ha aplicado eficazmente para construir un modelo de clasificación para el reconocimiento de enfermedades de plantas utilizando un conjunto de imágenes de hojas de manzana. Utilizando un modelo ResNet34 preentrenado con el framework Fastai, el estudio logró una precisión de clasificación del 93.765%. Esto demuestra la capacidad de la biblioteca para ahorrar tiempo de entrenamiento y mejorar el rendimiento del modelo en aplicaciones prácticas. Más información en el estudio en arXiv.

  • Ejemplo de Compresión de Modelos:
    Además, el sistema de callbacks de Fastai se ha aprovechado en otras bibliotecas como FasterAI, que se centra en técnicas de compresión de redes neuronales como la esparsificación y la poda. Esto demuestra la versatilidad de Fastai y su facilidad de integración con otras herramientas para realizar técnicas de vanguardia de manera eficiente. Los detalles de esta implementación están disponibles en el artículo de FasterAI en arXiv.

Ejemplos de uso

Instalación

Para comenzar a usar fastai, puedes instalarlo fácilmente usando conda o pip. Así es como se hace:

  • Conda (Recomendado para Linux o Windows):
    conda install -c fastai fastai
  • Pip (Funciona en todas las plataformas):
    pip install fastai
  • Google Colab:
    Usa fastai sin instalación aprovechando Google Colab, que soporta entorno de ejecución con GPU para cálculos más rápidos.

Además, los usuarios pueden explorar la documentación oficial de fastai y los foros de la comunidad para solucionar problemas comunes de instalación o buscar soluciones para configuraciones específicas. La integración de la biblioteca con Jupyter notebooks y Google Colab mejora aún más su usabilidad al proporcionar un entorno interactivo para la experimentación y el aprendizaje.

API de alto nivel

La API de alto nivel en fastai está diseñada para facilitar el uso y el desarrollo rápido. Abstrae gran parte de la complejidad, permitiendo a los usuarios concentrarse en construir y entrenar modelos con un código mínimo. La API es especialmente beneficiosa para prototipar modelos rápidamente e iterar sobre ideas sin adentrarse en los detalles de bajo nivel del framework PyTorch subyacente.

Ejemplos de uso de la API de alto nivel

1. Clasificación de imágenes

from fastai.vision.all import * 
path = untar_data(URLs.PETS) 
dls = ImageDataLoaders.from_name_re(
    path=path, 
    fnames=get_image_files(path/"images"),
    pat=r'/([^/]+)_\d+.jpg$', 
    item_tfms=RandomResizedCrop(450, min_scale=0.75), 
    batch_tfms=[*aug_transforms(size=224, max_warp=0.), Normalize.from_stats(*imagenet_stats)]
)
learn = cnn_learner(dls, resnet34, metrics=error_rate)
learn.fit_one_cycle(4)

Este ejemplo muestra cómo configurar y entrenar un clasificador de imágenes en el conjunto de datos Oxford IIT Pets usando la API de alto nivel de fastai.

2. Análisis de sentimiento en texto

from fastai.text.all import *
path = untar_data(URLs.IMDB)
dls = TextDataLoaders.from_folder(path, valid='test')
learn = text_classifier_learner(dls, AWD_LSTM, drop_mult=0.5, metrics=accuracy)
learn.fine_tune(1)

Aquí, fastai se utiliza para construir un modelo de análisis de sentimiento sobre el conjunto de datos IMDB.

3. Datos tabulares

from fastai.tabular.all import *
path = untar_data(URLs.ADULT_SAMPLE)
dls = TabularDataLoaders.from_csv(
    path/'adult.csv', path=path, y_names="salary",
    cat_names=['workclass', 'education', 'marital-status', 'occupation', 'relationship', 'race'],
    cont_names=['age', 'fnlwgt', 'education-num'],
    procs=[Categorify, FillMissing, Normalize]
)
learn = tabular_learner(dls, metrics=accuracy)
learn.fit_one_cycle(3)

Este ejemplo ilustra el uso de fastai para datos tabulares, específicamente el conjunto de datos Adult.

API de nivel medio

La API de nivel medio en fastai ofrece más posibilidades de personalización que la API de alto nivel, permitiendo a los usuarios modificar varios aspectos del proceso de entrenamiento sin adentrarse en los detalles más bajos. Proporciona un equilibrio entre facilidad de uso y flexibilidad, orientado a usuarios que necesitan mayor control sobre sus modelos pero que aún aprecian la conveniencia de los componentes predefinidos.

Componentes de la API de nivel medio

  • Learner: Un componente central que encapsula el modelo, los datos y el ciclo de entrenamiento. Puede personalizarse con diferentes arquitecturas, optimizadores y métricas.
  • Callbacks: Funciones que permiten extender el ciclo de entrenamiento con comportamientos personalizados, como guardar checkpoints, ajustar tasas de aprendizaje o registrar métricas.

Ejemplo de uso

learn = cnn_learner(dls, resnet18, metrics=accuracy, cbs=[SaveModelCallback(monitor='accuracy')])
learn.fine_tune(2)

En este ejemplo, se utiliza un callback para guardar el modelo con la mejor precisión durante el entrenamiento, mostrando la flexibilidad de la API de nivel medio.

API de bajo nivel

Para usuarios avanzados e investigadores que necesitan control total sobre sus modelos, la API de bajo nivel de fastai proporciona acceso a las funcionalidades subyacentes de PyTorch y primitivas optimizadas. Este nivel de la API está destinado a quienes desean llevar el aprendizaje profundo al límite diseñando arquitecturas novedosas o implementando rutinas de entrenamiento personalizadas.

Características de la API de bajo nivel

  • Pipeline y Transforms: Secuencias de procesamiento de datos personalizables que pueden adaptarse a necesidades específicas.
  • Tensores orientados a objetos: Mejoras a los tensores de PyTorch que facilitan una manipulación más intuitiva.
  • Operaciones optimizadas: Operaciones eficientes de tensores aprovechando las capacidades de PyTorch.

Ejemplo de uso

from fastai.data.all import *
pipe = Pipeline([PILImage.create, Resize(128), ToTensor])
img = pipe('path/to/image.jpg')

Este fragmento muestra cómo crear un flujo de datos personalizado usando la API de bajo nivel de fastai, aplicando una serie de transformaciones a una imagen.

Fastai en la práctica: ejemplos publicados

  1. Fastai: Una API por capas para el aprendizaje profundo
    Autores: Jeremy Howard, Sylvain Gugger
    Fastai es una biblioteca de aprendizaje profundo diseñada para facilitar la creación rápida de prototipos y el despliegue de modelos de aprendizaje profundo. Lo logra proporcionando componentes de alto nivel para tareas estándar de aprendizaje profundo, mientras permite que los investigadores trabajen en componentes de bajo nivel para soluciones personalizadas. Este artículo detalla la arquitectura de la biblioteca, que aprovecha el dinamismo de Python y la flexibilidad de PyTorch para crear abstracciones desacopladas para tareas de aprendizaje profundo. Las innovaciones de Fastai incluyen un sistema de despacho por tipos, una biblioteca de visión por computador optimizada para GPU, un nuevo diseño de optimizador y un sistema de callbacks bidireccional, entre otros. La facilidad de uso de la biblioteca y su capacidad para producir resultados de vanguardia la han hecho popular en investigación, industria y educación. Leer más

  2. Segmentación de microvasculatura en el Programa Atlas BioMolecular Humano (HuBMAP)
    Autores: Youssef Sultan, Yongqiang Wang, James Scanlon, Lisa D’lima
    Este estudio utiliza Fastai para la segmentación de imágenes en el Programa Atlas BioMolecular Humano (HuBMAP), centrándose en segmentar estructuras microvasculares en riñones humanos. La metodología comienza con un modelo U-Net de Fastai, explorando arquitecturas alternativas y modelos profundos para mejorar la precisión de la segmentación. Este trabajo resalta la capacidad de Fastai para servir como herramienta fundamental en imagen médica, ofreciendo ideas sobre técnicas avanzadas de segmentación y su comparación con modelos base. Leer más

  3. Egglog Python: Una biblioteca Pythonic para E-graphs
    Autor: Saul Shanabrook
    Aunque no trata directamente sobre Fastai, este artículo presenta enlaces de Python para la biblioteca egglog, enfatizando la integración de técnicas de e-graph en Python. Este enfoque se alinea con la filosofía de Fastai de aprovechar las fortalezas de Python para potenciar la innovación en aprendizaje automático y computación científica. Ilustra cómo las APIs pythonic pueden facilitar la colaboración e innovación entre dominios, complementando potencialmente la versatilidad de Fastai. [Leer más](https://arxiv.org/abs/2404

Preguntas frecuentes

¿Qué es Fastai?

Fastai es una biblioteca integral y de código abierto de aprendizaje profundo construida sobre PyTorch. Simplifica la creación y entrenamiento de redes neuronales a través de APIs de alto nivel, soporta tareas de visión, PLN, datos tabulares y filtrado colaborativo, y tiene como objetivo democratizar el aprendizaje profundo para usuarios de todos los niveles de habilidad.

¿Quién desarrolló Fastai?

Fastai fue desarrollado por Jeremy Howard y Rachel Thomas como parte de una misión para hacer el aprendizaje profundo accesible y práctico para todos.

¿Qué hace única a Fastai?

Fastai ofrece una API por capas con componentes de alto, medio y bajo nivel, abstracciones fáciles de usar, soporte para aprendizaje por transferencia, una API modular de bloques de datos y un potente sistema de callbacks. Es de código abierto y está respaldada por una comunidad vibrante.

¿Cuáles son los casos de uso comunes para Fastai?

Fastai se utiliza para visión por computadora, procesamiento de lenguaje natural (PLN), análisis de datos tabulares, filtrado colaborativo (sistemas de recomendación) y despliegue de modelos en producción. Es popular en investigación, industria y educación.

¿Cómo instalo Fastai?

Puedes instalar Fastai vía conda con 'conda install -c fastai fastai' o vía pip con 'pip install fastai'. También funciona perfectamente en Google Colab y Jupyter notebooks.

¿Es Fastai gratuito?

Sí, Fastai es completamente de código abierto bajo la Licencia Apache 2.0. Todo el software, la investigación y los cursos se publican de forma gratuita para garantizar la accesibilidad global.

Explora Fastai y Construye Soluciones de IA

Descubre cómo las APIs de alto nivel y las herramientas de código abierto de Fastai pueden acelerar tus proyectos de IA y tu camino de aprendizaje. Prueba FlowHunt para un desarrollo de IA sin complicaciones.

Saber más