# Быстрый старт

Этот быстрый старт предназначен для разработчиков, готовых погрузиться в код и посмотреть пример того, как интегрировать 🤗 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]
> Ознакомьтесь с [главой 5](https://huggingface.co/course/chapter5/1?fw=pt) курса Hugging Face, чтобы узнать больше о других важных темах, таких как загрузка удалённых или локальных наборов данных, инструменты для очистки набора данных и создание собственного набора данных.

Начните с установки 🤗 Datasets:

```bash
pip install datasets
```

🤗 Datasets также поддерживает форматы данных для аудио и изображений:

- Для работы с аудиоданными установите функцию [Audio](/docs/datasets/v5.2.0/ru/package_reference/main_classes#datasets.Audio):

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

- Для работы с наборами данных изображений установите функцию [Image](/docs/datasets/v5.2.0/ru/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/v5.2.0/ru/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**. Далее загрузите предобученную модель [Wav2Vec2](https://huggingface.co/facebook/wav2vec2-base) и соответствующий ей экстрактор признаков из библиотеки [🤗 Transformers](https://huggingface.co/transformers/). После загрузки модели вполне нормально увидеть предупреждение о том, что некоторые веса не были инициализированы. Это ожидаемо, так как вы загружаете контрольную точку этой модели для обучения на другой задаче.

```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) указывает частоту дискретизации 8 кГц, но модель Wav2Vec2 была предобучена на частоте дискретизации 16 кГц. Вам нужно повысить частоту дискретизации столбца `audio` с помощью функции [cast_column()](/docs/datasets/v5.2.0/ru/package_reference/main_classes#datasets.Dataset.cast_column) и фичи [Audio](/docs/datasets/v5.2.0/ru/package_reference/main_classes#datasets.Audio), чтобы она соответствовала частоте дискретизации модели.

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

**4**. Создайте функцию для предобработки аудио `array` с помощью feature extractor, а также для усечения и дополнения последовательностей до аккуратных прямоугольных тензоров. Главное, что нужно помнить: передавайте аудио `array` в feature extractor, поскольку именно `array` — фактический речевой сигнал — является входом модели.

Когда у вас есть функция предобработки, используйте функцию [map()](/docs/datasets/v5.2.0/ru/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/v5.2.0/ru/package_reference/main_classes#datasets.Dataset.rename_column), чтобы переименовать столбец `intent_class` в `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/v5.2.0/ru/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)
```

Используйте метод `prepare_tf_dataset` из 🤗 Transformers, чтобы подготовить датасет для совместимости с TensorFlow и сделать его готовым к обучению/дообучению модели. Этот метод оборачивает [Dataset](/docs/datasets/v5.2.0/ru/package_reference/main_classes#datasets.Dataset) HuggingFace в `tf.data.Dataset` с коллацией и батчингом, что позволяет передавать его напрямую в методы Keras, такие как `fit()`, без дополнительных изменений.

```py
>>> import tensorflow as tf

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

**7**. Начните обучение с помощью вашего фреймворка машинного обучения! Ознакомьтесь с [руководством по классификации аудио](https://huggingface.co/docs/transformers/tasks/audio_classification) в 🤗 Transformers, чтобы увидеть пример обучения модели на аудиоданных от начала до конца.

## Зрение

Наборы данных изображений загружаются так же, как и текстовые. Однако вместо токенизатора для предобработки набора данных вам понадобится [извлекатель признаков](https://huggingface.co/docs/transformers/main_classes/feature_extractor#feature-extractor). Применение аугментации данных к изображениям — распространённая практика в компьютерном зрении, позволяющая сделать модель более устойчивой к переобучению. Вы можете использовать любую библиотеку аугментации данных, а затем применить аугментации с помощью 🤗 Datasets. В этом быстром руководстве вы загрузите набор данных [Beans](https://huggingface.co/datasets/beans) и подготовите его для обучения модели, чтобы она могла определять заболевания по изображениям листьев.

**1**. Загрузите набор данных Beans, передав в функцию [load_dataset()](/docs/datasets/v5.2.0/ru/package_reference/loading_methods#datasets.load_dataset) имя набора данных и его разбиение:

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

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

Большинство моделей изображений работают с изображениями в режиме RGB. Если ваш набор данных содержит изображения в другом режиме, вы можете использовать функцию [cast_column()](/docs/datasets/v5.2.0/ru/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/v5.2.0/ru/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)
```

Используйте метод `prepare_tf_dataset` из 🤗 Transformers, чтобы подготовить датасет для совместимости с TensorFlow и сделать его готовым к обучению/дообучению модели. Этот метод оборачивает [Dataset](/docs/datasets/v5.2.0/ru/package_reference/main_classes#datasets.Dataset) HuggingFace в `tf.data.Dataset` с коллацией и батчингом, что позволяет передавать его напрямую в методы Keras, такие как `fit()`, без дополнительных изменений.

Перед началом убедитесь, что у вас установлены актуальные версии `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**. Начните обучение с помощью вашего фреймворка машинного обучения! Ознакомьтесь с [руководством по классификации изображений](https://huggingface.co/docs/transformers/tasks/image_classification) в 🤗 Transformers, чтобы увидеть пример обучения модели на наборе данных изображений от начала до конца.

## NLP

Текст необходимо токенизировать на отдельные токены с помощью [токенизатора](https://huggingface.co/docs/transformers/main_classes/tokenizer). Для быстрого старта вы загрузите обучающий набор данных [Microsoft Research Paraphrase Corpus (MRPC)](https://huggingface.co/datasets/nyu-mll/glue/viewer/mrpc), чтобы обучить модель определять, означают ли пара предложений одно и то же.

**1**. Загрузите набор данных MRPC, передав в функцию [load_dataset()](/docs/datasets/v5.2.0/ru/package_reference/loading_methods#datasets.load_dataset) имя набора данных, его конфигурацию (не у всех наборов данных есть конфигурация) и разбиение:

```py
>>> from datasets import load_dataset

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

**2**. Далее загрузите предобученную модель [BERT](https://huggingface.co/bert-base-uncased) и соответствующий ей токенизатор из библиотеки [🤗 Transformers](https://huggingface.co/transformers/). После загрузки модели вполне нормально увидеть предупреждение о том, что некоторые веса не были инициализированы. Это ожидаемо, так как вы загружаете контрольную точку этой модели для обучения на другой задаче.

```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**. Создайте функцию для токенизации набора данных, при этом текст нужно усечь и дополнить, чтобы получить аккуратные прямоугольные тензоры. Токенизатор создаёт в наборе данных три новые колонки: `input_ids`, `token_type_ids` и `attention_mask`. Это входные данные модели.

Используйте функцию [map()](/docs/datasets/v5.2.0/ru/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/v5.2.0/ru/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)
```

Используйте метод `prepare_tf_dataset` из 🤗 Transformers, чтобы подготовить датасет для совместимости с TensorFlow и сделать его готовым к обучению/дообучению модели. Этот метод оборачивает [Dataset](/docs/datasets/v5.2.0/ru/package_reference/main_classes#datasets.Dataset) HuggingFace в `tf.data.Dataset` с коллацией и батчингом, что позволяет передавать его напрямую в методы Keras, такие как `fit()`, без дополнительных изменений.

```py
>>> import tensorflow as tf

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

**6**. Начните обучение с помощью вашего фреймворка машинного обучения! Ознакомьтесь с [руководством по классификации текста](https://huggingface.co/docs/transformers/tasks/sequence_classification) в 🤗 Transformers, чтобы увидеть пример обучения модели на текстовом датасете от начала до конца.

## Что дальше?

Это завершает быстрый старт с 🤗 Datasets! Вы можете загрузить любой текстовый, аудиовизуальный или набор изображений одной функцией и подготовить его для обучения вашей модели.

Для следующих шагов ознакомьтесь с нашими [инструкциями](./how_to) и узнайте, как выполнять более конкретные задачи, такие как загрузка различных форматов наборов данных, выравнивание меток и потоковая обработка больших наборов данных. Если вы хотите узнать больше о базовых концепциях 🤗 Datasets, возьмите чашку кофе и прочитайте наши [концептуальные руководства](./about_arrow)!

