基于InternLM的情感调节大师FunGPT

基于书生系列大模型,社区用户不断创造出令人耳目一新的项目,从灵感萌发到落地实践,每一个都充满智慧与价值。“与书生共创”将陆续推出一系列文章,分享这些项目背后的故事与经验。欢迎订阅并积极投稿,一起分享经验与成果,推动大模型技术的普及与进步。

本文来自社区投稿,作者Alannikos,书生大模型实战营学员。本文将向大家介绍孵化于书生大模型实战营的项目 ,基于 InternLM 的情感调节大师 FunGPT。

1.项目介绍

在这个快节奏的世界里,我们需要一点调味剂来调和生活。无论是需要一点甜言蜜语来提振精神,还是需要一剂犀利怼语来释放压力,FunGPT 都能满足您的需求。FunGPT 基于 InternLM2.5 系列大模型,利用 XTuner 进行QLoRA指令微调,使模型能够满足用户的个性化要求。同时为了方便用户,我们还发布了 1.8B 系列小模型,减量不减效果;此外,我们还利用 LMDeploy 对多个模型使用感知权重量化(AWQ)算法进行W4A16量化,既节省显存又提升推理速度!

🍬 甜言蜜语模式:

  • 心情提升器🌟✨:当您感到低落,我们的甜言蜜语模式能让您的心情瞬间飙升,就像尝了一颗超级甜的蜜糖。
  • 自信加油站💪🌈:同时我们的赞师傅会用合适且独特的方式夸奖您,让您的自信心爆棚。

🔪 犀利怼语模式:

  • 压力释放阀:当您感到压力山大,我们的怼人模式能让您在怼人的同时,找到释放的出口。
  • 幽默吐槽机😂👅怼师傅的言语不仅犀利,而且幽默风趣,在怼人的过程中,您还能体会到脑洞大开的怼人方式。

项目地址:

https://github.com/Alannikos/FunGPT

视频地址:

https://www.bilibili.com/video/BV1EGBYYtEMA/

InternLM GitHub:

https://github.com/InternLM/InternLM

LMDeploy GitHub

https://github.com/InternLM/lmdeploy

XTuner GitHub:

https://github.com/InternLM/xtuner

在这里插入图片描述

项目架构图

2.技术方法

数据生成

在大模型微调过程中,我们可以借助许多方法进行有监督微调(SFT),不论是通过原生的 LoRA 微调等技术,还是通过封装好的工具,比如 XTuner,我们都需要准备高质量的微调数据。但是通过人工手动标注数据的成本较高,对于大部分个人开发者来说,效率比较低下,本项目的方案就是采用大模型 API 来生成我们所需要的多轮对话数据集,例如使用 InternLM 等(现阶段可直接使用 EDG4LLM 工具,该工具内置 InternLM 等主流模型API),这样的方式简单且易于控制。通常来说,生成的数据集还是能够达到较好的微调效果。

LLM 使用

大语言模型是本项目的核心组件,我们选用了开源的 InternLM2.5 系列作为基础模型。InternLM2.5 具有强大的理解和生成能力,支持长上下文窗口,并且具有较好的中文理解能力。详细的使用方法请参考 https://github.com/Alannikos/FunGPT/blob/main/LLM/models/internlm2_5_7b_chat.py

在本项目中,LLM主要负责对用户输入进行理解和回复生成,同时还需要处理多模态输入,并与ASR和TTS模块进行协同工作。

ASR 使用

语音识别模块采用了开源的 SenseVoice 模型,该模型具有优秀的多语言语音识别能力,支持中英文等多语言识别,准确率较高,且能够较好地处理背景噪声。具体的部署和使用说明请查看https://github.com/Alannikos/FunGPT/blob/main/ASR/models/sensevoice.py

在实际应用中,ASR 模块负责将用户的语音输入转换为文本,并传递给 LLM 进行处理。我们提供了流式识别接口,也支持实时语音转写。

TTS 使用

语音合成模块使用了开源的 ChatTTS 模型,该模型能够生成自然流畅的语音。支持多说话人合成,并且可以调节语速和音色等参数。详细的配置和使用方法请参考https://github.com/Alannikos/FunGPT/blob/main/TTS/models/chattts.py

