如何结合Huggingface Pipeline使用Adapter Transformers并解决加载问题
解决AdapterHub模型加载失败的问题
问题根源
你要加载的AdapterHub/bert-base-uncased-pf-conll2003是Adapter适配模块,不是完整的预训练模型。这类模块仅包含任务适配的权重和配置,没有基础BERT模型的完整文件,所以直接用pipeline指定该ID会找不到config.json。另外你安装时的依赖冲突也可能加剧加载问题,先处理依赖。
步骤1:修复依赖冲突
卸载冲突包,重新安装兼容版本的adapter-transformers(它会自动匹配对应依赖):
pip uninstall -y transformers huggingface-hub tokenizers adapter-transformers pip install adapter-transformers==3.2.1.post0
步骤2:正确加载Adapter与模型
需要先加载基础BERT模型,再挂载对应的Adapter模块,代码如下:
from transformers import AutoModelWithHeads, AutoTokenizer from transformers import pipeline # 加载基础预训练模型和分词器 model = AutoModelWithHeads.from_pretrained("bert-base-uncased") tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") # 加载并激活Adapter model.load_adapter("AdapterHub/bert-base-uncased-pf-conll2003", source="hf", set_active=True) # 初始化token分类pipeline token_classification = pipeline( "token-classification", model=model, tokenizer=tokenizer, aggregation_strategy="simple" # 可选,合并子词预测结果,提升可读性 ) # 测试推理 res = token_classification("Take out the trash bag from the bin and replace it.") print(res)
核心说明
AutoModelWithHeads是adapter-transformers专属类,支持加载和管理多个Adapter模块load_adapter从Hugging Face Hub拉取指定Adapter,set_active=True让模型直接使用该Adapter进行任务推理- 如果需要处理子词拆分的问题,
aggregation_strategy参数可以合并同属一个单词的子词预测结果
内容的提问来源于stack exchange,提问作者Encipher
相关产品推荐
相关产品推荐

