Data Science: Einheitliche Python-APIs für Arrays und Data Frames geplant

Ein Konsortium möchte einheitliche Standards für die Python Data APIs schaffen, damit Data-Science- und Machine-Learning-Frameworks besser zusammenarbeiten.

In Pocket speichern vorlesen Druckansicht 7 Kommentare lesen
Data Science: einheitliche Python-APIs für Tensoren und Data Frames geplant

(Bild: sdecoret/Shutterstock.com)

Lesezeit: 3 Min.
Inhaltsverzeichnis

Das neu gegründete Consortium for Python Data API Standards will einheitliche Schnittstellen für Machine-Learning-Frameworks und Python-Bibliotheken schaffen. Der Fokus liegt einerseits auf Arrays beziehungsweise Tensoren und andererseits auf Dataframes.

Initiator des Konsortiums ist Quansight Labs, und die Sponsoren bei der Gründung sind Intel, Microsoft, die D. E. Shaw Group, Google Research und Quansight. Langfristig soll das Konsortium zu einer Projekt- und Ökosystem-übergreifenden Organisation wachsen, die APIs und Mechanismen zum Datenaustausch abgleicht und standardisiert.

Viele Funktionen sind in zahlreichen Bibliotheken ähnlich integriert, haben aber genügend Unterschiede im Detail. Als Beispiel führt der Blogbeitrag zum Start des Konsortiums die Funktionen zum Berechnen des arithmetischen Mittels über ein Array auf, das in den einzelnen Libraries folgendermaßen implementiert ist:

numpy:         
  mean(a, axis=None, dtype=None, out=None, keepdims=<no value>)
dask.array:    
  mean(a, axis=None, dtype=None, out=None, keepdims=<no value>)
cupy:          
  mean(a, axis=None, dtype=None, out=None, keepdims=False)
jax.numpy:     
  mean(a, axis=None, dtype=None, out=None, keepdims=False)
mxnet.np:      
  mean(a, axis=None, dtype=None, out=None, keepdims=False)
sparse:        
  s.mean(axis=None, keepdims=False, dtype=None, out=None)
torch:         
  mean(input, dim, keepdim=False, out=None)
tensorflow:    
  reduce_mean(input_tensor, axis=None, keepdims=None,
              name=None, reduction_indices=None, keep_dims=None)

Die Funktionen der obigen Libraries haben dabei abgesehen von der Default-Vorgabe für keepdims weitgehend identische Signaturen. Allerdings bieten sie auch bei gleichen Signaturen teils eine unterschiedliche Semantik, die schwieriger zu ermitteln ist. MXNet dokumentiert die Abweichungen von NumPy sogar explizit: Als Array-Parameter ist lediglich ein ndarray erlaubt, und der Datentyp für Zahlen ist float32.

Das Konsortium möchte bei der Standardisierung zunächst die Anforderungen überprüfen und startet mit einer Requirements-Engineering-Phase. Dabei geht es darum, zu erkennen, welche Bereiche eine Standardisierung benötigen und wie die Standards umzusetzen sind.

Um Wildwuchs durch zu viele spezielle Anwendungsfälle zu vermeiden, soll sich der Standardisierungsprozess auf die Funktionen konzentrieren, die in den meisten Libraries in irgendeiner Form bereits vorhanden sind. Außerdem will das Konsortium evaluieren, welche Funktionen Data Scientists in der Praxis nutzen. Für Letzteres existiert ein Tool im GitHub-Repository für die Data-API-Standards, das ermittelt, welche Python-Module ein anderes Modul verwendet.

Ein weiteres Tool im Repository liest und verarbeitet die öffentlich verfügbaren HTML-Dokumentationen für Array-Libraries, vergleicht die vorhandenen Funktionen sowie deren Signaturen und zeigt das Ergebnis schließlich in einer HTML-Tabelle.

Ausgabe der mit dem API-Comparison-Tool über make view-intersection ermittelten APIs.

(Bild: data-apis.org)

Außerdem hoffen die Initiatoren des Standardisierungsprozesses auf die Mitwirkung von den Entwicklern der wichtigen Python-Libraries und Frameworks sowie der Community. Bis zum 15. September will das Konsortium den RFC (Request for Comments) für die Array APIs veröffentlichen und den Community-Review-Prozess anstoßen. Am 15. November soll der RFC für die Dataframe APIs folgen. Weitere Details lassen sich dem Blogbeitrag zum Start des Konsortiums entnehmen.

(rme)