使用torch.save()无法将PyTorch模型保存到GS存储桶求助
原生PyTorch的torch.save()不支持直接写入Google Cloud Storage(GCS)的gs://协议路径,它默认调用Python标准库的本地文件操作接口,无法识别GCS路径,所以会抛出FileNotFoundError。
以下是两种可行的操作方式:
方法1:通过gcsfs直接写入GCS(推荐,无需本地临时文件)
gcsfs是Python对接GCS的文件系统适配库,GCP官方Notebook实例通常已预装该库,未安装可先执行pip install gcsfs。
操作代码如下:
import gcsfs import torch # 初始化GCS文件系统,GCP Notebook实例默认使用实例关联的服务账号权限,无需额外传密钥 fs = gcsfs.GCSFileSystem() path = "gs://bucket_name/model/model.pt" # 用gcsfs打开路径得到文件对象,传给torch.save with fs.open(path, 'wb') as f: torch.save(model, f)
读取模型时也用相同逻辑即可:
with fs.open(path, 'rb') as f: model = torch.load(f)
方法2:先存本地临时文件,再上传到GCS
也可以先把模型保存到Notebook实例的本地磁盘,再通过gsutil命令或者GCS官方SDK上传:
import torch import os # 先存本地临时路径 local_path = "/tmp/model.pt" torch.save(model, local_path) # 调用gsutil上传到GCS,GCP Notebook实例默认已配置gsutil权限 os.system(f"gsutil cp {local_path} gs://bucket_name/model/model.pt")
注意事项
- 请确认Notebook实例关联的服务账号,拥有目标GCS存储桶的
storage.objects.create和storage.objects.get权限,否则会报权限错误。 - 存储桶名称、路径拼写注意大小写,不要加入多余空格。
内容的提问来源于stack exchange,提问作者Piyush Pandey
相关产品推荐
相关产品推荐

