You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加载S3桶中存储的TensorFlow预训练模型报OSError问题及正确加载方法咨询

错误原因排查
  • 原生tf.keras.models.load_model默认仅支持本地文件系统路径读取,无法直接解析s3://开头的对象存储路径,会直接把该路径当作本地文件路径尝试打开,因此返回「无效参数」的OSError。
  • 你提前初始化的boto3客户端凭证和TensorFlow的文件读取逻辑不互通,即使后续配置了S3读取支持,也无法复用该boto3实例的权限配置。
最优加载方案

分两种场景可选:

方案1:直接读取S3路径(适合无本地磁盘、大模型场景)

需要先安装TensorFlow IO扩展,为TensorFlow增加S3文件系统支持,代码示例:

import os
import tensorflow as tf
import tensorflow_io as tfio

# 配置AWS凭证(如果运行环境已经绑定AWS IAM角色可省略该步骤)
os.environ['AWS_ACCESS_KEY_ID'] = '你的访问密钥ID'
os.environ['AWS_SECRET_ACCESS_KEY'] = '你的秘密访问密钥'
os.environ['AWS_REGION'] = '桶对应的区域编码'

# 直接加载S3路径下的模型
s3_model_path = 's3://bucket/gaussian/gaussian_om.model'
classifier = tf.keras.models.load_model(s3_model_path, custom_objects=None, compile=True)

该方案无需下载模型到本地,读写效率更高,适合在云服务环境中使用

方案2:下载到本地临时目录加载(兼容性最佳)

直接用boto3把整个模型目录下载到本地临时目录后加载,无需额外依赖,适配所有运行环境,代码示例:

import boto3
import tempfile
import os
import tensorflow as tf

# 初始化boto3
s3 = boto3.resource(
    service_name='s3',
    region_name='XXX',
    aws_access_key_id='XXXX',
    aws_secret_access_key='XXXXXX'
)
bucket_name = 'bucket'
s3_model_prefix = 'gaussian/gaussian_om.model'

# 创建自动清理的临时目录存储模型
with tempfile.TemporaryDirectory() as temp_local_dir:
    bucket = s3.Bucket(bucket_name)
    # 遍历下载模型目录下所有文件
    for obj in bucket.objects.filter(Prefix=s3_model_prefix):
        # 生成本地存储路径
        relative_path = obj.key[len(s3_model_prefix):].lstrip('/')
        local_file_path = os.path.join(temp_local_dir, relative_path)
        # 跳过目录对象,创建对应文件夹
        if obj.key.endswith('/'):
            os.makedirs(local_file_path, exist_ok=True)
            continue
        os.makedirs(os.path.dirname(local_file_path), exist_ok=True)
        # 下载文件到本地
        bucket.download_file(obj.key, local_file_path)
    # 加载本地模型
    classifier = tf.keras.models.load_model(temp_local_dir, custom_objects=None, compile=True)

该方案兼容性最强,不会出现文件系统协议、权限适配的异常问题

内容的提问来源于stack exchange,提问作者gm tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:57:01