TTS 模块主要负责将 LLM 生成的文本转换为语音输出,支持批量合成模式。我们还提供了情感控制接口,可以根据文本内容自动调整语气和语调,使输出更加自然。

模型微调

为了适应特定场景的需求,我们提供了完整的模型微调流程。本项目主要采用了XTuner提供的QLoRA参数微调方法,该工具提供了友好的配置模板和完善的训练监控。具体的微调流程和参数设置请参考https://github.com/Alannikos/FunGPT/blob/main/Finetune/BoostBot/scripts/internlm2_5_chat_7b_qlora_alpaca_e3_copy.py

微调支持指令对齐、多轮对话等多种任务类型。我们提供了预处理脚本来转换数据格式,同时XTuner也支持增量训练,可以在已有模型基础上继续优化。

模型量化

为了在有限的计算资源下部署大模型,量化是一个重要的优化手段。我们使用 LMDeploy 进行模型量化,在保持模型性能的同时减少显存占用,详细的量化流程请参考 https://github.com/InternLM/lmdeploy

量化完成后,可以通过 LMDeploy 的 Benchmark 进行效果对比,同时 LMDeploy 还提供了不同量化策略的性能对比数据,帮助用户选择最适合的量化方案。

3.快速使用

3.1 部署环境

  • 操作系统:Ubuntu 20.04.6 LTS
  • CPU:Intel® Xeon® Platinum 8369B CPU @ 2.90GHz(在线 GPU 服务器)
  • 显卡:NVIDIA A100-SXM4-80GB, NVIDIA-SMI 535.54.03,Driver Version: 535.54.03,CUDA Version: 12.2
  • Python: 3.10.0

3.2 关键依赖信息

Python==3.10.0
torch==2.4.1
torch-complex==0.4.4
torchaudio==2.4.1
torchvision==0.16.2
chattts==0.1.1
streamlit==1.38.0
audio-recorder-streamlit==0.0.10

3.3 部署步骤

Clone 代码或者手动下载代码放置服务器:
git clone https://github.com/Alannikos/FunGPT
配置 Python 环境(推荐使用 conda)
  • 进入项目的根目录
cd FunGPT
  • 创建conda环境
conda create -n FunGPT python==3.10.0
  • 安装第三方库
pip install -r requirements.txt# 大概需要1h左右
下载模型
TTS 模型(若使用则必选)
  • git-lfs 安装 由于涉及到模型文件的下载,首先需要保证 git-lfs 已经成功安装。对于 Linux 用户来说,可按照下面的命令安装:
apt install git-lfs
  • 启动LFS
git lfs install
  • 下载 TTS 模型到指定路径
# 1. 进入指定目录
cd /FunGPT/TTS/weights# 2. 从huggingface下载模型
git clone https://huggingface.co/2Noise/ChatTTS
  • 无法访问 HuggingFace 用户,可从镜像源下载
# 2. 从镜像源下载模型
git clone https://hf-mirror.com/2Noise/ChatTTS
ASR 模型(若使用则必选)

由于涉及到模型文件的下载,首先需要保证 git-lfs 已经成功安装。对于 Linux 用户来说,可按照下面的命令安装:

# 已下载用户可忽略此条命令
apt install git-lfs
  • 启动 LFS
git lfs install
  • 下载 TTS 模型到指定路径
# 1. 进入指定目录
cd /FunGPT/ASR/weights# 2. 从huggingface下载模型
git clone https://huggingface.co/FunAudioLLM/SenseVoiceSmall
  • 无法访问 HuggingFace 用户,可从镜像源下载
# 2. 从镜像源下载模型
git clone https://hf-mirror.com/FunAudioLLM/SenseVoiceSmall
LLM 模型(必选)

对于 LLM 模型的选择,我们提供了多个选择,效果最佳的模型为 BanterBot-7b-chat 和 BoostBot-7b-chat,其次量化的模型效果也非常不错;此处为了节约下载时间,我们选择了这两个 1_8B 模型: BanterBot-1_8b-chat 和 BoostBot-1_8b-chat 来作为示例,大家可以按照需求自由进行替换即可。

  • 启动LFS
