Press "Enter" to skip to content

【注意力机制】transformers之转换Tensorflow的Checkpoints

来源 | Github

 

作者 | huggingface

 

编译 | VK

 

【导读】 本节 提供了一个命令行界面来转换模型中的原始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模型的转换过程示例:

 

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

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注