# クイックスタート

このクイックスタートは、コードにすぐに取り組み、🤗 Datasets をモデル学習ワークフローに統合する方法の例を確認したい開発者向けです。初心者の方は、より詳細な入門内容が得られる[チュートリアル](./tutorial)から始めることをお勧めします。

各データセットは固有のもので、タスクによっては学習用に準備するための追加の手順が必要な場合があります。ただし、🤗 Datasets のツールを使用してデータセットを読み込み、処理することは常に可能です。最も速く、簡単なスタート方法は、[Hugging Face Hub](https://huggingface.co/datasets) から既存のデータセットを読み込むことです。数多くのタスクにわたって、数千ものデータセットから選択できます。作業したいデータセットの種類を選択して、始めましょう!

  
    <a class="!no-underline border dark:border-gray-700 p-5 rounded-lg shadow hover:shadow-lg" href="#audio"
    >
      
        オーディオ
      
      
        音声データセットをリサンプリングし、話者が電話で問い合わせている銀行の問題の種類をモデルが分類できるように準備します。
      
    
    <a class="!no-underline border dark:border-gray-700 p-5 rounded-lg shadow hover:shadow-lg" href="#vision"
    >
      
        ビジョン
      
      
        画像データセットにデータ拡張を適用し、豆類の植物の病気を診断するモデルの学習に備えます。
      
    
    <a class="!no-underline border dark:border-gray-700 p-5 rounded-lg shadow hover:shadow-lg" href="#nlp"
    >
      
        NLP
      
      
        データセットをトークナイズし、モデルが文のペアが同じ意味を持つかどうかを判定できるように準備します。
      
    
  

> [!TIP]
> Hugging Face コースの[第5章](https://huggingface.co/course/chapter5/1?fw=pt)では、リモートまたはローカルのデータセットの読み込み、データセットのクリーニングに役立つツール、独自のデータセットの作成など、その他の重要なトピックについて詳しく学ぶことができます。

🤗 Datasetsのインストールから始めましょう:

```bash
pip install datasets
```

🤗 Datasetsは、音声データおよび画像データ形式にも対応しています:

- オーディオデータセットを扱うには、[Audio](/docs/datasets/main/ja/package_reference/main_classes#datasets.Audio)機能をインストールしてください:

  ```bash
  pip install datasets[audio]
  ```

- 画像データセットを扱うには、[Image](/docs/datasets/main/ja/package_reference/main_classes#datasets.Image)機能をインストールしてください:

  ```bash
  pip install datasets[vision]
  ```

🤗 Datasets 以外に、ご使用の機械学習フレームワークがインストールされていることを確認してください。

  ```bash pip install torch ```
  ```bash pip install tensorflow ```

## Audio

Audio datasets are loaded just like text datasets. However, an audio dataset is preprocessed a bit differently. Instead of a tokenizer, you'll need a [feature extractor](https://huggingface.co/docs/transformers/main_classes/feature_extractor#feature-extractor). An audio input may also require resampling its sampling rate to match the sampling rate of the pretrained model you're using. In this quickstart, you'll prepare the [MInDS-14](https://huggingface.co/datasets/PolyAI/minds14) dataset for a model train on and classify the banking issue a customer is having.

**1**. Load the MInDS-14 dataset by providing the [load_dataset()](/docs/datasets/main/ja/package_reference/loading_methods#datasets.load_dataset) function with the dataset name, dataset configuration (not all datasets will have a configuration), and a dataset split:

```py
>>> from datasets import load_dataset, Audio

>>> dataset = load_dataset("PolyAI/minds14", "en-US", split="train")
```

**2**. 次に、[🤗 Transformers](https://huggingface.co/transformers/) ライブラリから事前学習済みの [Wav2Vec2](https://huggingface.co/facebook/wav2vec2-base) モデルと、それに対応する特徴量抽出器を読み込みます。モデルを読み込んだ後、一部の重みが初期化されていないという警告が表示されることがありますが、これは完全に正常です。別のタスクでの学習のためにこのモデルのチェックポイントを読み込んでいるため、このように表示されるのが想定されています。

```py
>>> from transformers import AutoModelForAudioClassification, AutoFeatureExtractor

>>> model = AutoModelForAudioClassification.from_pretrained("facebook/wav2vec2-base")
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-base")
```

**3**. [MInDS-14](https://huggingface.co/datasets/PolyAI/minds14) のデータセットカードにはサンプリングレートが 8kHz と記載されていますが、Wav2Vec2 モデルは 16kHz のサンプリングレートで事前学習されています。モデルのサンプリングレートに合わせるため、[cast_column()](/docs/datasets/main/ja/package_reference/main_classes#datasets.Dataset.cast_column) 関数と [Audio](/docs/datasets/main/ja/package_reference/main_classes#datasets.Audio) 機能を使用して `audio` 列をアップサンプリングする必要があります。

```py
>>> dataset = dataset.cast_column("audio", Audio(sampling_rate=16000))
>>> dataset[0]["audio"]
<datasets.features._torchcodec.AudioDecoder object at 0x11642b6a0>
```

**4**. 特徴抽出器で音声`array`を前処理し、シーケンスを切り詰めたりパディングしたりして、整った長方形のテンソルにする関数を作成します。最も重要なのは、`array`（実際の音声信号）がモデルの入力であるため、特徴抽出器に音声`array`を渡すことです。

前処理関数が用意できたら、[map()](/docs/datasets/main/ja/package_reference/main_classes#datasets.Dataset.map)関数を使用して、データセット内の例のバッチにその関数を適用することで処理を高速化します。

```py
>>> def preprocess_function(examples):
...     audio_arrays = [x.get_all_samples().data for x in examples["audio"]]
...     inputs = feature_extractor(
...         audio_arrays,
...         sampling_rate=16000,
...         padding=True,
...         max_length=100000,
...         truncation=True,
...     )
...     return inputs

>>> dataset = dataset.map(preprocess_function, batched=True)
```

**5**. [rename_column()](/docs/datasets/main/ja/package_reference/main_classes#datasets.Dataset.rename_column)関数を使用して、`intent_class`列を`labels`に名前変更します。`labels`は、[Wav2Vec2ForSequenceClassification](https://huggingface.co/docs/transformers/main/en/model_doc/wav2vec2#transformers.Wav2Vec2ForSequenceClassification)で期待される入力名です。

```py
>>> dataset = dataset.rename_column("intent_class", "labels")
```

**6**. 使用している機械学習フレームワークに合わせて、データセットの形式を設定します。

[set_format()](/docs/datasets/main/ja/package_reference/main_classes#datasets.Dataset.set_format)関数を使用して、データセットの形式を`torch`に設定し、フォーマットしたい列を指定します。この関数は、オンザフライでフォーマットを適用します。PyTorchテンソルに変換した後、データセットを[`torch.utils.data.DataLoader`](https://alband.github.io/doc_view/data.html?highlight=torch%20utils%20data%20dataloader#torch.utils.data.DataLoader)でラップします:

```py
>>> from torch.utils.data import DataLoader

>>> dataset.set_format(type="torch", columns=["input_values", "labels"])
>>> dataloader = DataLoader(dataset, batch_size=4)
```

🤗 Transformers の `prepare_tf_dataset` メソッドを使用して、TensorFlow 互換のデータセットを準備し、モデルの学習/ファインチューニングに備えます。このメソッドは、HuggingFace の [Dataset](/docs/datasets/main/ja/package_reference/main_classes#datasets.Dataset) をコラレーションとバッチングを施した `tf.data.Dataset` としてラップするため、`fit()` などの Keras メソッドに追加の修正なしで直接渡すことができます。

```py
>>> import tensorflow as tf

>>> tf_dataset = model.prepare_tf_dataset(
...     dataset,
...     batch_size=4,
...     shuffle=True,
... )
```

**7**. マシンラーニングフレームワークでトレーニングを開始しましょう！🤗 Transformers の [音声分類ガイド](https://huggingface.co/docs/transformers/tasks/audio_classification) をご覧ください。音声データセットでモデルをトレーニングするエンドツーエンドの例が紹介されています。

## ビジョン

画像データセットは、テキストデータセットと同様に読み込まれます。ただし、トークナイザーの代わりに、データセットの前処理には[フィーチャーエクストラクター](https://huggingface.co/docs/transformers/main_classes/feature_extractor#feature-extractor)が必要です。コンピュータビジョンでは、モデルの過学習に対する頑健性を高めるために、画像にデータ拡張を適用することが一般的です。お好みのデータ拡張ライブラリを使用し、その後、🤗 Datasets で拡張を適用できます。このクイックスタートでは、[Beans](https://huggingface.co/datasets/beans)データセットを読み込み、葉の画像から病気を識別するためにモデルが学習できるよう準備します。

**1**. データセット名とデータセットの分割を指定して、[load_dataset()](/docs/datasets/main/ja/package_reference/loading_methods#datasets.load_dataset) 関数に渡すことで、Beans データセットを読み込みます:

```py
>>> from datasets import load_dataset, Image

>>> dataset = load_dataset("AI-Lab-Makerere/beans", split="train")
```

ほとんどの画像モデルはRGB画像で動作します。データセットに異なるモードの画像が含まれている場合は、[cast_column()](/docs/datasets/main/ja/package_reference/main_classes#datasets.Dataset.cast_column)関数を使用してモードをRGBに設定できます:

```py
>>> dataset = dataset.cast_column("image", Image(mode="RGB"))
```

BeansデータセットにはRGB画像のみが含まれているため、ここではこの手順は不要です。

**2**. 次に、お好みのライブラリ（[Albumentations](https://albumentations.ai/)、[imgaug](https://imgaug.readthedocs.io/en/latest/)、[Kornia](https://kornia.readthedocs.io/en/latest/)）でデータ拡張を追加できます。ここでは、[torchvision](https://pytorch.org/vision/stable/transforms.html)を使用して、画像の色特性をランダムに変更します。

```py
>>> from torchvision.transforms import Compose, ColorJitter, ToTensor

>>> jitter = Compose(
...     [ColorJitter(brightness=0.5, hue=0.5), ToTensor()]
... )
```

**3**. データセットにトランスフォームを適用し、モデルの入力`pixel_values`を生成する関数を作成します。

```python
>>> def transforms(examples):
...     examples["pixel_values"] = [jitter(image.convert("RGB")) for image in examples["image"]]
...     return examples
```

**4**. [with_transform()](/docs/datasets/main/ja/package_reference/main_classes#datasets.Dataset.with_transform) 関数を使用して、データ拡張をオンザフライで適用します:

```py
>>> dataset = dataset.with_transform(transforms)
```

**5**. 使用している機械学習フレームワークに合わせて、データセットの形式を設定します。

[`torch.utils.data.DataLoader`](https://alband.github.io/doc_view/data.html?highlight=torch%20utils%20data%20dataloader#torch.utils.data.DataLoader)でデータセットをラップします。また、サンプルをバッチにまとめるために、collate関数を作成する必要があります:

```py
>>> from torch.utils.data import DataLoader

>>> def collate_fn(examples):
...     images = []
...     labels = []
...     for example in examples:
...         images.append((example["pixel_values"]))
...         labels.append(example["labels"])
...
...     pixel_values = torch.stack(images)
...     labels = torch.tensor(labels)
...     return {"pixel_values": pixel_values, "labels": labels}
>>> dataloader = DataLoader(dataset, collate_fn=collate_fn, batch_size=4)
```

🤗 Transformers の `prepare_tf_dataset` メソッドを使用して、TensorFlow 互換のデータセットを準備し、モデルの学習/ファインチューニングに備えます。このメソッドは、HuggingFace の [Dataset](/docs/datasets/main/ja/package_reference/main_classes#datasets.Dataset) をコラレーションとバッチングを施した `tf.data.Dataset` としてラップするため、`fit()` などの Keras メソッドに追加の修正なしで直接渡すことができます。

開始する前に、`albumentations`と`cv2`の最新バージョンがインストールされていることを確認してください。

```bash
pip install -U albumentations opencv-python
```

```py
>>> import albumentations
>>> import numpy as np

>>> transform = albumentations.Compose([
...     albumentations.RandomCrop(width=256, height=256),
...     albumentations.HorizontalFlip(p=0.5),
...     albumentations.RandomBrightnessContrast(p=0.2),
... ])

>>> def transforms(examples):
...     examples["pixel_values"] = [
...         transform(image=np.array(image))["image"] for image in examples["image"]
...     ]
...     return examples

>>> dataset.set_transform(transforms)
>>> tf_dataset = model.prepare_tf_dataset(
...     dataset,
...     batch_size=4,
...     shuffle=True,
... )
```

**6**. 機械学習フレームワークでトレーニングを開始しましょう！🤗 Transformers の [画像分類ガイド](https://huggingface.co/docs/transformers/tasks/image_classification) をご覧ください。画像データセットでモデルをトレーニングするエンドツーエンドの例が紹介されています。

## NLP

テキストは、[tokenizer](https://huggingface.co/docs/transformers/main_classes/tokenizer) によって個々のトークンにトークナイズする必要があります。クイックスタートでは、文のペアが同じ意味を持つかどうかを判定するモデルを訓練するために、[Microsoft Research Paraphrase Corpus (MRPC)](https://huggingface.co/datasets/nyu-mll/glue/viewer/mrpc) の訓練データセットを読み込みます。

**1**. [load_dataset()](/docs/datasets/main/ja/package_reference/loading_methods#datasets.load_dataset) 関数に、データセット名、データセットの構成（すべてのデータセットに構成があるとは限りません）、およびデータセットの分割を指定して、MRPC データセットを読み込みます:

```py
>>> from datasets import load_dataset

>>> dataset = load_dataset("nyu-mll/glue", "mrpc", split="train")
```

**2**. 次に、[🤗 Transformers](https://huggingface.co/transformers/) ライブラリから事前学習済みの[BERT](https://huggingface.co/bert-base-uncased)モデルと対応するトークナイザーを読み込みます。モデルを読み込んだ後、一部の重みが初期化されていないという警告が表示されることがありますが、これは完全に正常です。別のタスクでの学習のためにこのモデルのチェックポイントを読み込んでいるため、このように予想される動作です。

```py
>>> from transformers import AutoModelForSequenceClassification, AutoTokenizer

>>> model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
===PT-TF-SPLIT===
>>> from transformers import TFAutoModelForSequenceClassification, AutoTokenizer

>>> model = TFAutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
```

**3**. データセットをトークナイズする関数を作成します。また、テキストを整った長方形のテンソルに切り詰め（truncate）およびパディング（pad）する必要があります。トークナイザーは、データセットに`input_ids`、`token_type_ids`、`attention_mask`という3つの新しい列を生成します。これらはモデルの入力です。

[map()](/docs/datasets/main/ja/package_reference/main_classes#datasets.Dataset.map)関数を使用して、データセットの例のバッチにトークナイゼーション関数を適用することで、処理を高速化します:

```py
>>> def encode(examples):
...     return tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, padding="max_length")

>>> dataset = dataset.map(encode, batched=True)
>>> dataset[0]
{'sentence1': 'Amrozi accused his brother , whom he called " the witness " , of deliberately distorting his evidence .',
'sentence2': 'Referring to him as only " the witness " , Amrozi accused his brother of deliberately distorting his evidence .',
'label': 1,
'idx': 0,
'input_ids': [  101,  7277,  2180,  5303,  4806,  1117,  1711,   117,  2292, 1119,  1270,   107,  1103,  7737,   107,   117,  1104,  9938, 4267, 12223, 21811,  1117,  2554,   119,   102, 11336,  6732, 3384,  1106,  1140,  1112,  1178,   107,  1103,  7737,   107, 117,  7277,  2180,  5303,  4806,  1117,  1711,  1104,  9938, 4267, 12223, 21811,  1117,  2554,   119,   102, 0, 0, ...],
'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, ...],
'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, ...]}
```

**4**. `label` 列を `labels` に変更します。[BertForSequenceClassification](https://huggingface.co/docs/transformers/main/en/model_doc/bert#transformers.BertForSequenceClassification) で期待される入力名です:

```py
>>> dataset = dataset.map(lambda examples: {"labels": examples["label"]}, batched=True)
```

**5**. 使用している機械学習フレームワークに合わせて、データセットの形式を設定します。

[with_format()](/docs/datasets/main/ja/package_reference/main_classes#datasets.Dataset.with_format) 関数を使用して、データセットのフォーマットを `torch` に設定し、フォーマット対象とする列を指定します。この関数は、オンザフライでフォーマットを適用します。PyTorch テンソルに変換した後、データセットを [`torch.utils.data.DataLoader`](https://alband.github.io/doc_view/data.html?highlight=torch%20utils%20data%20dataloader#torch.utils.data.DataLoader) でラップします:

```py
>>> import torch

>>> dataset = dataset.select_columns(["input_ids", "token_type_ids", "attention_mask", "labels"])
>>> dataset = dataset.with_format(type="torch")
>>> dataloader = torch.utils.data.DataLoader(dataset, batch_size=32)
```

🤗 Transformers の `prepare_tf_dataset` メソッドを使用して、TensorFlow 互換のデータセットを準備し、モデルの学習/ファインチューニングに備えます。このメソッドは、HuggingFace の [Dataset](/docs/datasets/main/ja/package_reference/main_classes#datasets.Dataset) をコラレーションとバッチングを施した `tf.data.Dataset` としてラップするため、`fit()` などの Keras メソッドに追加の修正なしで直接渡すことができます。

```py
>>> import tensorflow as tf

>>> tf_dataset = model.prepare_tf_dataset(
...     dataset,
...     batch_size=4,
...     shuffle=True,
... )
```

**6**. 機械学習フレームワークでトレーニングを開始しましょう！テキストデータセットでモデルをトレーニングする方法のエンドツーエンドの例については、🤗 Transformers の[テキスト分類ガイド](https://huggingface.co/docs/transformers/tasks/sequence_classification)をご覧ください。

## 次に何をするか？

これで🤗 Datasetsのクイックスタートは完了です。テキスト、音声、画像のいずれのデータセットも、単一の関数で読み込み、モデルの学習にすぐに使える状態にできます。

For your next steps, take a look at our [How-to guides](./how_to) and learn how to do more specific things like loading different dataset formats, aligning labels, and streaming large datasets. If you're interested in learning more about 🤗 Datasets core concepts, grab a cup of coffee and read our [Conceptual Guides](./about_arrow)!

