Полагаю, что все, кто работал с Pytorch, в некоторой степени знают об ошибке
RuntimeError: CUDA error: device-side assert triggered
.
Я генерирую много данных с использованием кода GPU в моем скрипте (200k + длинные векторы) , так что требуется время. Я делаю это партиями через генератор, так как у меня нет памяти для хранения всех векторов в моем GPU одновременно. Генератор имеет следующую структуру:
for i in range(0, len(inputs), batch_size):
try:
<generate the vectors>
yield 1, <the vectors> # Here it was successful
except RuntimeError:
print(f'could not generate vectors {index} to {index + batch_size}')
yield 0, (i, i+ batch_size) # Here the input was malformed
Я знаю , что некоторые входные данные искажены до такой степени, что генерация векторов из них завершится с ошибкой во время выполнения, и это нормально, это даже не 1% моего набора данных. Я хочу получить индексы и разобраться с этим позже.
Вот моя проблема
Когда создание вектора не удается, графический процессор в основном блокируется и будет отвечать на все запросы с вышеупомянутой ошибкой. Проверка всех вводимых данных была бы громоздкой и медленной. Я не хочу это делать. Я хочу перебрать все неправильно сформированные входы и разобраться с ними позже.
Мой вопрос
Как можно восстановить графический процессор из этого состояния с брикетировкой как можно проще и быстрее? Все вопросы, которые я нашел до сих пор, касаются исправления основной ошибки, которую мне не нужно делать. Я просто хочу продолжить генерирование векторов из моего набора данных.