多模态实时交互大模型浦语·灵笔 2.5 OmniLive开源:能看、能听、会记、会说!

本文涉及的产品
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 2024年12月12日,多模态实时交互大模型书生·浦语灵笔2.5-OL(InternLM-XComposer2.5-OmniLive)开源,该模型可以通过视觉和听觉实时观察和理解外部世界,自动形成对观察到内容的长期记忆,并可通过语音与人类用户进行对话交谈,提供更自然的大模型交互体验。

01.前言

2024年12月12日,多模态实时交互大模型书生·浦语灵笔2.5-OL(InternLM-XComposer2.5-OmniLive)开源,该模型可以通过视觉和听觉实时观察和理解外部世界,自动形成对观察到内容的长期记忆,并可通过语音与人类用户进行对话交谈,提供更自然的大模型交互体验。

书生·浦语灵笔首发于2023年10月,经过历次迭代,已具备图文理解、图文混合创作、超高分辨率图像分析、超长多模态上下文等多项能力,获得了开源社区的广泛关注和好评,全系列模型累计下载量超过200万次。

书生·浦语灵笔2.5-OL基于书生·浦语2.5大语言模型(InternLM 2.5)研发,采用了多模块通专融合的架构方案,通过多模态实时感知及记忆编码的快系统和多模态复杂推理大模型的慢系统协同,实现多模态实时交互功能。

技术报告地址:

https://github.com/InternLM/InternLM-XComposer/blob/main/InternLM-XComposer-2.5-OmniLive/IXC2.5-OL.pdf

开源模型地址:

https://modelscope.cn/models/Shanghai_AI_Laboratory/internlm-xcomposer2d5-ol-7b

代码仓库地址:

https://github.com/InternLM/InternLM-XComposer/tree/main/InternLM-XComposer-2.5-OmniLive

在科幻电影畅想的未来世界中,AI助手发挥着辅助人类的重要作用,例如:《流浪地球》中的MOSS、《钢铁侠》中的J.A.R.V.I.S.等。这些AI助手不仅具有强大的知识和思考能力,还可以实时感知外部环境变化,记住观察到的事物细节,与人类自然对话交流,并适时地为人类提供实际帮助。

在现实应用中,具有实时视频语音交互功能的多模态大模型,可以让具身机器人、可穿戴智能硬件、移动设备更好地感知世界进而服务人类,具有广阔的应用前景。



添加图片注释,不超过 140 字(可选)

书生·浦语灵笔2.5-OL支持实时视觉感知和语音对话,还创新地提出了多模态长期记忆的功能。通过分别设计多模态实时交互大模型中的感知、记忆和思考功能模块,可实现并发的世界感知、长短期记忆、多模态思考三项核心功能,并提供了完整的系统协同和集成方案。

目前,书生·浦语灵笔2.5-OL已完全开源了模型参数、系统集成推理和前后端应用部署的全套方案,支持免费商用申请。

书生·浦语灵笔2.5-OL的整体架构和三个核心模块的具体设计如下:



添加图片注释,不超过 140 字(可选)

感知模块:

实时感知音频、视频输入,对音频信号进行语音识别和音频分类,对视觉信号抽取视觉特征:

  • 音频感知:研究人员训练了一个轻量的音频多模态大模型,实时监听输入的音频流,同时进行语音识别和音频分类,理解人类语音内容和识别背景声音。
  • 视觉感知:通过视觉编码器实时抽取视觉特征。

记忆模块

持续对输入的视觉特征进行多层级的记忆压缩,不断进行视觉记忆编码压缩,支持根据指令对视觉记忆的高效检索。

  • 短时记忆压缩:对短期视频片段内进行记忆压缩,形成精确的短期记忆。
  • 长期记忆压缩:对短期记忆进一步压缩,形成高压缩比的长期记忆。
  • 记忆查询:根据指令查询长期记忆,召回指令相关的短期记忆片段,用于思考模块的多模态理解。

思考模块

