Есть ли способ использовать предварительно обученную модель трансформаторов без файла конфигурации?

#python #pytorch #huggingface-transformers

Вопрос:

Я хотел бы точно настроить предварительно подготовленную модель трансформаторов при ответе на вопросы. Модель была предварительно обучена на крупных инженерных и научных корпорациях, связанных с наукой.

Мне предоставили «checkpoint.pt» файл, содержащий веса модели. Они также предоставили мне файл «bert_config.json», но я не уверен, что это правильный файл конфигурации.

 from transformers import AutoModel, AutoTokenizer, AutoConfig

MODEL_PATH = "./checkpoint.pt"
config = AutoConfig.from_pretrained("./bert_config.json")
model = AutoModel.from_pretrained(MODEL_PATH, config=config)
 

Причина, по которой я считаю, что bert_config.json не соответствует «./checkpoint.pt» файл заключается в том, что, когда я загружаю модель с приведенным выше кодом, я получаю ошибку, как показано ниже.

Некоторые веса контрольной точки модели в ./aerobert/phase2_ckpt_4302592.pt не использовались при инициализации BertModel: [«файлы», «оптимизатор», «модель», «основные параметры»]

  • Это ожидается, если вы инициализируете BertModel с контрольной точки модели, обученной для другой задачи или с другой архитектурой (например, инициализируете модель классификации BertForSequenceClassification из модели обучения BertForPreTraining).
  • Этого НЕ ожидается, если вы инициализируете BertModel с контрольной точки модели, которая, как вы ожидаете, будет точно идентичной (инициализация модели классификации BertForSequenceClassification из модели классификации BertForSequenceClassification). Некоторые веса BertModel не были инициализированы с контрольной точки модели в ./aerobert/phase2_ckpt_4302592.pt и инициализированы заново: [‘].слой.2.внимание.вывод.LayerNorm.вес», «кодировщик.слой.6.вывод.LayerNorm.смещение’, ‘кодер.слой.7.промежуточный.плотный.смещение», «кодировщик.слой.2.вывод.LayerNorm.смещение», «шифратор.уровень.21.внимание.самооценка.смещение», «кодер.слой.11.внимание.самооценка.предвзятость», …………

Если я прав, предполагая, что «bert_config.json» неверен, есть ли способ правильно загрузить эту модель без файла config.json?

Есть ли способ увидеть архитектуру модели по сохраненным весам checkpoint.pt досье?

Ответ №1:

Это предупреждение, а не ошибка.

Это означает, что предварительно подготовленная модель предварительно обучена какой-либо задаче (например, ответ на вопросы, MLM и т. Д.), Если ваша собственная задача точной настройки совпадает с этой предварительно подготовленной задачей, то этого НЕ ожидается; если только это не ожидается, потому что какой-то пул предварительно подготовленной модели не будет использоваться в точной настройке.

Но это сообщение не означает, что bert_config.json оно неправильное. Вы можете протестировать его на официальном ноутбуке colab huggingface

введите описание изображения здесь

Вы можете найти дополнительную информацию в этом выпуске.

Комментарии:

1. Спасибо вам за ваш ответ. Правильно, что это предупреждение, а не ошибка. В этом случае я загружаю модель только в общем виде с помощью AutoModel, вместо того, чтобы загружать ее для конкретной задачи, такой как AutoModelForQuestionAnswering. При правильной конфигурации должно ли оно по-прежнему отображать это предупреждение?

2. @Miles-может Да, вы можете попробовать это в colab.