BERTのpre-trainingを実行 [2020/9版]
前準備
Tensorflow(GPU版)をpipでインストール。pipのバージョン違いで混乱することがあるため、私はpython -m pipでインストールした。バージョンは1.15にすること。
python -m pip install tensorflow-gpu==1.15
うまくいかないときは以下でインストール
python -m pip install tensorflow-gpu==1.15 --ignore-installed --user
gitでbertのリポジトリをクローン。
git clone https://github.com/google-research/bert
モデルのダウンロード。今回は、pre-trainingなので、モデル自体は必要ないのだが、モデルのzipファイル内に含まれているvocab.txtとbert_config.jsonを使うためにダウンロード。モデルは様々なサイズが提供されているが、今回はBERT-baseをダウンロード。
cd bert wget https://storage.googleapis.com/bert_models/2020_02_20/uncased_L-12_H-768_A-12.zip unzip uncased_L-12_H-768_A-12.zip
解凍すると、このzipの中に、vocab.txtとbert_config.jsonが入っているのが確認できるはずだ。
ディレクトリ構成は以下のようになった。
bert
├── bert_config.json
├── bert_model.ckpt.data-00000-of-00001
├── bert_model.ckpt.index
├── CONTRIBUTING.md
├── create_pretraining_data.py
├── extract_features.py
├── init.py
├── LICENSE
├── modeling.py
├── modeling_test.py
├── multilingual.md
├── optimization.py
├── optimization_test.py
├── predicting_movie_reviews_with_bert_on_tf_hub.ipynb
├── README.md
├── requirements.txt
├── run_classifier.py
├── run_classifier_with_tfhub.py
├── run_pretraining.py
├── run_squad.py
├── sample_text.txt
├── tokenization.py
├── tokenization_test.py
├── uncased_L-12_H-768_A-12.zip
└── vocab.txt
0 directories, 25 files
穴埋め問題を実行するためのファイル生成
create_pretraining_data.pyに以下の引数を付けて実行
python create_pretraining_data.py --input_file=./sample_text.txt --output_file=/tmp/tf_examples.tfrecord --vocab_file=./vocab.txt --do_lower_case=True --max_seq_length=128 --max_predictions_per_seq=20 --masked_lm_prob=0.15 --random_seed=12345 --dupe_factor=5
Pretrainingの実行
run_pretraining.pyに以下の引数を付けて実行。もしメモリのエラー(OOM)がでるときはtrain_batch_sizeの値を減らす。
python run_pretraining.py --input_file=/tmp/tf_examples.tfrecord --output_dir=/tmp/pretraining_output --do_train=True --do_eval=True --bert_config_file=./bert_config.json --init_checkpoint=./bert_model.ckpt --train_batch_size=32 --max_seq_length=128 --max_predictions_per_seq=20 --num_train_steps=20 --num_warmup_steps=10 --lerning_rate=2e-5
ここまで無事にできていれば、sample_text.txtでのpre-trainingが実行できるはずだ。
ディスカッション
コメント一覧
まだ、コメントがありません