Это хранилище кода, используемого в статье:
Пожалуйста, цитируйте бумагу как:
@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 } ,
} Чтобы создать участки для предложений gpt2 и Википедии, запустите следующее, в письменном порядке:
get_wikipedia_sentences.py
(производит ./experiment/sentences/wikipedia_20K-sentences.pickle , содержащий 20 тыс. Предложений из Википедии)
add_tokenization.py
(Производит ./experiment/gpt2/wikipedia_tokenized_train.pickle , содержащий токенизации и случайные позиции токенов для первых 9000 предложений из файла, создаваемого предыдущим скриптом, и ./experiment/gpt2/wikipedia_tokenized_val.pickle Содержит токенизации и случайные позиции токена для следующих 3plized_val.pickle.
add_linreg.py
(Производит ./linreg/gpt2/wikipedia/i_j.pickle Где
add_plot_r2.py
(производит ./experiment/gpt2/wikipedia_r2_scores.pickle , содержащий ./experiments/gpt2/plots/wikipedia/r2_scores_12.pdf , содержащий графики тепловой карты для них
add_linreg_submodules.py
(производит ./linreg/gpt2/wikipedia/pi_a_b.pickle Где
add_results.py
(производит ./experiment/gpt2/wikipedia_results.pickle , содержащий (для каждого образца набора валидации) токенов лучших 10, а также удивительный токен модели, в соответствии с пятью сопоставлениями бумаги, на каждом слое; и содержащий топ-10 токенс и количество слоев, обрабатываемых при первом и использовании M.P.
plot_results.py
(создает некоторые участки в ./experiment/gpt2/plots/wikipedia/ на основе результатов в выходе предыдущего файла)
Чтобы создать участки для предложений bert-base-uncased и википедии, запустите следующее, в письменном порядке:
get_wikipedia_sentences.py
(так же, как и для gpt2 выше, нет необходимости повторно запустить)
bert_add_reps.py
(Производит ./experiment/bert-base-uncased_mask/wikipedia_train.pickle , содержащий токенизации, случайные позиции токена и представления случайного жетона в масках на всех слоях для первых 9000 предложений из файла, создаваемых предыдущим сценарием и ./experiment/bert-base-uncased_mask/wikipedia_val.pickle Позиции токена и представления случайного токена в масках на всех слоях для следующих 3000 предложений)
bert_add_linreg.py
(Производит ./linreg/bert-base-uncased_mask/wikipedia/i_j.pickle Где
bert_add_plot_r2.py
(производит ./experiment/bert-base-uncased_mask/wikipedia_r2_scores.pickle , содержащий ./experiments/bert-base-uncased_mask/plots/wikipedia/r2_scores_12.pdf , содержащий графики тепловой карты для них
bert_add_results.py
(производит ./experiment/bert-base-uncased_mask/wikipedia_results.pickle , содержащий (для каждого образца валидации) токены лучших, а также удивительный модель токена 1 токена, в соответствии с
plot_results.py (изменение model_folder_name='bert-base-uncased_mask' и plot_parts = False )
(создает некоторые участки в ./experiment/bert-base-uncased_mask/plots/wikipedia/ на основе результатов в выходе предыдущего файла)
Мы также произвели участки для gpt2-medium , gpt2-large , gpt2-xl , bert-large-uncased . Чтобы сделать это, следует изменить относительно странный способ, переменные в голове каждого сценария в последовательности.
Код был запущен с Python 3.10.4 и следующими версиями пакета:
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
Некоторые из обученных матриц можно найти по адресу https://huggingface.co/sashay/linear-hortcut.