GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

salesforce

decaNLP – 自然言語デカスロン:NLPのマルチタスク挑戦

投稿日:

自然言語デカスロン:NLPのマルチタスク挑戦

Natural Language Decathlonは、質問応答、機械翻訳、要約、自然言語推論、センチメント分析、セマンティックロールラベリング、ゼロショット関係抽出、ゴール指向の対話、セマンティック解析、常用代名詞解決の10タスクにまたがるマルチタスクの課題です。 。 各タスクは質問応答としてキャストされ、新しいマルチタスク質問応答ネットワーク(MQAN)を使用することができます。 このモデルは、マルチタスク設定では、タスク固有のモジュールまたはパラメータなしで、decaNLP内のすべてのタスクを共同で学習します。 decaNLPのより完全な紹介については、 ブログの記事論文をご覧ください。

リーダーボード

モデル デカNLP SQuad IWSLT CNN / DM MNLI SST QA-SRL QA-ZRE WOZ WikiSQL MWSC
MQAN 571.7 74.3 13.7 24.6 69.2 86.4 77.6 34.7 84.1 58.7 48.4
S2S 513.6 47.5 14.2 25.7 60.9 85.9 68.7 28.5 84.0 45.8 52.4

入門

まず、 ドッカーnvidia-dockerがインストールされていることを確認します。 次に、ドッカー画像を作成します。

cd dockerfiles && docker build -t decanlp . && cd -

また、 .dataディレクトリを作成し、Winogradスキーマのサンプルをその中に移動する必要があります:

mkdir .data/schema
mv local_data/schema.txt .data/schema/

ドッカーイメージ内でコマンドを実行するには、次のコマンドを使用します。

nvidia-docker run -it --rm -v `pwd`:/decaNLP/ -u $(id -u):$(id -g) decanlp bash -c "COMMAND"

トレーニング

たとえば、Stanford Question Answering Dataset(SQuAD)でMultitask Question Answering Network(MQAN)をトレーニングするには、次のようにします。

nvidia-docker run -it --rm -v `pwd`:/decaNLP/ -u $(id -u):$(id -g) decanlp bash -c "python /decaNLP/train.py --train_tasks squad --gpu DEVICE_ID"

このペーパーで説明されている完全に連携したラウンドロビンのトレーニングでマルチタスキングするには、複数のタスクを追加できます。

nvidia-docker run -it --rm -v `pwd`:/decaNLP/ -u $(id -u):$(id -g) decanlp bash -c "python /decaNLP/train.py --train_tasks squad iwslt.en.de --train_iterations 1 --gpu DEVICE_ID"

自然言語デカスロン全体を訓練するには:

nvidia-docker run -it --rm -v `pwd`:/decaNLP/ -u $(id -u):$(id -g) decanlp bash -c "python /decaNLP/train.py --train_tasks squad iwslt.en.de cnn_dailymail multinli.in.out sst srl zre woz.en wikisql schema --train_iterations 1 --gpu DEVICE_ID"

experiments.sh 、モデル内のモデルとトレーニング戦略を比較した検証結果を報告するために使用した各訓練モデルに対応するコマンドのリストがあります。

テンソルボード

テンソルボードを使用する場合は、(通常はtmuxペインまたは同等のもので)以下を実行します。

docker run -it --rm -p 0.0.0.0:6006:6006 -v `pwd`:/decaNLP/ decanlp bash -c "tensorboard --logdir /decaNLP/results"

リモートマシン上でサーバーを実行している場合は、ローカルマシンでhttp:// localhost:6006 /に転送するために次のコマンドを実行できます。

ssh -4 -N -f -L 6006:127.0.0.1:6006 YOUR_REMOTE_IP

いずれかのマシンで指定されたポートに問題がある場合は、 lsof -if:6006を実行し、不要な場合はプロセスを終了してください。 それ以外の場合は、上記のコマンドでポート番号を変更してみてください。 最初のポート番号はローカルマシンがバインドしようとするポートで、2番目のポートはリモートマシン(またはドッカーコンテナ)によって公開されるポートです。

トレーニング中の警告

  • 1つのNVIDIA Volta GPUでは、コードは500k回の反復を完了するまでに約3日かかります。 これらは、論文を実験的に再現するのに十分なはずです。
  • --load <PATH_TO_CHECKPOINT>--resumeを使用して、格納されたチェックポイントを使用してモデルを再開することができます。 デフォルトでは、モデルはresults/フォルダツリーに--save_everyイテレーション毎に格納されます。
  • トレーニング中に、検証が遅くなることがあります。 特にROUGEスコアを計算する場合。 検証の頻度を変更するには、– --val_everyフラグを使用します。
  • メモリ不足の場合は、– --train_batch_tokens--val_batch_size減らして--val_batch_size
  • 最初に実行すると、コードはすべての考慮されたデータセットをダウンロードしてキャッシュします。 これはしばらく時間がかかることがあります。特に、大きなデータセットの場合は、時間がかかることがあります。

評価

EVALUATION_TYPEvalidationまたはtestとして使用して、特定のタスクのモデルを評価できます。

nvidia-docker run -it --rm -v `pwd`:/decaNLP/ -u $(id -u):$(id -g) decanlp bash -c "python /decaNLP/predict.py --evaluate EVALUATION_TYPE --path PATH_TO_CHECKPOINT_DIRECTORY --gpu DEVICE_ID --tasks squad"

タスク仕様を削除してデカッション全体を評価することができます。

nvidia-docker run -it --rm -v `pwd`:/decaNLP/ -u $(id -u):$(id -g) decanlp bash -c "python /decaNLP/predict.py --evaluate EVALUATION_TYPE --path PATH_TO_CHECKPOINT_DIRECTORY --gpu DEVICE_ID"

テストパフォーマンスのために、オリジナルのSQuadMultiNLI 、およびWikiSQL評価システムを使用してください。

引用

これをあなたの仕事で使用する場合は、 The Natural Language Decathlon:質問応答としてのマルチタスク学習を挙げてください。

@article{McCann2018decaNLP,
  title={The Natural Language Decathlon: Multitask Learning as Question Answering},
  author={Bryan McCann and Nitish Shirish Keskar and Caiming Xiong and Richard Socher},
  journal={arXiv preprint arXiv:1806.08730},
  year={2018}
}

接触

連絡先: bmccann@salesforce.comおよびnkeskar@salesforce.com







-salesforce
-, , ,

執筆者:

salesforce

decaNLP – 自然言語デカスロン:NLPのマルチタスク挑戦

投稿日:

(さらに…)







-salesforce
-, , ,

執筆者: