Skip to content

Commit

Permalink
[RU] Chapter 3 finished (#239)
Browse files Browse the repository at this point in the history
  • Loading branch information
pdumin authored Jun 17, 2022
1 parent e216c2f commit 77b3e15
Show file tree
Hide file tree
Showing 9 changed files with 644 additions and 10 deletions.
14 changes: 13 additions & 1 deletion chapters/ru/_toctree.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,17 @@
title: Предобработка данных
- local: chapter3/3
title: Fine-tuning модели с использованием Trainer API
local_fw: { pt: chapter3/3, tf: chapter3/3_tf }
- local: chapter3/4
title: Полное обучение модели
title: Полное обучение модели
- local: chapter3/5
title: Fine-tuning, итоги!
- local: chapter3/6
title: Итоговый тест по главе
quiz: 3
- title: 4. Hugging Face Hub
sections:
- local: chapter4/1
title: Hugging Face Hub
- local: chapter4/2
title: Использование предобученных моделей
2 changes: 1 addition & 1 deletion chapters/ru/chapter0/1.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Введение

Добро пожаловать на курс от Hugging Face! Это введение поможет настроить рабочее окружение. Если вы только начинаете курс, мы рекомендуем сначала заглянуть в [Главу 1](/course/chapter1), затем вернуться и настроить среду, чтобы попробовать запустить код самостоятельно.
Добро пожаловать на курс от Hugging Face! Это введение поможет настроить рабочее окружение. Если вы только начинаете курс, мы рекомендуем сначала заглянуть в [Главу 1](/course/ru/chapter1), затем вернуться и настроить среду, чтобы попробовать запустить код самостоятельно.

Все библиотеки, которые мы будем использовать в этом курсе доступны как Python-пакеты, мы покажем, как установить окружение и необходимые библиотеки.

Expand Down
2 changes: 1 addition & 1 deletion chapters/ru/chapter3/1.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# Введение

В [главе 2](/course/chapter2) мы увидели, как можно использовать токенизаторы и предобученные модели для построения предсказаний. Но что если мы хотим дообучить предобученную модель на собственном датасете? Это и есть тема данной главы! Мы изучим:
В [главе 2](/course/ru/chapter2) мы увидели, как можно использовать токенизаторы и предобученные модели для построения предсказаний. Но что если мы хотим дообучить предобученную модель на собственном датасете? Это и есть тема данной главы! Мы изучим:

{#if fw === 'pt'}
* Как подготовить большой датасет из Model Hub
Expand Down
14 changes: 7 additions & 7 deletions chapters/ru/chapter3/2.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
{/if}

{#if fw === 'pt'}
Продолжим с примером из [предыдущей главы](/course/chapter2)
Continuing with the example from the [previous chapter](/course/chapter2), вот как мы будем обучать классификатор последовательности на одном батче с помощью PyTorch:
Продолжим с примером из [предыдущей главы](/course/ru/chapter2)
Continuing with the example from the [previous chapter](/course/ru/chapter2), вот как мы будем обучать классификатор последовательности на одном батче с помощью PyTorch:

```python
import torch
Expand All @@ -49,7 +49,7 @@ loss.backward()
optimizer.step()
```
{:else}
Continuing with the example from the [previous chapter](/course/chapter2), вот как мы будем обучать классификатор последовательности на одном батче с помощью TensorFlow:
Continuing with the example from the [previous chapter](/course/ru/chapter2), вот как мы будем обучать классификатор последовательности на одном батче с помощью TensorFlow:

```python
import tensorflow as tf
Expand Down Expand Up @@ -160,7 +160,7 @@ raw_train_dataset.features
<Youtube id="P-rZWqcB6CE"/>
{/if}

Чтобы предобработать датасет, нам необходимо конвертировать текст в числа, которые может обработать модель. Как вы видели в [предыдущей главе](/course/chapter2), это делается с помощью токенайзера. Мы можем подать на вход токенайзеру одно или список предложений, т.е. можно токенизировать предложения попарно таким образом:
Чтобы предобработать датасет, нам необходимо конвертировать текст в числа, которые может обработать модель. Как вы видели в [предыдущей главе](/course/ru/chapter2), это делается с помощью токенайзера. Мы можем подать на вход токенайзеру одно или список предложений, т.е. можно токенизировать предложения попарно таким образом:

```py
from transformers import AutoTokenizer
Expand All @@ -186,7 +186,7 @@ inputs
}
```

Мы уже обсуждали ключи `input_ids` и `attention_mask` в [главе 2](/course/chapter2), но не упоминали о `token_type_ids`. В этом примере мы указываем модели какая часть входных данных является первым предложением, а какая вторым.
Мы уже обсуждали ключи `input_ids` и `attention_mask` в [главе 2](/course/ru/chapter2), но не упоминали о `token_type_ids`. В этом примере мы указываем модели какая часть входных данных является первым предложением, а какая вторым.

<Tip>

Expand Down Expand Up @@ -217,13 +217,13 @@ tokenizer.convert_ids_to_tokens(inputs["input_ids"])

Обратите внимание, что если вы выберете другой чекпоинт, `token_type_ids` необязательно будут присутствовать в ваших токенизированных входных данных (например, они не возвращаются, если вы используете модель DistilBERT). Они возвращаются только тогда, когда модель будет знать, что с ними делать, потому что она видела их во время предобучения.

В данном случае BERT был обучен с информацией о идентификаторах типов токенов, и помимо задачи маскированной языковой модели, о которой мы говорили в [главе 1](/course/chapter1), он может решать еще одну задачу: предсказание следующего предложения (_next sentence prediction_). Суть этой задачи - смоделировать связь между предложениями.
В данном случае BERT был обучен с информацией о идентификаторах типов токенов, и помимо задачи маскированной языковой модели, о которой мы говорили в [главе 1](/course/ru/chapter1), он может решать еще одну задачу: предсказание следующего предложения (_next sentence prediction_). Суть этой задачи - смоделировать связь между предложениями.

В этой задаче модели на вход подаются пары предложений (со случайно замаскированными токенами), от модели требуется предсказать, является ли следующее предложение продолжением текущего. Чтобы задача не была слишком тривиальной, половина времени модель обучается на соседних предложениях из одного документа, другую половину на парах предложений, взятых из разных источников.

В общем случае вам не нужно беспокоиться о наличии `token_type_ids` в ваших токенизированных данных: пока вы используете одинаковый чекпоинт и для токенизатора, и для модели – токенизатор будет знать, как нужно обработать данные.

Теперь мы знаем, что токенизатор может подготовить сразу пару предложений, а значит мы можем использовать его для целого датасета: так же как и в [предыдущей главе](/course/chapter2) можно подать на вход токенизатору список первых предложений и список вторых предложений. Это также сработает и для механизмов дополнения (padding) и усечения до максимальной длины (truncation) - об этом мы говорили в [главе 2](/course/chapter2). Итак, один из способов предобработать обучающий датасет такой:
Теперь мы знаем, что токенизатор может подготовить сразу пару предложений, а значит мы можем использовать его для целого датасета: так же как и в [предыдущей главе](/course/ru/chapter2) можно подать на вход токенизатору список первых предложений и список вторых предложений. Это также сработает и для механизмов дополнения (padding) и усечения до максимальной длины (truncation) - об этом мы говорили в [главе 2](/course/chapter2). Итак, один из способов предобработать обучающий датасет такой:

```py
tokenized_dataset = tokenizer(
Expand Down
Loading

0 comments on commit 77b3e15

Please sign in to comment.