RuntimeError: похоже, что ваш LightningModule имеет параметры, которые не использовались при создании потерь, возвращаемых Training_step.
Я пытаюсь использовать donut , модель-трансформер с реализацией HuggingFace, и предварительно обучить ее на языке, которого еще не было на моем рабочем столе. К сожалению, версия стека, представленная в исходном репозитории, не поддерживает мой графический процессор, поэтому мне пришлось перенести его на более новую версию PyTorch/PyTorch Lightning.
При первом запуске я получил следующую ошибку:
RuntimeError: It looks like your LightningModule has parameters that were not used in
producing the loss returned by training_step. If this is intentional, you must enable
the detection of unused parameters in DDP, either by setting the string value
`strategy='ddp_find_unused_parameters_true'` or by setting the flag in the strategy with
`strategy=DDPStrategy(find_unused_parameters=True)`.
Поскольку я раньше не использовал Lightning, я не понимаю, что это значит. Мне удалось запустить его, установив для указанного строкового значения значение True, но я не знаю, сделал ли я что-то не так при портировании или это так задумано.
Я проверил документацию , но там очень ограниченная информация. Установка этого значенияTrue
влияет на производительность, поэтому я хотел бы знать, делаю ли я что-то неправильно или это необходимо.
Этап обучения определяется следующим образом:
def training_step(self, batch, batch_idx):
image_tensors, decoder_input_ids, decoder_labels = list(), list(), list()
for batch_data in batch:
image_tensors.append(batch_data[0])
decoder_input_ids.append(batch_data[1][:, :-1])
decoder_labels.append(batch_data[2][:, 1:])
image_tensors = torch.cat(image_tensors)
decoder_input_ids = torch.cat(decoder_input_ids)
decoder_labels = torch.cat(decoder_labels)
loss = self.model(image_tensors, decoder_input_ids, decoder_labels)[0]
self.log_dict({"train_loss": loss}, sync_dist=True)
return loss
Я с радостью поделюсь дополнительным кодом, так как не уверен, где проверяются параметры этого сообщения об ошибке. Я был бы благодарен за любую помощь.