这里以GPT2模型的加载为例,其他常用的模型如BERT、RoBERTa等类似。
导入模型:
from transformers import GPT2Tokenizer, GPT2LMHeadModel
加载模型参数时,这里给出一下几种情况的加载方法:
1、使用 transformers 默认的缓存路径:
gpt2_model = GPT2LMHeadModel.from_pretrained(pretrained_model_name_or_path='gpt2-xl')
gpt2_tokenizer = GPT2Tokenizer.from_pretrained(pretrained_model_name_or_path='gpt2-xl')
以 centos 为例,transformers 默认的缓存路径是:
root:
/root/.cache/huggingface/transformers
user:
/home/user/.cache/huggingface/transformers
(1)如果上述路径已经缓存了 gpt2-xl 的预训练参数,上述加载代码会直接从缓存路径加载 gpt2-xl 模型的预训练参数。
(2)如果上述路径没有缓存 gpt2-xl 的预训练参数,上述加载代码会先从网上下载 gpt2-xl 的预训练参数,保存在上述缓存目录中,然后从缓存目录中加载 gpt2-xl 模型的预训练参数。
2、使用自己设定的缓存路径:
gpt2_model = GPT2LMHeadModel.from_pretrained(pretrained_model_name_or_path='/home/user/plm_model_cache/gpt2-xl')
gpt2_tokenizer = GPT2Tokenizer.from_pretrained(pretrained_model_name_or_path='/home/user/plm_model_cache/gpt2-xl')
(1)如果上述路径已经缓存了 gpt2-xl 的预训练参数,上述加载代码会直接从缓存路径加载 gpt2-xl 模型的预训练参数。
(2)如果上述路径没有缓存 gpt2-xl 的预训练参数,上述加载代码会先从网上下载 gpt2-xl 的预训练参数,保存在上述缓存目录中,然后从缓存目录中加载 gpt2-xl 模型的预训练参数。
3、1和2中的加载方法,如果没有将缓存后的预训练参数文件的名称进行修改,那么无论是否缓存,都是需要网络的。
4、修改缓存的文件名,从而拜托对网络的依赖:
需要将下述5个文件进行重命名,而且重命名的一句也都在缓存的文件中进行了指定:
(1)config.json 文件:
根据文件:d2de8fec009fa9b9196047559bcac6c1f02a9c500718b4346bc516354965b1ca.d684cb2afa3f8c44c73bd67537d9aa5ff6044658793e077d7306ef2e37dd79bd.json
将文件:
d2de8fec009fa9b9196047559bcac6c1f02a9c500718b4346bc516354965b1ca.d684cb2afa3f8c44c73bd67537d9aa5ff6044658793e077d7306ef2e37dd79bd
重命名为:config.json
(2)tokenizer.json 文件:
根据文件:
aabb8839163cd911f810ab23f5ae8c966b9b9ea60622c429020611caa389b04b.cf2d0ecb83b6df91b3dbb53f1d1e4c311578bfd3aa0e04934215a49bf9898df0.json
将文件:
aabb8839163cd911f810ab23f5ae8c966b9b9ea60622c429020611caa389b04b.cf2d0ecb83b6df91b3dbb53f1d1e4c311578bfd3aa0e04934215a49bf9898df0
重命名为:tokenizer.json
(3)pytorch_model.bin 文件:
根据文件:
96569b907e56747ce3e593c6a13d8475b8c733a64aab8af8f602b90d94c4af71.8fbbcdf404c82c5967934d411f1462fa0574d639f2aa398aa3754fced1bb26c0.json
将文件:
96569b907e56747ce3e593c6a13d8475b8c733a64aab8af8f602b90d94c4af71.8fbbcdf404c82c5967934d411f1462fa0574d639f2aa398aa3754fced1bb26c0
重命名为:pytorch_model.bin
(4)vocab.json 文件:
根据文件:
8560a2df03f812b276794ae6935255d0590522553a4c8103155472b07591a21b.c7ed1f96aac49e745788faa77ba0a26a392643a50bb388b9c04ff469e555241f.json
将文件:
8560a2df03f812b276794ae6935255d0590522553a4c8103155472b07591a21b.c7ed1f96aac49e745788faa77ba0a26a392643a50bb388b9c04ff469e555241f
重命名为:vocab.json
(5)vocab.json 文件:
根据文件:
8560a2df03f812b276794ae6935255d0590522553a4c8103155472b07591a21b.c7ed1f96aac49e745788faa77ba0a26a392643a50bb388b9c04ff469e555241f.json
将文件:
8560a2df03f812b276794ae6935255d0590522553a4c8103155472b07591a21b.c7ed1f96aac49e745788faa77ba0a26a392643a50bb388b9c04ff469e555241f
重命名为:vocab.json
完成上述文件的重命名,就可以在不需要网络的情况下,也能加载模型。