AWS问题:HuggingFace load_dataset从S3加载时遇意外关键字参数错误
解决AWS SageMaker中load_dataset加载S3 JSON文件的
Session.__init__() got an unexpected keyword argument 'hf'错误 问题原因
升级Sagemaker实例后,环境中s3fs或boto3这类AWS交互依赖的版本被更新,而你使用的datasets==2.15.0在与新版本依赖交互时,会向Session构造函数传递一个不再被支持的hf参数,从而触发该错误。
解决方案
方案1:降级s3fs到兼容版本
执行以下命令安装与datasets==2.15.0兼容的s3fs版本:
pip install s3fs==2023.6.0 --force-reinstall
安装完成后重启内核,再重新运行加载代码即可。
方案2:手动下载S3文件到本地再加载
如果不想调整依赖版本,可以先通过boto3将S3上的JSON文件下载到本地临时目录,再用load_dataset加载本地文件:
import boto3 from datasets import load_dataset # 配置S3信息 bucket_name = "dir_name" file_key = "train.json" local_path = "/tmp/train.json" # 下载文件 s3_client = boto3.client("s3") s3_client.download_file(bucket_name, file_key, local_path) # 加载本地数据集 data = load_dataset("json", data_files=local_path, split="train")
方案3:手动传递AWS会话对象
显式创建boto3会话并传递给load_dataset的storage_options参数,避免自动生成带hf参数的会话:
import boto3 from datasets import load_dataset # 创建标准AWS会话 session = boto3.Session() # 加载数据集时指定会话 data = load_dataset( "json", data_files="s3://dir_name/train.json", split="train", storage_options={"session": session} )
内容的提问来源于stack exchange,提问作者rowbat
相关产品推荐
相关产品推荐

