🚀 灵心健康大模型SoulChat:長文相談指令と多輪共感対話データセットの混合微調整により、大規模モデルの「共感」能力を向上させる
SoulChatは、長文相談指令と多輪共感対話データセットの混合微調整を通じて、大規模モデルの「共感」能力を向上させます。このモデルは、心理カウンセリング分野における応用に特化しており、ユーザーとの対話において共感的な応答を提供することができます。
SoulChat |
BianQue |
能動的健康の能動性、予防性、精度、個別化、共同構築と共有、自己規律という6つの特徴に基づき、華南理工大学未来技術学院 - 広東省デジタルツイン人重点実験室は、中国語圏の生活空間能動的健康大規模モデルの基盤となるProactiveHealthGPTをオープンソース化しました。これには以下のものが含まれます。
私たちは、生活空間能動的健康大規模モデルの基盤ProactiveHealthGPT が、学界における慢性疾患や心理カウンセリングなどの能動的健康分野での大規模モデルの研究と応用を加速させることを期待しています。本プロジェクトは 心理健康大規模モデル靈心(SoulChat) です。
🚀 クイックスタート
✨ 主な機能
- 長文相談指令と多輪共感対話データセットの混合微調整により、大規模モデルの「共感」能力を向上させます。
- ユーザーとの対話において、共感的な応答を提供することができます。
- 心理カウンセリング分野における応用に特化しています。
📦 インストール
プロジェクトのクローン
cd ~
git clone https://github.com/scutcyr/SoulChat.git
依存関係のインストール
torchのバージョンは、サーバーの実際のcudaバージョンに合わせて選択する必要があります。詳細はpytorchインストールガイドを参照してください。
cd SoulChat
conda env create -n proactivehealthgpt_py38 --file proactivehealthgpt_py38.yml
conda activate proactivehealthgpt_py38
pip install cpm_kernels
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116
💻 使用例
基本的な使用法
import torch
from transformers import AutoModel, AutoTokenizer
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model_name_or_path = 'scutcyr/SoulChat'
model = AutoModel.from_pretrained(model_name_or_path, trust_remote_code=True).half()
model.to(device)
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True)
user_input = "私は失恋して、とてもつらい!"
input_text = "ユーザー:" + user_input + "\n心理カウンセラー:"
response, history = model.chat(tokenizer, query=input_text, history=None, max_length=2048, num_beams=1, do_sample=True, top_p=0.75, temperature=0.95, logits_processor=None)
user_history = ['こんにちは、先生', '私の彼女が私と別れた、とてもつらい']
bot_history = ['こんにちは!あなたの専用デジタルカウンセラーであるスイートハート先生です。相談や打ち明けを歓迎します。お役に立てることを楽しみにしています!']
context = "\n".join([f"ユーザー:{user_history[i]}\n心理カウンセラー:{bot_history[i]}" for i in range(len(bot_history))])
input_text = context + "\nユーザー:" + user_history[-1] + "\n心理カウンセラー:"
response, history = model.chat(tokenizer, query=input_text, history=None, max_length=2048, num_beams=1, do_sample=True, top_p=0.75, temperature=0.95, logits_processor=None)
サービスの起動
本プロジェクトではsoulchat_app.pyをSoulChatモデルの使用例として提供しています。以下のコマンドでサービスを起動し、http://<your_ip>:9026 からアクセスできます。
streamlit run soulchat_app.py --server.port 9026
特に、soulchat_app.pyでは、以下のコードを変更することで指定のGPUを切り替えることができます。
os.environ['CUDA_VISIBLE_DEVICES'] = '2'
以下のコードを変更することで、モデルのパスをローカルパスに指定することができます。
model_name_or_path = 'scutcyr/SoulChat'
📚 ドキュメント
最近の更新
概要
現在の一般的な心理カウンセリングプラットフォームを調査した結果、ユーザーがオンラインで心理的な助けを求める際には、通常、長文で自己紹介を行い、その後、心理カウンセラーも同様に長文で返答することが多いことがわかりました(https://github.com/scutcyr/SoulChat/blob/main/figure/single_turn.pngを参照)。これにより、段階的な打ち明けの過程が欠けていることがわかりました。しかし、実際の心理カウンセリングの過程では、ユーザーと心理カウンセラーの間には多輪のコミュニケーションが行われ、その過程で心理カウンセラーはユーザーの打ち明けを誘導し、「素晴らしい」「あなたの気持ちを理解します」「もちろんです」などの共感的な応答を提供します。
現在、多輪共感対話データセットが非常に不足していることを考慮して、私たちは一方面で、15万規模を超える 単輪長文心理カウンセリング指令と回答(SoulChatCorpus-single_turn) を構築し、回答数は50万を超えました(指令数は現在の一般的な心理カウンセリングデータセット PsyQA の6.7倍)。また、ChatGPTとGPT4を利用して、合計約100万輪の 多輪回答データ(SoulChatCorpus-multi_turn) を生成しました。特に、事前実験では、純粋な単輪長文駆動の心理カウンセリングモデルはユーザーに煩わしさを感じさせるようなテキスト長になり、ユーザーの打ち明けを誘導する能力がないことがわかりました。一方、純粋な多輪心理カウンセリング対話データ駆動の心理カウンセリングモデルは、モデルの提案能力が低下することがわかりました。そのため、私たちはSoulChatCorpus-single_turnとSoulChatCorpus-multi_turnを混合して、120万以上のサンプルを持つ 単輪と多輪の混合共感対話データセットSoulChatCorpus を構築しました。すべてのデータは「ユーザー:xxx\n心理カウンセラー:xxx\nユーザー:xxx\n心理カウンセラー:」の形式で統一された指令形式になっています。
私たちは ChatGLM-6B を初期化モデルとして選択し、全量パラメータの指令微調整 を行い、モデルの共感能力、ユーザーの打ち明けを誘導する能力、および合理的な提案を提供する能力を向上させることを目指しています。詳細な訓練内容については、後日公開する論文を参照してください。
🔧 技術詳細
本プロジェクトでは、以下の技術を使用しています。
属性 |
詳情 |
モデルタイプ |
ChatGLM-6Bをベースにした全量パラメータの指令微調整モデル |
訓練データ |
単輪長文心理カウンセリング指令と回答(SoulChatCorpus-single_turn)、多輪回答データ(SoulChatCorpus-multi_turn) |
📄 ライセンス
本プロジェクトではChatGLM-6Bモデルの重みを使用しており、そのMODEL_LICENSEに従う必要があります。したがって、本プロジェクトは非商業的な研究目的にのみ使用できます。
声明
- 本プロジェクトで提供されるSoulChatモデルは、大規模モデルの共感対話と傾聴能力の向上を目指していますが、モデルの出力テキストには一定のランダム性があります。傾聴者としては適していますが、SoulChatモデルの出力テキストを心理医師などの診断や提案に代用することはお勧めしません。本プロジェクトは、モデルの出力テキストがユーザーに完全に適していることを保証するものではなく、ユーザーは本モデルを使用する際にそれに伴うすべてのリスクを負う必要があります!
- あなたは、商業的、軍事的、または違法な目的でSoulChatモデルの全部または一部の派生作品を使用、複製、修正、統合、公開、配布、複製、または作成することはできません。
- あなたは、SoulChatモデルを使用して、国家安全と国家統一を脅かし、社会的公共利益を害し、人身権を侵害する行為を行ってはなりません。
- あなたは、SoulChatモデルを使用する際に、それが医師、心理医師などの専門家に代わるものではなく、モデルの出力に過度に依存、従順、信頼してはならず、SoulChatモデルとのチャットに長期間夢中になってはならないことを知っておく必要があります。
謝辞
本プロジェクトは華南理工大学未来技術学院 広東省デジタルツイン人重点実験室によって発起され、華南理工大学情報ネットワーク工学研究センターの支援を受けています。また、共同研究機関である広東省婦幼保健院、広州市婦女子医療センター、中山大学附属第三病院などに感謝します。
引用
@misc{chen2023soulchat,
title={灵心健康大模型SoulChat:通过长文本咨询指令与多轮共情对话数据集的混合微调,提升大模型的“共情”能力},
author={Yirong Chen, Xiaofen Xing, Zhenyu Wang, Xiangmin Xu},
year={2023},
month = {6},
version = {1.0},
url = {https://github.com/scutcyr/SoulChat}
}