Datasets documentation
Общий доступ к набору данных с помощью CLI
Общий доступ к набору данных с помощью CLI
В Hugging Face мы стремимся сделать качественный Machine Learning доступным каждому и верим в ценность open source. Именно поэтому мы создали 🤗 Datasets, чтобы любой мог поделиться датасетом с сообществом ML. Сейчас в Hugging Face Hub доступны тысячи датасетов на более чем 100 языках, и команда Hugging Face всегда рада новым вкладом!
Репозитории наборов данных предлагают такие функции, как:
- Бесплатное хостинг-хранилище для наборов данных
- Версионирование датасетов
- История коммитов и диффы
- Метаданные для обнаружения
- Карточки датасетов для документации, лицензирования, ограничений и т. д.
- Просмотрщик наборов данных
В этом руководстве показано, как поделиться папкой или репозиторием с набором данных, чтобы любой мог легко к ним получить доступ.
Добавление набора данных
Вы можете поделиться своим набором данных с сообществом, создав репозиторий датасета на Hugging Face Hub. При необходимости вы можете сделать датасет приватным, чтобы контролировать, кто имеет к нему доступ.
В репозитории датасета можно размещать все файлы данных и настроить датасет, чтобы определить, какой файл относится к какому сплиту.
Поддерживаются следующие форматы: CSV, TSV, JSON, JSON lines, text, Parquet, Arrow, SQLite, WebDataset.
Также поддерживаются многие типы сжатых файлов: GZ, BZ2, LZ4, LZMA или ZSTD.
Например, ваш датасет может состоять из файлов .json.gz.
При загрузке набора данных из Hub загружаются все файлы в поддерживаемых форматах, следуя структуре репозитория.
Для получения дополнительной информации о загрузке набора данных из Hub обратитесь к учебнику загрузка набора данных из Hub.
Создать репозиторий
Для публикации набора данных сообщества вам потребуется создать аккаунт на hf.co, если у вас его ещё нет. Вы можете напрямую создать новый репозиторий набора данных из своего аккаунта на Hugging Face Hub, но в этом руководстве показано, как загрузить набор данных из терминала.
- Убедитесь, что вы находитесь в виртуальном окружении, в котором установили Datasets, и выполните следующую команду:
hf auth login- Войдите, используя свои учётные данные Hugging Face Hub, и создайте новый репозиторий датасета:
hf repos create my-cool-dataset --type datasetДобавьте префикс с названием организации перед именем репозитория, чтобы создать его в рамках этой организации:
hf repos create your-org-name/my-cool-dataset --type datasetПодготовьте файлы
Проверьте содержимое каталога, чтобы убедиться, что вы загружаете только следующие файлы:
Файлы данных набора данных
Карточка датасета
README.md
hf upload
Используйте команду hf upload для прямой загрузки файлов в Hub. Внутри она использует те же помощники upload_file и upload_folder, которые описаны в руководстве по загрузке. В примерах ниже мы рассмотрим наиболее распространённые сценарии использования. Чтобы получить полный список доступных опций, выполните:
>>> hf upload --helpБолее общую информацию о hf можно найти в руководстве по CLI.
Загрузка всей папки
По умолчанию эта команда используется следующим образом:
# Usage: hf upload [dataset_repo_id] [local_path] [path_in_repo] --repo-type datasetЧтобы загрузить текущий каталог в корень репозитория, используйте:
>>> hf upload my-cool-dataset . . --repo-type dataset
https://huggingface.co/datasets/Wauplin/my-cool-dataset/tree/main/Если репозиторий ещё не существует, он будет создан автоматически.
Вы также можете загрузить конкретную папку:
>>> hf upload my-cool-dataset ./data . --repo-type dataset
https://huggingface.co/datasetsWauplin/my-cool-dataset/tree/main/Наконец, вы можете загрузить папку в конкретное место в репозитории:
>>> 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Загрузка одного файла
Вы также можете загрузить один файл, указав в local_path путь к файлу на вашем компьютере. В этом случае path_in_repo является необязательным и по умолчанию принимает значение имени локального файла:
>>> hf upload Wauplin/my-cool-dataset ./files/train.csv --repo-type dataset
https://huggingface.co/datasetsWauplin/my-cool-dataset/blob/main/train.csvЕсли вы хотите загрузить один файл в конкретный каталог, установите path_in_repo соответствующим образом:
>>> 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Загрузка нескольких файлов
Чтобы загрузить несколько файлов из папки сразу, не загружая всю папку целиком, используйте паттерны --include и --exclude. Их также можно комбинировать с опцией --delete, чтобы удалять файлы в репозитории во время загрузки новых. В примере ниже мы синхронизируем локальный Space, удаляя удалённые файлы и загружая все файлы 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"
...Загрузка в организацию
Чтобы загрузить содержимое в репозиторий, принадлежащий организации, а не личный репозиторий, необходимо явно указать это в repo_id:
>>> hf upload MyCoolOrganization/my-cool-dataset . . --repo-type dataset
https://huggingface.co/datasetsMyCoolOrganization/my-cool-dataset/tree/main/Загрузка в конкретную ревизию
По умолчанию файлы загружаются в ветку main. Если вы хотите загрузить файлы в другую ветку или ссылку, используйте опцию --revision:
# Upload files to a PR
hf upload bigcode/the-stack . . --repo-type dataset --revision refs/pr/104
...Примечание: если revision не существует и --create-pr не задан, ветка будет создана автоматически из ветки main.
Загрузить и создать PR
Если у вас нет прав на отправку в репозиторий, вам необходимо открыть PR и сообщить авторам о желаемых изменениях. Это можно сделать, установив опцию --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/Загрузка через равные промежутки времени
В некоторых случаях может потребоваться отправлять регулярные обновления в репозиторий. Например, это полезно, если ваш набор данных со временем увеличивается и вы хотите загружать папку с данными каждые 10 минут. Вы можете сделать это с помощью опции --every:
# Upload new logs every 10 minutes
hf upload my-cool-dynamic-dataset data/ --every=10Укажите сообщение коммита
Используйте --commit-message и --commit-description, чтобы задать собственное сообщение и описание для коммита вместо значений по умолчанию
>>> 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Укажите токен
Для загрузки файлов необходимо использовать токен. По умолчанию используется токен, сохранённый локально (с помощью hf auth login). Если вы хотите выполнить аутентификацию явно, используйте опцию --token:
>>> hf upload Wauplin/my-cool-dataset ./data . --repo-type dataset --token=hf_****
...
https://huggingface.co/datasetsWauplin/my-cool-data/tree/mainТихий режим
По умолчанию команда hf upload выводит подробную информацию: предупреждения, сведения о загруженных файлах и индикаторы прогресса. Чтобы отключить весь этот вывод, используйте параметр --quiet. В этом случае печатается только последняя строка, то есть URL загруженных файлов. Это может быть полезно, если вы хотите передать вывод другой команде в скрипте.
>>> hf upload Wauplin/my-cool-dataset ./data . --repo-type dataset --quiet
https://huggingface.co/datasets/Wauplin/my-cool-dataset/tree/mainПриятного использования!
Поздравляем, ваш датасет теперь загружен в Hugging Face Hub, и любой может загрузить его одной строкой кода! 🥳
dataset = load_dataset("Wauplin/my-cool-dataset")Если ваш набор данных поддерживается, для него также должен быть доступен Dataset Viewer, чтобы все могли ознакомиться с его содержимым.
Наконец, не забудьте дополнить карточку датасета, чтобы задокументировать его и сделать доступным для поиска! Подробнее читайте в руководстве Create a dataset card.
Update on GitHub