Machine Learning: spaCy 3.2 holt mehr Leistung aus Apple Silicon

Die NLP-Library verspricht mehr Leistung beim Einsatz auf Apples M1-Prozessoren, aber auch fĂĽr Nividia-GPU-Hardware.

vorlesen Druckansicht 1 Kommentar lesen

(Bild: Connect world/Shutterstock.com)

Lesezeit: 2 Min.

Das in Berlin ansässige Unternehmen Explosion AI hat Version 3.2 der auf Natural Language Processing (NLP) ausgelegten Python-Library spaCy freigegeben. Das Update verspricht Entwicklerinnen und Entwicklern nicht nur mehr Leistung – insbesondere auf Nvidia-GPU-Hardware sowie Mac-Rechnern mit Apples M1-CPU –, sondern das spaCy-Team hat auch die Bedienung verbessert und neue Funktionen rund um fastText ergänzt.

Das neue Release der NLP-Library soll auf M1-Mac-Rechnern bis zu 8-mal schneller arbeiten als auf vergleichbaren Systemen. Voraussetzung ist dabei aber der Einsatz von Apples nativer Accelerate-Bibliothek thinc-apple-ops, die speziell auf Matrix-Multiplikation zugeschnitten ist.

Mit der Veröffentlichung von floret hatte Explosion AI zuletzt eine erweiterte Version von fastText vorgelegt. floret, das sich per Python-Wrapper einfach integrieren lässt, kombiniert die aus fastText bekannten Teilwörter mit Bloom-Einbettungen, um kompakte Vollvektoren zu ermöglichen. Beim Einsatz der Teilwörter entfallen OOV-Wörter und dank der Bloom-Einbettungen lässt sich die Vektortabelle mit weniger als 100 000 Einträgen klein halten. Davon profitieren vorwiegend agglutinierende Sprachen wie Finnisch und Koreanisch, wie zwei Beispiele im floret-Demoprojekt pipelines/floret_vectors_demo auf GitHub deutlich machen. In Verbindung mit HashEmbed in tok2vec sorgten die Bloom-Einbettungen wiederum auch bisher schon für kompakte spaCy-Modelle.

Videos by heise

Neu in spaCy 3.2 ist zudem Support für Doc als Eingabe in den Pipelines nlp und nlp.pipe. Werden die Container für den Zugriff auf linguistische Anmerkungen anstelle eines Strings in die Pipelines eingegeben, überspringen diese den Tokenizer, sodass sich vor der Verarbeitung – wie im nachfolgenden Listing zu sehen – benutzerdefinierte Erweiterungen beziehungsweise Docs mit benutzerdefinierter Tokenisierung leichter erstellen lassen.

Process a doc object

doc = nlp.make_doc("This is text 500.")
doc._.text_id = 500
doc = nlp(doc)

Eine Zusammenfassung der wichtigsten Neuerungen in spaCy 3.2 findet sich im ExplosionAI-Blog. Die vollständige Übersicht aller Details halten die Release Notes auf GitHub parat.

(map)