基于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
相关文章:

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

【性能调优系列】深入解析火焰图:从基础阅读到性能优化实战
博客目录 一、火焰图基础:结构与阅读方法二、深入分析火焰图:关键观察点与性能瓶颈识别1. 识别最宽的函数块2. HTTP 请求处理分析3. 数据库操作分析4. 业务逻辑分析 三、性能优化实战:从火焰图到解决方案1. 线程池性能优化2. 数据库访问优化3…...

Docker 与容器技术的未来:从 OCI 标准到 eBPF 的演进
Docker 的出现无疑是云计算发展史上的一个里程碑。它以其直观的打包、分发和运行方式,极大地简化了应用程序的部署和管理,从而推动了微服务架构和 DevOps 文化的普及。然而,容器技术的未来并非仅仅局限于 Docker,它正朝着更深层次的标准化和更底层的操作系统内核创新方向演…...

PLC远程控制网关支持多塘口水环境数据边缘计算与远程安全传输的配置指南
一、项目背景 渔业养殖是关系到我国食物安全和海洋经济发展的重要产业,随着科技的不断进步,传统的养殖模式面临着诸多挑战,如养殖环境复杂、水质变化难以实时监测、设备运行状态不稳定等,这些问题不仅增加了养殖成本,还…...
3.3 HarmonyOS NEXT原子化服务开发:卡片设计、轻量部署与场景化编排实战
HarmonyOS NEXT原子化服务开发:卡片设计、轻量部署与场景化编排实战 在HarmonyOS NEXT的全场景生态中,原子化服务作为"设备即服务"理念的核心载体,通过免安装、跨设备流转的轻量化形态,重新定义了用户与服务的交互方式…...

C++11 中 final 和 override 从入门到精通
文章目录 一、引言二、final 关键字2.1 final 关键字的基本概念2.2 final 关键字的语法2.3 final 关键字的使用示例2.3.1 防止类被继承2.3.2 防止虚函数被重写 2.4 final 关键字的使用场景2.5 final 关键字的注意事项 三、override 关键字3.1 override 关键字的基本概念3.2 ove…...
跨多个微服务使用 Redis 共享数据时,如何管理数据一致性?
在跨多个微服务使用 Redis 共享数据时,管理数据一致性是一个复杂但至关重要的问题。Redis 本身提供的原子操作和一些数据结构可以提供帮助,但大部分一致性保障需要应用层面的设计和策略。 首先要明确一点:在分布式系统中,强一致性…...
Linux网络——socket网络通信udp
文章目录 UDP通信基础UDP的特点 Linux下UDP通信核心步骤创建UDP套接字绑定本地地址(可选)发送数据函数:sendto()函数原型参数详解典型使用示例 接收数据函数:recvfrom()函数原型参数详解返回值典型使用示例 关键设计原因无连接特性…...

大数据-275 Spark MLib - 基础介绍 机器学习算法 集成学习 随机森林 Bagging Boosting
点一下关注吧!!!非常感谢!!持续更新!!! 大模型篇章已经开始! 目前已经更新到了第 22 篇:大语言模型 22 - MCP 自动操作 FigmaCursor 自动设计原型 Java篇开…...
大模型微调技术全景图:从全量更新到参数高效适配
在预训练大语言模型(LLM)展现出惊人能力之后,如何让这些“通才”模型蜕变为特定领域的“专家”?微调(Fine-Tuning)正是解锁这一潜力的核心技术。本文将深入解析主流微调技术,助你找到最适合任务…...
c++ chrono头文件含义
在C中,<chrono> 是一个标准库头文件,用于处理时间相关的操作,包括时间点、时间间隔和时钟。它提供了一套强大的时间处理功能,支持高精度的时间测量、时间间隔的计算以及时间点的表示。 1. <chrono> 的主要功能 <…...

git互联GitHub 使用教程
一、下载git Git 公司 右键 git config --global user.name "name" git config --global user.email "email" ssh-keygen -t rsa -C email :生成的ssh密钥需要到github 网站中保存ssh 二、GitHub新建repository 三、本地git互联GitHub 找…...
Python爬虫与Java爬虫深度对比:从原理到实战案例解析
在当今数据驱动的时代,网络爬虫技术已成为获取和分析网络数据的重要手段。作为两种最流行的爬虫开发语言,Python和Java各有其独特的优势和适用场景。本文将全面对比Python爬虫与Java爬虫的核心差异,并通过实际代码示例展示它们的具体实现方式,帮助开发者根据项目需求做出合…...
汇编语言综合程序设计:子程序、分支与循环深度解析
本文将通过一个完整的控制台计算器案例,深入探讨汇编语言中子程序、分支结构和循环结构的综合应用,展示模块化编程、输入输出处理和算法实现的核心技术。 一、模块化编程架构设计 1. 系统架构规划 Calculator System ├── main.asm (主程序)…...

SpringBoot+Mysql实现的停车场收费小程序系统+文档
💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...

面向对象进阶 | 深入探究 Java 静态成员与继承体系
个人主页 文章专栏 文章目录 个人主页文章专栏 一、static(静态)1.static 静态变量代码展示内存图 2.static 静态方法工具类:练习: 3.static注意事项4.重新认识main方法 二、继承1.继承概述2.继承的特点3.子类到底能继承父类中的…...

人脸识别技术成为时代需求,视频智能分析网关视频监控系统中AI算法的应用
一、应用背景:时代需求与技术革新的双重驱动 1)传统安防系统的困境:传统监控系统依赖人工逐帧筛查海量视频,在人流密集场所极易漏检,且缺乏实时锁定和主动预警能力,面对突发安全事件响应迟缓。 2&a…...
青岛国瑞数据采集网关软件平台:工业互联的智能基石——安全、高效、开放,驱动企业数字化转型
一、产品定位:工业数据的智能枢纽 青岛国瑞数据采集网关软件平台,以“连接万物、赋能智能”为核心理念,专为工业场景打造,解决设备互联、数据互通、业务融合的核心痛点。无需深奥技术背景,通过极简配置,…...
Git的由来与应用详解:从Linux内核到现代开发的革命性工具
1. Git的诞生背景与历史 1.1 Linux内核开发的困境 1991年,Linus Torvalds创建了开源的Linux操作系统。随着Linux的不断发展壮大,全球各地的志愿者纷纷参与到Linux内核的开发中。然而,在2002年之前,Linux内核的代码管理却处于一种原始状态——世界各地的开发者通过diff方式…...
@Prometheus 监控-MySQL (Mysqld Exporter)
文章目录 **Prometheus 监控 MySQL ****1. 目标****2. 环境准备****2.1 所需组件****2.2 权限要求** **3. 部署 mysqld_exporter****3.1 下载与安装****3.2 创建配置文件****3.3 创建 Systemd 服务****3.4 验证 Exporter** **4. 配置 Prometheus****4.1 添加 Job 到 prometheus…...

pc端小卡片功能-原生JavaScript金融信息与节日日历
代码如下 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>金融信息与节日日历</title><…...
窗口聚合窗口聚合
taskmanager.memory.managed.fraction 在 Apache Flink 中,配置项 taskmanager.memory.managed.fraction 用于控制任务管理器(TaskManager)所占用的总内存中,分配给管理内存(Managed Memory)的比例。管理内…...
es在Linux安装
如果服务器能访问外网: wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.zip不能就手动下载,解压文件到合适目录 unzip elasticsearch-6.4.0.zip -d /opt/ mv /opt/elasticsearch-6.4.0 /opt/elasticsearch创建和日志…...

Go语言学习-->第一个go程序--hello world!
Go语言学习–>第一个go程序–hello world! 1 写代码前的准备 1 创建编写代码的文件夹 2 使用vscode打开3 项目初始化 **go mod init*(初始化一个go mod)Go Module 是 Go 1.11 版本引入的官方依赖管理系统,用于替代传统的 GOPATH…...

高雄市12岁以下身心障碍儿童口腔保健合作院所名单数据集
描述: 关键字:儿童、口腔、保健、院所、名单 字段特征:序号、院所分级、合作医疗院所、市话、地址 语言:繁体 行数/数量:129行,5列 数据量 :7.27KB 格式:CSV、JSON、XML 目录…...
Spring Boot 自动参数校验
在 Spring Boot 中实现参数自动校验主要依靠 Java Bean Validation API(JSR 380)和 Spring 的集成支持。以下是详细实现步骤: 1. 添加依赖 在 pom.xml 中添加验证依赖: <dependency><groupId>org.springframework.b…...

破局新能源消纳难题!安科瑞智慧能源平台助力10KV配电网重构未来
一、政策驱动:新型配电网迎来 “智慧化” 刚需 随着分布式光伏、工商业储能、电动汽车充电桩等新型电力设施大规模并网,传统 10kV 配电网正面临 “高渗透、强波动、多交互” 的运行挑战。2025 年 6 月 1 日正式实施的《配电网通用技术导则》(…...
推荐10个AI视频生成工具网站
以下是10个AI视频生成工具网站推荐: 国内工具 可灵:由快手AI团队研发,支持文生视频、图生视频、首尾帧设置和运镜调整等功能,生成视频画质高,适合短视频创作、AI唱跳、动画短片等。官网:可灵 即梦&#…...

TIA博途中的程序导出为PDF格式的具体方法示例
TIA博途中的程序导出为PDF格式的具体方法示例 如下图所示,选中想要导出为PDF的程序块,右击选择“打印”, 如下图所示,选择“导出为WPS PDF” 或者“Microsoft Print to PDF”, 如下图所示,设置文档布局相关…...

【大模型:知识图谱】--4.neo4j数据库管理(cypher语法1)
使用neo4j的cypher语法对图数据库进行管理;官网地址:Create, start, and stop databases - Operations Manual 目录 1.neo4j--简介 1.1.Neo4j版本的标准数据库 1.2.默认数据库 1.3.每用户主数据库 1.4.system数据库 2.neo4j--数据库管理 2.1.命名…...