1 Punkte von GN⁺ 2024-08-21 | 1 Kommentare | Auf WhatsApp teilen
  • Transformers.rb ist eine Bibliothek, die Hugging Faces Transformers in Ruby nutzbar macht, und konzentriert sich darauf, moderne Transformer-Modelle in Ruby-Code auszuführen
  • Die Installation erfolgt, indem zuerst Torch.rb installiert und anschließend gem "transformers-rb" zur Gemfile hinzugefügt wird
  • Unterstützte Beispiele umfassen Embeddings, Sparse Embedding und Reranking-Modelle und zeigen die Verwendung von Modellen aus den Familien sentence-transformers, mixedbread-ai, BAAI, Snowflake und OpenSearch
  • Die Pipelines sind in Text und Vision unterteilt und rufen NER, Sentiment-Analyse, Fragebeantwortung, Bildklassifizierung, Bild-Feature-Extraktion usw. in der Form Transformers.pipeline auf
  • Die API folgt der Transformers Python API und unterstützt derzeit die Architekturen BERT, DeBERTa-v2, DistilBERT, MPNet, ViT und XLM-RoBERTa

Transformers in Ruby verwenden

  • Transformers.rb ist eine moderne transformers-Bibliothek für Ruby
  • Wenn schnelle Inferenz benötigt wird, wird empfohlen, einen Blick auf Informers zu werfen

Installation

  • Zuerst ist die Installation von Torch.rb erforderlich
  • Danach wird die folgende Zeile zur Gemfile der Anwendung hinzugefügt
gem "transformers-rb"

Beispiele für unterstützte Modelle

Pipelines

  • Die Text-Pipelines unterstützen die folgenden Aufgaben
    • embedding: Text-Embeddings erzeugen
    • reranking: Reihenfolge eines Query- und Dokument-Arrays neu ordnen
    • ner: Named-Entity Recognition
    • sentiment-analysis: Sentiment-Analyse
    • question-answering: Antwort aus Frage und Kontext erzeugen
    • feature-extraction: Text-Features extrahieren
  • Die Vision-Pipelines unterstützen die folgenden Aufgaben
    • image-classification: Bildklassifizierung
    • image-feature-extraction: Bild-Features extrahieren

API und unterstützte Architekturen

  • Diese Bibliothek folgt der Transformers Python API
  • Die derzeit unterstützten Modellarchitekturen sind
    • BERT
    • DeBERTa-v2
    • DistilBERT
    • MPNet
    • ViT
    • XLM-RoBERTa

Entwicklung und Mitwirkung

  • Änderungen lassen sich im Changelog nachverfolgen
  • Zu den Möglichkeiten zur Mitwirkung gehören das Melden von Bugs, das Beheben von Bugs und Einreichen von Pull Requests, das Schreiben, Präzisieren und Überarbeiten der Dokumentation sowie das Vorschlagen oder Hinzufügen neuer Funktionen
  • Zum Start der Entwicklung wird die Reihenfolge Repository klonen, bundle install, bundle exec rake download:files, bundle exec rake test angegeben

