1 puntos por GN⁺ 2024-08-21 | 1 comentarios | Compartir por WhatsApp
  • Transformers.rb es una librería que permite usar Transformers de Hugging Face en Ruby, enfocada en ejecutar modelos transformer modernos con código Ruby
  • La instalación se realiza instalando primero Torch.rb y luego agregando gem "transformers-rb" al Gemfile
  • Los ejemplos compatibles incluyen embeddings, sparse embedding y modelos de reranking, y muestran cómo usar modelos de las familias sentence-transformers, mixedbread-ai, BAAI, Snowflake y OpenSearch
  • Los pipelines se dividen en texto y visión, y permiten invocar NER, análisis de sentimiento, preguntas y respuestas, clasificación de imágenes, extracción de características de imágenes y más con la forma Transformers.pipeline
  • La API sigue la API de Transformers para Python y actualmente soporta las arquitecturas BERT, DeBERTa-v2, DistilBERT, MPNet, ViT y XLM-RoBERTa

Uso de Transformers en Ruby

  • Transformers.rb es una librería moderna de transformers para Ruby
  • Se indica revisar Informers si se necesita inferencia rápida

Método de instalación

  • Primero se necesita instalar Torch.rb
  • Después, agrega la siguiente línea al Gemfile de la aplicación
gem "transformers-rb"

Ejemplos de modelos compatibles

Pipelines

  • El pipeline de Text soporta las siguientes tareas
    • embedding: generación de embeddings de texto
    • reranking: reordenamiento de ranking de una consulta y un arreglo de documentos
    • ner: reconocimiento de entidades nombradas
    • sentiment-analysis: análisis de sentimiento
    • question-answering: genera respuestas a partir de una pregunta y un contexto
    • feature-extraction: extracción de características de texto
  • El pipeline de Vision soporta las siguientes tareas
    • image-classification: clasificación de imágenes
    • image-feature-extraction: extracción de características de imágenes

API y arquitecturas compatibles

  • Esta librería sigue la API de Transformers para Python
  • Las arquitecturas de modelo compatibles actualmente son las siguientes
    • BERT
    • DeBERTa-v2
    • DistilBERT
    • MPNet
    • ViT
    • XLM-RoBERTa

Desarrollo y contribución

  • El historial de cambios puede revisarse en el changelog
  • Las formas de contribuir incluyen reportar errores, corregir errores y enviar pull requests, redactar, aclarar o corregir documentación, y proponer o agregar nuevas funciones
  • Las instrucciones para comenzar el desarrollo indican clonar el repositorio y luego ejecutar bundle install, bundle exec rake download:files y bundle exec rake test en ese orden

