Hub 文件

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

資料集中心支援開源生態系統中的多個庫。多虧了 huggingface_hub Python 庫,在中心上共享資料集變得很容易。我們很高興歡迎一批推動機器學習發展的開源庫加入中心。

下表總結了支援的庫及其整合級別。

描述 從中心下載 推送到 Hub
Argilla 面向重視高質量資料的 AI 工程師和領域專家的協作工具。
Dask 並行分散式計算庫,可擴充套件現有 Python 和 PyData 生態系統。
資料集 🤗 Datasets 是一個用於訪問和共享音訊、計算機視覺和自然語言處理 (NLP) 資料集的庫。
Distilabel 用於合成數據生成和 AI 反饋的框架。
DuckDB 程序內 SQL OLAP 資料庫管理系統。
FiftyOne FiftyOne 是一個用於影像、影片和 3D 資料策展和視覺化的庫。
Pandas Python 資料分析工具包。
Polars 基於 OLAP 查詢引擎的 DataFrame 庫。
PyArrow Apache Arrow 是一種列式格式和工具箱,用於快速資料交換和記憶體分析。
Spark 分散式環境中的即時、大規模資料處理工具。
WebDataset 用於為大型資料集編寫 I/O 管道的庫。

將資料庫和工具與中心整合

本指南旨在幫助希望與 Hugging Face 中心整合的資料庫和工具的開發人員和維護人員。無論您是構建資料處理庫、分析工具還是任何需要與資料集互動的軟體,本文件都將幫助您實現中心整合。

本指南涵蓋:

  • 將資料從中心載入到您的庫/工具中的可能方法
  • 將資料從您的庫/工具上傳到中心的可能方法

從中心載入資料

如果您有一個用於處理資料的庫,那麼讓您的使用者從中心載入資料會很有幫助。

一般來說,我們建議您依賴現有庫(如 `datasets`、`pandas` 或 `polars`)來完成此操作,除非您有特定的理由實現自己的庫。如果您需要對載入過程進行更多控制,可以使用 `huggingface_hub` 庫,例如,該庫允許您從儲存庫下載特定檔案子集。

您可以在此處找到有關從中心載入資料的更多資訊。

透過資料集檢視器和 Parquet 檔案整合

中心的`資料集檢視器`和 `Parquet` 轉換系統提供了一種標準化的方式,可以與資料集整合,無論其原始格式如何。此基礎架構是中心和外部庫之間可靠的整合層。

如果資料集尚未採用 Parquet 格式,Hub 會自動將每個資料集的前 5GB 轉換為 Parquet 格式,以支援資料集檢視器並提供一致的訪問模式。這種標準化為庫整合提供了多種好處

  • 無論原始格式如何,都提供一致的資料訪問模式
  • 透過中心的`資料集檢視器`內建資料集預覽和探索。`資料集檢視器`還可以作為 iframe 嵌入到您的應用程式中,從而輕鬆提供豐富的資料集預覽。有關嵌入檢視器的更多資訊,請參閱資料集檢視器嵌入文件
  • 高效的列式儲存,針對查詢進行了最佳化。例如,您可以使用像 DuckDB 這樣的工具來查詢或篩選特定資料子集。
  • Parquet 在機器學習和資料科學生態系統中得到了很好的支援。

有關使用資料集檢視器 API 的更多詳細資訊,請參閱資料集檢視器 API 文件

將資料上傳到中心

本節介紹在您的庫中新增將資料上傳到中心的功能的可能方法,即如何實現 `push_to_hub` 方法。

本指南將涵蓋將資料上傳到中心的三種主要方式

  • 使用 `datasets` 庫和 `push_to_hub` 方法
  • 使用 `pandas` 寫入中心
  • 使用 `huggingface_hub` 庫和 `hf_hub_download` 方法
  • 直接使用 API 或 Git LFS

使用資料集庫

將資料推送到中心最直接的方法是依賴 `datasets` 庫中現有的 `push_to_hub` 方法。`push_to_hub` 方法將自動處理

  • 儲存庫的建立
  • 資料集到 Parquet 的轉換
  • 將資料集分塊成合適的片段
  • 資料上傳

例如,如果您有一個返回字典列表的合成數據生成庫,您可以簡單地執行以下操作

from datasets import Dataset

data = [{"prompt": "Write a cake recipe", "response": "Measure 1 cup ..."}]
ds = Dataset.from_list(data)
ds.push_to_hub("USERNAME_OR_ORG/repo_ID")

此類整合的示例

依賴現有庫與中心的整合

Polars、Pandas、Dask 和 DuckDB 都可以寫入 Hugging Face Hub 儲存庫。有關更多詳細資訊,請參閱資料集庫

如果您已經在程式碼中使用了這些庫之一,那麼新增將資料推送到 Hub 的功能非常簡單。例如,如果您有一個可以返回 Pandas DataFrame 的合成數據生成庫,那麼您需要編寫以下程式碼才能將資料寫入 Hub

from huggingface_hub import HfApi

# Initialize the Hub API
hf_api = HfApi(token=os.getenv("HF_TOKEN"))

# Create a repository (if it doesn't exist)
hf_api.create_repo(repo_id="username/my-dataset", repo_type="dataset")

# Convert your data to a DataFrame and save directly to the Hub
df.to_parquet("hf://datasets/username/my-dataset/data.parquet")

使用 huggingface_hub Python 庫

`huggingface_hub` Python 庫提供了一種更靈活的方式將資料上傳到中心。該庫允許您將特定檔案或檔案子集上傳到儲存庫。如果您有一個不想轉換為 Parquet 的大型資料集,或者想要上傳特定檔案子集,或者想要對儲存庫結構有更多控制,這將非常有用。

根據您的用例,您可以在程式碼中的特定點上傳檔案或資料夾,例如,當用戶單擊“推送到中心”時,將註釋從工具匯出到中心。例如,

from huggingface_hub import HfApi
api = HfApi(token=HF_TOKEN)

api.upload_folder(
    folder_path="/my-cool-library/data-folder",
    repo_id="username/my-cool-space",
    repo_type="dataset",
    commit_message="Push annotations to Hub"
    allow_patterns="*.jsonl",
)

您可以在此處找到有關將資料上傳到中心的更多資訊。

或者,在某些情況下,您可能希望在後臺上傳資料,例如,每 10 分鐘生成一次合成數據。在這種情況下,您可以使用 `huggingface_hub` 庫的 `scheduled_uploads` 功能。有關更多詳細資訊,請參閱計劃上傳文件

您可以在以下示例中看到使用此方法將資料上傳到中心:

更多支援

有關整合的技術問題,請隨時透過 datasets@huggingface.co 聯絡資料集團隊。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.