이것은 논문에 사용 된 코드의 저장소입니다.
종이를 다음과 같이 인용하십시오.
@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 및 Wikipedia 문장에 대한 음모를 제작하려면 다음 순서로 다음을 실행하십시오.
get_wikipedia_sentences.py
(Wikipedia의 20k 문장을 포함하는 ./experiment/sentences/wikipedia_20K-sentences.pickle 제작)
add_tokenization.py
(제작 된 ./experiment/gpt2/wikipedia_tokenized_train.pickle 이전 스크립트에서 생성 된 파일의 첫 9000 문장과 ./experiment/gpt2/wikipedia_tokenized_val.pickle 을 포함하는 3000 번의 랜덤 포지션을 포함하는 첫 9000 문장에 대한 토큰 화 및 임의의 토큰 위치를 포함합니다.
add_linreg.py
(제작 ./linreg/gpt2/wikipedia/i_j.pickle where
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 where
add_results.py
각 층에서 용지의 5 개의 맵핑에 따라 상위 1 개의 토큰에 따라 상위 1 개의 ./experiment/gpt2/wikipedia_results.pickle 의 모델의 놀라움뿐만 아니라 상위 10 개의 토큰의 모형뿐만 아니라 상위 1 개의 토큰에 대한 모델의 놀라움뿐만 아니라, 초기에, 초기-헥스와 사용하는 숫자를 포함하는 상위 1 개의 토큰에 따라 상위 10 개의 토큰에 대한 모델의 놀라움뿐만 아니라 상위 10 개의 토큰을 제작하는 (각각의 검증 세트 샘플에 대해).
plot_results.py
(이전 파일의 출력 결과를 기반으로 ./experiment/gpt2/plots/wikipedia/ 에서 일부 플롯을 생성합니다)
bert-base-uncased 및 Wikipedia 문장을위한 음모를 제작하려면 다음 순서로 다음을 실행하십시오.
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 where
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 포함 (각 유효성 검사 세트 샘플에 대해) 상위 10 개의 토큰과 상위 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-shortcut에서 찾을 수 있습니다.