1. 磐创AI首页
  2. 系列教程
  3. Transformers

Transformers 转换Tensorflow的Checkpoints | 九

本文是全系列中第11 / 13篇:Transformers

作者|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_outputPYTORCH_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/

发表评论

登录后才能评论

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息