#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 тыс. файлов.
Это уродливый взлом, но он работает каждый раз.