Transformers.js: Neuer Meilenstein für maschinelles Lernen direkt im Webbrowser

Kategorien:
No items found.
Freigegeben:
August 27, 2024

Transformers.js: Eine Revolution für Machine Learning im Browser

Einführung

Die Welt der künstlichen Intelligenz und des maschinellen Lernens entwickelt sich kontinuierlich weiter. Eine der neuesten und spannendsten Entwicklungen ist die Einführung von Transformers.js, einer JavaScript-Version der bekannten Transformers-Bibliothek von Hugging Face. Diese neue Technologie ermöglicht es Entwicklern, hochentwickelte Machine Learning-Modelle direkt im Browser auszuführen. Dies eröffnet eine Vielzahl von neuen Möglichkeiten und Anwendungen.

Hintergrund

Transformers sind eine Klasse von Modellen, die besonders für Aufgaben des Natural Language Processing (NLP) geeignet sind, wie Textklassifikation, Named Entity Recognition (NER), Fragebeantwortung, Textgenerierung und vieles mehr. Die ursprüngliche Transformers-Bibliothek von Hugging Face ist in Python geschrieben und hat sich in der KI-Community schnell etabliert. Allerdings konnte sie aufgrund ihrer Abhängigkeiten und der Notwendigkeit eines Servers nicht direkt im Browser verwendet werden.

Die Rolle von Transformers.js

Transformers.js wurde entwickelt, um diese Einschränkung zu überwinden. Durch die Nutzung von ONNX Runtime können Modelle direkt im Browser ausgeführt werden, ohne dass ein Server erforderlich ist. Dies bedeutet, dass Anwendungen in Echtzeit auf Benutzerinteraktionen reagieren können, ohne dass Daten an einen externen Server gesendet werden müssen, was sowohl die Leistung als auch die Privatsphäre verbessert.

Integration mit Pyodide und Pyodide-basierten Frameworks

Ein weiteres spannendes Feature von Transformers.js ist seine Integration mit Pyodide und Pyodide-basierten Frameworks wie JupyterLite, stlite (Streamlit), Shinylive (Shiny für Python), PyScript und HoloViz Panel. Pyodide ist eine Python-Laufzeitumgebung, die in WebAssembly kompiliert wurde und im Browser ausgeführt werden kann. Dies ermöglicht es, Python-Code direkt im Browser auszuführen, was die Entwicklung von Webanwendungen erheblich vereinfacht.

Warum Pyodide?

Pyodide ermöglicht es Entwicklern, die umfangreiche Python-Ökosystem zu nutzen, ohne auf die Vorteile von Webanwendungen verzichten zu müssen. Durch die Kombination von Pyodide und Transformers.js können Entwickler komplexe Machine Learning-Modelle in Python schreiben und diese direkt im Browser ausführen.

Beispielanwendungen

- **JupyterLite**: Ein Browser-basiertes Interface für Jupyter-Notebooks, das die Ausführung von Python-Code ermöglicht. Mit Transformers.js können hier Modelle für Sentiment-Analyse oder Bildklassifikation direkt im Notebook ausgeführt werden. - **stlite (Streamlit)**: Ein Framework zur Erstellung von Webanwendungen aus Python-Skripten. Entwickler können interaktive Dashboards erstellen, die in Echtzeit auf Benutzereingaben reagieren. - **Shinylive**: Eine Python-Version des beliebten R-Shiny-Frameworks, das ebenfalls im Browser ausgeführt werden kann. - **PyScript**: Ermöglicht es, Python-Code direkt in HTML-Dateien einzubetten und auszuführen. - **HoloViz Panel**: Ein weiteres Framework zur Erstellung interaktiver Webanwendungen, das sich besonders für die Visualisierung von Daten eignet.

Technische Details und API

Transformers.js bietet eine API, die der originalen Transformers-API von Hugging Face sehr ähnlich ist. Dies erleichtert den Umstieg für Entwickler, die bereits mit der Python-Bibliothek vertraut sind. Hier ein Vergleich der Syntax:

Python (original)

```python from transformers import pipeline # Allocate a pipeline for sentiment-analysis pipe = pipeline('sentiment-analysis') out = pipe('I love transformers!') # [{'label': 'POSITIVE', 'score': 0.999806941}] ```

JavaScript (Transformers.js)

```javascript import { pipeline } from '@xenova/transformers'; // Allocate a pipeline for sentiment-analysis let pipe = await pipeline('sentiment-analysis'); let out = await pipe('I love transformers!'); // [{'label': 'POSITIVE', 'score': 0.999817686}] ```

Spezialfälle: as_url()

Ein besonderes Feature von Transformers.js.py ist die Funktion `as_url()`, die lokale Dateipfade in URLs umwandelt. Dies ist besonders nützlich, wenn lokale Dateien in der virtuellen Dateisystemumgebung von Pyodide verwendet werden sollen.

Beispiel

```python from transformers_js_py import import_transformers_js, as_url transformers = await import_transformers_js() pipeline = transformers.pipeline pipe = await pipeline('image-classification') local_image_path = "/path/to/image.jpg" input_url = as_url(local_image_path) # Converts a local file path into a URL that can be passed to `pipe()` result = await pipe(input_url) ```

Beispiele und Demos

Transformers.js bietet eine Vielzahl von Beispielen und Demos, die zeigen, wie die Bibliothek in verschiedenen Kontexten verwendet werden kann. Hier sind einige Beispiele: - **JupyterLite**: Ein Notebook, das zeigt, wie man Transformers.js verwendet, um eine Sentiment-Analyse durchzuführen. - **stlite (In-browser Streamlit)**: Eine interaktive Webanwendung zur Sentiment-Analyse. - **Gradio-Lite**: Eine serverlose Gradio-Anwendung, die vollständig im Browser läuft. - **Shinylive**: Eine Anwendung zur Sentiment-Analyse mit dem Shiny-Framework. - **PyScript**: Ein Beispiel, das zeigt, wie man Transformers.js in einer HTML-Datei verwendet. - **Panel**: Eine Anwendung zur Sentiment-Analyse mit HoloViz Panel.

Fazit

Transformers.js stellt einen bedeutenden Fortschritt in der Entwicklung von Machine Learning-Anwendungen dar, die direkt im Browser ausgeführt werden können. Durch die Integration mit Pyodide und anderen Frameworks wird die Entwicklung interaktiver Webanwendungen erheblich vereinfacht. Dies eröffnet neue Möglichkeiten für Entwickler und Anwender gleichermaßen.

Bibliographie

https://github.com/whitphx/transformers.js.py https://github.com/xenova/transformers.js https://github.com/holoviz/panel/issues/5371 https://github.com/pyodide/pyodide/issues/2669
Was bedeutet das?