#
Convertir checkpoints de Tensorflow

Te proporcionamos una interfaz de línea de comando (`CLI`, por sus siglas en inglés) para convertir puntos de control (checkpoints) originales de Bert/GPT/GPT-2/Transformer-XL/XLNet/XLM en modelos que se puedan cargar utilizando los métodos `from_pretrained` de la biblioteca.

Desde 2.3.0, el script para convertir es parte de la CLI de transformers (transformers-cli) disponible en cualquier instalación de transformers >= 2.3.0.

La siguiente documentación refleja el formato para el comando transformers-cli convert.

##
BERT

Puedes convertir cualquier checkpoint de TensorFlow para BERT (en particular, los modelos pre-entrenados y publicados por Google) en un archivo de PyTorch mediante el script convert_bert_original_tf_checkpoint_to_pytorch.py.

Esta CLI toma como entrada un checkpoint de TensorFlow (tres archivos que comienzan con `bert_model.ckpt`) y el archivo de configuración asociado (`bert_config.json`), y crea un modelo PyTorch para esta configuración, carga los pesos del checkpoint de TensorFlow en el modelo de PyTorch y guarda el modelo resultante en un archivo estándar de PyTorch que se puede importar usando `from_pretrained()` (ve el ejemplo en Tour rápido, run_glue.py).

Solo necesitas ejecutar este script una vez para convertir un modelo a PyTorch. Después, puedes ignorar el checkpoint de TensorFlow (los tres archivos que comienzan con `bert_model.ckpt`), pero asegúrate de conservar el archivo de configuración (`bert_config.json`) y el archivo de vocabulario (`vocab.txt`) ya que estos también son necesarios para el modelo en PyTorch.

Para ejecutar este script deberás tener instalado TensorFlow y PyTorch (`pip install tensorflow`). El resto del repositorio solo requiere PyTorch.

Aquí hay un ejemplo del proceso para convertir un modelo `BERT-Base Uncased` pre-entrenado:

    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

Puedes descargar los modelos pre-entrenados de Google para la conversión aquí.

##
ALBERT

Convierte los checkpoints del modelo ALBERT de TensorFlow a PyTorch usando el script convert_albert_original_tf_checkpoint_to_pytorch.py.

La CLI toma como entrada un checkpoint de TensorFlow (tres archivos que comienzan con `model.ckpt-best`) y el archivo de configuración adjunto (`albert_config.json`), luego crea y guarda un modelo de PyTorch. Para ejecutar esta conversión deberás tener instalados TensorFlow y PyTorch.

Aquí hay un ejemplo del proceso para convertir un modelo `ALBERT Base` pre-entrenado:

    export ALBERT_BASE_DIR=/path/to/albert/albert_base

    transformers-cli convert --model_type albert \
      --tf_checkpoint $ALBERT_BASE_DIR/model.ckpt-best \
      --config $ALBERT_BASE_DIR/albert_config.json \
      --pytorch_dump_output $ALBERT_BASE_DIR/pytorch_model.bin

Puedes descargar los modelos pre-entrenados de Google para la conversión aquí.

##
OpenAI GPT

Este es un ejemplo del proceso para convertir un modelo OpenAI GPT pre-entrenado, asumiendo que tu checkpoint de NumPy se guarda con el mismo formato que el modelo pre-entrenado de OpenAI (más información aquí):

    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

Aquí hay un ejemplo del proceso para convertir un modelo OpenAI GPT-2 pre-entrenado (más información aquí):

    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

Aquí hay un ejemplo del proceso para convertir un modelo Transformer-XL pre-entrenado (más información aquí):

    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

Aquí hay un ejemplo del proceso para convertir un modelo XLNet pre-entrenado:

    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

Aquí hay un ejemplo del proceso para convertir un modelo XLM pre-entrenado:

    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]

##
T5

Aquí hay un ejemplo del proceso para convertir un modelo T5 pre-entrenado:

    export T5=/path/to/t5/uncased_L-12_H-768_A-12

    transformers-cli convert --model_type t5 \
      --tf_checkpoint $T5/t5_model.ckpt \
      --config $T5/t5_config.json \
      --pytorch_dump_output $T5/pytorch_model.bin