Ошибка ввода / вывода при использовании Google colab с google Drive

#machine-learning #google-colaboratory

#машинное обучение #google-colaboratory

Вопрос:

Когда я использую Google colab, я получаю эту ошибку несколько раз и случайным образом, иногда это работает, а иногда нет

 OSError: [Errno 5] Input/output error
  

возникает ли эта ошибка при взаимодействии с Google Drive?
какие-либо решения для этой ошибки

Ответ №1:

Из часто задаваемых вопросов —

Время ожидания операций Google Drive может истечь, когда количество файлов или вложенных папок в папке становится слишком большим. Если тысячи элементов содержатся непосредственно в папке верхнего уровня «Мой диск», то при подключении диска, скорее всего, истечет время ожидания. Повторные попытки могут в конечном итоге завершиться успехом, поскольку неудачные попытки кэшируют частичное состояние локально до истечения времени ожидания. Если вы столкнулись с этой проблемой, попробуйте переместить файлы и папки, содержащиеся непосредственно на «Моем диске», во вложенные папки. Аналогичная проблема может возникнуть при чтении из других папок после успешного выполнения функции drive.mount(). Доступ к элементам в любой папке, содержащей много элементов, может вызвать ошибки, подобные OSError: [Ошибка 5] Ошибка ввода / вывода (python 3) или IOError: [Ошибка 5] ошибка ввода / вывода (python 2). Опять же, вы можете устранить эту проблему, переместив непосредственно содержащиеся элементы во вложенные папки.

Ответ №2:

Я столкнулся с этой ошибкой при использовании os.listdir в папке google drive, в которой было более 5,5 тыс. файлов, и в левом нижнем углу моего ноутбука colab появилось маленькое окошко, в котором говорилось, что произошел тайм-аут.

Поскольку у меня Colab Pro, я попытался переключить свой аппаратный ускоритель времени выполнения на графический процессор, а Runtime Shape — на высокую оперативную память. Это устранило проблему для меня. Возможно, это был один или оба этих варианта вместе, не уверен.

Проблема с верхним ответом заключается в том, что вам может понадобиться некоторая простая функциональность в Colab (например, os.listdir) для эффективного перемещения файлов и создания вложенных папок для уменьшения содержимого папок. Если вы не можете даже перечислить содержимое папки без ошибки тайм-аута, возможно, вам просто нужно перейти на Colab Pro, чтобы получить расширенные возможности выполнения для более мощной вычислительной среды.

Ответ №3:

Другим возможным решением было бы сохранить ваши файлы в другом каталоге (новая папка). Я думаю, что решение @bob-smith является одним из лучших решений этой проблемы, я просто показываю вариант оригинального решения, которое сработало для меня.

Ответ №4:

Я сталкиваюсь с этим почти регулярно вместе с диалогом-

Произошел тайм-аут Google Диска (последний раз в 12:46:20 вечера). Подробная информация.

Иногда, если я запускаю ячейку кода три раза, ошибка больше не возникает; иногда мне приходится запускать ячейку целых 8-9 раз, чтобы успешно выполнить ее.

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

Что я делаю: вместо многократного запуска ячейки загрузки данных я запускаю ls команду в Bash, используя ! метод в другой ячейке. Обычно я ищу файл (с известным именем файла) в каталоге обучения и передаю этот шаблон в grep конвейерную систему ls . Вот так-

 ! ls /content/path/to/training/dr/ | grep xyz_001 # I *know* xyz_001 exists in a filename
  

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

Важно отметить, что я не запускаю a ls со всем учебным каталогом без grep , потому что это всегда приведет к сбою, поскольку в моем учебном каталоге иногда содержится около 100 тыс. файлов.

Это уродливый взлом, но он работает каждый раз.