はじめに
最近流行りのBERTを使ってサンプルを動かしてみます。
環境
CentOS7
python3.6
tensorflow1.12
学習済みのモデルをダウンロード
学習済みのモデルが公開されているので、ダウンロードしてから解凍します
wget https://storage.googleapis.com/bert_models/2018_10_18/uncased_L-12_H-768_A-12.zip unzip uncased_L-12_H-768_A-12.zip
対象データのダウンロード
次にGLUEという対象となるデータをダウンロードします。
ダウンロードには公開されているスクリプトがあるのでこれを使います。
wget https://gist.githubusercontent.com/W4ngatang/60c2bdb54d156a41194446737ce03e2e/raw/17b8dd0d724281ed7c3b2aeeda662b92809aadd5/download_glue_data.py python download_glue_data.py
環境変数の設定
以下のコマンドで環境変数を設定しておきます。
export BERT_BASE_DIR=uncased_L-12_H-768_A-12 export GLUE_DIR=glue_data/
BERTを実行
python bert/run_classifier.py --task_name=MRPC --do_train=true --do_eval=true --data_dir=$GLUE_DIR/MRPC --vocab_file=$BERT_BASE_DIR/vocab.txt --bert_config_file=$BERT_BASE_DIR/bert_config.json --init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt --max_seq_length=128 --train_batch_size=32 --learning_rate=2e-5 --num_train_epochs=3.0 --output_dir=/tmp/mrpc_output/
自分の環境だと1時間以上かかりましたが、GPUなどを使うと15分程度で終わるみたいです。
実行が終わると以下のような表示が出ます。
終わりに
研究でBERTを使うにあたりまずはサンプルを動かしてみました。
動かすこと自体は比較的容易ですが、BERT単体でもかなり高い精度が出ているのがわかります。
今後は自分の研究にBERTを組み込んだり、改善したりしていきます。