psychcot-tuning

本项目对Deepseek-R1-Distill-Qwen-7B进行心理咨询CoT数据的LoRA微调,以进一步提升Deepseek-R1 在心理咨询领域的慢思考能力。

https://github.com/jiehuixie/psychcot-tuning

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (3.9%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

本项目对Deepseek-R1-Distill-Qwen-7B进行心理咨询CoT数据的LoRA微调,以进一步提升Deepseek-R1 在心理咨询领域的慢思考能力。

Basic Info
  • Host: GitHub
  • Owner: JiehuiXie
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 40.3 MB
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed over 1 year ago
Metadata Files
Readme Contributing License Code of conduct Citation Security

README.md

PsychCoT-Tuning: 心理咨询领域CoT微调项目

llama-factoryPythonPyTorchLicense: MIT

本项目针对Deepseek-R1-Distill-Qwen-7B大语言模型,基于心理学领域CoT(Chain-of-Thought)数据进行定向优化,显著提升模型在心理咨询场景下的慢思考(相对于快思考而言)与逻辑推理能力。

🌟核心亮点

  • 领域增强推理:8K+高质量心理咨询CoT数据驱动微调,PPL从5.1→3.1
  • 高效训练方案:QLoRA-4bit + unsloth加速框架,32GB显存支持batchsize=32&&seqlen=2048
  • 全链路优化:AI+人工联合评估体系,指令遵循准确率提升39%
  • 即插即用系统:集成Gradio流式对话界面,开箱即用的心理咨询AI助手

🛠️快速开始

环境配置

```shell

克隆仓库

git clone https://github.com/JiehuiXie/PsychCoT-Tuning.git

基础依赖

pip install -r requirements.txt

unsloth加速组件

pip install unsloth

Weights & Biases (wandb) 监控面板

pip install wandb

安装依赖

pip install modelscope ```

数据集介绍

数据来源:使用 psychology - o1 - reasoning - SFT 心理咨询 CoT 数据集,该数据集包含 8K+ 条高质量语料。

  • 下载的数据集并非json格式,而是jsonl格式,需进行格式转换,方便后续处理。

数据预处理

```shell

将数据转换成CoT格式

python data_process.py ```

数据样例

json [ { "input": "我晚上难以入睡,我认为这是因为我对工作感到压力", "output": "<think>\n嗯,用户说他晚上难以入睡,认为是因为工作压力。首先,我需要确认他的情况是否常见,以及可能的解决方法。工作压力导致的失眠确实很普遍,但每个人的具体情况可能不同。我需要考虑他的工作环境、压力源是什么,比如工作量、人际关系还是职业发展。然后,可能涉及到他的睡前习惯,是否有使用电子设备、咖啡因摄入等影响睡眠的因素。此外,心理健康方面,比如焦虑或抑郁情绪也可能加剧失眠。我需要建议他调整作息,比如建立规律的睡眠时间,避免咖啡因和蓝光。放松技巧如冥想、深呼吸可能会有帮助。如果自我调节无效,可能需要建议他寻求专业帮助,比如心理咨询师或医生。同时,时间管理技巧可能减轻工作压力,比如任务优先级划分,适当授权任务。还要注意他的支持系统,比如家人朋友的支持。需要提醒他如果症状持续,可能有更严重的健康问题,应该及时就医。最后,要确保建议具体可行,并且语气要 empathetic,让他感受到被理解和支持。\n</think>\n你的情况是很多职场人都会遇到的困扰,工作压力导致的失眠往往是一个恶性循环:压力影响睡眠质量,睡眠不足又导致次日工作效率降低,进一步加重压力。以下是一些针对性建议,希望能帮助你逐步打破这个循环:\n\n**第一步:建立压力档案(当晚即可操作)**\n1. 准备笔记本记录:\n- 具体压力事件(如\"明早要向董事会汇报\")\n- 伴随的生理反应(手心出汗/心跳加速)\n- 脑海中的具体担忧(\"忘词怎么办?数据记错怎么办?\")\n- 实际发生概率(用百分比标注,如\"忘词概率约20%\")\n\n**第二步:90分钟睡眠周期调整法(3天内见效)**\n- 计算就寝时间:设定起床时间后倒推1.5小时的整数倍\n- 例:若需7点起床,可尝试11:30或1:00入睡\n- 使用SleepCycle等APP监测睡眠质量\n\n**第三歩:办公室微放松(工作中随时可用)**\n- 4-7-8呼吸法:吸气4秒→屏息7秒→呼气8秒(\n- 桌面减压神器:备握力球/指尖陀螺,在接电话时使用\n- 视觉放松:将电脑桌面换成动态自然景观(推荐Rainy Mood网站)\n\n**进阶方案:压力转化训练(需1-2周练习)**\n1. 压力具象化练习:\n- 每天花5分钟将压力想象成具体物体(如不断膨胀的气球)\n- 在脑海中为这个\"压力球\"设置安全阀,想象缓慢释放过程\n\n2. 焦虑时段专用笔记本:\n- 设定\"焦虑时间\"(如晚8-8:30)\n- 其他时间出现担忧时快速记录关键词,留到专用时段处理\n\n**重要提醒:**\n若出现以下情况建议立即就医:\n- 连续3天睡眠不足4小时\n- 出现心悸/手抖等躯体症状\n- 对原本爱好完全失去兴趣\n\n建议从今晚开始尝试\"压力档案\"记录,很多时候当我们把模糊的焦虑具体化后,它的压迫感就会明显减弱。这个过程可能需要持续记录3-5天才能看到明显效果,请给自己足够的耐心。记住,你不需要完美解决所有压力源,重点在于重建对压力的掌控感。" } ]

模型下载

shell cd PsychCoT-Tuning modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --local_dir /path/to/save

QLoRA-4bit微调

```shell

QLoRA微调脚本

llamafactory-cli examples\trainqlora\llama3lorasftotfq.yaml
```

启动交互界面

shell llamafactory-cli webui

📝实验日志

微调日志

pic1

pic2

pic3

pic4

pic5

推理样例

pic5

pic5

pic5

pic5

pic5

pic5

🤝欢迎通过 Issue 提交改进建议,或通过Pull Request 参与以下方向的开发:

  • 支持更多心理咨询细分场景
  • 量化方案优化
  • 多模态输入支持(语音 / 表情分析)

Owner

  • Name: JiehuiXie
  • Login: JiehuiXie
  • Kind: user

Citation (CITATION.cff)

cff-version: 1.2.0
date-released: 2024-03
message: "If you use this software, please cite it as below."
authors:
- family-names: "Zheng"
  given-names: "Yaowei"
- family-names: "Zhang"
  given-names: "Richong"
- family-names: "Zhang"
  given-names: "Junhao"
- family-names: "Ye"
  given-names: "Yanhan"
- family-names: "Luo"
  given-names: "Zheyan"
- family-names: "Feng"
  given-names: "Zhangchi"
- family-names: "Ma"
  given-names: "Yongqiang"
title: "LlamaFactory: Unified Efficient Fine-Tuning of 100+ Language Models"
url: "https://arxiv.org/abs/2403.13372"
preferred-citation:
  type: conference-paper
  conference:
    name: "Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 3: System Demonstrations)"
  authors:
    - family-names: "Zheng"
      given-names: "Yaowei"
    - family-names: "Zhang"
      given-names: "Richong"
    - family-names: "Zhang"
      given-names: "Junhao"
    - family-names: "Ye"
      given-names: "Yanhan"
    - family-names: "Luo"
      given-names: "Zheyan"
    - family-names: "Feng"
      given-names: "Zhangchi"
    - family-names: "Ma"
      given-names: "Yongqiang"
  title: "LlamaFactory: Unified Efficient Fine-Tuning of 100+ Language Models"
  url: "https://arxiv.org/abs/2403.13372"
  year: 2024
  publisher: "Association for Computational Linguistics"
  address: "Bangkok, Thailand"

GitHub Events

Total
  • Watch event: 7
  • Push event: 2
Last Year
  • Watch event: 7
  • Push event: 2

Dependencies

.github/workflows/label_issue.yml actions
.github/workflows/publish.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • pypa/gh-action-pypi-publish release/v1 composite
.github/workflows/tests.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
docker/docker-cuda/Dockerfile docker
  • ${BASE_IMAGE} latest build
docker/docker-cuda/docker-compose.yml docker
docker/docker-npu/Dockerfile docker
  • ascendai/cann 8.0.0-910b-ubuntu22.04-py3.10 build
docker/docker-npu/docker-compose.yml docker
docker/docker-rocm/Dockerfile docker
  • hardandheavy/transformers-rocm 2.2.0 build
docker/docker-rocm/docker-compose.yml docker
pyproject.toml pypi
requirements.txt pypi
  • accelerate >=0.34.0,<=1.2.1
  • av *
  • datasets >=2.16.0,<=3.2.0
  • einops *
  • fastapi *
  • fire *
  • gradio >=4.38.0,<=5.18.0
  • librosa *
  • matplotlib >=3.7.0
  • numpy <2.0.0
  • packaging *
  • pandas >=2.0.0
  • peft >=0.11.1,<=0.12.0
  • protobuf *
  • pydantic *
  • pyyaml *
  • scipy *
  • sentencepiece *
  • sse-starlette *
  • tiktoken *
  • tokenizers >=0.19.0,<=0.21.0
  • transformers >=4.41.2,<=4.49.0,
  • trl >=0.8.6,<=0.9.6
  • tyro <0.9.0
  • uvicorn *
setup.py pypi