# Bắt đầu nhanh

Hướng dẫn nhanh này dành cho các nhà phát triển sẵn sàng đi sâu vào mã và xem một ví dụ về cách tích hợp 🤗 Datasets vào quy trình huấn luyện mô hình của họ. Nếu bạn là người mới bắt đầu, chúng tôi khuyên bạn nên bắt đầu với các [hướng dẫn](./tutorial) của chúng tôi, nơi bạn sẽ có được một phần giới thiệu chi tiết hơn.

Mỗi dataset đều có nét riêng, và tùy thuộc vào tác vụ, một số dataset có thể cần thêm các bước để chuẩn bị cho việc huấn luyện. Tuy nhiên, bạn luôn có thể sử dụng các công cụ của 🤗 Datasets để tải và xử lý dataset. Cách nhanh và dễ nhất để bắt đầu là tải một dataset có sẵn từ [Hugging Face Hub](https://huggingface.co/datasets). Có hàng nghìn dataset để bạn lựa chọn, trải rộng trên nhiều tác vụ. Hãy chọn loại dataset bạn muốn làm việc và bắt đầu thôi!

  
    <a class="!no-underline border dark:border-gray-700 p-5 rounded-lg shadow hover:shadow-lg" href="#audio"
    >
      
        Âm thanh
      
      
        Tái lấy mẫu một tập dữ liệu âm thanh và chuẩn bị sẵn sàng cho một mô hình để phân loại loại vấn đề ngân hàng mà người gọi đang liên hệ.
      
    
    <a class="!no-underline border dark:border-gray-700 p-5 rounded-lg shadow hover:shadow-lg" href="#vision"
    >
      
        Thị giác
      
      
        Áp dụng tăng cường dữ liệu cho một tập dữ liệu ảnh và chuẩn bị nó để một mô hình chẩn đoán bệnh trên cây đậu.
      
    
    <a class="!no-underline border dark:border-gray-700 p-5 rounded-lg shadow hover:shadow-lg" href="#nlp"
    >
      
        NLP
      
      
        Phân tách token một tập dữ liệu và chuẩn bị nó cho một mô hình để xác định xem một cặp câu có cùng ý nghĩa hay không.
      
    
  

> [!TIP]
> Xem [Chương 5](https://huggingface.co/course/chapter5/1?fw=pt) của khóa học Hugging Face để tìm hiểu thêm về các chủ đề quan trọng khác như tải bộ dữ liệu từ xa hoặc cục bộ, các công cụ để làm sạch bộ dữ liệu và tạo bộ dữ liệu của riêng bạn.

Bắt đầu bằng cách cài đặt 🤗 Datasets:

```bash
pip install datasets
```

🤗 Datasets cũng hỗ trợ các định dạng dữ liệu âm thanh và hình ảnh:

- Để làm việc với các bộ dữ liệu âm thanh, hãy cài đặt tính năng [Audio](/docs/datasets/v5.2.0/vi/package_reference/main_classes#datasets.Audio):

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

- Để làm việc với các bộ dữ liệu ảnh, hãy cài đặt tính năng [Image](/docs/datasets/v5.2.0/vi/package_reference/main_classes#datasets.Image):

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

Ngoài 🤗 Datasets, hãy đảm bảo rằng framework machine learning ưa thích của bạn đã được cài đặt:

  ```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/vi/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**. Tiếp theo, tải một mô hình [Wav2Vec2](https://huggingface.co/facebook/wav2vec2-base) đã được huấn luyện trước cùng bộ trích xuất đặc trưng tương ứng từ thư viện [🤗 Transformers](https://huggingface.co/transformers/). Hoàn toàn bình thường nếu bạn thấy cảnh báo về việc một số trọng số chưa được khởi tạo sau khi tải mô hình. Điều này là dự kiến vì bạn đang tải điểm kiểm tra của mô hình này để huấn luyện cho một tác vụ khác.

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

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

**3**. Thẻ dữ liệu của bộ dữ liệu [MInDS-14](https://huggingface.co/datasets/PolyAI/minds14) cho thấy tần số lấy mẫu là 8kHz, nhưng mô hình Wav2Vec2 được tiền huấn luyện với tần số lấy mẫu 16kHz. Bạn sẽ cần tăng tần số lấy mẫu của cột `audio` bằng hàm [cast_column()](/docs/datasets/v5.2.0/vi/package_reference/main_classes#datasets.Dataset.cast_column) và đặc trưng [Audio](/docs/datasets/v5.2.0/vi/package_reference/main_classes#datasets.Audio) để khớp với tần số lấy mẫu của mô hình.

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

**4**. Tạo một hàm để tiền xử lý `array` âm thanh bằng feature extractor, sau đó cắt ngắn và đệm các chuỗi thành các tensor chữ nhật gọn gàng. Điều quan trọng nhất cần nhớ là phải gọi `array` âm thanh trong feature extractor vì `array` - tín hiệu giọng nói thực tế - chính là đầu vào của mô hình.

Khi bạn đã có một hàm tiền xử lý, hãy sử dụng hàm [map()](/docs/datasets/v5.2.0/vi/package_reference/main_classes#datasets.Dataset.map) để tăng tốc độ xử lý bằng cách áp dụng hàm đó lên các lô ví dụ trong bộ dữ liệu.

```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**. Sử dụng hàm [rename_column()](/docs/datasets/v5.2.0/vi/package_reference/main_classes#datasets.Dataset.rename_column) để đổi tên cột `intent_class` thành `labels`, đây là tên đầu vào mong đợi trong [Wav2Vec2ForSequenceClassification](https://huggingface.co/docs/transformers/main/en/model_doc/wav2vec2#transformers.Wav2Vec2ForSequenceClassification):

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

**6**. Đặt định dạng bộ dữ liệu theo khung máy học bạn đang sử dụng.

Sử dụng hàm [set_format()](/docs/datasets/v5.2.0/vi/package_reference/main_classes#datasets.Dataset.set_format) để đặt định dạng bộ dữ liệu thành `torch` và chỉ định các cột bạn muốn định dạng. Hàm này áp dụng định dạng theo thời gian thực. Sau khi chuyển đổi thành tensor PyTorch, bọc bộ dữ liệu trong [`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)
```

Sử dụng phương thức `prepare_tf_dataset` từ 🤗 Transformers để chuẩn bị bộ dữ liệu sao cho tương thích với TensorFlow và sẵn sàng để huấn luyện/điều chỉnh mô hình, vì nó bọc một [Dataset](/docs/datasets/v5.2.0/vi/package_reference/main_classes#datasets.Dataset) của HuggingFace thành một `tf.data.Dataset` với collation và batching, cho phép truyền trực tiếp vào các phương thức Keras như `fit()` mà không cần chỉnh sửa thêm.

```py
>>> import tensorflow as tf

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

**7**. Bắt đầu huấn luyện với framework machine learning của bạn! Xem hướng dẫn [phân loại âm thanh](https://huggingface.co/docs/transformers/tasks/audio_classification) của 🤗 Transformers để có ví dụ end-to-end về cách huấn luyện mô hình trên một tập dữ liệu âm thanh.

## Thị giác

Bộ dữ liệu ảnh được nạp giống như bộ dữ liệu văn bản. Tuy nhiên, thay vì một tokenizer, bạn sẽ cần một [feature extractor](https://huggingface.co/docs/transformers/main_classes/feature_extractor#feature-extractor) để tiền xử lý bộ dữ liệu. Việc áp dụng tăng cường dữ liệu (data augmentation) lên ảnh là phổ biến trong thị giác máy tính nhằm giúp mô hình chống lại overfitting tốt hơn. Bạn có thể tự do sử dụng bất kỳ thư viện tăng cường dữ liệu nào, sau đó áp dụng các phép tăng cường bằng 🤗 Datasets. Trong phần khởi động nhanh này, bạn sẽ nạp bộ dữ liệu [Beans](https://huggingface.co/datasets/beans) và chuẩn bị nó để mô hình huấn luyện và nhận diện bệnh từ các ảnh lá cây.

**1**. Nạp bộ dữ liệu Beans bằng cách cung cấp tên bộ dữ liệu và một phần chia bộ dữ liệu cho hàm [load_dataset()](/docs/datasets/v5.2.0/vi/package_reference/loading_methods#datasets.load_dataset):

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

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

Hầu hết các mô hình ảnh hoạt động với ảnh RGB. Nếu tập dữ liệu của bạn chứa ảnh ở chế độ khác, bạn có thể sử dụng hàm [cast_column()](/docs/datasets/v5.2.0/vi/package_reference/main_classes#datasets.Dataset.cast_column) để đặt chế độ thành RGB:

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

Bộ dữ liệu Beans chỉ chứa các hình ảnh RGB, vì vậy bước này không cần thiết ở đây.

**2**. Bây giờ bạn có thể thêm một số kỹ thuật tăng cường dữ liệu bằng bất kỳ thư viện nào ([Albumentations](https://albumentations.ai/), [imgaug](https://imgaug.readthedocs.io/en/latest/), [Kornia](https://kornia.readthedocs.io/en/latest/)) mà bạn thích. Ở đây, bạn sẽ sử dụng [torchvision](https://pytorch.org/vision/stable/transforms.html) để thay đổi ngẫu nhiên các thuộc tính màu của một hình ảnh:

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

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

**3**. Tạo một hàm để áp dụng transform của bạn vào tập dữ liệu và tạo đầu vào cho mô hình: `pixel_values`.

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

**4**. Sử dụng hàm [with_transform()](/docs/datasets/v5.2.0/vi/package_reference/main_classes#datasets.Dataset.with_transform) để áp dụng các phép tăng cường dữ liệu theo thời gian thực:

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

**5**. Đặt định dạng bộ dữ liệu theo khung máy học bạn đang sử dụng.

Bọc dataset trong [`torch.utils.data.DataLoader`](https://alband.github.io/doc_view/data.html?highlight=torch%20utils%20data%20dataloader#torch.utils.data.DataLoader). Bạn cũng cần tạo một hàm collate để gom các mẫu thành các 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)
```

Sử dụng phương thức `prepare_tf_dataset` từ 🤗 Transformers để chuẩn bị bộ dữ liệu sao cho tương thích với TensorFlow và sẵn sàng để huấn luyện/điều chỉnh mô hình, vì nó bọc một [Dataset](/docs/datasets/v5.2.0/vi/package_reference/main_classes#datasets.Dataset) của HuggingFace thành một `tf.data.Dataset` với collation và batching, cho phép truyền trực tiếp vào các phương thức Keras như `fit()` mà không cần chỉnh sửa thêm.

Trước khi bắt đầu, hãy đảm bảo bạn đã cài đặt các phiên bản mới nhất của `albumentations` và `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**. Bắt đầu huấn luyện với framework machine learning của bạn! Xem hướng dẫn [phân loại ảnh](https://huggingface.co/docs/transformers/tasks/image_classification) của 🤗 Transformers để có ví dụ end-to-end về cách huấn luyện một mô hình trên bộ dữ liệu ảnh.

## NLP

Văn bản cần được tách thành các token riêng lẻ bởi một [tokenizer](https://huggingface.co/docs/transformers/main_classes/tokenizer). Trong phần khởi động nhanh, bạn sẽ nạp bộ dữ liệu huấn luyện [Microsoft Research Paraphrase Corpus (MRPC)](https://huggingface.co/datasets/nyu-mll/glue/viewer/mrpc) để huấn luyện một mô hình xác định xem một cặp câu có cùng ý nghĩa hay không.

**1**. Nạp bộ dữ liệu MRPC bằng cách cung cấp cho hàm [load_dataset()](/docs/datasets/v5.2.0/vi/package_reference/loading_methods#datasets.load_dataset) tên bộ dữ liệu, cấu hình bộ dữ liệu (không phải bộ dữ liệu nào cũng có cấu hình) và phần chia bộ dữ liệu:

```py
>>> from datasets import load_dataset

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

**2**. Tiếp theo, tải một mô hình [BERT](https://huggingface.co/bert-base-uncased) đã được huấn luyện trước cùng bộ tokenizer tương ứng từ thư viện [🤗 Transformers](https://huggingface.co/transformers/). Hoàn toàn bình thường nếu bạn thấy cảnh báo về việc một số trọng số chưa được khởi tạo sau khi tải mô hình. Điều này là dự kiến vì bạn đang tải checkpoint mô hình này để huấn luyện cho một tác vụ khác.

```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**. Tạo một hàm để tokenize bộ dữ liệu, đồng thời bạn cũng nên cắt ngắn và đệm (pad) văn bản thành các tensor chữ nhật gọn gàng. Tokenizer sẽ tạo ra ba cột mới trong bộ dữ liệu: `input_ids`, `token_type_ids` và `attention_mask`. Đây là các đầu vào của mô hình.

Sử dụng hàm [map()](/docs/datasets/v5.2.0/vi/package_reference/main_classes#datasets.Dataset.map) để tăng tốc xử lý bằng cách áp dụng hàm tokenization của bạn lên các lô (batches) ví dụ trong tập dữ liệu:

```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**. Đổi tên cột `label` thành `labels`, đây là tên đầu vào mong đợi trong [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**. Đặt định dạng bộ dữ liệu theo khung máy học bạn đang sử dụng.

Sử dụng hàm [with_format()](/docs/datasets/v5.2.0/vi/package_reference/main_classes#datasets.Dataset.with_format) để đặt định dạng tập dữ liệu thành `torch` và chỉ định các cột bạn muốn định dạng. Hàm này áp dụng định dạng theo thời gian thực. Sau khi chuyển đổi thành tensor PyTorch, bọc tập dữ liệu trong [`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)
```

Sử dụng phương thức `prepare_tf_dataset` từ 🤗 Transformers để chuẩn bị bộ dữ liệu sao cho tương thích với TensorFlow và sẵn sàng để huấn luyện/điều chỉnh mô hình, vì nó bọc một [Dataset](/docs/datasets/v5.2.0/vi/package_reference/main_classes#datasets.Dataset) của HuggingFace thành một `tf.data.Dataset` với collation và batching, cho phép truyền trực tiếp vào các phương thức Keras như `fit()` mà không cần chỉnh sửa thêm.

```py
>>> import tensorflow as tf

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

**6**. Bắt đầu huấn luyện với framework machine learning của bạn! Xem hướng dẫn [phân loại văn bản](https://huggingface.co/docs/transformers/tasks/sequence_classification) của 🤗 Transformers để có ví dụ end-to-end về cách huấn luyện một mô hình trên bộ dữ liệu văn bản.

## Tiếp theo là gì?

Như vậy là bạn đã hoàn thành phần khởi động nhanh 🤗 Datasets! Bạn có thể tải bất kỳ bộ dữ liệu văn bản, âm thanh hay hình ảnh nào bằng một hàm duy nhất và chuẩn bị sẵn sàng để mô hình của bạn huấn luyện.

Để tiếp tục, hãy xem [Các hướng dẫn thực hành](./how_to) của chúng tôi và học cách thực hiện các thao tác cụ thể hơn như nạp các định dạng tập dữ liệu khác nhau, căn chỉnh nhãn và phát trực tiếp các tập dữ liệu lớn. Nếu bạn muốn tìm hiểu sâu hơn về các khái niệm cốt lõi của 🤗 Datasets, hãy pha một tách cà phê và đọc [Các hướng dẫn khái niệm](./about_arrow) của chúng tôi!

