#
Convertire checkpoint di Tensorflow

È disponibile un’interfaccia a linea di comando per convertire gli originali checkpoint di Bert/GPT/GPT-2/Transformer-XL/XLNet/XLM in modelli che possono essere caricati utilizzando i metodi `from_pretrained` della libreria.

A partire dalla versione 2.3.0 lo script di conversione è parte di transformers CLI (transformers-cli), disponibile in ogni installazione di transformers >=2.3.0.

La seguente documentazione riflette il formato dei comandi di transformers-cli convert.

##
BERT

Puoi convertire qualunque checkpoint Tensorflow di BERT (in particolare i modeli pre-allenati rilasciati da Google) in un file di salvataggio Pytorch utilizzando lo script convert_bert_original_tf_checkpoint_to_pytorch.py.

Questo CLI prende come input un checkpoint di Tensorflow (tre files che iniziano con `bert_model.ckpt`) ed il relativo file di configurazione (`bert_config.json`), crea un modello Pytorch per questa configurazione, carica i pesi dal checkpoint di Tensorflow nel modello di Pytorch e salva il modello che ne risulta in un file di salvataggio standard di Pytorch che può essere importato utilizzando `from_pretrained()` (vedi l’esempio nel quicktour , run_glue.py ).

Devi soltanto lanciare questo script di conversione una volta per ottenere un modello Pytorch. Dopodichè, potrai tralasciare il checkpoint di Tensorflow (i tre files che iniziano con `bert_model.ckpt`), ma assicurati di tenere il file di configurazione (`bert_config.json`) ed il file di vocabolario (`vocab.txt`) in quanto queste componenti sono necessarie anche per il modello di Pytorch.

Per lanciare questo specifico script di conversione avrai bisogno di un’installazione di Tensorflow e di Pytorch (`pip install tensorflow`). Il resto della repository richiede soltanto Pytorch.

Questo è un esempio del processo di conversione per un modello `BERT-Base Uncased` pre-allenato:

    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

Puoi scaricare i modelli pre-allenati di Google per la conversione qua.

##
ALBERT

Per il modello ALBERT, converti checkpoint di Tensoflow in Pytorch utilizzando lo script convert_albert_original_tf_checkpoint_to_pytorch.py.

Il CLI prende come input un checkpoint di Tensorflow (tre files che iniziano con `model.ckpt-best`) e i relativi file di configurazione (`albert_config.json`), dopodichè crea e salva un modello Pytorch. Per lanciare questa conversione avrai bisogno di un’installazione di Tensorflow e di Pytorch.

Ecco un esempio del procedimento di conversione di un modello `ALBERT Base` pre-allenato:

    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

Puoi scaricare i modelli pre-allenati di Google per la conversione qui.

##
OpenAI GPT

Ecco un esempio del processo di conversione di un modello OpenAI GPT pre-allenato, assumendo che il tuo checkpoint di NumPy sia salvato nello stesso formato dei modelli pre-allenati OpenAI (vedi qui):

    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

Ecco un esempio del processo di conversione di un modello OpenAI GPT-2 pre-allenato (vedi qui):

    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

Ecco un esempio del processo di conversione di un modello Transformer-XL pre-allenato (vedi qui):

    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

Ecco un esempio del processo di conversione di un modello XLNet pre-allenato:

    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

Ecco un esempio del processo di conversione di un modello XLM pre-allenato:

    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

Ecco un esempio del processo di conversione di un modello T5 pre-allenato:

    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