2024-05-29

Über 150.000 Datensätze von Hugging Face mit DuckDB nutzen

The Hugging Face and DuckDB teams

Wir freuen uns, die Unterstützung für hf://-Pfade in DuckDB anzukündigen: Damit stehen über 150.000 Datensätze für künstliche Intelligenz zur Verfügung. Gemeinsam mit Hugging Face wollen wir den Zugriff, die Bearbeitung und die Erkundung von Datensätzen, mit denen KI-Modelle trainiert und bewertet werden, demokratisieren.

Dataset-Repositories

Hugging Face ist eine beliebte zentrale Plattform, auf der Nutzer Machine-Learning-Modelle, Datensätze und andere Ressourcen speichern, teilen und gemeinsam bearbeiten können.

Ein Datensatz enthält typischerweise Folgendes:

Ein typisches Repository sieht so aus:

Hugging-Face-Repository

Lesen über hf://-Pfade

Beim Arbeiten mit Daten müssen Sie oft Dateien in verschiedenen Formaten (z. B. CSV, JSONL und Parquet) lesen. Seit Version v0.10.3 hat DuckDB native Unterstützung für hf://-Pfade als Teil der httpfs-Extension, sodass all diese Formate leicht zugänglich sind.

Sie können sie jetzt mit dem folgenden URL-Muster abfragen:

hf://datasets/⟨my_username⟩/⟨my_dataset⟩/⟨path_to_file⟩

Um zum Beispiel eine CSV-Datei zu lesen, können Sie folgende Abfrage nutzen:

SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-csv-1/data.csv';

Dabei gilt:

Das Ergebnis der Abfrage ist:

kind sound
dog woof
cat meow
pokemon pika
human hello

Um eine JSONL-Datei zu lesen, können Sie ausführen:

SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-jsonl-1/data.jsonl';

Zum Lesen einer Parquet-Datei nutzen Sie folgende Abfrage:

SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-parquet-1/data/train-00000-of-00001.parquet';

Jeder dieser Befehle liest die Daten aus dem jeweiligen Dateiformat und zeigt sie in einer strukturierten Tabellenform. Wählen Sie den passenden Befehl je nach Dateiformat.

Eine lokale Tabelle anlegen

Um den Remote-Endpunkt nicht für jede Abfrage anzusprechen, können Sie die Daten mit einem CREATE TABLE ... AS-Befehl in einer DuckDB-Tabelle speichern. Zum Beispiel:

CREATE TABLE data AS
SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-csv-1/data.csv';

Danach fragen Sie die Tabelle data einfach so ab:

SELECT *
FROM data;

Mehrere Dateien

Bei großen Datensätzen müssen Sie oft mehrere Dateien gleichzeitig abfragen. Schauen wir uns ein kurzes Beispiel mit dem Datensatz cais/mmlu (Measuring Massive Multitask Language Understanding) an. Dieser Datensatz erfasst einen Test mit Multiple-Choice-Fragen aus verschiedenen Wissensgebieten. Er umfasst 57 Aufgaben, darunter Elementarmathematik, US-Geschichte, Informatik, Recht und mehr. Um bei diesem Test hohe Genauigkeit zu erreichen, müssen KI-Modelle über umfangreiches Weltwissen und Problemlösefähigkeit verfügen.

Zuerst zählen wir die Zeilen in einzelnen Dateien. Die Zeilenzahl einer einzelnen Datei im Datensatz cais/mmlu erhalten Sie so:

SELECT count(*) AS count
FROM 'hf://datasets/cais/mmlu/astronomy/dev-00000-of-00001.parquet';
count
5

Ebenso für eine andere Datei (test-00000-of-00001.parquet) im selben Datensatz:

SELECT count(*) AS count
FROM 'hf://datasets/cais/mmlu/astronomy/test-00000-of-00001.parquet';
count
152

Um alle Dateien eines bestimmten Formats abzufragen, können Sie ein Glob-Muster nutzen. So zählen Sie die Zeilen in allen Dateien, die auf *.parquet passen:

SELECT count(*) AS count
FROM 'hf://datasets/cais/mmlu/astronomy/*.parquet';
count
173

Mit Glob-Mustern können Sie große Datensätze effizient handhaben und umfassende Abfragen über mehrere Dateien ausführen, was Inspektion und Verarbeitung vereinfacht. Hier sehen Sie, wie Sie nach Fragen suchen, die das Wort „planet“ in der Astronomie enthalten:

SELECT count(*) AS count
FROM 'hf://datasets/cais/mmlu/astronomy/*.parquet'
WHERE question LIKE '%planet%';
count
21

Und ein paar Beispiele:

SELECT question
FROM 'hf://datasets/cais/mmlu/astronomy/*.parquet'
WHERE question LIKE '%planet%'
LIMIT 3;
question
Why isn’t there a planet where the asteroid belt is located?
On which planet in our solar system can you find the Great Red Spot?
The lithosphere of a planet is the layer that consists of

Versionierung und Revisions

In Hugging-Face-Repositories sind Dataset-Versionen oder Revisions verschiedene Aktualisierungen eines Datensatzes. Jede Version ist ein Snapshot zu einem bestimmten Zeitpunkt, mit dem Sie Änderungen und Verbesserungen nachverfolgen können. In Git-Begriffen kann man das als Branch oder konkreten Commit verstehen.

Sie können verschiedene Dataset-Versionen/Revisions mit der folgenden URL abfragen:

hf://datasets/⟨my_username⟩/⟨my_dataset⟩@⟨my_branch⟩/⟨path_to_file⟩

Zum Beispiel:

SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-csv-1@~parquet/**/*.parquet';
kind sound
dog woof
cat meow
pokemon pika
human hello

Die vorherige Abfrage liest alle Parquet-Dateien unter der Revision ~parquet. Das ist ein besonderer Branch, in dem Hugging Face automatisch die Parquet-Dateien jedes Datensatzes erzeugt, um effizientes Scannen zu ermöglichen.

Authentifizierung

Konfigurieren Sie Ihr Hugging-Face-Token im DuckDB Secrets Manager, um auf private oder geschützte Datensätze zuzugreifen. Besuchen Sie zuerst Hugging Face Settings – Tokens, um Ihr Access Token zu holen. Setzen Sie es dann in Ihrer DuckDB-Sitzung über DuckDBs Secrets Manager. DuckDB unterstützt zwei Provider für die Secret-Verwaltung:

Fazit

Die Integration von hf://-Pfaden in DuckDB vereinfacht den Zugriff auf und das Abfragen von über 150.000 auf Hugging Face verfügbaren Datensätzen erheblich. Dieses Feature demokratisiert Datenbearbeitung und -erkundung und erleichtert den Umgang mit Formaten wie CSV, JSON, JSONL und Parquet. Über hf://-Pfade können Nutzer komplexe Abfragen ausführen, große Datensätze effizient handhaben und die umfangreichen Ressourcen der Hugging-Face-Repositories nutzen.

Die Integration unterstützt nahtlosen Zugriff auf einzelne Dateien, mehrere Dateien über Glob-Muster und verschiedene Dataset-Versionen. DuckDBs robuste Fähigkeiten sorgen für eine flexible und schlanke Datenverarbeitung. Diese Integration ist ein großer Schritt, um den Zugriff auf KI-Datensätze für Forschende und Entwickler zugänglicher und effizienter zu machen, Innovation zu fördern und den Fortschritt im Machine Learning zu beschleunigen.

Möchten Sie mehr über DuckDB mit Hugging-Face-Datensätzen erfahren? Schauen Sie sich den ausführlichen Leitfaden an.