git lfs install
  • 下载 LLM 模型到指定路径
# 1. 进入指定目录
cd /FunGPT/LLM/weights# 2. 从huggingface下载BanterBot-1_8b-chat模型
https://huggingface.co/Alannikos768/BanterBot_1_8b-chat# 3. 从huggingface下载BoostBot-1_8b-chat模型
https://huggingface.co/Alannikos768/BoostBot_1_8b-chat
  • 无法访问 HuggingFace用户,可从 OpenXLab 下载
# 2. 从OpenXLab下载BanterBot-1_8b-chat模型(国内用户)
git clone https://code.openxlab.org.cn/Alannikos/BanterBot-1_8b-chat.git# 3. 从OpenXLab下载BoostBot-1_8b-chat模型(国内用户)
git clone https://code.openxlab.org.cn/Alannikos/BoostBot-1_8b-chat.git
运行网页脚本
conda activate FunGPTstreamlit run app.py --server.address=127.0.0.1 --server.port=7860

3.4 模型体验

  • 如果是在远程服务器上运行的,需要进行端口映射
ssh -p port user@ip -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
  • 然后在体验应用 打开浏览器,输入http://127.0.0.1:7860,然后点击对应界面即可体验 FunGPT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/bicheng/83677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【拓扑】1639.拓扑排序

题目描述 这是 2018 2018 2018 年研究生入学考试中给出的一个问题: 以下哪个选项不是从给定的有向图中获得的拓扑序列? 现在,请你编写一个程序来测试每个选项。 输入格式 第一行包含两个整数 N N N 和 M M M,分别表示有向图…

macOS 上使用 Homebrew 安装redis-cli

在 macOS 上使用 Homebrew 安装 redis-cli(Redis 命令行工具)非常简单,以下是详细步骤: 1. 安装 Redis(包含 redis-cli) 运行以下命令安装 Redis: brew install redis这会安装完整的 Redis 服…

Scratch节日 | 六一儿童节射击游戏

六一儿童节快乐!这款超有趣的 六一儿童节射击游戏,让你变身小猫弓箭手,守护节日的快乐时光! 🎮 游戏玩法 上下方向键:控制小猫的位置,自由移动,瞄准目标! 空格键&#…

[AI Claude] 软件测试2

好的,我现在为你准备一份预填充好大部分内容的测试报告和PPT内容。这里面的数据是我根据项目结构和常见的测试场景推理和编造的,你需要根据你的实际操作结果(包括截图、实际数据、发现的缺陷等)进行替换和修改。 我将按照之前定义…

程序代码篇---face_recognition库实现的人脸检测系统

以下是一个基于face_recognition库的人脸管理系统,支持从文件夹加载人脸数据、实时识别并显示姓名,以及动态添加新人脸。系统采用模块化设计,代码结构清晰,易于扩展。 一、系统架构 face_recognition_system/ ├── faces/ # 人脸数据库(按姓名命名子…

Cursor 工具项目构建指南:Java 21 环境下的 Spring Boot Prompt Rules 约束

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 Cursor 工具项目构建指南:Java 21 环境下的 Spring Boot Prompt Rules 约束前言项目简…

大模型高效提示词Prompt编写指南

大模型高效Prompt编写指南 一、引言二、核心原则1. 清晰性原则:明确指令与期望2. 具体性原则:提供详细上下文3. 结构化原则:组织信息的逻辑与层次4. 迭代优化原则:通过反馈改进Prompt5. 简洁性原则:避免冗余信息 三、文…

gitLab 切换中文模式

点击【头像】--选择settings 选择【language】,选择中文,点击【保存】即可。

vue实现点击按钮input保持聚焦状态

主要功能&#xff1a; 点击"停顿"按钮切换对话框显示状态输入框聚焦时保持状态点击对话框外的区域自动关闭 以下是代码版本&#xff1a; <template><div class"input-container"><el-inputv-model"input"style"width: 2…

[春秋云镜] CVE-2023-23752 writeup

首先奉上大佬的wp表示尊敬&#xff1a;&#xff08;很详细&#xff09;[ 漏洞复现篇 ] Joomla未授权访问Rest API漏洞(CVE-2023-23752)_joomla未授权访问漏洞(cve-2023-23752)-CSDN博客 知识点 Joomla版本为4.0.0 到 4.2.7 存在未授权访问漏洞 Joomla是一套全球知名的内容管理…

OpenCV CUDA模块霍夫变换------在 GPU 上执行概率霍夫变换检测图像中的线段端点类cv::cuda::HoughSegmentDetector

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::HoughSegmentDetector 是 OpenCV 的 CUDA 模块中一个非常重要的类&#xff0c;它用于在 GPU 上执行 概率霍夫变换&#xff08;Probabi…

李飞飞World Labs开源革命性Web端3D渲染器Forge!3D高斯溅射技术首次实现全平台流畅运行

在AI与3D技术深度融合的今天&#xff0c;李飞飞领衔的World Labs团队再次成为行业焦点。今日&#xff0c;他们正式开源了Forge——一款专为Web端设计的3D高斯溅射&#xff08;3D Gaussian Splatting&#xff09;渲染器&#xff0c;不仅支持THREE.js生态&#xff0c;更能在手机、…

Java 中 ArrayList、Vector、LinkedList 的核心区别与应用场景

Java 中 ArrayList、Vector、LinkedList 的核心区别与应用场景 引言 在 Java 集合框架体系中&#xff0c;ArrayList、Vector和LinkedList作为List接口的三大经典实现类&#xff0c;共同承载着列表数据的存储与操作功能。然而&#xff0c;由于底层数据结构设计、线程安全机制以…

Paraformer分角色语音识别-中文-通用 FunASR

https://github.com/modelscope/FunASR/blob/main/README_zh.md https://github.com/modelscope/FunASR/blob/main/model_zoo/readme_zh.md PyTorch / 2.3.0 / 3.12(ubuntu22.04) / 12.1 1 Paraformer分角色语音识别-中文-通用 https://www.modelscope.cn/models/iic/speech…

k8s热更新-subPath 不支持热更新

文章目录 k8s热更新-subPath 不支持热更新背景subPath 不支持热更新1. 为什么 subPath 不支持热更新&#xff1f;2. 挂载整个目录为何支持热更新&#xff1f;使用demo举例&#xff1a;挂载整个目录&#xff08;不使用 subPath&#xff09; k8s热更新-subPath 不支持热更新 背景…

分班 - 华为OD统一考试(JavaScript 题解)

华为OD机试题库《C》限时优惠 9.9 华为OD机试题库《Python》限时优惠 9.9 华为OD机试题库《JavaScript》限时优惠 9.9 针对刷题难&#xff0c;效率慢&#xff0c;我们提供一对一算法辅导&#xff0c; 针对个人情况定制化的提高计划&#xff08;全称1V1效率更高&#xff09;。 看…

【TCP/IP和OSI模型以及区别——理论汇总】

参考小林code和卡尔哥&#xff0c;感恩&#xff01; 网络基础篇 面试官您好&#xff01;OSI和TCP/IP是网络通信中两个关键模型&#xff0c;本质都是分层处理数据传输&#xff0c;但设计理念和应用场景差异很大。 OSI模型是理论上的七层架构&#xff0c;从下到上依次是物理层…

极客大挑战 2019 EasySQL 1(万能账号密码,SQL注入,HackBar)

题目 做法 启动靶机&#xff0c;打开给出的网址 随便输点东西进去&#xff0c;测试一下 输入1、1’、1"判断SQL语句闭合方式 输入以上两个都是以下结果 但是&#xff0c;输入1’时&#xff0c;出现的是另外结果 输入1&#xff0c;1"时&#xff0c;SQL语句没有…

Tauri(2.5.1)+Leptos(0.7.8)开发桌面应用--简单的工作进度管理

在前期工作&#xff08;Tauri(2.5.1)Leptos(0.7.8)开发桌面应用--程序启动界面_tauri 程序启动画面-CSDN博客&#xff09;的基础上继续进行自用桌面小程序的开发。为了方便管理工作进度&#xff0c;决定自己造轮子。效果如下&#xff1a; 工作进度管理系统 在编写程序过程中&am…