(更新10/23/2022)Redditディスカッションスレッドから551mのマルチターンダイアログと5Mの指導と知識の接地ダイアログでトレーニングされたGodel V1.1をリリースしました。特にゼロショット設定では、ベンチマークで大幅に優れた結果を示しています。
Huggingface Transformersリポジトリのモデルカードをご覧ください。いくつかのコードを使用すると、Godelとチャットするのは非常に簡単なはずです。ここにはライブデモが表示されます。
ベースモデル:https://huggingface.co/microsoft/godel-v1_1-base-seq2seq
大規模モデル:https://huggingface.co/microsoft/godel-v1_1-large-seq2seq
このリポジトリは、Godelを使用したビルディングゴール指向ダイアログを紹介し、次の論文のデータセット、ソースコード、事前に訓練されたモデルが含まれています。
Godel:目標指向のダイアログの大規模な事前トレーニング
Baolin Peng、Michel Galley、Pengcheng HE、Chris Brockett、Lars Liden、Elnaz Nouri、Zhou Yu、Bill Dolan、Jianfeng Gao 
Godelは、目標指向のダイアログの大規模な事前訓練モデルです。トランスベースのエンコーダデコーダーモデルでパラメーター化され、外部テキストに基づいた応答生成のためにトレーニングされているため、現在の会話の外部の情報(取得ドキュメントなど)の応答を調整する必要があるダイアログタスクでより効果的な微調整が可能になります。事前に訓練されたモデルは、効率的に微調整され、タスク固有のダイアログをいくつか備えた新しいダイアログタスクを達成するために適応することができます。
このリポジトリは、Hugginface Transformersに基づいています。いくつかの評価スクリプトとデータセットは、DSTC7-end-to-end-conversation-modeling、dialogpt、unifiedqa、ms marco、multiwoz、スキーマ誘導データセットなどから採用されています。
付属のスクリプトを使用して、論文で報告された結果を再現できます。プロジェクトとデモのウェブページ:https://aka.ms/godel
インタラクティブインターフェイスrequries node.jsとnpmが必要です。インストールについてはこちらを参照してください。
以下のコマンドを使用して環境を作成し、リポジトリをクローンし、必要なパッケージをインストールしてください。
conda create -n godel-env python=3.8
conda activate godel-env
conda install nodejs
git clone https://github.com/microsoft/GODEL.git
cd GODEL
pip install -r requirements.txt
export PYTHONPATH="`pwd`"
独自のデータを凝視し続けるために、事前に守られたモデルを取り出して解凍します。
wget https://bapengstorage.blob.core.windows.net/fileshare/godel_base.tar.gz
tar -zxvf godel_base.tar.gzデータ形式
{
"Context" : " Please remind me of calling to Jessie at 2PM. " ,
"Knowledge" : " reminder_contact_name is Jessie, reminder_time is 2PM " ,
"Response" : " Sure, set the reminder: call to Jesse at 2PM "
},JSON形式を使用して、トレーニングの例を表します。上記の例に示すように、次のフィールドが含まれています。
微調整
DATA_NAME={path_of_data}
OUTPUT_DIR={path_of_fine-tuned_model}
MODEL_PATH={path_of_pre-trained_model}
EXP_NAME={experiment_name}
python train.py --model_name_or_path ${MODEL_PATH}
--dataset_name ${DATA_NAME}
--output_dir ${OUTPUT_DIR}
--per_device_train_batch_size=16
--per_device_eval_batch_size=16
--max_target_length 512
--max_length 512
--num_train_epochs 50
--save_steps 10000
--num_beams 5
--exp_name ${EXP_NAME} --preprocessing_num_workers 24世代
DATA_NAME = { path_of_data }
OUTPUT_DIR = { path_to_save_predictions }
MODEL_PATH = { path_of_fine - tuned_model }
python generate . py - - model_name_or_path ${ MODEL_PATH }
- - dataset_name ${ DATA_NAME }
- - output_dir ${ OUTPUT_DIR }
- - per_device_eval_batch_size = 16
- - max_target_length 128
- - max_length 512
- - preprocessing_num_workers 24
- - num_beams 5 交流
Finetunedモデルとチャットするデモインターフェイスを提供します。バックエンドサーバーはフラスコに基づいており、インターフェイスはVue 、 Bootstrap-Vue 、およびBasicVueChatに基づいています。
バックエンドサーバーを開始します。
# Please create the backend server refering to e.g., dstc9_server.py
python EXAMPLE_server.py # start the sever and expose 8080 フロントエンドページの提供を開始します:
cd GODEL/html
npm install
npm run serve Open localHost:8080 Webブラウザでは、次のページが表示されます。バックエンドポートは、html/compoents/chat.vueで使用されるポートと一致する必要があることに注意してください。
ここにはライブデモが表示されます。
Godel V1.1をリリースしました。これは、Redditディスカッションスレッドと5Mの指導と知識に基づいたダイアログから551mのマルチターンダイアログでトレーニングされています。その他のモデルは後でリリースされます。
低リソースのユーザー顧客データセットでさらに微調整できる3つの微調整モデルをリリースしました。これらのモデルの合計パラメーターの範囲は117mから2.7bです。
| モデル | ハギングフェイスモデルカード |
|---|---|
| ベース | Microsoft/Godel-V1_1-Base-seq2Seq |
| 大きい | Microsoft/Godel-V1_1-Large-seq2Seq |
5/22/2023:コードベースを備えたGodelモデルを前提とすることはサポートされなくなりましたが、Godelモデルは引き続き利用可能です。詳細については、こちらをご覧ください。
Godelは微調整され、4つのタスクで評価されています。フォーマットでトレーニングとテストデータを作成するためのスクリプトを提供します。 create_downstream_dataset.shを参照して、元のデータをダウンロードし、次のCMDを実行してください。
cd scripts
./create_downstream_dataset.shGROUNDED_CHECKPOINT={path_to_saved_checkpoint}
OUTPUT_DIR={path_to_save_predictions}
TASK=wow
accelerate launch --config_file configs/G16_config.yaml train.py
--model_name_or_path ${GROUNDED_CHECKPOINT}
--dataset_name ./datasets_loader/ ${TASK} _dataset.py
--output_dir ${OUTPUT_DIR}
--per_device_train_batch_size=16
--per_device_eval_batch_size=16
--max_target_length 256
--max_length 512
--num_train_epochs 10
--preprocessing_num_workers 24
--num_beams 5
--exp_name ${TASK}
--learning_rate 5e-5
--save_every_checkpoint
--save_steps 50000 このチュートリアルでは、DSTC9タスクのGodelに基づいた接地ダイアログモデルを構築します。詳細情報はこちらをご覧ください。
最初にデータをダウンロードして、Godel形式に変換します。
cd examples/dstc9
./create_data.sh事前に訓練されたGodelモデルで微調整されています
cd GODEL
GODEL_MODEL={path_to_pre-trained_model}
python train.py
--model_name_or_path ${GODEL_MODEL}
--dataset_name ../examples/dstc9/dstc9_dataset.py
--output_dir ../examples/dstc9/ckpt
--per_device_train_batch_size=16
--per_device_eval_batch_size=16
--max_target_length 128
--max_length 512
--num_train_epochs 50
--save_steps 10000
--num_beams 5
--exp_name wow-test
--preprocessing_num_workers 24
--save_every_checkpoint 上記の訓練されたモデルと対話します
cd examples/dstc9
# replace model path in dstc9_server with a trained ckpt in line 49
python dstc9_server.py
cd GODEL/html
npm install
npm run serveこのリポジトリは、大規模なタスクボットを構築するパラダイムシフトの研究を促進することを目的としています。このツールキットには、実行中のダイアログで実際にモデル重量ファイルを生成するために必要なモデリング機械の一部のみが含まれています。それ自体では、このモデルは、さまざまなテキストスパンの重みに関する情報のみを提供します。研究者が実際にそれを使用するためには、彼らは将来のトレーニング前のために独自の社内会話データを持ち込み、事前に処理された/触知されたシステムから応答生成をデコードする必要があります。 Microsoftは、事前に守られたシステムのサードパーティの利用からのいかなる世代についても責任を負いません。
調査でこのコードとデータを使用する場合は、ARXIVペーパーを引用してください。
@misc{peng2022godel,
author = {Peng, Baolin and Galley, Michel and He, Pengcheng and Brockett, Chris and Liden, Lars and Nouri, Elnaz and Yu, Zhou and Dolan, Bill and Gao, Jianfeng},
title = {GODEL: Large-Scale Pre-training for Goal-Directed Dialog},
howpublished = {arXiv},
year = {2022},
month = {June},
url = {https://www.microsoft.com/en-us/research/publication/godel-large-scale-pre-training-for-goal-directed-dialog/},
}
このプロジェクトは、貢献と提案を歓迎します。ほとんどの貢献では、貢献者ライセンス契約(CLA)に同意する必要があります。詳細については、https://cla.opensource.microsoft.comをご覧ください。
プルリクエストを送信すると、CLAボットはCLAを提供し、PRを適切に飾る必要があるかどうかを自動的に決定します(たとえば、ステータスチェック、コメント)。ボットが提供する指示に従うだけです。 CLAを使用して、すべてのレポでこれを1回だけ行う必要があります。
このプロジェクトは、Microsoftのオープンソース行動規範を採用しています。詳細については、FAQのコードを参照するか、追加の質問やコメントについては[email protected]にお問い合わせください。
このプロジェクトには、プロジェクト、製品、またはサービスの商標またはロゴが含まれる場合があります。 Microsoftの商標またはロゴの承認された使用は、Microsoftの商標およびブランドガイドラインに従うものであり、従わなければなりません。このプロジェクトの変更されたバージョンでのMicrosoft商標またはロゴの使用は、混乱を引き起こしたり、Microsoftのスポンサーシップを暗示したりしてはなりません。サードパーティの商標またはロゴの使用は、これらのサードパーティのポリシーの対象となります。