1 comentarios

 
GN⁺ 2024-08-21
Comentarios en Hacker News
  • El runtime de ONNX para Ruby de Ankane es tan fácil de usar que hasta hace preguntarse por qué el repositorio oficial de JavaScript es tan difícil de entender
    Apenas he visto por encima lo que logró esta persona y ya me parece un héroe

  • En serio, ¿esta persona es humana? Si fuera un individuo con tanto talento, hasta querría invertirle mil millones de dólares

    • Yo tengo como una centésima parte de ese talento, pero estaría dispuesto a aceptar una inversión de 10 millones de dólares
  • Aunque seguro no lo hace por esto, si alguien quiere mostrar su agradecimiento, ya nominé a Ankane para el Rails 2024 Luminary award
    https://rubyonrails.org/2024/8/2/nominations-open-for-2024-l...

    • De acuerdo. La cantidad de trabajo útil que Ankane aporta a la comunidad es realmente irreal
  • Este tipo de contribuciones de verdad le hacen falta a la comunidad Ruby, y este proyecto también se ve interesante

    • Totalmente. En general, he llegado a pensar que la comunidad Ruby se está desacelerando porque faltan contribuciones de este tipo o porque salen demasiado lento
      En este caso, de repente Ruby recibió una librería excelente, y eso por sí solo es un logro realmente valioso. Pero la “comunidad” solo terminó “creando” esto meses o incluso años después de que librerías equivalentes ya salieran para Python, JavaScript, TypeScript, Rust, Go y otros
      Esto no pasa solo con machine learning/IA, también ocurre con los gems de Ruby para tecnologías nuevas. Antes, las empresas SaaS o las startups ofrecían un Rubygem oficial desde el principio, y muchas veces incluso antes que para otras plataformas o lenguajes. Hoy, si quieres integrarte con cosas como Notion, Slack o Cloudflare, muchas veces no hay opción para Ruby o al menos no hay una oficial
      Eso da tristeza. Ruby es un lenguaje mucho más amplio que Rails, y se puede entender la resistencia o el rechazo hacia Rails. Aun así, Ruby es un lenguaje mucho más agradable para trabajar que Python, y definitivamente mucho más que JavaScript. Estoy convencido de que Ruby pudo haber ocupado el lugar que hoy tiene Python, y que si hubiera sido así, decenas de miles de desarrolladores serían un poco más felices de lo que son ahora
  • Ankane, incluso por su cuenta, está devolviéndole a la industria una contribución enorme de muchísimas maneras. Impresionante

  • Me pregunto cómo una sola persona puede ser tan productiva. Debe tener una vida bastante ocupada entre trabajo, familia y demás

  • Es difícil expresar lo agradecido que estoy por los gems de Ankane. Lo que ha hecho ha sido esencial en varias de mis apps, y siento que llena vacíos dentro del ecosistema

  • Las herramientas que ha creado esta persona son realmente increíbles. Ojalá hubiera más así

  • Según entiendo, Andrew Kane también es el autor de pgvector, pgvector-ruby y neighbor, y todos son bastante buenos
    Además ha hecho muchísimas otras cosas
    Tal vez resolvió la inteligencia artificial/machine learning por su cuenta hace mucho tiempo y la está usando para ser así de productivo
    [0] https://github.com/pgvector/pgvector
    [1] https://github.com/pgvector/pgvector-ruby
    [2] https://github.com/ankane/neighbor
    [3] https://github.com/ankane/

    • Ha hecho muchísimas cosas más allá del lado de IA
      https://github.com/ankane/pretender hace muy fácil hacerse pasar por otro usuario en apps Rails
      https://github.com/ankane/ahoy es una herramienta de analítica propia para Rails
      https://github.com/ankane/blazer es una herramienta de business intelligence integrada en Rails
      https://github.com/ankane/field_test es para pruebas A/B
      Este tipo de cosas aumentan la productividad en Rails para apps web comunes. Seguramente hay productos de proveedores mejores o soluciones más especializadas para cada una, pero si puedes instalar un gem, configurarlo un poco y obtener una solución del 80%, puedes lanzar algo realmente rápido
    • También están Chartkick, Ahoy y Searchkick
      Chartkick es una librería de gráficos para Ruby, Ahoy es una librería de analítica para Rails y Searchkick es una librería de búsqueda para Rails
      En su perfil de GitHub tiene más de 370 repositorios
    • En nuestro repositorio de producción también usamos muchísimas herramientas de Andrew Kane. Sus paquetes hacen posible crear aplicaciones de IA con Rails
    • Si usas Ruby y todavía no conoces a ankane, en su GitHub hay muchas herramientas muy útiles
      Por ejemplo, /disco es una implementación muy simple de filtrado colaborativo que puedes usar cuando quieres agregar recomendaciones rápidamente en cualquier parte
      Si estás buscando algo relacionado con machine learning en Ruby, normalmente ankane ya le echó un vistazo antes
    • Es una de las personas más prolíficas que conozco
  • Dentro de la comunidad Ruby, personalmente creo que Andrew Kane y Chris Oliver son de lo mejor de lo mejor. Aunque no uses todas sus contribuciones, ese tipo de aportes siempre son bienvenidos