判断语音输入是否为需要响应的用户指令,避免误触发影响使用体验。对于需要影响的用户需求,结合指令查询视觉记忆,并回答问题。

  • 判断用户指令是否需要响应。
  • 调用记忆模块查询历史视觉记忆,用于多模态理解和推理, 并回答用户问题。
  • 调用外部语音合成模块合成最终语音输出。

书生·浦语灵笔2.5-OL 的系统流程设计如下:



添加图片注释,不超过 140 字(可选)

前端

  • 前端使用JavaScript开发,可启用摄像头和麦克风捕捉视频和音频流输入,并将其推送到SRS服务器,同时与后端建立WebSocket连接,监听音频输出和中断信号。
  • 前端在接收到音频输出时播放音频,接收到中断信号时暂停音频播放并丢弃待处理的音频。

SRS服务器

  • SRS(Simple Realtime Server)是一款简单高效的实时音视频服务器,负责接收和传输音频流、视频流数据。

后端服务器

  • 后端与前端建立WebSocket连接后,将从SRS服务器拉取流媒体,并启动独立进程分别读取音频和视频。
  • 音频进程持续读取音频流并检测语音的开始和结束:
  • 检测到语音活动开始时,后端向前端发送中断信号以暂停当前播放的音频,同时向视频进程发送备份信号保存当前记忆状态(记忆快照)。
  • 检测到语音活动结束时,语音分类和识别进程对音频进行背景音分类和语音识别,并将结果送入到大语言模型待处理队列。
  • 视频进程读取视频帧并保存到视频帧队列。记忆进程负责识别、提取并存储记忆,并在收到语音检测进程的备份信号后保存当前记忆状态以便后续检索。
  • 大语言模型进程判断待处理的指令是否需要模型响应,并根据检索到的记忆对于需要响应的指令进行文字回复。
  • 语音合成进程将把文字回复结果转换为音频输出并发送到前端。

02.模型推理

安装ms-swift

!pip install git+https://github.com/modelscope/ms-swift.git

音频理解推理代码

import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
from swift.llm import PtEngine, InferRequest, RequestConfig
import torch
engine = PtEngine('Shanghai_AI_Laboratory/internlm-xcomposer2d5-ol-7b:audio', torch_dtype=torch.float16)
request_config = RequestConfig(max_tokens=512)
resp_list = engine.infer([InferRequest(messages=[{'role': 'user', 'content': '<audio>Detect the language and recognize the speech.'}],
                                       audios=['https://modelscope-open.oss-cn-hangzhou.aliyuncs.com/images/chinese.mp3'])])
print(f'response: {resp_list[0].choices[0].message.content}')

视觉理解推理代码

import torch
from modelscope import AutoModel, AutoTokenizer
import os
torch.set_grad_enabled(False)
from modelscope import snapshot_download
model_dir = snapshot_download('Shanghai_AI_Laboratory/internlm-xcomposer2d5-ol-7b')
model_dir = os.path.join(model_dir, 'base')
# init model and tokenizer
model = AutoModel.from_pretrained(model_dir, torch_dtype=torch.bfloat16, trust_remote_code=True).cuda().eval().half()
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
model.tokenizer = tokenizer
query = 'Analyze the given image in a detail manner'
image = ['cat.png']
with torch.autocast(device_type='cuda', dtype=torch.float16):
    response, _ = model.chat(tokenizer, query, image, do_sample=False, num_beams=3, use_meta=True)
print(response)

显存占用



添加图片注释,不超过 140 字(可选)

03.模型微调

我们使用ms-swift对internlm-xcomposer2d5-ol-7b进行微调。ms-swift是魔搭社区官方提供的大模型与多模态大模型微调部署框架,支持400+大模型和100+多模态大模型。

ms-swift开源地址:

https://github.com/modelscope/ms-swift

在这里,我们将展示可直接运行的demo,并给出自定义数据集的格式。

在开始微调之前,请确保您的环境已准备妥当。

git clone https://github.com/modelscope/ms-swift.git
cd ms-swift
pip install -e .

base微调脚本:

CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model Shanghai_AI_Laboratory/internlm-xcomposer2d5-ol-7b:base \
    --train_type lora \
    --dataset modelscope/coco_2014_caption:validation#20000 \
    --num_train_epochs 1 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --learning_rate 1e-4 \
    --lora_rank 8 \
    --lora_alpha 32 \
    --target_modules attention.wqkv attention.wo feed_forward.w1 feed_forward.w2 feed_forward.w3 \
    --gradient_accumulation_steps 16 \
    --eval_steps 50 \
    --save_steps 50 \
    --save_total_limit 5 \
    --logging_steps 5 \
    --max_length 2048 \
    --output_dir output \
    --warmup_ratio 0.05 \
    --dataloader_num_workers 4

自定义数据集格式如下(system字段可选),只需要指定`--dataset `即可:

{"messages": [{"role": "system", "content": "你是个有用无害的助手"}, {"role": "user", "content": "<image>图片中是什么"}, {"role": "assistant", "content": "一个可爱的小猫"}], "images": ["/xxx/x.jpg"]}
{"messages": [{"role": "system", "content": "你是个有用无害的助手"}, {"role": "user", "content": "<video>视频中是什么"}, {"role": "assistant", "content": "一只可爱的狗狗在草地上奔跑"}], "videos": ["/xxx/x.mp4"]}

训练显存资源:



添加图片注释,不超过 140 字(可选)

audio微调脚本:

CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model Shanghai_AI_Laboratory/internlm-xcomposer2d5-ol-7b:audio \
    --train_type lora \
    --dataset speech_asr/speech_asr_aishell1_trainsets:validation#20000 \
    --num_train_epochs 1 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --learning_rate 1e-4 \
    --lora_rank 8 \
    --lora_alpha 32 \
    --target_modules all-linear \
    --freeze_vit true \
    --gradient_accumulation_steps 16 \
    --eval_steps 50 \
    --save_steps 50 \
    --save_total_limit 5 \
    --logging_steps 5 \
    --max_length 2048 \
    --output_dir output \
    --warmup_ratio 0.05 \
    --dataloader_num_workers 4

自定义数据集格式如下(system字段可选),只需要指定`--dataset `即可:

{"messages": [{"role": "system", "content": "你是个有用无害的助手"}, {"role": "user", "content": "<audio>语音说了什么"}, {"role": "assistant", "content": "今天天气真好呀"}], "images": ["/xxx/x.wav"]}

训练显存资源:



添加图片注释,不超过 140 字(可选)

训练完成后,使用以下命令对训练后的权重进行推理。这里`--adapters`需要替换成训练生成的last checkpoint文件夹. 由于adapters文件夹中包含了训练的参数文件,因此不需要额外指定`--model`:

# 使用训练时的验证集进行推理
CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --adapters output/vx-xxx/checkpoint-xxx \
    --stream true \
    --load_data_args true

