1 points par GN⁺ 2024-08-21 | 1 commentaires | Partager sur WhatsApp
  • Transformers.rb est une bibliothèque qui permet d’utiliser Transformers de Hugging Face en Ruby, avec pour objectif d’exécuter des modèles transformer modernes depuis du code Ruby
  • L’installation se fait en installant d’abord Torch.rb, puis en ajoutant gem "transformers-rb" au Gemfile
  • Les exemples pris en charge couvrent les embeddings, les sparse embeddings et les modèles de reranking, et montrent comment utiliser des modèles des familles sentence-transformers, mixedbread-ai, BAAI, Snowflake et OpenSearch
  • Les pipelines sont divisés entre texte et vision, et appellent notamment NER, l’analyse de sentiment, le question answering, la classification d’images et l’extraction de caractéristiques d’image via Transformers.pipeline
  • L’API suit la Transformers Python API et prend actuellement en charge les architectures BERT, DeBERTa-v2, DistilBERT, MPNet, ViT et XLM-RoBERTa

Utiliser Transformers en Ruby

  • Transformers.rb est une bibliothèque transformers moderne pour Ruby
  • Pour une inférence rapide, il est recommandé de consulter Informers

Installation

  • Il faut d’abord installer Torch.rb
  • Ajoutez ensuite la ligne suivante au Gemfile de l’application
gem "transformers-rb"

Exemples de modèles pris en charge

Pipelines

  • Les pipelines Text prennent en charge les tâches suivantes
    • embedding : génération d’embeddings de texte
    • reranking : réordonnancement d’un tableau de documents selon une requête
    • ner : reconnaissance d’entités nommées
    • sentiment-analysis : analyse de sentiment
    • question-answering : génération d’une réponse à partir d’une question et d’un contexte
    • feature-extraction : extraction de caractéristiques textuelles
  • Les pipelines Vision prennent en charge les tâches suivantes
    • image-classification : classification d’images
    • image-feature-extraction : extraction de caractéristiques d’image

API et architectures prises en charge

  • Cette bibliothèque suit la Transformers Python API
  • Les architectures de modèles actuellement prises en charge sont les suivantes
    • BERT
    • DeBERTa-v2
    • DistilBERT
    • MPNet
    • ViT
    • XLM-RoBERTa

Développement et contribution

  • L’historique des changements est disponible dans le changelog
  • Les contributions incluent le signalement de bugs, la correction de bugs avec soumission de pull requests, la rédaction, clarification ou correction de la documentation, ainsi que la proposition ou l’ajout de nouvelles fonctionnalités
  • Les commandes pour démarrer le développement sont indiquées dans l’ordre suivant : cloner le dépôt, bundle install, bundle exec rake download:files, puis bundle exec rake test

1 commentaires

 
GN⁺ 2024-08-21
Commentaires sur Hacker News
  • Le runtime ONNX pour Ruby d’Ankane est tellement facile à utiliser qu’on en vient à se demander pourquoi le dépôt JavaScript officiel est si difficile à comprendre.
    Je n’ai encore fait qu’effleurer ce que cette personne a accompli, mais elle a déjà tout d’un héros.

  • Sérieusement, cette personne est-elle humaine ? Si un individu peut être aussi talentueux, j’aurais envie d’investir même 1 milliard de dollars.

    • Je suis environ cent fois moins talentueux, mais je serais prêt à accepter 10 millions de dollars d’investissement.
  • Ce n’est sans doute pas pour ça qu’il fait tout cela, mais pour ceux qui voudraient exprimer leur gratitude, j’ai nommé Ankane au Rails 2024 Luminary award.
    https://rubyonrails.org/2024/8/2/nominations-open-for-2024-l...

    • D’accord. La quantité de travail utile qu’Ankane met à disposition de la communauté est franchement irréelle.
  • Ce genre de contribution est vraiment nécessaire à la communauté Ruby, et ce projet a l’air intéressant.

    • Tout à fait. Globalement, le manque de ce type de contributions, ou le ralentissement de leur rythme, me fait penser que la communauté Ruby ralentit.
      Dans ce cas précis, Ruby se retrouve soudain avec une excellente bibliothèque, et c’est en soi une réalisation dont on peut vraiment être reconnaissant. Mais la « communauté » ne l’a en quelque sorte « produite » que des mois, voire des années, après l’arrivée de bibliothèques équivalentes pour Python, JavaScript, TypeScript, Rust, Go, etc.
      Cela ne concerne pas seulement le machine learning/l’intelligence artificielle, mais aussi les gems, les bibliothèques Ruby qui couvrent les nouvelles technologies. Autrefois, les SaaS ou les startups proposaient dès le départ un Rubygem officiel, souvent même avant d’autres plateformes ou langages. Aujourd’hui, quand on veut intégrer des services comme Notion, Slack ou Cloudflare, il n’y a souvent pas d’option Ruby, ou du moins pas d’option officielle.
      C’est triste. Ruby est un langage bien plus vaste que Rails, et je peux comprendre les réticences ou l’antipathie envers Rails. Mais Ruby reste un langage bien plus agréable à utiliser que Python, et certainement bien plus que JavaScript. Ruby aurait pu occuper aujourd’hui la place de Python, et je suis convaincu que si cela avait été le cas, des dizaines de milliers de développeurs seraient un peu plus heureux qu’ils ne le sont maintenant.
  • À lui seul, Ankane apporte à l’industrie une contribution énorme de tant de manières. Impressionnant.

  • Je me demande comment une seule personne peut être aussi productive. Il doit déjà avoir une vie bien remplie avec le travail, la famille, etc.

  • Il est difficile d’exprimer à quel point je suis reconnaissant pour les gems d’Ankane. Ce qu’il a créé a été indispensable dans plusieurs de mes apps, et je trouve que cela comble des manques dans l’écosystème.

  • Les outils créés par cette personne sont vraiment incroyables. Qu’il y en ait encore plus, ce serait très bien.

  • Andrew Kane est aussi, à ma connaissance, l’auteur de pgvector, pgvector-ruby et neighbor, qui sont tous vraiment excellents.
    Il a aussi créé beaucoup d’autres choses.
    Peut-être qu’il a résolu l’intelligence artificielle/le machine learning à lui seul il y a longtemps, et qu’il s’en sert pour être aussi productif.
    [0] https://github.com/pgvector/pgvector
    [1] https://github.com/pgvector/pgvector-ruby
    [2] https://github.com/ankane/neighbor
    [3] https://github.com/ankane/

    • Il a aussi créé énormément de choses hors du domaine de l’IA.
      https://github.com/ankane/pretender facilite énormément l’usurpation d’un autre utilisateur dans les apps Rails.
      https://github.com/ankane/ahoy est un outil d’analytics auto-hébergé pour Rails.
      https://github.com/ankane/blazer est un outil de business intelligence intégré à Rails.
      https://github.com/ankane/field_test sert aux tests A/B.
      Tout cela augmente la productivité avec Rails dans une application web classique. Il existe sans doute de meilleurs produits éditeurs ou des solutions spécialisées pour chacun de ces cas, mais pouvoir ajouter un gem, faire un peu de configuration et obtenir une solution à 80 % permet de lancer très vite.
    • Il y a aussi Chartkick, Ahoy et Searchkick.
      Chartkick est une bibliothèque de graphiques pour Ruby, Ahoy une bibliothèque d’analytics pour Rails, et Searchkick une bibliothèque de recherche pour Rails.
      Son profil GitHub compte plus de 370 dépôts.
    • Dans notre dépôt de production aussi, nous utilisons vraiment beaucoup d’outils d’Andrew Kane. Ses packages permettent de créer des applications d’IA avec Rails.
    • Si vous utilisez Ruby et que vous ne connaissez pas encore ankane, son GitHub regorge d’outils très utiles.
      Par exemple, /disco est une implémentation très simple de filtrage collaboratif pratique quand on veut ajouter rapidement des recommandations quelque part.
      Si vous cherchez quelque chose lié au machine learning en Ruby, ankane s’y est généralement déjà penché.
    • C’est l’une des personnes les plus prolifiques que je connaisse.
  • Dans la communauté Ruby, Andrew Kane et Chris Oliver sont, à mes yeux, parmi les tout meilleurs. Même si je n’utilise pas toutes leurs contributions, ce genre d’apports est toujours le bienvenu.