Transformers 转换Tensorflow的Checkpoints | 九
本文是全系列中第13 / 13篇:Transformers
- Transformers 词汇表 | 二
- Transformers 从pytorch-pretrained-bert迁移 | 十
- Transformers 库常见的用例 | 三
- Transformers 多语言模型 | 十一
- Transformers 中使用 TorchScript | 四
- Transformers 模型上传和共享 | 五
- Transformers 示例 | 六
- Transformers 简介(上)
- Transformers 加载预训练模型 | 七
- Transformers 简介(下)
- Transformers 保存并加载模型 | 八
- Transformers 快速入门 | 一
- Transformers 转换Tensorflow的Checkpoints | 九
作者|huggingface
编译|VK
来源|Github
提供了一个命令行界面来转换模型中的原始Bert/GPT/GPT-2/Transformer-XL/XLNet/XLM的Checkpoints,然后使用库的from_pretrained方法加载该Checkpoints。
注意:从2.3.0版本开始,转换脚本现在已成为 transformers CLI(transformers-cli)的一部分,在任何transformers=2.3.0的都可用。以下文档反映了transformers-cli convert
命令格式。
BERT
你可以通过使用convert_tf_checkpoint_to_pytorch.py
将任意的BERT的Tensorflow的Checkpoints转换为PyTorch格式(特别是由Google发布的预训练模型(https://github.com/google-research/bert#pre-trained-models))
此CLI将TensorFlow checkpoints(三个以bert_model.ckpt
开头的文件)和关联的配置文件(bert_config.json
)作为输入,并为此配置创建PyTorch模型,并加载在PyTorch模型中从TensorFlow checkpoints进行权重计算,然后将生成的模型保存到标准PyTorch格式文件中,该文件可以使用torch.load()
导入(请参阅run_bert_extract_features.py, run_bert_classifier.py and run_bert_squad.py的示例)。
你只需一次运行此转换脚本即可获得PyTorch模型。然后你可以忽略TensorFlow checkpoints(以bert_model.ckpt
开头的三个文件),但请确保保留配置文件(bert_config.json
)和词汇表文件(vocab.txt
),因为PyTorch模型也需要这些。
要运行此特定的转换脚本,你将需要安装TensorFlow和PyTorch(pip install tensorflow
)。存储库的其余部分仅需要PyTorch。
这是一个预训练的BERT-Base Uncased模型的转换过程示例:
export BERT_BASE_DIR=/path/to/bert/uncased_L-12_H-768_A-12
transformers-cli convert --model_type bert \
--tf_checkpoint $BERT_BASE_DIR/bert_model.ckpt \
--config $BERT_BASE_DIR/bert_config.json \
--pytorch_dump_output $BERT_BASE_DIR/pytorch_model.bin
你可以在此处(https://github.com/google-research/bert#pre-trained-models)下载Google的预训练模型。
OpenAI GPT
这是一个预训练OpenAI GPT模型转换过程的示例,假设你的NumPy checkpoints保存的格式与OpenAI的预训练模型相同(请参见此处(https://github.com/openai/finetune-transformer-lm))
export OPENAI_GPT_CHECKPOINT_FOLDER_PATH=/path/to/openai/pretrained/numpy/weights
transformers-cli convert --model_type gpt \
--tf_checkpoint $OPENAI_GPT_CHECKPOINT_FOLDER_PATH \
--pytorch_dump_output $PYTORCH_DUMP_OUTPUT \
[--config OPENAI_GPT_CONFIG] \
[--finetuning_task_name OPENAI_GPT_FINETUNED_TASK] \
OpenAI GPT-2
这是预训练OpenAI GPT-2模型转换过程的示例(请参见此处(https://github.com/openai/gpt-2))
export OPENAI_GPT2_CHECKPOINT_PATH=/path/to/gpt2/pretrained/weights
transformers-cli convert --model_type gpt2 \
--tf_checkpoint $OPENAI_GPT2_CHECKPOINT_PATH \
--pytorch_dump_output $PYTORCH_DUMP_OUTPUT \
[--config OPENAI_GPT2_CONFIG] \
[--finetuning_task_name OPENAI_GPT2_FINETUNED_TASK]
Transformer-XL
这是预训练Transformer-XL模型转换过程的示例(请参见此处的(https://github.com/kimiyoung/transformer-xl/tree/master/tf#obtain-and-evaluate-pretrained-sota-models))
export TRANSFO_XL_CHECKPOINT_FOLDER_PATH=/path/to/transfo/xl/checkpoint
transformers-cli convert --model_type transfo_xl \
--tf_checkpoint $TRANSFO_XL_CHECKPOINT_FOLDER_PATH \
--pytorch_dump_output $PYTORCH_DUMP_OUTPUT \
[--config TRANSFO_XL_CONFIG] \
[--finetuning_task_name TRANSFO_XL_FINETUNED_TASK]
XLNet
这是一个预训练XLNet模型的转换过程示例:
export TRANSFO_XL_CHECKPOINT_PATH=/path/to/xlnet/checkpoint
export TRANSFO_XL_CONFIG_PATH=/path/to/xlnet/config
transformers-cli convert --model_type xlnet \
--tf_checkpoint $TRANSFO_XL_CHECKPOINT_PATH \
--config $TRANSFO_XL_CONFIG_PATH \
--pytorch_dump_output $PYTORCH_DUMP_OUTPUT \
[--finetuning_task_name XLNET_FINETUNED_TASK] \
XLM
这是一个预训练XLM模型的转换过程示例:
“`shell
export XLM_CHECKPOINT_PATH=/path/to/xlm/checkpoint
transformers-cli convert –model_type xlm \
–tf_checkpoint $XLM_CHECKPOINT_PATH \
–pytorch_dump_output $PYTORCH_DUMP_OUTPUT
[–config XML_CONFIG] \
[–finetuning_task_name XML_FINETUNED_TASK]
“`
原文链接:https://huggingface.co/transformers/converting_tensorflow_models.html
原创文章,作者:磐石,如若转载,请注明出处:https://panchuang.net/2020/04/29/transformers-%e8%bd%ac%e6%8d%a2tensorflow%e7%9a%84checkpoints-%e4%b9%9d/