Несколько последовательностей сразу: батчи и паддинг

Урок 39 из 104 курса «HuggingFace: курс по Transformers»: официальный курс Hugging Face Learn (Хаггинг Фейс) на русском языке. Урок входит в платный доступ; первые уроки курса бесплатно.

О чём урок

{#if fw === 'pt'} {:else} {/if} {#if fw === 'pt'} {:else} {/if} В предыдущем разделе мы рассмотрели самый простой вариант использования: проведение инференса на одной последовательности небольшой длины. Однако уже сейчас возникают некоторые вопросы: Как нам работать с несколькими последовательностями? Как нам работать с несколькими последовательностями разной длины? Являются ли индексы словаря единственными входными данными, которые позволяют модели работать хорошо? Существует ли такая вещь, как слишком длинная последовательность? Давайте посмотрим, какие проблемы возникают в связи с этими вопросами и как их можно решить с помощью 🤗 Transformers API. В предыдущем упражнении вы видели, как последовательности преобразуются в списки чисел. Давайте преобразуем этот список чисел в тензор и передадим его в модель: {#if fw === 'pt'} {:else} {/if} О нет! Почему это не удалось? Мы следовали шагам из конвейера в разделе 2. Проблема в том, что мы отправили в модель одну последовательность, в то время как 🤗 модели Transformers по умолчанию ожидают несколько предложений. Здесь мы попытались сделать все то, что токенизатор делал за кулисами, когда мы применяли его к последовательности. Но если вы приглядитесь, то увидите, что токенизатор не просто преобразовал список входных идентификаторов в тензор, а добавил к нему еще одно измерение: {#if fw === 'pt'} {:else} {/if} Давайте попробуем еще раз и добавим новое измерение: {#if fw === 'pt'} {:else} {/if} Мы выводим входные идентификаторы, а также результирующие логиты - вот результат: {#if fw === 'pt'} {:else} {/if} Батчинг - это отправка нескольких предложений через модель одновременно. Если у вас есть только одно предложение, вы можете просто создать батч с одной последовательностью: Это батч из двух одинаковых последовательностей! [!TIP] ✏️ Попробуйте! Преобразуйте этот список batched_ids в тензор и пропустите его через вашу модель. Проверьте, что вы получаете те же логиты, что и раньше (но дважды)! Батчинг позволяет модели работать, когда вы подаете ей несколько последовательностей.

План урока

  1. Модели ожидают батч входов
  2. Дополнение входов
  3. Маски внимания
  4. Более длинные последовательности

Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.

Полезные гиды