Datasets documentation

Chia sẻ một bộ dữ liệu bằng CLI

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Chia sẻ một bộ dữ liệu bằng CLI

Tại Hugging Face, chúng tôi theo đuổi sứ mệnh dân chủ hóa Machine Learning chất lượng và tin tưởng vào giá trị của mã nguồn mở. Đó là lý do chúng tôi thiết kế 🤗 Datasets để bất kỳ ai cũng có thể chia sẻ một dataset với cộng đồng ML rộng lớn hơn. Hiện tại có hàng nghìn dataset bằng hơn 100 ngôn ngữ trên Hugging Face Hub, và đội ngũ Hugging Face luôn chào đón những đóng góp mới!

Các kho dữ liệu cung cấp các tính năng như:

  • Lưu trữ bộ dữ liệu miễn phí
  • Phiên bản hóa bộ dữ liệu
  • Lịch sử commit và các thay đổi
  • Metadata để dễ tìm kiếm
  • Thẻ dataset để tài liệu hóa, cấp phép, giới hạn, v.v.
  • Dataset Viewer

Hướng dẫn này sẽ cho bạn thấy cách chia sẻ một thư mục hoặc kho dữ liệu mà bất kỳ ai cũng có thể dễ dàng truy cập.

Thêm một bộ dữ liệu

Bạn có thể chia sẻ bộ dữ liệu của mình với cộng đồng thông qua một kho dữ liệu trên Hugging Face Hub. Nó cũng có thể là một bộ dữ liệu riêng tư nếu bạn muốn kiểm soát ai được quyền truy cập vào nó.

Trong kho dữ liệu, bạn có thể lưu trữ tất cả các tệp dữ liệu và cấu hình bộ dữ liệu của mình để xác định tệp nào thuộc phần chia (split) nào. Các định dạng sau được hỗ trợ: CSV, TSV, JSON, JSON lines, text, Parquet, Arrow, SQLite, WebDataset. Nhiều loại tệp nén cũng được hỗ trợ: GZ, BZ2, LZ4, LZMA hoặc ZSTD. Ví dụ, bộ dữ liệu của bạn có thể được tạo từ các tệp .json.gz.

Khi tải một tập dữ liệu từ Hub, tất cả các tệp ở các định dạng được hỗ trợ sẽ được tải, tuân theo cấu trúc kho.

Để biết thêm thông tin về cách tải một bộ dữ liệu từ Hub, hãy xem hướng dẫn tải một bộ dữ liệu từ Hub.

Tạo kho lưu trữ

Chia sẻ một bộ dữ liệu cộng đồng sẽ yêu cầu bạn tạo tài khoản trên hf.co nếu bạn chưa có. Bạn có thể trực tiếp tạo bộ dữ liệu mới từ tài khoản của mình trên Hugging Face Hub, nhưng hướng dẫn này sẽ cho bạn thấy cách tải lên một bộ dữ liệu từ terminal.

  1. Hãy đảm bảo bạn đang ở trong môi trường ảo nơi bạn đã cài đặt Datasets, và chạy lệnh sau:
hf auth login
  1. Đăng nhập bằng thông tin xác thực Hugging Face Hub của bạn và tạo một kho dữ liệu mới:
hf repos create my-cool-dataset --type dataset

Đặt tên tổ chức trước tên kho để tạo kho dưới tổ chức đó:

hf repos create your-org-name/my-cool-dataset --type dataset

Chuẩn bị tệp của bạn

Kiểm tra thư mục của bạn để đảm bảo các tệp bạn đang tải lên chỉ gồm:

  • Các tệp dữ liệu của bộ dữ liệu

  • Thẻ dữ liệu README.md

hf upload

Sử dụng lệnh hf upload để tải tệp lên Hub trực tiếp. Bên trong, lệnh này sử dụng các hàm trợ giúp upload_file và upload_folder được mô tả trong Hướng dẫn tải lên. Trong các ví dụ bên dưới, chúng ta sẽ đi qua các trường hợp sử dụng phổ biến nhất. Để xem danh sách đầy đủ các tùy chọn khả dụng, bạn có thể chạy:

>>> hf upload --help

Để biết thêm thông tin chung về hf, bạn có thể xem hướng dẫn CLI.

Tải lên một thư mục

Cách sử dụng mặc định của lệnh này là:

# Usage:  hf upload [dataset_repo_id] [local_path] [path_in_repo] --repo-type dataset

Để tải lên thư mục hiện tại ở gốc của kho, hãy sử dụng:

>>> hf upload my-cool-dataset . . --repo-type dataset
https://huggingface.co/datasets/Wauplin/my-cool-dataset/tree/main/

Nếu kho chưa tồn tại, nó sẽ được tạo tự động.

Bạn cũng có thể tải lên một thư mục cụ thể:

>>> hf upload my-cool-dataset ./data . --repo-type dataset
https://huggingface.co/datasetsWauplin/my-cool-dataset/tree/main/

Cuối cùng, bạn có thể tải lên một thư mục đến một vị trí cụ thể trên kho:

>>> hf upload my-cool-dataset ./path/to/curated/data /data/train --repo-type dataset
https://huggingface.co/datasetsWauplin/my-cool-dataset/tree/main/data/train

Tải lên một tệp

Bạn cũng có thể tải lên một tệp duy nhất bằng cách đặt local_path trỏ đến một tệp trên máy của bạn. Nếu đó là trường hợp, path_in_repo là tùy chọn và sẽ mặc định là tên tệp cục bộ của bạn:

