Wie Mathe, aber ohne Formelsammlung

Tile: Die einfache, kompakte Sprache für Machine Learning

Jane Elizabeth

© Shutterstock / jelome

Was ist cooler als maschinelles Lernen? Maschinengemachtes maschinelles Lernen natürlich. In Tile, einer neuen Machine-Learning-Sprache von Vertex. AI, werden wichtige Supportstrukturen automatisch generiert, um Zeit und Aufwand zu sparen.

Vor kurzem hat Vertex. AI ein neues Machine-Learning-Framework namens PlaidML veröffentlicht, das dafür sorgen soll, dass Deep Learning überall funktioniert. Eine der größten Hürden für die Skalierung auf viele Plattformen ist jedoch der Software-Support. Es ist schwer, jedem Entwickler Deep-Learning-Funktionalitäten zur Verfügung zu stellen, wenn das Framework nicht grundlegend kompatibel ist. Das bringt uns zu Tile.

Kernel oder Custom-Software-Libraries sind in der Regel das, was die Lücke zwischen neuen Frameworks und den darunterliegenden Systemen schließt. Tile geht allerdings einen anderen Weg. Obwohl es auf Kernel zurückgreift, werden diese nicht von Menschen programmiert. Stattdessen werden die Kernel von den jeweiligen Plattformen maschinell generiert.

It’s Tiles all the way down

Tile ist eine kompakte Sprache zur Beschreibung maschineller Lernvorgänge. Es handelt sich um eine Zwischensprache zur Tensor-Manipulation, die aus dem Backend von PlainML heraus benutzerdefinierte Kernel für jede spezifische Operation auf jeder spezifischen GPU erzeugt. Die Machine-Learning-Kernel werden ihrerseits wiederum von einer Maschine geschrieben.

Tile beschreibt maschinelle Lernvorgänge auf effiziente Weise, wodurch es einfach wird, sie auf ähnlichen Computerarchitekturen zu implementieren. Die automatisch generierten Kernel machen es deutlich leichter, GPU-Support und neue Prozessoren hinzuzufügen.

Mehr über Tile:

  • Kontrollfluss- und begleiterscheinungsfreie Operationen auf n-dimensionalen Tensoren
  • Mathematisch orientierte Syntax – ähnlich der Tensorrechnung
  • n-dimensionale, parametrische, zusammensetzbare und typen-agnostische Funktionen
  • Automatische Differenzierung n-ter Ordnung für alle Operationen
  • Geeignet für JITing und Vorkompilierungen
  • Transparenter Support für Resizing, Padding & Transposition

Die Tile-Syntax balanciert zwischen Ausdrucksstärke und Optimierung, um das breitestmögliche Spektrum an Operationen zum Aufbau neuronaler Netze abdecken zu können. Sehen wir uns als Beispiel einen Matrix-Multiplikator an:

function (A[M, L], B[L, N]) -> (C) {
    C[i, j: M, N] = +(A[i, k] * B[k, j]);
}

Nun, auf jeden Fall erinnert das Beispiel an Algebra-Lektionen aus der Schule. Abgesehen davon unterstützt Tile automatische Differenzierung. Zudem wurde es so konzipiert, dass es sowohl parallelisierbar als auch analysierbar ist. In Tile ist es etwa möglich, Probleme wie Cache-Coherency, die Nutzung von Shared Memory oder Memory-Bank-Conflicts zu analysieren.

Des Weiteren hilft Tile dabei, das Keras Backend von PlaidML relativ klein zu halten. Da Tile die Zwischendarstellung ist, umfasst das gesamte Keras Backend weniger als 3000 Python-Codezeilen. Dies ermöglicht die schnelle Implementierung neuer Operationen. Für die Zukunft hofft das Vertex. AI-Team, PlaidML anhand dieses Ansatzes kompatibler gegenüber den gängigen ML-Frameworks, wie TensorFlow oder PyTorch, machen zu können.

Die gesamte Sprache ist noch recht neu und unterliegt dementsprechend Änderungen, aber sie nähert sich Stück für Stück den formalen Vorgaben. Einen genaueren Blick auf Tile und PlaidML verspricht die Vertex. AI-Homepage. Aber auch auf GitHub gibt es einige Informatioen, sowie eine Anleitung zur Tile-Programmierung.

Verwandte Themen:

Geschrieben von
Jane Elizabeth
Jane Elizabeth
Jane Elizabeth ist eine Redaktionsassistentin für JAXenter.com
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: