Дообучение ner_ontonotes_bert_mult_torch на своих данных

Всем добрый вечер.

Пытаюсь доучить модель на своих довольно шумных данных. Подготовил разметку и запускаю обучение по инструкции:
Сначала дописал в конфиг путь к данным
config_dict[‘dataset_reader’][‘data_path’] = путь

затем вызываю обучение
ner_model = train_model(config_dict, download=True)

Но никак не могу понять почему выскакивает ошибка:
ERROR in ‘deeppavlov.core.common.params’[‘params’] at line 112: Exception in <class ‘deeppavlov.models.torch_bert.torch_transformers_sequence_tagger.TorchTransformersSequenceTagger’>
Traceback (most recent call last):
File “/usr/local/lib/python3.7/dist-packages/deeppavlov/core/common/params.py”, line 106, in from_params
component = obj(**dict(config_params, **kwargs))
File “/usr/local/lib/python3.7/dist-packages/deeppavlov/models/torch_bert/torch_transformers_sequence_tagger.py”, line 250, in init
**kwargs)
File “/usr/local/lib/python3.7/dist-packages/deeppavlov/core/models/torch_model.py”, line 98, in init
self.load()
File “/usr/local/lib/python3.7/dist-packages/deeppavlov/models/torch_bert/torch_transformers_sequence_tagger.py”, line 373, in load
self.model.load_state_dict(checkpoint[“model_state_dict”])
File “/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py”, line 1045, in load_state_dict
self.class.name, “\n\t”.join(error_msgs)))
RuntimeError: Error(s) in loading state_dict for BertForTokenClassification:
size mismatch for classifier.weight: copying a param with shape torch.Size([37, 768]) from checkpoint, the shape in current model is torch.Size([16, 768]).
size mismatch for classifier.bias: copying a param with shape torch.Size([37]) from checkpoint, the shape in current model is torch.Size([16]).

Если оставлять путь к своим данным по умолчанию как указан в конфиге, то этой ошибки нет. Стоит прописать путь и не работает.

Подскажите, что я делаю не так? По инструкции этого вроде достаточно?

Сам же отвечу:
Такая проблема возникает когда в разметке на дообучение присутствуют не все классы как в изначальной модели.
Раскидал оставшиеся классы по одному разу в трейне и ошибка ушла.
Но теперь появилась новая - ругается на превышение
input sequence after bert tokenization shouldn’t exceed 512 tokens.

Насколько я понял из описания, тренировочные данные находятся в файле train.txt
Каждому токену соответствует через пробел обозначение класса или О
Между предложениями пустая строка.
У меня подряд может быть не больше 400 строк (вида: токен класс)
Откуда тогда ошибка по превышению в 512 токенов? Или надо разбивать все данные по файлам, чтобы в каждом файле не больше 512 токенов?

Откуда тогда ошибка по превышению в 512 токенов?

В одной строке должно быть одно предложение (discussion on github). После разбиения строки на bpe токены, с которыми работает модель BERT их оказалось больше 512. У модели BERT есть ограничение на максимальную длину входа в 512. Отсюда и ошибка.

Спасибо.
Я собирал train.txt из разных документов и пустой строкой разделял только документы. Предложения шли по порядку. А надо было еще в каждом документе предложения так же разделять пустой строкой. Тогда собранный трейн состоит из множества предложений разделенных пустой строкой. То же самое и в тесте и валиде.
В таком виде все заводится и учится хорошо)