基于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.pswp.cn/bicheng/83677.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83677.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83677.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋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…