1 Kommentare

 
GN⁺ 2024-08-21
Kommentare auf Hacker News
  • Ankanes ONNX Runtime für Ruby ist so einfach zu benutzen, dass man sich fragt, warum das offizielle JavaScript-Repository so schwer zu verstehen ist.
    Ich habe bisher nur an der Oberfläche dessen gekratzt, was diese Person geleistet hat, und sie wirkt schon wie ein Held.

  • Ganz im Ernst: Ist dieser Mensch überhaupt menschlich? In eine so talentierte Einzelperson würde ich sogar 1 Milliarde Dollar investieren.

    • Ich habe ungefähr ein Hundertstel dieses Talents und wäre bereit, eine Investition von 10 Millionen Dollar anzunehmen.
  • Er macht das sicher nicht deswegen, aber falls jemand seine Wertschätzung zeigen möchte: Ich habe Ankane für den Rails 2024 Luminary Award nominiert.
    https://rubyonrails.org/2024/8/2/nominations-open-for-2024-l...

    • Stimme zu. Die Menge an nützlicher Arbeit, die Ankane der Community zur Verfügung stellt, ist wirklich unrealistisch.
  • Solche Beiträge braucht die Ruby-Community wirklich, und auch dieses Projekt sieht interessant aus.

    • Absolut. Insgesamt habe ich den Eindruck, dass sich die Ruby-Community verlangsamt, weil solche Beiträge fehlen oder nur noch langsam erscheinen.
      In diesem Fall hat Ruby plötzlich eine großartige Library bekommen, und das ist für sich genommen wirklich ein Grund zur Dankbarkeit. Aber die „Community“ hat so etwas erst Monate oder Jahre „hervorgebracht“, nachdem dieselbe Art Library bereits für Python, JavaScript, TypeScript, Rust, Go usw. erschienen war.
      Das passiert nicht nur bei Machine Learning/Artificial Intelligence, sondern auch bei Ruby-Libraries, also Gems, die neue Technologien abdecken. Früher boten SaaS-Anbieter oder Startups von Anfang an ein offizielles Rubygem an, oft sogar vor anderen Plattformen oder Sprachen. Heute gibt es, wenn man mit Dingen wie Notion, Slack oder Cloudflare integrieren will, oft keine Ruby-Option oder zumindest keine offizielle.
      Das ist traurig. Ruby ist eine viel breitere Sprache als Rails, und Zurückhaltung oder Abneigung gegenüber Rails kann ich nachvollziehen. Trotzdem ist Ruby eine Sprache, mit der das Arbeiten deutlich mehr Freude macht als mit Python und ganz sicher viel mehr als mit JavaScript. Ruby hätte heute die Position von Python einnehmen können, und ich bin überzeugt: Dann wären Zehntausende Entwickler heute ein kleines Stück glücklicher.
  • Ankane gibt der Branche im Alleingang auf wirklich viele Arten enorm viel zurück. Großartig.

  • Ich frage mich, wie eine einzelne Person so produktiv sein kann. Mit Arbeit, Familie usw. muss sein Leben doch ziemlich voll sein.

  • Es ist schwer auszudrücken, wie dankbar ich für Ankanes Gems bin. Die Dinge, die er gebaut hat, waren in mehreren meiner Apps unverzichtbar und schließen meiner Ansicht nach Lücken im Ökosystem.

  • Die Tools, die diese Person gebaut hat, sind wirklich erstaunlich. Davon darf gern noch mehr kommen.

  • Soweit ich weiß, ist Andrew Kane auch der Autor von pgvector, pgvector-ruby und neighbor, und die sind alle ziemlich großartig.
    Außerdem hat er noch vieles andere gebaut.
    Vielleicht hat er vor langer Zeit im Alleingang künstliche Intelligenz/Machine Learning gelöst und nutzt das nun, um so produktiv zu sein.
    [0] https://github.com/pgvector/pgvector
    [1] https://github.com/pgvector/pgvector-ruby
    [2] https://github.com/ankane/neighbor
    [3] https://github.com/ankane/

    • Er hat auch abseits von künstlicher Intelligenz wirklich viel gebaut.
      https://github.com/ankane/pretender macht es in Rails-Apps sehr einfach, sich als ein anderer Benutzer auszugeben.
      https://github.com/ankane/ahoy ist ein eigenes Analytics-Tool für Rails.
      https://github.com/ankane/blazer ist ein Business-Intelligence-Tool innerhalb von Rails.
      https://github.com/ankane/field_test ist für A/B-Tests gedacht.
      Solche Dinge steigern die Rails-Produktivität in gewöhnlichen Web-Apps. Für jedes davon gibt es vermutlich bessere Vendor-Produkte oder spezialisierte Lösungen, aber wenn man ein Gem einbindet, ein wenig konfiguriert und eine 80-Prozent-Lösung bekommt, kann man wirklich schnell ausliefern.
    • Außerdem gibt es noch Chartkick, Ahoy und Searchkick.
      Chartkick ist eine Chart-Library für Ruby, Ahoy eine Analytics-Library für Rails und Searchkick eine Such-Library für Rails.
      Auf seinem GitHub-Profil gibt es mehr als 370 Repositories.
    • Auch in unserem Production-Repository nutzen wir wirklich viele Tools von Andrew Kane. Dank seiner Pakete können wir KI-Anwendungen mit Rails bauen.
    • Wenn du Ruby nutzt und ankane noch nicht kennst: Auf seinem GitHub gibt es sehr viele nützliche Tools.
      Zum Beispiel ist /disco eine sehr einfache Implementierung von Collaborative Filtering, mit der man schnell Empfehlungsfunktionen fast überall einbauen kann.
      Wenn du in Ruby nach irgendetwas rund um Machine Learning suchst, hat ankane es in der Regel schon einmal angesehen.
    • Er ist einer der produktivsten Menschen, die ich kenne.
  • In der Ruby-Community gehören Andrew Kane und Chris Oliver für mich persönlich zu den Besten der Besten. Auch wenn man nicht all ihre Beiträge nutzt, sind solche Beiträge immer willkommen.