点击链接跳转:浦语·灵笔 2.5 OmniLive

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
8月前
|
机器学习/深度学习 vr&ar 决策智能
创新性3D数据合成模型,微软推出EgoGen
【2月更文挑战第6天】创新性3D数据合成模型,微软推出EgoGen
70 2
创新性3D数据合成模型,微软推出EgoGen
|
6月前
|
机器学习/深度学习 自然语言处理 算法
未来语音交互新纪元:FunAudioLLM技术揭秘与深度评测
人类自古以来便致力于研究自身并尝试模仿,早在2000多年前的《列子·汤问》中,便记载了巧匠们创造出能言善舞的类人机器人的传说。
12456 116
|
26天前
|
机器学习/深度学习 人工智能 文字识别
POINTS 1.5:腾讯微信开源的多模态大模型,超越了业界其他的开源视觉语言模型,具备强大的视觉和语言处理能力
POINTS 1.5是腾讯微信推出的多模态大模型,基于LLaVA架构,具备强大的视觉和语言处理能力。它在复杂场景的OCR、推理能力、关键信息提取等方面表现出色,是全球10B以下开源模型中的佼佼者。
167 58
POINTS 1.5:腾讯微信开源的多模态大模型,超越了业界其他的开源视觉语言模型,具备强大的视觉和语言处理能力
|
24天前
|
人工智能 算法 物联网
Lyra:SmartMore 联合香港多所高校推出的多模态大型语言模型,专注于提升语音、视觉和语言模态的交互能力
Lyra是由香港中文大学、SmartMore和香港科技大学联合推出的高效多模态大型语言模型,专注于提升语音、视觉和语言模态的交互能力。Lyra基于开源大型模型和多模态LoRA模块,减少训练成本和数据需求,支持多种模态理解和推理任务。
108 33
Lyra:SmartMore 联合香港多所高校推出的多模态大型语言模型,专注于提升语音、视觉和语言模态的交互能力
|
29天前
|
机器学习/深度学习 人工智能 自然语言处理
Gemini 2.0:谷歌推出的原生多模态输入输出 + Agent 为核心的 AI 模型
谷歌最新推出的Gemini 2.0是一款原生多模态输入输出的AI模型,以Agent技术为核心,支持多种数据类型的输入与输出,具备强大的性能和多语言音频输出能力。本文将详细介绍Gemini 2.0的主要功能、技术原理及其在多个领域的应用场景。
150 20
Gemini 2.0:谷歌推出的原生多模态输入输出 + Agent 为核心的 AI 模型
|
1月前
|
人工智能 测试技术 API
FlagEvalMM:智源开源的多模态模型评测框架
FlagEvalMM 是由北京智源人工智能研究院开源的多模态模型评测框架,旨在全面评估处理文本、图像、视频等多种模态的模型。该框架支持多种任务和指标,采用评测与模型推理解耦的设计,提升评测效率,便于快速适配新任务和模型。
74 11
FlagEvalMM:智源开源的多模态模型评测框架
|
1月前
|
机器学习/深度学习 人工智能 达摩院
ClearerVoice-Studio:阿里通义开源的语音处理框架,提供语音增强、分离和说话人提取等功能
ClearerVoice-Studio 是阿里巴巴达摩院通义实验室开源的语音处理框架,集成了语音增强、分离和音视频说话人提取等功能。该框架基于复数域深度学习算法,能够有效消除背景噪声,保留语音清晰度,并提供先进的预训练模型和训练脚本,支持研究人员和开发者进行语音处理任务。
206 3
ClearerVoice-Studio:阿里通义开源的语音处理框架,提供语音增强、分离和说话人提取等功能
|
7月前
|
语音技术 开发者
ChatTTS:专为对话场景设计的文本转语音模型,底模开源!
最近,开源社区杀出一匹文本转语音领域的黑马——ChatTTS,在Github上仅4天斩获11.2k star。
ChatTTS:专为对话场景设计的文本转语音模型,底模开源!
|
7月前
|
机器人
北大推出全新机器人多模态大模型!面向通用和机器人场景的高效推理和操作
【6月更文挑战第29天】北京大学研发的RoboMamba是新型机器人多模态大模型,融合Mamba SSM的高效推理与视觉编码器,提升复杂任务处理能力。通过微调策略,仅用少量参数即可快速习得操作技能,实现在通用及机器人场景的高效运行,推理速度提升7倍。尽管面临泛化和可解释性挑战,RoboMamba展示了多模态模型的新潜力。[论文链接:](https://arxiv.org/abs/2406.04339)
112 1
|
8月前
|
人工智能 自然语言处理 测试技术
多模态大模型有了统一分割框架,华科PSALM多任务登顶,模型代码全开源
【4月更文挑战第24天】华中科技大学团队推出PSALM模型,革新多模态图像分割,实现语义、实例及交互式分割任务统一处理,提升效率。模型在多项基准测试中表现优异,支持零样本学习,适用于开放词汇分割等任务。代码开源促进研究,但面临复杂场景处理和计算资源优化的挑战。[链接](https://arxiv.org/abs/2403.14598)
249 2

热门文章

最新文章