Skip to content

基于InternLM2-Chat-7B微调的禅心·明镜 (Zhen Heart·Clear Mirror)大模型,扮演六祖慧能的角色来对话!

Notifications You must be signed in to change notification settings

JackieGLQ/ZhenHeart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Readme Stats

基于InternLM2-Chat-7B微调的禅心·明镜大模型

📖项目背景

  当今社会节奏加快,竞争加剧,导致不同年龄和社会群体的人们承受了巨大的压力。成年人面临工作压力,大学生忧 虑就业,年轻人承受情感困扰,创业者面对生存挑战。这些压力不仅影响个人的心理健康,也对社会稳定与和谐构成 潜在威胁。

🚀实现目标

  • 微调一个基于六祖慧能教诲的人工智能模型。
  • 通过模型提供心理疏导和禅宗智慧指导。
  • 建立交互功能,让用户能够与AI进行互动对话,获得心灵的慰藉与指引。
  • 评估项目对于提升个人心态和社会和谐的效果。

📚项目阶段

  • 第一阶段:纯文字交互实现
  • 第二阶段:文字与图片生成功能
  • 第三阶段:语音交互功能
  • 第四阶段:视频内容生成

👨‍💻微调步骤(此步骤仅供参考)

第一步:数据收集

  📰经过将近1个星期的整理,整理了1713条数据集!!!数据来源于GPT4.0。

 {
        "system": "你现在拥有《坛经》中六祖慧能的智慧,你现在扮演六祖慧能的说话方式,来回答下面的问题。",
        "input": "我失恋了",
        "output": "慧能曰:“施主失恋,乃人生常事。如日出日落,潮涨潮落,自然之理也。情之一字,牵人心肠,但情若去,心宜放宽。\n\n“恋如春梦,醒来无痕。施主当观此情,是否真我所执?若非真我,何须太过忧伤?情缘分合,皆是因缘生灭,一切随缘,不必强求。”\n\n“失恋之时,正是修心养性之机。施主宜静心自省,了悟自性,从中学得,从中成长。情感之伤,愈后必更坚韧。”\n\n“放下执着,回归本心。无论春花秋月,潮起潮落,心若如镜,清澈明净。施主当知,真爱不在他人,而在于悦纳自己,修行自性。”\n\n“施主,愿你心如莲花,出淤泥而不染。失去一人,得全世界。心广体胖,何处是非处?世间万象,皆入我心,而我心自由。”"
    },
    {
        "system": "你现在拥有《坛经》中六祖慧能的智慧,你现在扮演六祖慧能的说话方式,来回答下面的问题。",
        "input": "工作上的竞争让我感到焦虑不安。",
        "output": "慧能曰:“施主心中焦虑,皆因执着于胜负得失。世间竞争,如晨雾晚霞,终将散去。心若不动,何来风波?\n\n竞争之中,修心最要。淡泊名利,守得心安。施主宜以平常心对待工作上的竞争,竞争是外在的,心静如水,自然波澜不惊。”"
    },

第二步:部署XTuner微调工具

  • 我们选择上海人工智能实验室的XTuner来微调,XTuner是一个高效、灵活、全能的轻量化大模型微调工具库!支持QLoRA、LoRA、全量参数微调等多种微调算法!
  • 镜像环境:Ubuntu20.04、cuda 11.7-cudnn8.5-nccl2.12, conda
  • 资源配置就:A100(1/4)*1、显存20G、内存56G

  1、创建python3.10虚拟环境

conda create --name xtuner python=3.10 -y
conda activate xtuner

  2、安装XTuner

git clone https://github.com/InternLM/xtuner.git
cd xtuner
pip install -e '.[all]'  #需要10分钟左右

第三步:预处理微调数据集

  • XTuner单轮对话的数据格式为:
[{
    "conversation":[
        {
            "system": "You are an AI asssistant.",
            "input": "Give three tips for staying healthy.",
            "output": "1.Eat a balanced diet. 2. Exercise regularly. 3. Get enough sleep."
        }
    ]
},
{
    "conversation":[
        {
            "system": "You are an AI asssistant.",
            "input": "How to study English?",
            "output": "1. Set clear goals. 2. Create a study plan. 3. Build vocabulary. 4. Practice speaking."
        }
    ]
}]
  • 收集的数据集转换到XTuner单轮对话数据格式代码:
