# Mulai Cepat

Quickstart ini ditujukan untuk pengembang yang siap langsung masuk ke kode dan melihat contoh cara mengintegrasikan 🤗 Datasets ke dalam alur kerja pelatihan model mereka. Jika Anda seorang pemula, kami merekomendasikan untuk memulai dengan [tutorial](./tutorial) kami, di mana Anda akan mendapatkan pengenalan yang lebih menyeluruh.

Setiap dataset bersifat unik, dan tergantung pada tugasnya, beberapa dataset mungkin memerlukan langkah tambahan untuk mempersiapkannya untuk pelatihan. Namun, Anda selalu dapat menggunakan alat 🤗 Datasets untuk memuat dan memproses dataset. Cara tercepat dan termudah untuk memulai adalah dengan memuat dataset yang sudah ada dari [Hugging Face Hub](https://huggingface.co/datasets). Ada ribuan dataset yang dapat dipilih, mencakup banyak tugas. Pilih jenis dataset yang ingin Anda kerjakan, dan mari kita mulai!

  
    <a class="!no-underline border dark:border-gray-700 p-5 rounded-lg shadow hover:shadow-lg" href="#audio"
    >
      
        Audio
      
      
        Resample dataset audio dan siapkan untuk model mengklasifikasikan jenis masalah perbankan yang dilaporkan oleh penelpon.
      
    
    <a class="!no-underline border dark:border-gray-700 p-5 rounded-lg shadow hover:shadow-lg" href="#vision"
    >
      
        Vision
      
      
        Terapkan augmentasi data pada dataset gambar dan siapkan untuk model yang mendiagnosis penyakit pada tanaman kacang.
      
    
    <a class="!no-underline border dark:border-gray-700 p-5 rounded-lg shadow hover:shadow-lg" href="#nlp"
    >
      
        NLP
      
      
        Tokenisasi dataset dan siapkan untuk model guna menentukan apakah sepasang kalimat memiliki makna yang sama.
      
    
  

> [!TIP]
> Lihat [Bab 5](https://huggingface.co/course/chapter5/1?fw=pt) dari kursus Hugging Face untuk mempelajari lebih lanjut tentang topik penting lainnya seperti memuat dataset jarak jauh atau lokal, alat untuk membersihkan dataset, dan membuat dataset Anda sendiri.

Mulai dengan menginstal 🤗 Datasets:

```bash
pip install datasets
```

🤗 Datasets juga mendukung format data audio dan gambar:

- Untuk bekerja dengan dataset audio, instal fitur [Audio](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Audio):

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

- Untuk bekerja dengan dataset gambar, instal fitur [Image](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Image):

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

Selain 🤗 Datasets, pastikan framework machine learning pilihan Anda terinstal:

  ```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/v5.2.0/id/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**. Selanjutnya, muat model [Wav2Vec2](https://huggingface.co/facebook/wav2vec2-base) pretrained dan feature extractor yang sesuai dari pustaka [🤗 Transformers](https://huggingface.co/transformers/). Sangat wajar jika Anda melihat peringatan setelah memuat model bahwa beberapa bobot tidak diinisialisasi. Hal ini diharapkan karena Anda memuat checkpoint model ini untuk pelatihan dengan tugas lain.

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

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

**3**. Kartu dataset [MInDS-14](https://huggingface.co/datasets/PolyAI/minds14) menunjukkan bahwa laju sampling adalah 8kHz, tetapi model Wav2Vec2 telah dipra-latih pada laju sampling 16kHZ. Anda perlu melakukan upsample pada kolom `audio` dengan fungsi [cast_column()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.cast_column) dan fitur [Audio](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Audio) agar sesuai dengan laju sampling model.

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

**4**. Buat fungsi untuk memproses praproses `array` audio dengan feature extractor, lalu memotong dan mengisi (padding) urutan menjadi tensor persegi panjang yang rapi. Hal terpenting yang perlu diingat adalah memanggil `array` audio di dalam feature extractor karena `array` - sinyal ucapan yang sebenarnya - adalah input model.

Setelah Anda memiliki fungsi pra-pemrosesan, gunakan fungsi [map()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.map) untuk mempercepat pemrosesan dengan menerapkan fungsi tersebut pada batch contoh dalam dataset.

```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**. Gunakan fungsi [rename_column()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.rename_column) untuk mengganti nama kolom `intent_class` menjadi `labels`, yang merupakan nama input yang diharapkan di [Wav2Vec2ForSequenceClassification](https://huggingface.co/docs/transformers/main/en/model_doc/wav2vec2#transformers.Wav2Vec2ForSequenceClassification):

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

**6**. Atur format dataset sesuai dengan framework machine learning yang Anda gunakan.

Gunakan fungsi [set_format()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.set_format) untuk mengatur format dataset menjadi `torch` dan tentukan kolom yang ingin diformat. Fungsi ini menerapkan format secara on-the-fly. Setelah dikonversi menjadi tensor PyTorch, bungkus dataset dalam [`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)
```

Gunakan metode `prepare_tf_dataset` dari 🤗 Transformers untuk menyiapkan dataset agar kompatibel dengan TensorFlow dan siap untuk melatih/menyesuaikan model, karena metode ini membungkus [Dataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset) HuggingFace menjadi `tf.data.Dataset` dengan kolasi dan pengelompokan, sehingga dataset tersebut dapat langsung diteruskan ke metode Keras seperti `fit()` tanpa modifikasi lebih lanjut.

```py
>>> import tensorflow as tf

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

**7**. Mulai pelatihan dengan framework machine learning Anda! Lihat [panduan klasifikasi audio](https://huggingface.co/docs/transformers/tasks/audio_classification) 🤗 Transformers untuk contoh end-to-end cara melatih model pada dataset audio.

## Vision

Dataset gambar dimuat dengan cara yang sama seperti dataset teks. Namun, alih-alih tokenizer, Anda memerlukan [feature extractor](https://huggingface.co/docs/transformers/main_classes/feature_extractor#feature-extractor) untuk memproses dataset. Penerapan data augmentation pada gambar adalah hal yang umum dalam computer vision untuk membuat model lebih robust terhadap overfitting. Anda bebas menggunakan library data augmentation apa pun yang Anda inginkan, dan kemudian Anda dapat menerapkan augmentasi tersebut dengan 🤗 Datasets. Dalam quickstart ini, Anda akan memuat dataset [Beans](https://huggingface.co/datasets/beans) dan menyiapkannya agar model dapat dilatih untuk mengidentifikasi penyakit dari gambar daun.

**1**. Muat dataset Beans dengan memberikan nama dataset dan split dataset ke fungsi [load_dataset()](/docs/datasets/v5.2.0/id/package_reference/loading_methods#datasets.load_dataset):

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

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

Sebagian besar model gambar bekerja dengan gambar RGB. Jika dataset Anda berisi gambar dalam mode lain, Anda dapat menggunakan fungsi [cast_column()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.cast_column) untuk mengatur mode menjadi RGB:

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

Dataset Beans hanya berisi gambar RGB, sehingga langkah ini tidak diperlukan di sini.

**2**. Sekarang Anda dapat menambahkan beberapa augmentasi data dengan pustaka apa pun ([Albumentations](https://albumentations.ai/), [imgaug](https://imgaug.readthedocs.io/en/latest/), [Kornia](https://kornia.readthedocs.io/en/latest/)) yang Anda sukai. Di sini, Anda akan menggunakan [torchvision](https://pytorch.org/vision/stable/transforms.html) untuk secara acak mengubah properti warna sebuah gambar:

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

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

**3**. Buat fungsi untuk menerapkan transform Anda ke dataset dan menghasilkan input model: `pixel_values`.

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

**4**. Gunakan fungsi [with_transform()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.with_transform) untuk menerapkan augmentasi data secara langsung:

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

**5**. Atur format dataset sesuai dengan framework machine learning yang Anda gunakan.

Bungkus dataset dalam [`torch.utils.data.DataLoader`](https://alband.github.io/doc_view/data.html?highlight=torch%20utils%20data%20dataloader#torch.utils.data.DataLoader). Anda juga perlu membuat fungsi collate untuk menggabungkan sampel menjadi batch:

```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)
```

Gunakan metode `prepare_tf_dataset` dari 🤗 Transformers untuk menyiapkan dataset agar kompatibel dengan TensorFlow dan siap untuk melatih/menyesuaikan model, karena metode ini membungkus [Dataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset) HuggingFace menjadi `tf.data.Dataset` dengan kolasi dan pengelompokan, sehingga dataset tersebut dapat langsung diteruskan ke metode Keras seperti `fit()` tanpa modifikasi lebih lanjut.

Sebelum memulai, pastikan Anda telah menginstal versi terbaru dari `albumentations` dan `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**. Mulai pelatihan dengan framework machine learning Anda! Lihat [panduan klasifikasi gambar](https://huggingface.co/docs/transformers/tasks/image_classification) 🤗 Transformers untuk contoh end-to-end cara melatih model pada dataset gambar.

## NLP

Teks perlu ditokenisasi menjadi token-token individual oleh [tokenizer](https://huggingface.co/docs/transformers/main_classes/tokenizer). Untuk quickstart, Anda akan memuat dataset pelatihan [Microsoft Research Paraphrase Corpus (MRPC)](https://huggingface.co/datasets/nyu-mll/glue/viewer/mrpc) untuk melatih model yang menentukan apakah sepasang kalimat memiliki makna yang sama.

**1**. Muat dataset MRPC dengan memberikan nama dataset, konfigurasi dataset (tidak semua dataset memiliki konfigurasi), dan split dataset ke fungsi [load_dataset()](/docs/datasets/v5.2.0/id/package_reference/loading_methods#datasets.load_dataset):

```py
>>> from datasets import load_dataset

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

**2**. Selanjutnya, muat model [BERT](https://huggingface.co/bert-base-uncased) pretrained dan tokenizer yang sesuai dari pustaka [🤗 Transformers](https://huggingface.co/transformers/). Sangat wajar jika Anda melihat peringatan setelah memuat model bahwa beberapa bobot tidak diinisialisasi. Hal ini diharapkan karena Anda memuat checkpoint model ini untuk pelatihan dengan tugas lain.

```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**. Buat fungsi untuk melakukan tokenisasi pada dataset, dan Anda juga harus memotong serta mengisi teks menjadi tensor persegi panjang yang rapi. Tokenizer menghasilkan tiga kolom baru dalam dataset: `input_ids`, `token_type_ids`, dan `attention_mask`. Ini adalah input model.

Gunakan fungsi [map()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.map) untuk mempercepat pemrosesan dengan menerapkan fungsi tokenisasi Anda pada batch contoh dalam dataset:

```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**. Ubah nama kolom `label` menjadi `labels`, yang merupakan nama input yang diharapkan di [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**. Atur format dataset sesuai dengan framework machine learning yang Anda gunakan.

Gunakan fungsi [with_format()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.with_format) untuk mengatur format dataset menjadi `torch` dan menentukan kolom yang ingin diformat. Fungsi ini menerapkan format secara langsung (on-the-fly). Setelah dikonversi menjadi tensor PyTorch, bungkus dataset dalam [`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)
```

Gunakan metode `prepare_tf_dataset` dari 🤗 Transformers untuk menyiapkan dataset agar kompatibel dengan TensorFlow dan siap untuk melatih/menyesuaikan model, karena metode ini membungkus [Dataset](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset) HuggingFace menjadi `tf.data.Dataset` dengan kolasi dan pengelompokan, sehingga dataset tersebut dapat langsung diteruskan ke metode Keras seperti `fit()` tanpa modifikasi lebih lanjut.

```py
>>> import tensorflow as tf

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

**6**. Mulai pelatihan dengan framework machine learning Anda! Lihat [panduan klasifikasi teks](https://huggingface.co/docs/transformers/tasks/sequence_classification) 🤗 Transformers untuk contoh end-to-end cara melatih model pada dataset teks.

## Langkah selanjutnya?

Ini melengkapi quickstart 🤗 Datasets! Anda dapat memuat dataset teks, audio, atau gambar apa pun dengan satu fungsi dan menyiapkannya untuk dilatih oleh model Anda.

Untuk langkah selanjutnya, lihat [panduan cara melakukan](./how_to) kami dan pelajari cara melakukan hal-hal yang lebih spesifik seperti memuat format dataset yang berbeda, menyelaraskan label, dan streaming dataset besar. Jika Anda tertarik untuk mempelajari lebih lanjut tentang konsep inti 🤗 Datasets, siapkan secangkir kopi dan baca [Panduan Konseptual](./about_arrow) kami!