>>> hf upload Wauplin/my-cool-dataset ./files/train.csv --repo-type dataset
https://huggingface.co/datasetsWauplin/my-cool-dataset/blob/main/train.csv

Nếu bạn muốn tải lên một tệp duy nhất vào một thư mục cụ thể, hãy đặt path_in_repo tương ứng:

>>> hf upload Wauplin/my-cool-dataset ./files/train.csv /data/train.csv --repo-type dataset
https://huggingface.co/datasetsWauplin/my-cool-dataset/blob/main/data/train.csv

Tải lên nhiều tệp

Để tải lên nhiều tệp từ một thư mục cùng lúc mà không tải lên toàn bộ thư mục, hãy sử dụng các mẫu --include và --exclude. Bạn cũng có thể kết hợp với tùy chọn --delete để xóa các tệp trên kho trong khi tải lên các tệp mới. Trong ví dụ bên dưới, chúng tôi đồng bộ hóa Space cục bộ bằng cách xóa các tệp từ xa và tải lên tất cả các tệp CSV:

# Sync local Space with Hub (upload new CSV files, delete removed files)
>>> hf upload Wauplin/my-cool-dataset --repo-type dataset --include="/data/*.csv" --delete="*" --commit-message="Sync local dataset with Hub"
...

Tải lên một tổ chức

Để tải nội dung lên một kho thuộc về một tổ chức thay vì một kho cá nhân, bạn phải chỉ định rõ điều này trong repo_id:

>>> hf upload MyCoolOrganization/my-cool-dataset . . --repo-type dataset
https://huggingface.co/datasetsMyCoolOrganization/my-cool-dataset/tree/main/

Tải lên một bản sửa đổi cụ thể

Mặc định, các tệp được tải lên nhánh main. Nếu bạn muốn tải tệp lên một nhánh hoặc tham chiếu khác, hãy sử dụng tùy chọn --revision:

# Upload files to a PR
hf upload bigcode/the-stack . . --repo-type dataset --revision refs/pr/104
...

Lưu ý: nếu revision không tồn tại và --create-pr không được đặt, một nhánh sẽ được tạo tự động từ nhánh main.

Tải lên và tạo một PR

Nếu bạn không có quyền đẩy lên một kho, bạn phải mở một PR và cho các tác giả biết về những thay đổi bạn muốn thực hiện. Điều này có thể được thực hiện bằng cách đặt tùy chọn --create-pr:

# Create a PR and upload the files to it
>>> hf upload bigcode/the-stack --repo-type dataset --revision refs/pr/104 --create-pr . .
https://huggingface.co/datasets/bigcode/the-stack/blob/refs%2Fpr%2F104/

Tải lên theo các khoảng thời gian đều đặn

Trong một số trường hợp, bạn có thể muốn đẩy các bản cập nhật định kỳ lên một kho. Ví dụ, điều này hữu ích nếu bộ dữ liệu của bạn đang tăng dần theo thời gian và bạn muốn tải lên thư mục dữ liệu mỗi 10 phút. Bạn có thể thực hiện điều này bằng cách sử dụng tùy chọn --every:

# Upload new logs every 10 minutes
hf upload my-cool-dynamic-dataset data/ --every=10

Chỉ định thông báo commit

Sử dụng --commit-message và --commit-description để đặt thông báo và mô tả tùy chỉnh cho commit của bạn thay vì thông báo mặc định

>>> hf upload Wauplin/my-cool-dataset ./data . --repo-type dataset --commit-message="Version 2" --commit-description="Train size: 4321. Check Dataset Viewer for more details."
...
https://huggingface.co/datasetsWauplin/my-cool-dataset/tree/main

Chỉ định một token

Để tải tệp lên, bạn phải sử dụng token. Mặc định, token được lưu cục bộ (dùng hf auth login) sẽ được sử dụng. Nếu bạn muốn xác thực một cách rõ ràng, hãy dùng tùy chọn --token:

>>> hf upload Wauplin/my-cool-dataset ./data . --repo-type dataset --token=hf_****
...
https://huggingface.co/datasetsWauplin/my-cool-data/tree/main

Chế độ im lặng

Mặc định, lệnh hf upload sẽ hiển thị chi tiết. Lệnh này sẽ in ra các thông tin như thông báo cảnh báo, thông tin về các tệp đã tải lên và thanh tiến trình. Nếu bạn muốn tắt toàn bộ những thông tin này, hãy sử dụng tùy chọn --quiet. Chỉ dòng cuối cùng (tức là URL của các tệp đã tải lên) sẽ được in ra. Điều này có thể hữu ích nếu bạn muốn truyền kết quả đầu ra sang một lệnh khác trong script.

>>> hf upload Wauplin/my-cool-dataset ./data . --repo-type dataset --quiet
https://huggingface.co/datasets/Wauplin/my-cool-dataset/tree/main

Chúc bạn vui vẻ!

Chúc mừng, bộ dữ liệu của bạn đã được tải lên Hugging Face Hub, nơi bất kỳ ai cũng có thể nạp nó chỉ bằng một dòng mã! 🥳

dataset = load_dataset("Wauplin/my-cool-dataset")

Nếu tập dữ liệu của bạn được hỗ trợ, nó cũng nên có Dataset Viewer để mọi người có thể khám phá nội dung của tập dữ liệu.

Cuối cùng, đừng quên làm phong phú thẻ dữ liệu (dataset card) để tài liệu hóa bộ dữ liệu của bạn và giúp nó dễ được tìm thấy! Xem hướng dẫn Tạo thẻ dữ liệu để biết thêm.

Update on GitHub