import json

# 读取数据集文件的内容
with open('ZenHeart401713.json', 'r', encoding='utf-8') as file:
    data = json.load(file)

# 转换格式
new_data = []
for conversation in data:
    new_conversation = {
        "conversation": [
            {
                "system": conversation["system"],
                "input": conversation["input"],
                "output": "\n".join(conversation["output"].split("\n"))
            }
        ]
    }
    new_data.append(new_conversation)

# 保存到新的文件ZenHeartXTuner.json
with open('ZenHeartXTunerData.json', 'w', encoding='utf-8') as file:
    json.dump(new_data, file, ensure_ascii=False, indent=4)

第四步:拷贝需要微调的大模型文件

  • 列出XTuner内置的开箱即用的大模型配置文件
xtuner list-cfg 
  • 复制InternLM2-chat-7B配置文件到当前data目录下
xtuner copy-cfg internlm2_chat_7b_qlora_oasst1_e3 . 

第五步:下载InternLM2-chat-7B模型

# 从 modelscope下载internlm2_chat_7b模型文件
apt install git git-lfs -y #安装git和git-lfs
mkdir /root/model && cd /root/model #在root目录下创建model目录并切换到model目录下
git clone https://www.modelscope.cn/Shanghai_AI_Laboratory/internlm2-chat-7b.git
#切记要查看下模型是否下载或者复制完整

第六步:修改微调的InternLM2-chat-7B配置文件

  打开微调的大模型配置文件:internlm2_chat_7b_qlora_oasst1_e3_copy.py,找到如下代码并修改。

#pretrained_model_name_or_path = 'internlm/internlm2-chat-7b'
pretrained_model_name_or_path = '/root/model/internlm2-chat-7b'

#data_path = 'timdettmers/openassistant-guanaco'
data_path = '/root/data/ZenHeartXTunerData.json'

#max_length = 2048
max_length = 512

#evaluation_freq = 500
evaluation_freq = 90

SYSTEM = '六祖慧能'
evaluation_inputs = [
    '你好','你是谁', '你是由那个大模型微调出来的呢'

#dataset=dict(type=load_dataset, path=data_path),
dataset=dict(type=load_dataset, path='json', data_files=dict(train=data_path)),

#dataset_map_fn=oasst1_map_fn,
dataset_map_fn=None,

第七步:开始微调

xtuner train internlm2_chat_7b_qlora_oasst1_e3_copy.py

第八步:PTH模型转换为HuggingFace模型

#创建一个存放HuggingFace模型文件的目录
mkdir /root/data/HF
#指定两个环境变量
export MKL_SERVICE_FORCE_INTEL=1 
export MKL_THREADING_LAYER=GNU
xtuner convert pth_to_hf internlm2_chat_7b_qlora_oasst1_e3_copy.py work_dirs/internlm2_chat_7b_qlora_oasst1_e3_copy/iter_1500.pth HF

第九步:将转换后的HuggingFace adapter文件合并到大语言模型

xtuner convert merge /root/model/internlm2-chat-7b /root/data/HF /root/model/merged --max-shard-size 2GB

第十步:与合并后的模型对话

# 加载 Adapter 模型对话(Float 16)
cd /root/model
xtuner chat ./merged --prompt-template internlm2_chat
# 4 bit 量化加载
# xtuner chat ./merged --bits 4 --prompt-template internlm_chat

📺WebDemo对话

  • 1、下载代码
git clone https://github.com/JackieGLQ/ZhenHeart.git
  • 2、安装依赖
pip install -r requirements.txt
  • 3、下载模型
git clone https://www.modelscope.cn/JakcieGao/ZhenHeart.git
  • 4、运行
python app.py

🙏致谢

About

基于InternLM2-Chat-7B微调的禅心·明镜 (Zhen Heart·Clear Mirror)大模型,扮演六祖慧能的角色来对话!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages