Hub 文件
庫
並獲得增強的文件體驗
開始使用
庫
資料集中心支援開源生態系統中的多個庫。多虧了 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 上更新