Hugging Face Hub 與 DuckDB 整合用於數據集分析
Hugging Face 已整合 DuckDB,使用戶能夠直接對儲存在 Hugging Face Hub 上的公開數據集執行 SQL 查詢。此整合允許對海量數據集進行快速的分析查詢,而無需將其下載到本地,這得益於 Hub 會自動將數據集轉換為 Parquet 列式格式。
公開數據集的自動 Parquet 轉換
Hugging Face 數據集檢視器會自動將 Hub 上所有的公開數據集轉換為 Parquet 檔案。Parquet 是一種列式儲存格式,在儲存、載入和分析數據方面效率極高,這對於當前大型語言模型 (LLMs) 時代所使用的大規模數據集至關重要。
使用者可以透過點擊數據集頁面上的「Auto-converted to Parquet」按鈕來識別這些檔案。這些 Parquet 檔案的特定 URL 可以透過 datasets-server 的 /parquet 端點以程式化方式取得。
使用 DuckDB 進行分析查詢
DuckDB 被用作此整合的資料庫管理系統 (DBMS),因為它在執行複雜分析查詢方面具有高性能。此設定的一個關鍵技術能力是 DuckDB 能夠直接在遠端 Parquet 檔案上執行 SQL 查詢而無需額外開銷。
透過使用 httpfs 擴充功能,DuckDB 可以使用 Hugging Face /parquet 端點提供的 URL 來讀取和寫入遠端檔案。這對於大型數據集特別有用,因為數據集檢視器會將大型數據集分片成較小的 500MB 區塊,而 DuckDB 支援同時對多個 Parquet 檔案進行查詢。
實作範例
若要分析數據集,使用者可以遵循以下步驟:
- 取得 Parquet URL:使用 HTTP 呼叫
/parquet端點來獲取特定數據集的 Parquet 檔案 URL 列表。 - 初始化 DuckDB:建立連線並載入
httpfs擴充功能以啟用遠端檔案存取。 - 執行 SQL:直接針對遠端 URL 執行標準 SQL 查詢。
import duckdb
# 從 /parquet 端點取得的範例 URL
url = "https://huggingface.co/datasets/blog_authorship_corpus/resolve/refs%2Fconvert%2Fparquet/blog_authorship_corpus/blog_authorship_corpus-train-00000-of-00002.parquet"
con = duckdb.connect()
con.execute("INSTALL httpfs;")
con.execute("LOAD httpfs;")
# 查詢遠端 Parquet 檔案
con.sql(f"""SELECT horoscope,
count(*),
AVG(LENGTH(text)) AS avg_blog_length
FROM '{url}'
GROUP BY horoscope
ORDER BY avg_blog_length
DESC LIMIT(5)""")
對數據集透明度的影響
為 Hub 數據集提供 SQL 存取權限,使研究人員和開發人員能夠更好地理解用於訓練模型的數據集內容。由於數據集的組成直接影響模型品質,此工具提供了一種開放存取機制並提高了對數據集內容的認識,允許使用者透過結構化查詢來發現洞察。