Ошибка ввода / вывода при использовании Google Colab с Google Drive
Когда я использую Google Colab, я получаю эту ошибку несколько раз и случайно, иногда это работает, а иногда нет
OSError: [Errno 5] Input/output error
эта ошибка возникает, когда я взаимодействую с Google Drive? любые решения для этой ошибки
4 ответа
Из FAQ -
Операции с Google Диском могут быть приостановлены, когда количество файлов или подпапок в папке становится слишком большим. Если тысячи элементов непосредственно содержатся в папке "Мой диск" верхнего уровня, то установка диска, скорее всего, истечет. Повторные попытки могут в конечном итоге увенчаться успехом, поскольку неудачные попытки локально кэшируют частичное состояние до истечения времени ожидания. Если вы столкнулись с этой проблемой, попробуйте переместить файлы и папки, непосредственно содержащиеся в "My Drive", в подпапки. Аналогичная проблема может возникнуть при чтении из других папок после successdrive.mount(). Доступ к элементам в любой папке, содержащей много элементов, может вызвать ошибки, такие как OSError: [Errno 5] Ошибка ввода / вывода (python 3) или IOError: [Errno 5] Ошибка ввода / вывода (python 2). Опять же, вы можете решить эту проблему, переместив непосредственно содержащиеся элементы в подпапки.
Я столкнулся с этой ошибкой при использовании os.listdir в папке диска Google, в которой было более 5,5 КБ файлов, и появилось небольшое окно в нижнем левом углу моей записной книжки colab, сообщающее, что истекло время ожидания.
Поскольку у меня есть Colab Pro, я попытался переключить свой аппаратный ускоритель времени выполнения на графический процессор, а форму времени выполнения на High-Ram. Это устранило проблему для меня. Не уверен, что это мог быть один или оба этих варианта вместе.
Проблема с верхним ответом заключается в том, что вам могут потребоваться некоторые простые функции в Colab (например, os.listdir), чтобы эффективно перемещать файлы и создавать подпапки для уменьшения содержимого папки. Если вы даже не можете перечислить, что находится в папке, без возникновения ошибки тайм-аута, вам может потребоваться обновление до Colab Pro, чтобы получить эти расширенные параметры времени выполнения для более мощной вычислительной среды.
Другое возможное решение - сохранить файлы в другом (новой папке) каталоге. Я думаю, что решение @bob-smith - одно из лучших решений этой проблемы, я просто показываю вариант исходного решения, которое сработало для меня.
Я сталкиваюсь с этим почти регулярно вместе с диалогом-
Истекло время ожидания Google Диска (последний раз в 12:46:20). Больше информации.
Иногда, если я запускаю ячейку кода три раза , ошибка больше не возникает; иногда мне приходится запускать ячейку 8-9 раз, чтобы успешно выполнить ее.
Проблема всегда возникает во время загрузки данных , как и ожидалось. В ячейке загрузки данных я обычно определяю разбиение, преобразования элементов и пакетные преобразования. Таким образом, они добавляют дополнительные временные затраты при многократном запуске ячейки.
Что я делаю вместо того, чтобы запускать ячейку загрузки данных несколько раз, я запускаю команду в Bash, используя
!
метод в другой ячейке. Обычно я ищу файл (с известным именем) в каталоге обучения и передаю этот шаблон в конвейер в. Вот так-
! ls /content/path/to/training/dr/ | grep xyz_001 # I *know* xyz_001 exists in a filename
Если эта ячейка успешно выполняется после n попыток и показывает желаемое имя файла в выходных данных, ячейка загрузки данных выполняется успешно в 100% случаев, и вы можете начать обучение.
Важно отметить, что я не использую
ls
со всем учебным каталогом без
grep
потому что это всегда будет терпеть неудачу, поскольку в моем учебном каталоге иногда содержится около 100 тысяч файлов.
Это ужасный прием, но он работает каждый раз.