Google Drive и виртуальная машина Colab Laboratory не синхронизируются должным образом - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь загрузить и извлечь набор данных речевых команд Google с помощью записной книжки Google Colab. Архив Tar довольно большой, но из набора данных ML он довольно маленький. После выполнения фрагмента кода, прикрепленного ниже, я вижу, что архив был извлечен правильно, и я могу видеть все файлы на диске виртуальной машины (само собой разумеется, есть 100K + файлов, как и ожидалось).

IСледует понимать, что для синхронизации памяти виртуальной машины Colab с Google Drive требуется некоторое время. Но даже после долгого ожидания (почти дня) Google Диск не обновляется должным образом. Выполнение нескольких строк кода показывает, что только 10-12 каталогов были обновлены правильно (из 36), а остальные пусты. Это какая-то ошибка в процессе синхронизации Google Диска, которая вызывает это? Или я что-то делаю неправильно? Любая помощь или совет будут оценены. Заранее спасибо!

Я использую этот довольно простой кусок кода.

import os
import tarfile
import requests
from tqdm import tqdm

from google.colab import drive
drive.mount('/gdrive', force_remount = True)


# url = "http://download.tensorflow.org/data/speech_commands_v0.01.tar.gz"
url = "http://download.tensorflow.org/data/speech_commands_v0.02.tar.gz"
file_name = "speech.tar.gz"
dir_path = "/gdrive/My Drive/Temp/ML/Final/dataset/"
download_path = dir_path + file_name

r = requests.get(url, stream = True)
with open(download_path, 'wb') as file:
    for block in r.iter_content(chunk_size = 4096):
        if(block):
            file.write(block)
print("[INFO] Download completed.")

def extract_tar(path, dest_dir):
    os.chdir(dest_dir)
    with tarfile.open(name = path) as tar:
        for member in tqdm(iterable = tar.getmembers(), total = len(tar.getmembers())):
            tar.extract(member = member)

extract_tar(download_path, dir_path)
print("[INFO] Extraction completed.")

!rm /gdrive/My\ Drive/Temp/ML/Final/dataset/speech.tar.gz
print("[CAUTION] File deleted!")

1 Ответ

0 голосов
/ 10 ноября 2019

Улучшится ли ситуация, если вы позвоните drive.flush_and_unmount()?

Подробности: https://colab.research.google.com/notebooks/io.ipynb#scrollTo=D78AM1fFt2ty

...