如何离线使用Hugging Face下载的MBart模型?兼询分词器所用文件
离线使用Hugging Face MBart模型的完整方案
一、先把模型和分词器完整下载到本地
直接修改你现有的代码,加上保存方法,就能把在线下载的模型和分词器全部存到本地指定目录(比如./mbart-summarization-mlsum):
from transformers import MBartTokenizer, MBartForConditionalGeneration # 在线下载同时保存到本地 tokenizer = MBartTokenizer.from_pretrained("ARTeLab/mbart-summarization-mlsum") tokenizer.save_pretrained("./mbart-summarization-mlsum") # 保存分词器所有文件 model = MBartForConditionalGeneration.from_pretrained("ARTeLab/mbart-summarization-mlsum") model.save_pretrained("./mbart-summarization-mlsum") # 保存模型所有文件
运行完这段代码,本地目录里就会包含离线调用需要的全部文件。
二、分词器核心文件说明
你纠结的“哪些文件负责分词”,这里给你列核心组件:
sentencepiece.bpe.model:MBart分词的核心,是SentencePiece训练好的分词模型,专门用来把文本切分成模型能识别的子词vocab.json:词表字典,记录token和对应ID的映射关系tokenizer_config.json:分词器的配置参数,比如特殊token规则、预处理逻辑special_tokens_map.json:定义、、这类特殊token的映射
这些文件缺一不可,少一个都可能导致分词器加载失败。
三、离线环境调用本地模型
离线时,只需要把from_pretrained的参数改成本地目录路径就行,完全不用联网:
from transformers import MBartTokenizer, MBartForConditionalGeneration # 离线加载本地文件 tokenizer = MBartTokenizer.from_pretrained("./mbart-summarization-mlsum") model = MBartForConditionalGeneration.from_pretrained("./mbart-summarization-mlsum") # 测试示例(替换成你的文本即可) text = "需要总结的原始文本内容" inputs = tokenizer(text, return_tensors="pt", max_length=512, truncation=True) summary_ids = model.generate(inputs["input_ids"], max_length=150, num_beams=4, early_stopping=True) summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True) print(summary)
四、实用小技巧
- 如果下载时网络卡,可以直接去模型仓库手动下载所有文件,放到本地目录,效果和代码下载完全一样
- 别随便删本地目录里的文件,所有自动生成的文件都是必要组件
- 可以设置环境变量
TRANSFORMERS_CACHE指向你的本地模型目录,这样后续调用时不用每次都写路径,库会自动从这个目录加载
内容的提问来源于stack exchange,提问作者Mukhammadsodik Khabibulloev
相关产品推荐
相关产品推荐

