CSV vs. Parquet vs. Arrow: Speicherformate erklärtCSV vs. Parquet vs. Arrow: Speicherformate erklärt
Bild vom Autor

# Einführung

Hugging Face Datasets bietet eine der einfachsten Methoden zum Laden von Datensätzen mit einer einzigen Codezeile. Diese Datensätze sind häufig in Formaten wie CSV, Parquet und Arrow verfügbar. Während alle drei für die Speicherung tabellarischer Daten konzipiert sind, funktionieren sie im Backend unterschiedlich. Die Wahl des jeweiligen Codecs bestimmt, wie Daten gespeichert werden, wie schnell sie geladen werden können, wie viel Speicherplatz benötigt wird und wie effizient die Datentypen erhalten bleiben. Diese Unterschiede werden immer bedeutender, je größer die Datensätze und je komplexer die Modelle werden. In diesem Artikel werden wir untersuchen, wie Hugging Face Datasets mit CSV, Parquet und Arrow funktionieren, was sie auf der Festplatte und im Speicher tatsächlich unterscheidet und wann die Verwendung der einzelnen Datensätze sinnvoll ist. Additionally, fangen wir an.

# 1. CSV

CSV steht für Comma-Separated Values. Es ist nur Textual content, eine Zeile professional Zeile, Spalten durch Kommas (oder Tabulatoren) getrennt. Quick jedes Software kann es öffnen, z. B. Excel, Google Sheets, Pandas, Datenbanken usw. Es ist sehr einfach und interoperabel.

Instance:
identify,age,metropolis
Kanwal,30,New York
Qasim,25,Edmonton

Hugging Face behandelt es als zeilenbasiertes Format, das heißt, es liest Daten Zeile für Zeile. Während dies für kleine Datensätze akzeptabel ist, nimmt die Leistung mit der Skalierung ab. Darüber hinaus gibt es einige weitere Einschränkungen, wie zum Beispiel:

  • Kein explizites Schema: Da alle Daten im Textformat gespeichert werden, müssen die Typen bei jedem Laden der Datei abgeleitet werden. Dies kann zu Fehlern führen, wenn die Daten nicht konsistent sind.
  • Große Größe und langsame E/A: Die Textspeicherung erhöht die Dateigröße und das Parsen von Zahlen aus Textual content ist CPU-intensiv.

# 2. Parkett

Parquet ist ein binäres Spaltenformat. Anstatt wie bei CSV Zeilen nacheinander zu schreiben, gruppiert Parquet Werte nach Spalten. Dadurch werden Lesevorgänge und Abfragen erheblich beschleunigt, wenn Sie nur wenige Spalten benötigen, und durch die Komprimierung werden Dateigrößen und E/A-Vorgänge niedrig gehalten. Parquet speichert auch ein Schema, sodass Typen erhalten bleiben. Es eignet sich am besten für die Stapelverarbeitung und umfangreiche Analysen, nicht für viele kleine, häufige Aktualisierungen derselben Datei (besser für Stapelschreibvorgänge als für ständige Bearbeitungen). Wenn wir das obige CSV-Beispiel nehmen, werden alle Namen zusammen, alle Altersgruppen zusammen und alle Städte zusammen gespeichert. Dies ist das Spaltenlayout und das Beispiel würde so aussehen:

Names: Kanwal, Qasim
Ages: 30, 25
Cities: New York, Edmonton

Außerdem werden für jede Spalte Metadaten hinzugefügt: Typ, Min.-/Max.-Werte, Nullanzahl und Komprimierungsinformationen. Dies ermöglicht schnellere Lesevorgänge, eine effiziente Speicherung und eine genaue Typverarbeitung. Komprimierungsalgorithmen wie Snappy oder Gzip reduzieren den Speicherplatz zusätzlich. Es hat folgende Stärken:

  • Kompression: Ähnliche Spaltenwerte lassen sich intestine komprimieren. Dateien sind kleiner und kostengünstiger zu lagern.
  • Spaltenweise Lektüre: Laden Sie nur die Spalten, die Sie benötigen, und beschleunigen Sie so Abfragen.
  • Wealthy-Typing: Das Schema wird gespeichert, sodass bei jedem Ladevorgang keine Rateversuche erforderlich sind.
  • Skala: Funktioniert intestine für Millionen oder Milliarden Zeilen.

# 3. Pfeil

Arrow ist nicht dasselbe wie CSV oder Parquet. Es handelt sich um ein Spaltenformat, das für schnelle Vorgänge im Speicher gehalten wird. In Hugging Face wird jeder Datensatz durch eine Arrow-Tabelle unterstützt, unabhängig davon, ob Sie mit CSV, Parquet oder einer Arrow-Datei begonnen haben. Wenn wir mit der gleichen Beispieltabelle fortfahren, speichert Arrow die Daten ebenfalls Spalte für Spalte, allerdings im Speicher:

Names: contiguous reminiscence block storing Kanwal, Qasim
Ages: contiguous reminiscence block storing 30, 25
Cities: contiguous reminiscence block storing New York, Edmonton

Da sich die Daten in zusammenhängenden Blöcken befinden, sind Vorgänge an einer Spalte (z. B. Filtern, Zuordnen oder Summieren) extrem schnell. Arrow unterstützt auch die Speicherzuordnung, wodurch auf Datensätze von der Festplatte aus zugegriffen werden kann, ohne dass diese vollständig in den RAM geladen werden müssen. Einige der Hauptvorteile dieses Codecs sind:

  • Nullkopie lautet: Speicherzuordnungsdateien, ohne alles in den RAM zu laden.
  • Schneller Spaltenzugriff: Das spaltenförmige Format ermöglicht vektorisierte Operationen.
  • Reiche Typen: Verarbeitet verschachtelte Daten, Hear und Tensoren.
  • Interoperabel: Funktioniert mit Pandas, PyArrow, Spark, Polars und mehr.

# Zusammenfassung

Das Umarmen von Gesichtsdatensätzen macht den Formatwechsel zur Routine. Verwenden Sie CSV für schnelle Experimente, Parquet zum Speichern großer Tabellen und Arrow für schnelles In-Reminiscence-Coaching. Wenn Sie wissen, wann Sie die einzelnen Elemente verwenden müssen, bleibt Ihre Pipeline schnell und einfach, sodass Sie mehr Zeit mit dem Modell verbringen können.

Kanwal Mehreen ist ein Ingenieur für maschinelles Lernen und ein technischer Redakteur mit einer großen Leidenschaft für Datenwissenschaft und die Schnittstelle zwischen KI und Medizin. Sie ist Mitautorin des E-Books „Maximizing Productiveness with ChatGPT“. Als Google Era Scholar 2022 für APAC setzt sie sich für Vielfalt und akademische Exzellenz ein. Sie ist außerdem als Teradata Range in Tech Scholar, Mitacs Globalink Analysis Scholar und Harvard WeCode Scholar anerkannt. Kanwal ist ein leidenschaftlicher Verfechter von Veränderungen und hat FEMCodes gegründet, um Frauen in MINT-Bereichen zu stärken.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert