# CLIを使用してデータセットを共有する

Hugging Faceでは、良質なMachine Learningの民主化をミッションに掲げ、オープンソースの価値を信じています。そのため、🤗 Datasetsは、誰でもより広いMLコミュニティとデータセットを共有できるように設計されました。現在、Hugging Face Hubには100以上の言語で数千ものデータセットが公開されており、Hugging Faceチームは常に新しい貢献を歓迎しています！

Datasetリポジトリには、以下のような機能があります:

- 無料のデータセットホスティング
- Datasetのバージョン管理
- コミット履歴と差分
- 検索性のためのメタデータ
- ドキュメント、ライセンス、制限事項などのためのDataset cards
- [Dataset Viewer](https://huggingface.co/docs/hub/datasets-viewer)

このガイドでは、誰でも簡単にアクセスできるデータセットのフォルダまたはリポジトリを共有する方法を示します。

## データセットを追加する

Hugging Face Hub上のデータセットリポジトリを使用して、コミュニティにデータセットを共有できます。アクセス権を管理したい場合は、プライベートなデータセットとしても利用できます。

データセットのリポジトリでは、すべてのデータファイルをホストし、[データセットを設定](./repository_structure#define-your-splits-and-subsets-in-yaml)して、どのファイルをどのスプリットに割り当てるかを定義できます。サポートされている形式は、CSV、TSV、JSON、JSON lines、テキスト、Parquet、Arrow、SQLite、WebDatasetです。多くの種類の圧縮ファイル形式もサポートされています: GZ、BZ2、LZ4、LZMA、またはZSTD。例えば、データセットは`.json.gz`ファイルで構成できます。

Hubからデータセットを読み込む場合、[リポジトリの構造](./repository_structure)に従って、サポートされている形式のすべてのファイルが読み込まれます。

Hubからデータセットを読み込む方法の詳細については、[Hubからデータセットを読み込む](./load_hub)チュートリアルをご覧ください。

### リポジトリを作成する

コミュニティのデータセットを共有するには、まだアカウントをお持ちでない場合は、[hf.co](https://huggingface.co/join)でアカウントを作成する必要があります。Hugging Face Hubのアカウントから直接[新しいデータセットリポジトリ](https://huggingface.co/login?next=%2Fnew-dataset)を作成することもできますが、このガイドでは、ターミナルからデータセットをアップロードする方法を示します。

1. Datasetsをインストールした仮想環境にいることを確認し、以下のコマンドを実行してください。

```
hf auth login
```

2. 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 に直接アップロードできます。内部では、[アップロードガイド](https://huggingface.co/docs/huggingface_hub/guides/upload)で説明されているのと同じ `upload_file` および `upload_folder` ヘルパーを使用しています。以下の例では、最も一般的なユースケースを順に説明します。利用可能なオプションの完全なリストを確認するには、次のコマンドを実行できます。

```bash
>>> hf upload --help
```

`hf` に関するより一般的な情報については、[CLI ガイド](https://huggingface.co/docs/huggingface_hub/guides/cli)をご参照ください。

### フォルダ全体をアップロードする

このコマンドのデフォルトの使い方は以下の通りです:

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

リポジトリのルートに現在のディレクトリをアップロードするには、以下を使用します:

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

> [!TIP]
> リポジトリがまだ存在しない場合、自動的に作成されます。

特定のフォルダをアップロードすることもできます:

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

最後に、リポジトリ内の特定の宛先にフォルダをアップロードできます。

```bash
>>> 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`は省略可能で、デフォルトではローカルファイルの名前が使用されます。

```bash
>>> 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`を適切に設定してください。

```bash
>>> 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` オプションと組み合わせることで、新しいファイルをアップロードしながらリポジトリ上のファイルを削除することもできます。以下の例では、リモートファイルを削除し、すべての CSV ファイルをアップロードしてローカルの Space を同期しています。

```bash
# 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`で明示的に指定する必要があります:

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

### 特定のリビジョンにアップロード

デフォルトでは、ファイルは`main`ブランチにアップロードされます。別のブランチやリファレンスにファイルをアップロードする場合は、`--revision`オプションを使用します:

```bash
# 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`オプションを設定することで実行できます。

```bash
# 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`オプションを使用してこれを行うことができます。

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

### コミットメッセージを指定します

デフォルトのメッセージではなく、コミット用のカスタムメッセージと説明を設定するには、`--commit-message` と `--commit-description` を使用します。

```bash
>>> 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`オプションを使用してください。

```bash
>>> 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）のみが表示されます。スクリプト内で出力を別のコマンドに渡す際に便利です。

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

## お楽しみください！

おめでとうございます。あなたのデータセットはHugging Face Hubにアップロードされ、今後は1行のコードで誰でも読み込むことができるようになりました！🥳

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

データセットがサポートされている場合、すべての人がデータセットの内容を探索できるよう、[Dataset Viewer](https://huggingface.co/docs/hub/datasets-viewer)も用意されるはずです。

最後に、データセットを文書化し、検索可能にするために、データセットカードを充実させることを忘れないでください。詳細については、[データセットカードの作成](dataset_card)ガイドをご覧ください。

