我正在为我的项目使用 google colab。我首先在 GPU 上使用了整个环境,但后来注意到它是有限的,所以我得到了应该使用的解决方案并在 cpu 上进行预训练,然后切换到我尝试过的 GPU,但总是得到这个
更改运行时属性可能会终止您当前的会话。您确定要继续吗?
如果我单击“是”,那么整个内核将重新启动,因此一旦会话终止,colab 系统上的所有文件都将被删除。我可以将这些文件复制到 gdrive 上,但这将使整个训练非常慢,因此最好在 colab 子系统上进行.
如何在不让整个会话终止的情况下进行切换?
如果我单击“是”,则整个内核将重新启动,因此一旦会话终止,colab 系统上的所有文件都将被删除。
如果不使用外部存储,则无法在具有不同加速器配置的会话之间传输数据。
外部存储选项1.谷歌云端硬盘
I/O 速度非常慢,尤其是当 您读取/写入大量小文件时。您还有下载配额。因此,Drive 最好用作模型开发的代码存储 - 它不是存储数据集的最佳位置,训练脚本经常访问数据集。
# Mounting Google Drive
# From the official Colaboratory code snippet
# ----------
from google.colab import drive
drive.mount('/gdrive')
with open('/gdrive/My Drive/foo.txt', 'w') as f:
f.write('Hello Google Drive!')
经验法则是最大限度地减少对 Google Drive 磁盘的 I/O 。如果您的 Colab VM 的磁盘空间允许,您可以将数据集从 Google Drive 复制到本地某个位置(/gdrive
之外),并使用本地数据集训练模型,如此处所述。这消除了训练过程中对 Google Drive 的 I/O。 如果您的数据集有很多小文件,请先将其存档为 ZIP 文件,然后再将其上传到 Google 云端硬盘。不要将小文件上传到 Google Drive(或从 Google Drive 下载) - 这会损害性能。即用即付服务,是 Google Cloud 的一部分(截至撰写本文时,Google 提供
。 使用此选项,您将使用 Cloud Storage FUSE 将 Cloud Storage 存储桶安装到您的 Colab 实例。 Google 维护
基准表。 当数据集中的项目大小相对较大(以兆字节为单位 - 例如图像、音频文件、视频)时,这是我在 Google Colab 上存储用于训练模型的数据集和工件时的首选选项。尽管如此,它比本地文件系统有更高的延迟。
# From the official Colaboratory code snippet
# ----------
# Authenticate.
from google.colab import auth
auth.authenticate_user()
# Install Cloud Storage FUSE.
!echo "deb https://packages.cloud.google.com/apt gcsfuse-`lsb_release -c -s` main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list
!curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
!apt -qq update && apt -qq install gcsfuse
# Mount a Cloud Storage bucket or location, without the gs:// prefix.
mount_path = "my-bucket" # or a location like "my-bucket/path/to/mount"
local_path = f"/mnt/gs/{mount_path}"
!mkdir -p {local_path}
!gcsfuse --implicit-dirs {mount_path} {local_path}
3.公共数据托管服务
或者,您可以将数据上传到HuggingFace
等服务。 Colab 为免费套餐提供约 50 GB 的存储空间(为 Colab Pro 用户提供约 200GB 的存储空间) - 如果您的数据集适合该空间,您可以从那里下载数据。