Бонус: используйте предварительно обученные модели Huggingface Transformers при отключенном Интернете

Об этих предварительно обученных моделях было сказано много, но важные концепции, касающиеся передачи значения обучения и того, как мы можем его использовать, потребовали некоторого изучения. Например, если вы использовали tfhub версию BERT. Можно задаться вопросом, а что это за «обучаемый» в слое?

Оказывается, есть три способа перенести обучение предварительно обученных моделей:

  • Извлечение функций: где предварительно обученный слой используется только для извлечения функций, таких как использование BatchNormalization для преобразования весов в диапазон от 0 до 1 со средним значением 0. В этом методе веса не обновляются во время обратного распространения. Это то, что помечено как необучаемое в обзоре модели.

а в tfhub как trainable = False.

Если вы хотите установить его вручную. затем вы выбираете слой следующим образом:

model.add (плотный (100, обучаемый = False))

  • Тонкая настройка: вроде того, о чем идет речь в этом соревновании. BERT идеально подходит для этой задачи, потому что он обучен отвечать на вопросы. Итак, нам просто нужно точно настроить модель в соответствии с нашей целью. Что это означает - слой обучен для общего набора данных. нам нужно переучиться, чтобы оптимизировать под нашу конкретную задачу. Это опять же, в TFHUB можно обучать = True. (см. выше - выделено зеленым цветом). В сводке модели Keras он вызывается как обучаемые параметры (см. Выше - выделено зеленым). Для предварительно обученных моделей с несколькими слоями, как правило, это будет колоссально. Альберт, который является облегченной версией, содержит 11 миллионов параметров.
  • Извлечение слоев: в этом методе мы извлекаем только те слои, которые необходимы для задачи, например, мы можем извлечь только нижние уровни в BERT для выполнения таких задач, как POS, анализ тональности и т. Д., Где будет извлекаться только функции уровня слов. достаточно и не требуется слишком много контекста или сопоставления последовательностей. Ниже приведен пример
import tensorflow as tf
from transformers import BertTokenizer, TFBertModel
tokenizer = BertTokenizer.from_pretrained(‘bert-base-uncased’)
model = TFBertModel.from_pretrained(‘bert-base-uncased’)
input_ids = tf.constant(tokenizer.encode(“Hello, my dog is cute”, add_special_tokens=True))[None, :] # Batch size 1
outputs = model(input_ids)
last_hidden_states = outputs[0] # The last hidden-state is the first element of the output tuple

BERT - Важное примечание
Учитывая безумное количество параметров, рекомендуется принять бумажную рекомендацию BERT:

  • Эпохи - диапазон от 3,4
  • Batch_size - 4,8,16 (если вы тренируетесь для определенных групп, таких как меньшая выборка, может быть 32)
  • Слои - возможно, вам не придется добавлять какие-либо дополнительные слои, кроме вывода и усреднения / максимального объединения, чтобы изменить вывод Bert в соответствии с вашими требованиями. Поскольку BERT или аналог уже оптимизировали для нас слои и скрытые блоки. Я попытался добавить слой для исчезающих градиентов - эти сети глубоких убеждений могут уменьшить веса почти до нуля, поэтому я добавил просачивающийся слой relu, чтобы замедлить ухудшение веса. Время работы модели безумно выросло.

БОНУС

Если вы человек, ищущий жизнеспособное решение, но вас поразило то, что вы сидите за брандмауэром компании, где вам нужно заставить их работать локально. Это передышка, которая сэкономит, по крайней мере, хорошую неделю, пытаясь выяснить из другой версии той же модели из tfhub, google-research, huggingface и т. Д. Мы будем использовать Huggingface, поскольку они очень легко переключались между разными модели плюс совместимость как для pytorch, так и для keras.

  1. Перейдите на страницу github трансформеров huggingface - источник - ссылка - https://github.com/huggingface/transformers/tree/master/src/transformers
  2. Откройте соответствующий конфиг, моделирование или токенизацию. В этом случае, например, это будет configuration_albert.py
  3. В списке Config_Archive_Map вы найдете источник aws, который загружает необходимые файлы.
  4. Вам потребуется один config.json, spiece.model (если используется часть предложения) или vocab.txt / vocab и tf_model.h5 (для keras).
  5. Вуаля! загрузите файл и добавьте его как набор данных в ядро.

Это немного сложно для некоторых из этих моделей, где для некоторых из них вам нужно использовать фрагмент предложения, в то время как другие могут использовать другие файлы словаря. Чтобы упростить задачу, я уже сделал это для нескольких из них. Вы можете скачать эти наборы данных из -

«Https://www.kaggle.com/stitch/albertlargev2huggingfac женщины

Https://www.kaggle.com/stitch/bertcasecasedhuggingface2

Https://www.kaggle.com/stitch/distilrobertabasehuggingface

Https://www.kaggle.com/stitch/robertalargehuggingface