Este es el repositorio del código utilizado en el documento:
Por favor cita el papel como:
@article { din2023jump ,
title = { Jump to Conclusions: Short-Cutting Transformers With Linear Transformations } ,
author = { Yom Din, Alexander and Karidi, Taelin and Choshen, Leshem and Geva, Mor } ,
journal = { arXiv preprint arXiv:2303.09435 } ,
year = { 2023 } ,
} Para producir parcelas para las oraciones gpt2 y Wikipedia, ejecute lo siguiente, en el orden escrito:
get_wikipedia_sentences.py
(Produce ./experiment/sentences/wikipedia_20K-sentences.pickle , que contiene 20k oraciones de Wikipedia)
add_tokenization.py
(produce ./experiment/gpt2/wikipedia_tokenized_train.pickle que contiene las tokenizaciones y las posiciones de token aleatorios para las primeras 9000 oraciones del archivo producido por el script anterior, y ./experiment/gpt2/wikipedia_tokenized_val.pickle que contiene las tokenizaciones y posiciones de token aleatorias para las posiciones de token de token) para las próximas 3000 sentencias) para las posiciones de token de token).
add_linreg.py
(produce ./linreg/gpt2/wikipedia/i_j.pickle donde
add_plot_r2.py
(produce ./experiment/gpt2/wikipedia_r2_scores.pickle que contiene el ./experiments/gpt2/plots/wikipedia/r2_scores_12.pdf que contiene las gráficas de mapas de calor para estos
add_linreg_submodules.py
(produce ./linreg/gpt2/wikipedia/pi_a_b.pickle donde
add_results.py
(produce ./experiment/gpt2/wikipedia_results.pickle que contiene (para cada muestra de conjunto de validación) los 10 tokens principales, así como la sorpresa del modelo del token top 1, de acuerdo con las cinco asignaciones del documento, en cada capa; y también contienen los 10 tokens principales y el número de capas procesadas cuando se producen temprano y utilizando las asignaciones y utilizando las asignaciones en el documento;
trrat_results.py
(produce algunas gráficas en ./experiment/gpt2/plots/wikipedia/ basado en los resultados en la salida del archivo anterior)
Para producir parcelas para oraciones bert-base-uncased y Wikipedia, ejecute lo siguiente, en el orden escrito:
get_wikipedia_sentences.py
(Lo mismo que para gpt2 anterior, no es necesario volver a ejecutar)
bert_add_reps.py
(Produce ./experiment/bert-base-uncased_mask/wikipedia_train.pickle que contiene las tokenizaciones, posiciones de token aleatorias y representaciones del token aleatorio enmascarado en todas las capas para las primeras 9000 oraciones del archivo producido por el script anterior y ./experiment/bert-base-uncased_mask/wikipedia_val.pickle . Posiciones de token aleatorias y representaciones de la ficha aleatoria enmascarada en todas las capas para las próximas 3000 oraciones)
bert_add_linreg.py
(Produce ./linreg/bert-base-uncased_mask/wikipedia/i_j.pickle donde
bert_add_plot_r2.py
(Produce ./experiment/bert-base-uncased_mask/wikipedia_r2_scores.pickle que contiene el ./experiments/bert-base-uncased_mask/plots/wikipedia/r2_scores_12.pdf que contiene los gráficos de mapas de calor para estos
bert_add_results.py
(Produce ./experiment/bert-base-uncased_mask/wikipedia_results.pickle que contiene (para cada muestra de conjunto de validación) los 10 tokens principales, así como la sorpresa del modelo de la token top 1, según
plot_results.py (Cambiar model_folder_name='bert-base-uncased_mask' y plot_parts = False )
(Produce algunas gráficas en ./experiment/bert-base-uncased_mask/plots/wikipedia/ basado en los resultados en la salida del archivo anterior)
También produjimos gráficos para gpt2-medium , gpt2-large , gpt2-xl , bert-large-uncased . Para hacer eso, uno debe modificar, de una manera relativamente estrecha, las variables en la cabeza de cada script en la secuencia.
El código se ejecutó con Python 3.10.4 y las siguientes versiones del paquete:
torch.__version__ = 1.13.1+cu117
transformers.__version__ = 4.20.1
sklearn.__version__ = 1.2.0
pickle.format_version = 4.0
datasets.__version__ = 2.5.2 # used only to fetch Wikipedia sentences
spacy.__version__ = 3.5.0 # used only to fetch Wikipedia sentences
Algunas de las matrices entrenadas se pueden encontrar en https://huggingface.co/sashay/linear-shortcut.