如何从Google Cloud Storage加载Roberta AutoTokenizer?解决加载报错
解决从GCS加载Hugging Face AutoTokenizer的HFValidationError问题
错误原因
你遇到的HFValidationError是因为AutoTokenizer.from_pretrained()不接受BytesIO对象列表作为输入参数。该方法仅支持以下类型的输入:
- 本地目录路径
- Hugging Face Hub仓库ID
- 支持的远程存储路径(如GCS、S3路径,需对应库版本支持)
解决方法
方法1:下载到本地临时目录加载
将GCS中的分词器文件下载到本地临时目录,再从目录加载,这是最通用的方案:
import tempfile from google.cloud import storage from transformers import AutoTokenizer # 替换为你的桶名和分词器目录路径 bucket_name = "your-gcs-bucket-name" tokeniser_folder = "path/to/your/tokenizer/dir/" tokeniser_files = ["special_tokens_map.json", "tokenizer.json", "tokenizer_config.json"] # 初始化GCS客户端 storage_client = storage.Client() bucket = storage_client.get_bucket(bucket_name) # 创建临时目录,退出with块后自动清理 with tempfile.TemporaryDirectory() as temp_dir: # 逐个下载文件到临时目录 for file_name in tokeniser_files: blob = bucket.get_blob(f"{tokeniser_folder}{file_name}") blob.download_to_filename(f"{temp_dir}/{file_name}") # 从临时目录加载分词器 tokeniser = AutoTokenizer.from_pretrained(temp_dir) # 正常使用分词器 print(tokeniser.tokenize("Hello World!"))
方法2:直接使用GCS路径加载(推荐,需transformers>=4.18.0)
如果你的transformers版本在4.18.0及以上,可以直接传入GCS目录路径,无需手动下载文件(前提是Vertex AI笔记本已配置好GCS桶的访问权限):
from transformers import AutoTokenizer # 替换为你的GCS分词器目录完整路径 gcs_tokenizer_path = "gs://your-gcs-bucket-name/path/to/your/tokenizer/dir/" # 直接加载分词器 tokeniser = AutoTokenizer.from_pretrained(gcs_tokenizer_path)
注意事项
- 方法2中,若访问跨项目GCS桶,需额外配置IAM权限,确保Vertex AI的服务账号拥有该桶的
storage.objects.list和storage.objects.get权限。 - 临时目录方案(方法1)无需额外权限配置,且会自动清理文件,适合临时加载场景。
内容的提问来源于stack exchange,提问作者Ravi156
相关产品推荐
相关产品推荐

