MinMo: A Multimodal Large Language Model for Seamless Voice Interaction

FunAudioLLM Team   Tongyi Lab, Alibaba Group

用于语音交互的语音-文本多模态模型的先前工作可以大致分为 原生 模型和 对齐 模型。原生多模态模型使用单个框架同时对语音和文本的端到端理解和生成进行建模,然而,他们面临着语音和文本序列长度之间巨大差异、语音预训练不足以及灾难性地忘记文本LLMs的挑战;对齐的多模态模型在保持文本LLMs,然而,现有模型通常在小规模语音数据上进行训练,在有限的语音任务集上进行研究,并且缺乏对丰富而细致的说话风格的指令跟踪能力的系统探索

MinMo,这是一种多模态大型语言模型,具有大约 8B 参数,可实现无缝语音交互。 解决了先前对齐多模态模型的主要局限性。在 140 万小时的不同语音数据和广泛的语音任务上,通过语音到文本对齐、文本到语音对齐、语音到语音对齐和双工交互对齐等多个阶段来训练 MinMo。 经过多阶段训练后,MinMo 在保持文本LLMs,并且还促进了全双工对话,即用户和系统之间的同时双向通信。 此外,还提出了一种新颖而简单的语音解码器,它在语音生成方面优于以前的模型。MinMo 增强的指令跟踪功能支持根据用户指令控制语音生成,包括各种细微差别,包括情绪、方言和语速,并模仿特定声音。对于 MinMo,语音到文本的延迟约为 100 毫秒,理论上全双工延迟约为 600 毫秒,实际约为 800 毫秒。

  • 最先进的 (SOTA) 性能:MinMo 在语音对话、多语言语音识别、多语言语音翻译、情感识别、说话人分析和音频事件分析等基准测试中实现了当前的 SOTA 性能,同时还确保了文本大型模型的功能基本保持不变。
  • 指令控制音频生成:MinMo 支持端到端语音交互,按照用户指示控制生成音频的情感、方言和说话风格,以及模仿特定的语音音调,生成效率超过 90%。
  • 低延迟双工语音交互:MinMo 支持全双工语音交互,可实现流畅的多轮对话并防止背景噪音打断。语音到文本的延迟约为 100 毫秒,全双工延迟理论上约为 600 毫秒,实际约为 800 毫秒。
基准测试的性能概览:演示了 MinMo 在自动语音识别 (ASR)、语音到文本翻译 (S2TT)、口语问答 (SQA) 方面的功能,包括语音到文本 (S2T) 和语音到语音 (S2S)、语音分类 (VSC)、语音情感识别 (SER)、语言识别 (LID)、年龄识别和性别检测。MinMo 在所有这些任务上都超越了以前的 SOTA 模型

Introduction  

无缝语音交互表示用户与系统进行实时、自然、相关且类似人类的语音对话。促进无缝语音交互带来了巨大的挑战:

  • 系统需要准确、全面地理解音频,包括理解内容以及语音中的副语言线索(例如,情感、韵律)以及音频事件;
  • 系统应产生自然且富有表现力的语音响应;
  • 系统应向用户提供相关且合理的响应,作为智能聊天机器人;
  • 系统应支持全双工对话(同时双向通信),即系统在说话时倾听,用户在系统说话时可以自由打断,然后系统要么继续语音,要么停止响应,倾听用户,并提供对新用户查询的响应。

近年来,无缝语音交互系统获得了巨大的发展势头,尤其是随着多模态大型语言模型的进步,例如 GPT-4o和 Moshi。这些系统不仅可以产生自然而富有表现力的语音,还可以理解文字以外的线索,包括情感语气和音频事件。当前用于语音交互的多模态语言模型可分为两大类。

第一类包括原生多模态模型,例如 Moshi  和 GLM-4-Voice 。这些模型通常使用仅解码器的 Transformer 作为主干,在单个框架内同时对语音和文本模态的理解和生成进行建模;它们通常需要使用语音和文本数据进行预训练。这些模型存在两个主要限制。首先,在语音离散化之后,语音标记序列的长度通常是文本长度的两倍以上(例如,在 Moshi 中每秒 12.5 个标记)。随着模型大小的增长,序列长度的这种差异会带来挑战,例如 175B GPT-3 。其次,与文本相比,语音数据的稀缺性导致语音-文本训练数据高度不平衡,进而导致灾难性的遗忘。

第二类包括对齐的多模态模型,集成语音功能,同时旨在保持现有预训练文本LLM。这导致中间输出仍然包含文本,如 Llama-Omni  和 Freeze-Omni  等模型所示。然而,这些基于对齐的模型通常是在有限的语音数据(LLaMA-Omni 为 200K 样本,Freeze-Omni 为 120K 小时)上进行训练的,这导致了关于大型语音数据集对模型功能的影响以及原始文本LLM可能受到影响的问题。此外,尚未对这些模型进行广泛的语音任务调查,例如语音翻译、情感识别、说话人分析、语言识别和音频事件检测。此外,这些模型缺乏对丰富而细致的说话风格的指令遵循能力的系统评估,也缺乏对全双工对话能力的开发和评估,以实现无缝语音交互。

在这项工作中,我们引入了一种新的多模态大型语言模型 MinMo,以解决现有对齐多模态模型的这些局限性。MinMo 经过超过 140 万小时的语音数据训练,包括各种任务,例如语音转文本、文本转语音和语音转语音。这种广泛的培训使 MinMo 能够在各种基准上实现最先进的 (SOTA) 性能。还采用了一些方法,有效缓解了在大规模数据集训练后,模型对原始文本语言模型(text-LLM)聊天能力的灾难性遗忘问题,同时增强了语音理解和生成能力。

还提出了一种新颖的语音解码器,在保持结构简单的同时,兼具了优异的语音生成性能。LLaMA-Omni 使用一种非自回归(NAR)流式 Transformer,它将语言模型(LLM)的输出隐藏状态作为输入,并通过连接时序分类(CTC)预测响应的离散语音标记序列。然而,这种方法的性能相比自回归语音解码器较差。Freeze-Omni 使用了三种语音解码器,包括 NAR 前缀语音解码器、NAR 语音解码器和 AR(自回归)语音解码器,使模型结构更为复杂。有别于这两种策略,我们为 MinMo 设计了一种自回归(AR)流式 Transformer,其通过固定比例将 LLM 的输出隐藏状态与语音标记混合处理。

开发了一种机制,可以有效地促进与 MinMo 的全双工相互作用。具体来说,我们实现了一个全双工预测模块,该模块利用文本LLM 的语义理解功能来决定是继续系统响应,还是让步、倾听和响应新的用户查询。对于 MinMo,语音到文本的延迟约为 100 毫秒;全双工延迟理论上约为 600 毫秒,实际时约为 800 毫秒。

Related Work

Multimodal Spoken Dialogue Models:

多种语音基础模型已被开发用于通用音频理解,但尚未系统地探索其在语音交互方面的应用。例如,Qwen2-Audio 将 Whisper 语音编码器与预训练文本语言模型(LLM)集成,并通过多任务预训练和基于指令的监督微调使 LLM 具备语音理解能力。SALMONN 是另一种用于通用音频理解的语音-文本 LLM,通过 Q-Former 将单独的语音和音频编码器与预训练文本 LLM 集成,并采用 LoRA 进行模态对齐。

由于本研究旨在开发一种端到端多模态模型以实现无缝语音交互,我们将重点比较 MinMo 与用于语音交互的语音-文本模型(或称多模态语音对话模型)。同时或受到 GPT-4o 的启发,多模态语音对话模型的开发正如火如荼地进行,以实现与用户实时语音对话的能力。(Ji et al., 2024a) 对近期的语音对话模型进行了深入综述。一些研究支持传统的回合制语音聊天(即半双工通信),但无法处理全双工语音交互(即同时双向通信)。这些模型包括协作系统和端到端框架。

PSLM (Mitsui et al., 2024) 是一种协作系统,因为它依赖 ASR 处理音频输入,这会丢弃副语言信息并导致错误传播。PSLM 同时生成语音和文本标记,从而减少语音生成延迟;然而,其响应质量较低。与 PSLM 等协作系统不同,端到端框架直接接受音频输入并生成音频输出。

Llama-Omni (Fang et al., 2024) 和 Mini-Omni (Xie & Wu, 2024) 是两个近期的端到端框架,但尚未针对全双工通信进行训练。Llama-Omni 集成了 Whisper 语音编码器、语音适配器、流式语音解码器和声码器,并以预训练文本 LLM 作为基础。其语音解码器以非自回归(NAR)方式生成与生成文本前缀对应的离散单元。该模型采用两阶段训练策略:第一阶段冻结语音编码器,仅对语音适配器和 LLM 进行自回归训练;第二阶段冻结语音编码器、语音适配器和 LLM,仅使用 CTC 损失对语音解码器进行训练。Llama-Omni 被评估在语音转文本指令执行和语音转语音指令执行任务上的表现。

Mini-Omni 同样采用 Whisper 编码器,并通过适配器进行最小化训练,以保留 LLM 的能力。该模型通过模态对齐、适配器训练和多模态微调三个阶段进行训练。Mini-Omni 同时生成文本和音频标记,并填充 N 个标记以确保首先生成对应的文本标记,从而指导音频标记的生成。

MinMo 支持全双工语音对话。现有的全双工语音聊天系统同样可以分为协作系统和端到端模型两类。在协作系统中,VITA (Fu et al., 2024) 同时运行两个模型,即生成模型和监控模型,以支持全双工通信。当生成模型正在生成系统响应时,监控模型会监控环境,并在检测到有效的用户打断后结合上下文对新的用户查询提供响应,同时生成模型暂停并切换到监控角色。值得注意的是,VITA 仍然依赖外部的 TTS 模块生成语音输出。

另一种协作系统 (Wang et al., 2024a) 则通过 LLM 接入 ASR 模块和流式 TTS 模块运行。该系统不需要模态对齐,而是对预训练的文本 LLM 进行监督微调,采用以下范式:在每个时间步,LLM 要么处理一个输入标记,要么生成一个文本标记,要么输出一个特殊的控制标记,用于在 SPEAK 和 LISTEN 状态之间进行状态转换。所有这些任务都被定义为基于单一序列化流对话的下一个标记预测。全双工对话学习基于由 GPT-4 合成的数据进行,这些数据生成了包含不同类型用户打断的对话。值得注意的是,由于其级联架构,该系统面临高达 680ms 的高延迟问题。

在端到端全双工模型中,早期的 dGSLM (Nguyen et al., 2022) 提出了一个双塔架构,用于联合处理用户语音和系统语音的音频标记流。然而,该方法存在以下几个缺点:它依赖于仅基于语音的训练,未能利用预训练文本 LLM 的能力;仅使用语义标记,未充分建模语音的声学信息;不支持在线模式。LSLM (Ma et al., 2024b) 使用仅解码器的 Transformer 生成语音标记,并通过流式 SSL 编码器处理监听标记。该模型引入了一个中断标记,用于在检测到用户尝试轮流对话时停止发言。然而,模型在生成合理响应方面表现不足。

在最近的端到端全双工模型中,Moshi、GLM-4-Voice 、SyncLM 、IntrinsicVoice 和 Omni-Flatten原生多模态模型。这些模型在单一框架中同时建模语音和文本模态的理解和生成,基于 GPT 主干,并需要使用语音和文本数据进行自监督自回归预训练。如第 1 节所述,这些原生多模态模型需要应对语音标记与文本标记之间序列长度差异显著的问题,以及语音-文本训练数据高度不平衡及其导致的灾难性遗忘。IntrinsicVoice 使用 GroupFormer 从 LLM 的隐藏状态生成 HuBERT 标记,有效地将语音序列缩短到与文本序列相当的长度。Omni-Flatten 采用分阶段的逐步后期训练策略,通过块级的单流平铺语音和文本标记来学习全双工和无文本的语音到语音交互。

与这些原生多模态模型不同,我们的 MinMo 属于对齐多模态模型类别,该类别还包括 Llama-Omni、Mini-Omni2和 Freeze-Omni 。对齐多模态模型集成了语音功能,同时旨在保留现有预训练文本 LLM 的能力。Mini-Omni2 引入了基于命令的中断机制以支持全双工对话,但仅在 ASR 任务上进行评估,并与 Whisper、VITA 和 Mini-Omni 进行比较。Freeze-Omni是一个语音到语音模型,通过冻结预训练的文本 LLM 来保留其能力。它支持流式输入语音和生成流式输出语音,使用多任务训练,并通过块级状态预测来建模全双工语音交互。

我们的 MinMo 与这些对齐多模态模型在以下方面不同:我们探索了在更大规模的语音数据集(1.4 百万小时多样化语音数据,相较于 LLaMA-Omni 的 20 万样本和 Freeze-Omni 的 12 万小时)以及更广泛的语音任务上训练 MinMo。MinMo 还通过新颖的语音解码器、增强的指令跟随能力,以及对全双工语音对话能力的系统性训练和评估,与现有的对齐多模态模型形成了差异化。

文本风格 – 可控语音合成

多模态语音对话模型相比于基于文本的对话模型的显著特征在于其能够理解和生成超越文本内容的声学信息。语音模态不仅包含内容,还包括情感、方言和语速等声学信息。一个智能的多模态语音对话模型应该能够全面理解输入语音中的声学信息(例如情感),并且能够生成带有指定情感、方言、语速的响应,甚至模仿特定的声音,从而在沟通中实现更深层次的理解和响应。

协作系统如 ParalinGPT 、E-Chat 和 Spoken-LLM 通过整合副语言特征增强对情感等声学信息的理解。这些系统可以与可控风格的文本转语音(TTS)系统结合,以生成带有特定情感、语速和音量的响应。在文本风格可控 TTS 方面取得了显著进展,例如 TextrolSpeech 、PromptTTS 、PromptTTS2、InstructTTS 和 ControlSpeech 。

与这些协作系统相比,Moshi 使用一个具有单一演员声音和超过 70 种说话风格录音的 TTS 引擎,生成训练数据以支持在端到端模型中理解和生成声学信息。GLM-4-Voice利用高质量的多轮语音对话数据,这些数据针对特定语音风格需求(如语速、情感或方言)进行定制,从而支持风格可控的语音对话。然而,据我们所知,尚无研究表明对齐的多模态模型能够支持风格可控的语音生成。

与之前的研究声称对齐的多模态模型(如 Llama-Omni 和 Freeze-Omni)仅允许语言模型控制语音的内容而非风格和韵律相反,我们在本研究中提出了一种新型的流式语音解码器,用于对齐多模态模型 MinMo,并发现该解码器不仅增强了指令跟随能力,还使 MinMo 能够生成符合用户指定情感、方言、语速以及模仿特定声音的语音。

MinMo

模型架构

语音编码器采用预训练的 SenseVoice-large 编码模块,提供了强大的语音理解能力,支持多语言语音识别、情感识别和音频事件检测。输入投影器由一个随机初始化的两层 Transformer 和一个 CNN 层组成,用于维度对齐和降采样。我们选用预训练的 Qwen2.5-7B-instruct 模型作为预训练的文本 LLM,因为其在各种基准测试中的表现卓越(Team, 2024)。此外,我们利用 CosyVoice 2的流式音频生成机制,该机制具备低延迟并提供具有竞争力的语音合成性能。

对于每批接收的五个文本标记,我们将这些标记及其对应的最终隐藏层向量同时传递到输出投影器和语音标记语言模型(Voice Token LM)。输出投影器是一个单层线性模块,随机初始化用于维度对齐。语音标记语言模型(Voice Token LM)采用预训练的 CosyVoice 2 LM 模块,并以自回归方式生成十五个语音标记,确保高效且无缝的音频合成。这些语音标记由 Token2wav 合成器模块实时处理,生成最终的音频输出。

Token2wav 合成器包括一个预训练的流匹配模型,该模型将标记转换为梅尔频谱图,以及一个预训练的声码器,将梅尔频谱图转换为波形,两者均来源于 CosyVoice 2。MinMo 通过额外的隐藏嵌入实现端到端的完整训练,这些嵌入有助于根据用户指令控制语音风格,例如情感、方言和语速等。语音生成的详细信息详见 3.2 节。

全双工预测器模块由一个单层 Transformer 和一个线性 softmax 输出层组成,两者均为随机初始化。该模块实时预测是否响应用户指令或暂时停止当前系统播报,以处理来自用户的进一步音频输入。一旦全双工预测器决定系统响应是合适的,MinMo 会生成文本输出并同步以逐标记方式生成音频标记。

Streaming Voice Decoder

语音解码器包括三个组件:输出投影器、语音标记语言模型(Voice Token LM)和流式标记到波形(Token2wav)合成器。

输出投影器对齐 LLM 的维度与语音解码器的维度。LLM 的隐藏状态包含丰富的上下文信息,但语义上可能不够明确;而采样得到的文本标记更加精确,与生成的文本一致。同时,当前用户输入的隐藏状态包含显式的指令信息。在每轮对话中,用户输入的嵌入与 LLM 最后一层输出的隐藏状态将沿特征维度拼接,形成查询嵌入。查询嵌入与五个采样文本标记的嵌入,以及 LLM 最后一层输出的隐藏状态,将沿序列维度拼接并输入到投影器中。投影器的输出被称为语义向量,这些向量代表了丰富且准确的语义信息。

在输出投影器之后,使用语音标记语言模型(Voice Token LM)以自回归方式生成语音标记。该语言模型在交替的文本和语音标记序列上运行。具体而言,我们以 5:15 的固定比例混合语义向量和语音标记,即每五个语义向量后跟随十五个语音标记。

在训练过程中,采用教师强制策略,并引入一个特殊标记,用于指示下一个语义向量应被连接。当 LLM 的文本响应完成且语义向量耗尽时,我们插入一个“语音轮次”(turn of speech)标记,提示语音标记语言模型接下来的标记应完全为语音标记。当生成“语音结束”(end of speech)标记时,语音合成过程结束。

为了从语音令牌重建波形,我们使用现成的流式 token2wav 合成器。token2wav 合成器包含一个数据块感知流匹配模型和一个 mel 到 wave 声码器,能够以 15 个令牌为块合成波形。

语音解码器的理论延迟可以按以下方式计算:

其中 dl⁢l⁢m 表示 LLM 生成一个文本令牌的计算时间, dl⁢m 表示 LM 生成一个语音令牌的时间, ds⁢y⁢n 表示 token2wav 合成器生成每个语音令牌对应的波形的时间。

Tasks and Training Data

MinMo 的训练任务包括四类,包括 Speech-to-TextText-to-SpeechSpeech-to-Speech 和 Speech-to-ControlToken 任务。表 2 列出了每个类别中的具体任务及其相应的数据量表。

Speech-to-Text 任务。此类别包含大约 120 万小时的语音-文本配对数据,包括自动语音识别 (ASR)、语音到文本翻译 (S2TT)、语言识别 (LID)、上下文偏差语音识别、语音情感识别 (SER)、音频事件检测 (AED)、说话人分析、口语平滑等任务。这些任务的训练数据以 ChatML 格式组织,如以下示例所示:

Text-to-Speech tasks。该类别的数据主要由基础语音合成数据组成,与训练 CosyVoice 2 的数据相同。它包括 170000 小时的文本语音配对数据,并支持四种语言:中文、英文、韩文和日文。此外,还有大约 1000 小时的音频生成数据由指令控制。这些说明扩展为包括由 Qwen-Max 生成的自然语言描述,利用人类标记的属性,例如情感、语速、方言和角色扮演。

Speech-to-Speech 任务。 Speech-to-Speech 数据主要通过模拟获取,包括大约 10000 小时的多轮对话语音和 100 小时的风格可控多轮对话语音。模拟 Speech-to-Speech 聊天数据的方法如下:

对于主要来源于 Alpaca 和 ShareGPT3 的文本聊天数据,我们利用 CosyVoice 的零样本上下文生成方法 将用户文本转换为用户语音。我们使用来自选定说话人的 2 小时数据对 CosyVoice 的基本模型进行微调,为目标说话人创建一个语音合成模型,称为 CosyVoice-SFT。该模型合成了助手的语音(即系统语音)。使用zero-shot上下文生成进行用户语音合成的优势在于它能够确保生成的用户语音的多样性,从而增强 MinMo 的泛化性。

为了解决合成音频和真实音频之间的差异,我们从 ASR 数据中选择合适的真实语音作为用户语音查询,并使用相应的文本作为 Qwen-Max 的输入生成响应文本,然后使用 CosyVoice-SFT 模型将其合成为辅助语音。这种方法进一步增强了模型对真实用户音频输入的鲁棒性。

为了生成涵盖不同说话风格的对话语音,我们最初使用 Qwen-Max 来创建丰富的风格可控、多轮次文本对话集合。用户查询通过 Cosyvoice 的 zero-shot generation 转换为语音。随后,我们使用 Cosyvoice 2 来生成助手的富有表现力的语音。具体来说,我们将助手的响应内容和指导提示输入到 Cosyvoice 2 中,以合成特定风格的语音。此外,使用小型、多样化和初步录制的语音语料库作为提示语音,通过零镜头生成合成表达性响应语音。前一种方法增强了模拟语音的多样性,而后者更有效地构建了各种风格的表现力。

Speech-to-ControlToken 任务。Speech-to-ControlToken 数据主要由两部分组成。第一部分是从现有的真实语音交互数据中提取的,而第二部分是使用文本对话数据进行模拟的。具体来说,现有的真实语音交互数据包括 Alimeeting 、Fisher 等资源,以及我们内部的语音交互数据,总共大约 3000 小时。模拟数据主要包括开源 MOSS 数据集 和通过合成我们内部文本对话数据的口语对话,产生了大约 1000 小时的语音聊天数据。当使用这些语音交互数据构建双工训练数据时,我们应用启发式规则在样本上自动注释双工标签,如下所示:

  • 对于助手的轮流,将用户轮到的终点作为助手轮次的起点。
  • 对于用户的轮次,将助手轮次结束后的时间间隔 T 作为用户轮次的起点,其中 T∼𝒩⁢(0.6,0.42) 。
  • 对于用户的 Back-Channel,当用户(以对话中的一个说话者为用户)无法打断另一个说话者时,我们从语音交互数据中选择实例,并将其视为用户 Back-channel 的训练样本。

模型训练

MinMo 通过四个对齐阶段逐步训练:(1) 语音到文本对齐,(2) 文本到语音对齐,(3) 语音到语音对齐,以及 (4) 双工交互对齐。通过四个对齐阶段,MinMo 获得了端到端的音频理解和生成能力,同时保留了主干文本LLM,实现了低延迟并为用户提供了无缝的语音聊天体验,类似于 GPT-4o。这四个阶段详细说明如下。

语音到文本对齐Pre-align > Full-Align > SFT[LoRA]

第一阶段使用表 2 所示的语音转文本数据,将音频模态的输入潜在空间与预训练文本LLM。此阶段包括对图 3 中的输入投影和语音编码器的逐步更新,以及使用 LoRA 更新文本 LLM。考虑到语音编码器和LLM (Qwen2.5-7B) 是预先训练的,而输入投影的参数是随机初始化的,我们使用表 2 所示的语音转文本数据子集执行预对齐训练 (Pre-align),仅更新输入投影器。这个 Pre-align 阶段有效地防止了随机初始化的参数在初始训练阶段对预训练的 Voice Encoder 产生大的梯度影响。在预对齐之后,我们使用完整的语音转文本数据来训练输入投影器和语音编码器,同时保持 LLM 参数冻结,这个过程称为完全对齐。在 Full-Align 之后,使用涵盖各种任务的大约 130 万个样本进行指令微调 (SFT)。在此阶段,LLM 使用 LoRA 进行更新,从而增强模型遵循指令的能力。Full-Align 和 SFT 阶段中使用的特定数据比例如图 4 所示。Pre-Align 阶段使用大约 1/10 的 Full-Align 数据。

文本到语音对齐

第二阶段使用文本转语音数据将文本LLM音频模态的输出潜在空间对齐。此阶段首先训练 Output Projector,然后联合训练 Output Projector 和 Voice Token LM,同时保持其他 MinMo 参数冻结。除了基本的文本转语音功能外,我们还利用端到端框架使 MinMo 能够在语音交互中遵循用户指示,从而提供更富有表现力和娱乐性的音频响应。例如,用户可以通过指令控制音频输出的情感、语速、方言口音或说话人风格。构建了大约 1000 小时的 Instruct 语音合成数据,格式如表 3 所示。

语音到语音对齐。

第三阶段使用大约 10,000 小时的配对音频数据继续训练 MinMo。与文本到语音对齐阶段一致,我们继续仅更新 Output Projector 和语音令牌 LM。语音到语音对齐的训练数据不仅包括一般的语音到语音对话,还包括具有各种设置的音频生成指令,例如采用特定的方言、语速和口语对话的情感。我们发现,即使不更新 LLM,仅通过利用与小规模指令数据集对齐的嵌入(150 小时),大型模型仍然可以学习相当有效的音频生成控制能力。

双工交互对齐。

在完成前三个训练阶段后,MinMo 获得了音频理解、音频生成和半双工语音对话的能力。在此基础上,我们进一步添加了一个全双工模块,该模块经过 4000 小时的长篇人际口语对话训练。Full Duplex Predictor 模块在此阶段专门进行训练。Full Duplex Predictor 采用 全双工预测器将LLM的隐藏嵌入作为输入,用于预测模型是否需要生成响应。全双工预测器利用LLM固有的语义理解能力来判断:1)模型是否应该回应当前用户查询,2)模型是否应该停止正在进行的语音输出以聆听用户查询并提供适当的响应。来预测模型是否需要生成响应

Experiments

根据多个基准评估 MinMo:

语音识别和翻译

在普通话、英语、日语、韩语和其他六种语言的公共测试集上评估了 MinMo 的语音到文本转录功能。

对于普通话 (ZH)、日语 (JA)、韩语 (KO) 和粤语 (YUE),我们采用字符错误率 (CER) 来评估转录性能。对于英语 (EN)、德语 (DE)、法语 (FR)、俄语 (RU)、西班牙语 (ES) 和意大利语 (IT),单词错误率 (WER) 用作评估指标。

与 Whisper Large v3 和 Qwen2-Audio相比,MinMo 在各种语言的大多数测试集上都实现了卓越的 ASR 性能

在提示符显示或不带有 LID【语言ID】 信息的 Common Voice 上进行测试时,Whisper Large v3 和 Qwen2-Audio 的平均错误率存在显著差距,这表明这两个模型强烈依赖 LID 信息。相比之下,无论是否存在语言识别,MinMo 都表现出稳健且一致的 ASR 性能。

多语言语音翻译

在 Fleurs  和 CoVoST2  测试集上评估了语音到文本的翻译能力。

与其他端到端基线相比,MinMo 在中 ↔ 英和日 ↔ 英翻译上实现了 SOTA 性能,在其他语言对上实现了顶级性能。我们将这种强劲的性能归功于广泛的语音翻译训练数据(表 2 中 451K 小时的 S2TT 训练数据)和强大的音频编码器。 值得注意的是,尽管我们只用 CoVoST2 集(不包括 Fleurs 集)来增强我们的训练数据,但我们的模型在两个测试集上保持一致的性能,表明具有高鲁棒性。

Language Identification  语言识别

使用 Fleurs 数据集,该数据集涵盖 102 种语言。MinMo 实现了 85.3% 的语言识别准确率,优于表 7 所示的所有先前模型。具体来说,零样本 Whisper-V3 经常将粤语错误地归类为中文,而 MinMo 可以准确地识别粤语。

上下文偏见语音识别

上下文偏见,或称为热词定制,允许用户根据特定的上下文或热词获得定制化的ASR(自动语音识别)结果。MinMo通过集成用于上下文偏见的高级提示增强了ASR功能。我们为对齐和SFT阶段准备了相应的训练数据,通过将热词组织到语音处理指令之前的提示中,从而实现有效的定制。评估包括热词偏见测试和一般偏见测试,如表8所示。

热词偏见测试涉及使用SeACo-Paraformer(Shi et al., 2024)提供的三个数据集,这些数据集包含用于偏见评估的热词。一般偏见测试则使用包含较少热词的数据集,用于评估对无关热词的抗干扰能力。

MinMo 在 ASR 准确性(带和不带热词)以及硬质热词的召回率方面优于竞争性基线 SeACo-Paraformer

Speech Analysis and Understanding

Speech Emotion Recognition

使用来自 EmoBox 的七个广泛使用的情绪识别数据集评估了 MinMo 的语音情感识别 (SER) 能力,包括 CREMA-D (Cao et al., 2014)、MELD (Poria et al., 2019)、IEMOCAP (Busso et al., 2008)、MSP-Podcast (Martinez-Lucas et al., 2020)、CASIA (Zhang & Jia, 2008)、MER2023 (Lian et al., 2023) 和 ESD (周 et al., 2021)。这些数据集包括中英文语言和场景,例如表演、电视剧和日常对话。我们采用未加权平均准确率 (UA)、加权平均准确率 (WA) 和宏观 F1 分数 (F1) 作为评价指标。引用了来自最近的 SER 工具包 EmoBox(马 et al., 2024a)的这些测试集的结果。我们还使用其发布的模型检查点评估了基线音频LLM 模型 SALMONN 和 Qwen-Audio。

MinMo 在该基准测试的所有任务上都优于所有基线模型,包括语言 ID、性别、年龄、情感、发声分类任务,除了在声音问题分类任务上表现优于 Qwen-Audio

Audio Event Understanding

使用 Air-Bench 基准测试,将 MinMo 的语音和音频事件理解能力与其他 Audio-LLM。结果如表 12 所示。在语音声音分类任务 (Vocal Sound) 上,MinMo 超越了所有基线模型。然而,我们发现,在更复杂的声音问答任务中,MinMo 的表现比 Qwen-Audio 差,尽管性能仍然优于其他模型。这可以归因于两个因素:首先,在语音编码器和训练范式中,MinMo 主要是为语音交互而设计的,因此一些声音问题可能会超出其范围;其次,在评估过程中,MinMo 会预测音频中发生的情况,而不是严格选择 Air-Bench 提供的选项,因此 MinMo 生成的一些正确或相似的正确响应与后处理脚本的错误选择保持一致。

Speaker Analysis  

说话人分析涉及几项对于理解音频数据并与之交互至关重要的任务,包括性别检测、年龄估计、说话人计数、说话人识别、多说话人识别和目标说话人识别。结果表明,MinMo 在性别检测和年龄估计任务上优于所有基线模型

Speech-to-Text Enhancement

Spoken Language Smoothing【口语平滑】

口语语言平滑任务以口语ASR(自动语音识别)转录文本为输入,输出正式风格的书面文本。表14展示了口语语言平滑的一些示例。为该任务,我们通过扩展为ASR转录文本的口语到书面转换而创建的SWAB数据集(Liu et al., 2025),构建了一个多领域数据集用于训练和评估。SWAB数据集源自中文和英文的会议、播客及讲座。

在为原始视频和音频生成ASR转录文本后,大约十位注释人员根据ASR转录文本创建正式风格的书面文本,同时保留原始内容。SWAB的训练集包含20,000段文本,测试集包括100段中文和英文的随机抽样段落。我们对SWAB测试集进行全面微调,并将MinMo与基于Qwen2.5-7B的模型进行比较,结果如表15所示。

在客观指标评估中,我们使用BLEU(Papineni et al., 2002)、ROUGE(Lin, 2004)和BLEURT(Sellam et al., 2020),以人工目标为参考。然而,我们注意到口语语言平滑任务具有显著的主观性和多样性,因此基于词汇匹配的客观指标可能无法充分反映模型性能。因此,我们采用人工和LLM注释来提供信实性(S-Faithful,即对原始内容的信实性)和正式性(S-Formal)的排名评估。自动化LLM评分的提示见附录A.1。

表15显示,我们的模型与Qwen2.5-7B的性能相当,表明MinMo在平滑口语语言方面具有较好的能力。

标点插入和反向文本规范化

对于标点插入 (PUNC) 和反向文本归一化 (ITN) 任务,我们使用来自 Fleurs 数据集的中文和英文数据。我们将 MinMo 与 SenseVoice-L 和 whisper-large-v3 进行比较,如表 16 所示。鉴于标点符号插入和 ITN 任务的主观性,我们使用 GPT-4 Turbo 对三个结果进行排序进行评估。附录 A.2 中提供了自动评分的任务提示。第一名获得 3 分,第二名获得 2 分,第三名获得 1 分。最终分数是所有分数的平均值。在准备测试数据时,我们使用随机选项洗牌和多轮评分,以减少使用 ChatGPT 进行评估时的不确定性。最终结果表明,MinMo 在标点插入和 ITN 的主观评价中表现更好

Voice Generation

文本到语音(TTS)

为了评估我们语音解码器的合成准确性,我们将最新的SEED测试集(Anastassiou et al., 2024)转换为ChatLM格式。在该格式中,文本以用户内容的形式呈现,并以“Copy:”命令为前缀,LLM预计会复制该文本。测试集包括2,020个中文案例和1,088个英文案例。对于中文案例,我们使用了Paraformer-zh模型(Gao et al., 2022),而英文案例则使用了Whisper-large V3(Radford et al., 2023)。鉴于LLM存在的指令跟随问题,我们在推理过程中应用了教师强制方案,以最小化输入和输出文本之间的差异。语音解码器的内容一致性通过中文的CER(字符错误率)和英文的WER(词错误率)进行评估。

我们的发现表明,即使在应用了教师强制方案的情况下,只有大约20%的测试案例的输入和输出文本与LLM完全一致。由于不一致的输入和输出可能导致语音解码器的隐藏状态混乱,因此仅包括输入和输出文本一致的测试案例来计算错误率。结果如表17所示。我们观察到,与TTS基线模型CosyVoice 2.0-SFT(Du et al., 2024b)相比,MinMo在中文测试集上表现出稍微较低的内容一致性和语音质量。在英文测试集上,MinMo在内容一致性上表现相似,但NMOS(语音质量评分)稍低。这个下降可以归因于微调的说话人不同的声学特性,这影响了识别模型和NMOS评分器。然而,这种下降不会显著影响人类的理解。因此,主观评估可能更适合语音到语音的语音聊天模型,我们将在未来的工作中进一步探讨这一点。

指令跟随语音生成

为了评估指令跟随语音生成的性能,我们开发了一个包含30个会话和122个回合的多轮中文语音到语音测试集,涉及12种指令控制类型。这些控制类型包括情感(高兴、悲伤、惊讶、愤怒、恐惧)、方言(粤语、四川话)、语速(快、慢)、角色扮演(机器人、佩佩)以及默认风格。

为了评估指令跟随语音生成的准确性,听众根据指令类型对生成的音频进行分类。如表18所示,MinMo在指令控制准确性方面优于基线模型GLM-4-Voice,特别是在方言和角色扮演方面。

Voice Chat

为了将基础模型的对话功能转移到语音模态,我们为语音转文本 (speech2text) 和语音转语音 (speech2speech) 场景构建了多轮次对话数据。speech2text 数据主要分为两部分。首先,它源自开源多轮次纯文本数据,我们使用零样本文本转语音 (TTS) 技术合成用户轮次。其次,我们使用真实的自动语音识别 (ASR) 训练数据作为聊天查询,从大型模型获取文本响应,从而为 speech2text 生成交互式训练数据。

MinMo 模型在语音转语音 (S2S) 模式下与现有基线相比具有显著优势,实现了新的最先进的 (SOTA) 结果。在语音转文本 (S2T) 模式下,它还在 Llama Question 和 Web Question 数据集上实现了 SOTA 性能。但是,MinMo 的测试结果仍然表明,与 S2T 模式相比,S2S 模式的性能明显下降。我们将其归因于这样一个事实,即测试集中的许多答案都具有丰富的文本结构和专业词汇,这对模型的文本转语音 (TTS) 功能提出了更高的要求。此外,在 S2S 评估中用于获取答案文本换语音的自动语音识别 (ASR) 模型也会在一定程度上影响 S2S 指标。

从表 20 中可以观察到,通过将额外的 speech2text 任务数据整合到 MinMo 训练中,我们能够有效地保持基础模型的对话能力。与 ASR 与纯文本基本模型相结合的性能相比,MinMo 的对话能力在很大程度上保持一致。但是,MinMo 的响应分数略低于 Ground Truth 响应的质量。我们认为这种差异可以归因于两个主要原因。首先,多个语音任务的集成和在基础模型上实现 LoRA 训练,在一定程度上削弱了原始大型语言模型 (LLM。该表显示,与 ChitChat 测试集相比,MinMo 在 Alpaca 测试集上表现出更大的性能变化。其次,MinMo 的音频理解能力还有进一步改进的空间,并且仍有可能降低 ASR 任务中的字符错误率 (CER)。

Full Duplex Spoken Dialogue

为了评估 MinMo 在全双工语音交互中的能力,我们构建了三个测试集:中文 Alimeeting 数据集、英文 Fisher 数据集和一个模拟测试集,旨在更接近真实的人机对话场景。我们从两个角度评估 MinMo 的全双工能力:预测性能和预测效率。关于预测性能,评估分为三个任务:辅助轮流、用户轮流和用户反向引导。对于轮流任务,我们采用正 F1 分数作为分析指标,并引入了偏移距离 ( K ) 来更好地分析模型的性能。对于用户反向通道任务,我们利用准确性来评估 MinMo 识别反向通道话语的能力。

MinMo 模型在人机对话数据集上表现出值得称道的结果,无论是用户轮流还是助手轮流。当 K=10 时,预测性能接近 99%。在实际人机对话的测试集中,与人机对话测试集相比,MinMo 模型在辅助轮流上的表现表现出一定程度的下降。我们认为这主要是由于真实人类对话中背景噪音、语速、停顿和其他因素的高度可变性,这可能导致模型在助理轮流任务中出现一定程度的误判。但是,对于人与人对话中的用户轮流预测,MinMo 模型仍然保持了高水平的灵敏度和预测性能,确保在用户说话时系统及时停止说话,从而避免与用户重叠语音。这种敏感性和对用户语音的尊重也解释了为什么 MinMo 模型对用户反向通道评论保持 70%-80% 的预测准确性,如表所示。这与 user turn-taking model 的调优是一致的,表明两者之间存在一定的权衡。

为了对 MinMo 双工模式进行效率分析,我们还分别对人机对话和人机对话测试集进行了测试。如表 23 所示,MinMo 在用户轮流中的平均响应延迟为 250ms。在人机测试集中观察到最快的响应速度,为 88.8 毫秒,而最具挑战性的 Alimeeting 测试集显示延迟为 448.8 毫秒。在辅助轮流方面,MinMo 的平均响应延迟在 660ms 左右,与用户轮流预测所需的响应时间相比,这要长。我们将其归因于以下事实:用户轮流涉及用户语音的开始部分,而助手轮流涉及用户轮到即将结束的部分。因此,助理轮流的上下文语义信息更加全面,从而缩短了决策所需的时间滞后。

Full Duplex System Latency

MinMo 的双工交互由四个模块组成:全双工预测器,负责双工控制,语音转文本模块(语音编码器+输入投影仪+LLM)、文本转语音标记模块(输出投影仪+语音标记 LM)和 Token2Wav 模块。表 21 显示了每个模块的延迟。以 Assistant Turn-taking 为例,当用户的实际语音结束时,双工模型通常需要 250 ms 的延迟进行评估。在 Speech-to-Text 过程中,对前 5 个文本标记的预测大约需要 150 毫秒。预测最初的 15 个语音令牌大约需要 70 毫秒,从语音令牌转换到第一个音频数据包需要额外的 130 毫秒。因此,在开发基于 MinMo 的全双工语音对话系统时,助理轮流的标准体验延迟约为 250 + 150 + 70 + 130 = 600 毫秒。上述数值估计值是在使用 L20 GPU 和 BF16 模型格式进行测试期间得出的。

总结/局限性

MinMo 在超过 140 万小时语音的广泛数据集上进行了训练,展示了各种基准(包括口语对话、多语言语音识别和情感识别)的最新性能。通过利用多阶段对齐策略,MinMo 巧妙地平衡了音频理解和生成,同时最大限度地减少了基于文本的 LLMs。一项关键创新是 MinMo 用于流式端到端音频生成的新颖对齐方法。通过利用文本模型的隐藏层表示,MinMo 的语音解码器实现了结构简单性和有竞争力的性能以及低延迟。这种方法显著增强了模型的指令遵循能力,能够生成细致入微的语音,准确反映用户指定的情感、方言和说话风格。此外,MinMo 支持全双工交互,以大约 600 毫秒的延迟提供无缝的对话体验。总之,MinMo 代表了语音交互系统领域的重大进步。它不仅解决了序列长度差异和数据不平衡的固有挑战,还为自然和富有表现力的语音交互设定了新标准,为多模态语言模型的未来发展铺平了道路。

MinMo 有一些需要解决的局限性。首先,MinMo 基于预训练的文本大模型,使用对齐方式集成音频理解和音频生成能力;文本大型模型仅参与 LoRA 更新,其遵循各种指令(例如语言和任务遵循)的能力需要改进。需要进一步探索以确定使用更多高质量的文本数据对文本大型模型进行更全面的更新是否可以增强其指令跟踪能力。其次,MinMo 的端到端音频生成存在一些长尾发音错误问题。这个问题部分是由于保留了 LLM,部分原因是端到端建模输出文本中的一些特殊符号无法有效地转换为语音。可以探索数据扩展来解决这些长尾问题。此外,由 MinMo 中的指令控制的音频生成的整体效率需要提高。这部分是由于当前指令数据的整体大小较小,并且仅使用隐藏嵌入进行端到端对齐的限制,这限制了历史信息的传输。最后,虽然 MinMo 实现了基于语义的双工模块,但它仍然需要单独的 AEC 【AEC模块用于消除语音通信中由于麦克风拾取扬声器输出信号而产生的回声。】和 VAD 模块。将来,将探索完全端到端的双工模型。

MiniCPM-o 2.6: 端侧可用的 GPT-4o 级视觉、语音、多模态实时流式大模型

➤ 项目网站 🔗https://github.com/OpenBMB/MiniCPM-o

➤ 模型权重 🔗https://huggingface.co/openbmb/MiniCPM-o-2_6

🔗https://modelscope.cn/models/OpenBMB/MiniCPM-o-2_6

➤ Demo https://minicpm-omni-webdemo-us.modelbest.cn/

MiniCPM-o 2.6部署教程 详细的部署教程请参考文档

简介

多模态大模型的蓬勃发展始于视觉和语言,其中开源社区在图像理解能力方面实现了越来越强的性能表现。然而,我们的物理世界本质上是一个并行的连续多模态信息流,而当前大多数多模态大模型缺乏处理这样信息流的能力。最近的 GPT-4o 和 Gemini 2.0 等突破性工作迈出了朝这个目标的第一步,为领域的未来发展建立了雄心勃勃且充满希望的方向。

为了促进开源社区的探索,我们推出了 MiniCPM-o 2.6,一个从 MiniCPM-V 系列升级而来的最新性能最佳的端侧多模态大模型。该模型接受图像、视频、文本和音频输入,并以端到端方式生成高质量的文本和语音输出。虽然总参数量仅有 8B,MiniCPM-o 2.6 的视觉、语音和多模态流式能力达到了 GPT-4o-202405 级别,是开源社区中模态支持最丰富、性能最佳的模型之一。其主要特性包括:

  • 领先的视觉能力。 MiniCPM-o 2.6 在 OpenCompass 榜单上(综合 8 个主流多模态评测基准)平均得分 70.2,以 8B 量级的大小在单图理解方面超越了 GPT-4o-202405、Gemini 1.5 Pro 和 Claude 3.5 Sonnet 等主流商用闭源多模态大模型。此外,它的多图和视频理解表现也优于 GPT-4V 和 Claude 3.5 Sonnet,并展现出了优秀的上下文学习能力。
  • 出色的语音能力。 MiniCPM-o 2.6 支持可配置声音的中英双语实时语音对话。MiniCPM-o 2.6 在语音理解任务(如 ASR 和 STT 等)优于 GPT-4o-realtime,并在语音对话的语义和声学评估中展现了开源社区最佳的语音生成性能。它还支持情绪/语速/风格控制、语音克隆、角色扮演等进阶能力。
  • 强大的多模态流式交互能力。 作为一项新功能,MiniCPM-o 2.6 能够接受连续的视频和音频流,并和用户进行实时语音交互。在综合评测基准 StreamingBench 中(包含实时视频理解、全模态视音频理解、多模态上下文理解三大类评测),MiniCPM-o 2.6 取得开源社区最佳水平,并超过了 GPT-4o-202408 和 Claude 3.5 Sonnet。
  • 强大的 OCR 能力及其他功能。 MiniCPM-o 2.6 进一步优化了 MiniCPM-V 2.6 的众多视觉理解能力,可以处理任意长宽比的高清图像,像素数可达 180 万(如 1344×1344像素)。在 OCRBench 上取得 25B 以下最佳水平,超过 GPT-4o-202405 等商用闭源模型。基于最新的 RLHF-VRLAIF-V 和 VisCPM 技术,该模型具备了可信的多模态行为,在 MMHal-Bench 上超过了 GPT-4o 和 Claude 3.5,并支持英语、中文、德语、法语、意大利语、韩语等30多种语言的多模态交互。
  • 卓越的效率。  除了对个人用户友好的模型大小,MiniCPM-o 2.6 还表现出最先进的视觉 token 密度(即每个视觉 token 编码的像素数量)。它仅需 640 个 token 即可编码 180 万像素图像,比大多数模型少 75%。这一特性显著优化了模型的推理速度、首 token 延迟、内存占用和功耗。因此,MiniCPM-o 2.6 可以首次支持 iPad 等终端设备上的高效多模态实时流式交互。
多模态大模型发展趋势。多模态大模型的性能持续增强,并在真实世界的流式场景中支持越来越多的模态能力。与传统视觉语言模型的线性发展不同,这种发展趋势更加多维,就像攀登深处的山峰一样,可能蕴含更多变革性的宝藏。

我们将介绍 MiniCPM-o 2.6 中所面临的主要挑战及其相应的解决方案。

🤔 如何实现多模态流式交互?

人类能够持续感知来自环境的视觉、音频和文本信息流,并以较低延迟生成语音和文本回复,但这对当前的多模态大模型来说是一个重大挑战。

💡 1. 我们将各模态的离线编码/解码器改造为支持在线模式,从而支持流式输入/输出处理。

大多数模态的编码器和解码器都是离线的,大语言模型必须等待完整的视觉/音频输入的编码完成后才能进行处理,用户也必须等待语音完整生成后才能收听。我们在时间维度上将不同模态的输入/输出流分割成小块,并以块为单位进行编码/解码以实现更低的延迟。对于语音生成来说,我们设计了一种新颖的流式注意力策略使解码器能够在接收到第一个文本块时就开始生成音频。

💡 2. 我们提出了一种全模态时分复用机制来处理并行多模态流。

借鉴通信领域的时分复用技术,我们将每个模态的信息流分割成小块(每秒一块),并将同一秒内的所有模态信息组合成一个紧凑的序列单元输入给大语言模型主干。基于这个策略,主干模型可以高效地在线处理多模态信息流。

🤔 如何实现高效的端到端声音、情感、口音和语速可控的语音对话?

大多数传统语音对话模型都是基于 ASR-LLM-TTS 流水线实现的,会丢失大量用户复杂情感和环境声音等细粒度信息。而直接使用大语言模型生成音频 token 的端到端模型在训练和推理过程中都存在计算效率低的问题,且训练时数据效率也较低。

💡 我们基于混合的端到端架构在自然语音上进行了大规模预训练。

我们同时通过连续特征和文本将大语言模型和一个轻量级语音解码器连接起来。大语言模型产生的连续特征确保语音监督信号能够以端到端方式反向传播到全部模型参数,从而支持更高的能力上限。文本连接则提供了强大的语义控制并减少了训练数据需求。为了学习丰富的细粒度语音知识,我们在自然语音数据进行了大规模预训练,然后将模型与用户指令对齐。

端到端全模态架构

我们首先介绍 MiniCPM-o 2.6 的端到端全模态整体架构。该模型基于SigLip-400M、Whisper-medium-300M、ChatTTS-200M 和 Qwen2.5-7B-Instruct,总共有 8B 参数。整体架构如下所示。

端到端语音建模

大多数现有的多模态模型依赖 ASR 和 TTS 工具搭建流水线来理解和生成语音,导致了明显的语音信息损失和比较有限的语音控制能力。我们提出一种混合连接的端到端语音建模架构,在保证模型能力上限的同时具备优秀的训练和推理效率。

音频编码

我们首先使用 Whisper 编码音频输入,然后进一步压缩其特征表示来减小后续的计算开销。默认情况下,Whisper 编码器会为每秒音频生成 50 个 token。受 LLaVA-UHD 的启发,我们在将音频 token 输入到大语言模型主干之前会进一步压缩音频 token,以提高 token 信息密度和计算效率。实验结果表明从 50 token/秒压缩到 25 token/秒时,造成的信息损失几乎可以忽略,并可提高近一倍的计算效率。

语音解码

为了实现对语音输出的精细控制,我们首先从大语言模型主干中获得连续特征作为 speech embedding,然后通过大语言模型继续生成文本。speech embedding 和生成的文本同时会输入给解码器作为生成语音梅尔谱的控制条件。MiniCPM-o 2.6 使用了初始化自 ChatTTS 的轻量级自回归语音解码器来联合建模输入的 speech embedding、文本和输出的音频 token。

语音到语音架构

我们直接通过编码后的音频特征(不使用 ASR)将音频编码器与大语言模型连接起来。大语言模型和语音解码器则以混合方式连接:(1)speech embedding 连续特征控制语音、情感、口音及其他细粒度语音特征。在训练过程中,来自语音解码器的梯度会反向传播到包含大语言模型主干和音频编码器的整个模型参数。模型通过端到端方式训练,没有使用任何中间损失和监督。(2)我们还将来自大语言模型的文本输入到语音解码器,来提供更好的语义控制和训练数据效率。

得益于端到端的架构设计,MiniCPM-o 2.6 成为首个支持端到端语音克隆的通用语音对话模型。我们发现 MiniCPM-o 2.6 在语音克隆任务中可以达到与一些专业 TTS 工具相近的性能。

端到端视觉理解

MiniCPM-o 2.6 采用 LLaVA-UHD 的自适应视觉编码方案以实现高清视觉理解,支持处理最高 180 万像素(例如 1344×1344)的任意长宽比图像。具体而言,我们先将图像划分为多个切片,使得每个切片在分辨率和长宽比方面接近 ViT 的预训练设置。为了提高计算效率,我们支持每张图像最多 9 个切片。然后我们将每个切片及原始完整图像输入给 SigLIP 以获取视觉特征。最后,我们应用 perceiver resampler 将每个图像切片的特征序列压缩为 64 个视觉 token。更多细节参见 LLaVA-UHD 和MiniCPM-V 原始论文。

全模态流式机制

本章我们介绍 MiniCPM-o 2.6 的全模态流式机制,包括:(1)改造语音编码器和解码器以支持在线流式处理,(2)使大语言模型主干能够处理并行的多模态流信息。

流式音频编码

大多数现有模型只能在整个音频输入信号完整后才开始进行音频编码,从而引入了显著的延迟。为了解决这个问题,我们将输入音频分割成多个片段,每个片段是表示一秒钟的音频的固定数量音频 token。在音频编码过程中,每个片段采用因果注意力机制进行编码仅关注自身及之前的片段,从而满足在线流式编码的需求,同时与离线整体编码相比保持了最小的信息损失。

每个小方块表示1s的音频片段

流式语音解码

大多数语音生成模型要求在开始生成音频之前,所有文本 token 都已经完整就位,如图 A 所示。虽然这种方式在离线任务中表现良好,但无法满足流式场景的需求。对于流式模型而言,我们需要在部分文本生成时就开始生成(和播放)相应音频。

为了实现流式语音生成,我们每次输入固定数量的文本 token(一个大小为 n 的片段),而解码器立即输出固定数量的音频 token(一个大小为 m 的片段)。这个过程会对下一个文本 token 和音频 token 片段重复进行,以此类推。值得注意的是,文本片段与其对应音频片段之间的并不是精确对齐的。因此在实际应用中,我们为文本 token 片段的大小保留了更大的空余以避免意外情况。

为了实现上述流式策略并尽可能减小对当前最佳语音解码器的改动,我们主要引入了两个改变:

  1. 为文本预留前 N 个位置: 我们使用语音解码器上下文中的前 N 个位置来放置 speech embedding 和生成中的文本。
  2. 引入流式因果注意力掩码: 每个新生成的音频片段只能关注到已经生成的前几个文本 token 片段和其之前的所有音频 token。

在图 A-E 中,我们展示了每当引入新文本 token 和音频 token 时,注意力掩码是如何一步一步变化的。通过控制文本和音频 token 之间的片段注意力掩码,我们使得音频能以流式方式生成和播放。

  1. (文本和音频生成的开始)图 B 中,大语言模型主干生成 speech embedding 和前 n 个文本 token(此处 n=2)。然后,我们将 <Text BOS>(1 个位置)、speech embedding(1个位置)和文本 token(n个位置)输入到语音解码器中(总共输入了 2+n 个位置),基于此,模型可以生成最多 m 个音频 token(此处 m=4),但仅关注前 2+n 个位置以及所有之前的音频 token 位置。
  2. (步骤 1 的重复)图 C 中,大语言模型生成下一段 n 个文本 token。我们将这些新文本 token 输入到语音解码器中。然后,解码器生成下一段 m 个音频 token。
  3. (文本生成结束)图 D 中,大语言模型完成所有文本 token 的生成,产生了最后的 k 个文本 token(k<=n,此处 k=2)。剩余的 k 个文本 token 被输入到语音解码器中。然后,语音解码器生成下一个m个音频 token。
  4. (音频生成结束)图 E 中,语音解码器继续生成音频 token,直到生成 <Audio EOS> token。

这里的 N、n 和 m 是超参数。在实际应用中,我们使用 N=300、n=10、m=50,以实现性能与推理速度之间的平衡。

流式视觉理解

我们将视频流表示为以 1 帧每秒(1 fps)的帧序列。我们每秒钟从输入的视觉流中采样一帧,并使用自适应高分辨率编码策略对其进行编码,然后将编码后的特征输入给大语言模型主干。

为了在效率和性能之间取得平衡,我们设计了一种简单的混合分辨率策略。具体而言,我们只对用户请求结束时的最后一帧进行高分辨率编码(例如 1344 x 896),而其他帧则使用中等分辨率(例如 448 x 448)。

全模态时分复用

为了实现对不同模态的时间对齐的流式理解,我们提出了一种全模态时分复用机制。如整体框架图所示,我们首先使用共享的时间线对齐来自多个模态的信息流。受到通信领域时分复用技术的启发,我们将每个模态的流分成小块(每秒一块),并将同一秒块内的所有模态信息聚集成一个紧凑的序列单元。大语言模型则按时间顺序处理这些多模态序列单元。

需要注意的是,MiniCPM-o 2.6 可以独立于用户提问持续感知多模态输入流,这与现有的多模态流式模型只在用户提问期间获取单帧或少数几帧图像信息是不同的。通过这种方式,MiniCPM-o 2.6 能够处理需要时序记忆和推理的任务(例如,“球在哪个杯子里?”、“我刚才擦掉了哪些字?”)并原生支持多轮流式对话。

延迟分析

我们提供了纯音频模式下首次响应延迟的具体拆解分析。首次响应延迟指从用户请求结束到模型语音开始播放的延迟。作为参考,GPT-4o 在纯语音模式下的初始响应延迟约为 1.8 秒。MiniCPM-o 2.6 在iPad Pro(M4 芯片)上的初始响应延迟分解如下表所示:

多模态系统提示词

社区在使用文本提示词方面已经积累了丰富的经验,一个好的系统提示可以定义模型的角色、增强其准确性、优化细节表现和令模型聚焦重点。

生成语音回复的端到端全模态模型则面临新的挑战。模型输出的音频特征——如声音、语调、口音和其他细微特征至关重要,但无法仅通过文本传达。为了应对这一挑战,我们提出了多模态系统提示词的概念,允许用户通过声学特征控制模型的声音使其与用户意图相符

具体来说,多模态系统提示词包括传统的文本系统提示词和用于确定模型声音的音频部分。这一设计使得用户在推理时可以灵活配置声音。用户可以通过提供一段语音样例作为音频系统提示,来完成端到端的声音克隆;还可以通过将音频系统提示留空,基于语言描述要求模型创建一种新声音(例如 “请使用低沉有磁性的声音和我说话”)。

模型训练

MiniCPM-o 2.6 采用多阶段训练以逐步学习新模态的知识,从而避免模态冲突并将各种模态能力整合到一个模型中。整体的训练阶段可以分为预训练、指令微调和偏好对齐阶段。

预训练

我们首先分别对视觉和音频进行预训练以学习每种模态,然后进行全模态预训练以对齐这些模态。

视觉预训练。 我们利用大规模图像-文本对来对齐视觉和语言模块。在此阶段,我们仅更新视觉编码模块,让模型具备基本的图像理解和 OCR 能力。然后,我们在图文交替数据上训练视觉编码器和大语言模型,使模型具备多图理解和多模态上下文学习能力。

音频预训练。 我们使用音频-文本对数据来训练连接部分的权重,以实现音频模态和主干的对齐。为了学习丰富的细粒度语音知识,我们在自然语音数据上进行大规模端到端的预训练,然后根据用户指令对模型进行对齐。

全模态预训练。 在这一阶段,我们结合来自大规模网络视频的视频和音频流,使用 OTDM 机制使模型能够从不同模态中获取和对齐丰富的知识。

全模态指令微调

该阶段使用高质量的多模态数据进行监督微调,包括视觉问答、语音理解、语音生成和多模态流式视频(带音频)理解数据。我们对模型进行全参数微调以统一模型的视觉能力、语音理解和生成能力,以及流式多模态能力,同时增强模型的指令遵循能力。

偏好对齐

最后,MiniCPM-o 2.6 采用 RLAIF-V 技术以进一步提高模型的可信度和综合能力。在这个阶段,模型使用分而治之的策略对不同的回复进行评分以构建偏好数据集,并进行直接偏好优化训练(DPO)。同时,我们还特别将相比图像幻觉更常见的视频幻觉比例降低了63%。我们也使用了 MMPR 等开源偏好数据集来多样化训练数据。

评测

我们充分评估了 MiniCPM-o 2.6 的视觉理解、语音对话和多模态流式交互能力。实验结果表明,该模型在视觉、语音和多模态流式交互能力上的整体表现与 GPT-4o-202405 相当。

MiniCPM-o 2.6 的 iPad Pro 实机演示和 web demo 演示样例:

局限性

  1. 可能不稳定的语音输出。 多模态系统提示词使得更灵活的语音控制和许多有趣的功能成为可能,但也给语音输出的稳定性带来了更多挑战。传统的语音对话模型通过全参数记忆单一输出声音,与之相比,MiniCPM-o 2.6 需要从多模态系统提示词中提取和复制声音。受到该问题影响,语音生成结果可能会存在背景噪音和无意义声音等。
  2. 长语音生成。MiniCPM-o 2.6 原生支持最长 45 秒的单次语音生成,我们通过滑动窗口技术来支持生成更长的语音。模型训练与滑动窗口推理之间的差距可能导致长语音生成过程中的不稳定现象。
  3. 多模态流式交互能力。 作为一项实验性能力,模型的多模态流式交互能力在感知、理解和推理能力上仍然有限。我们期待社区的共同努力构建更优秀和可靠的性能效果。
  4. 网页 demo 高延迟。 用户在使用托管在海外服务器上的网页 demo 时可能会遇到异常的高延迟情况。我们建议在本地部署 demo(例如 4090 GPU 可以流畅运行)或使用合适的网络连接。

参考文献

  1. MiniCPM-V: A GPT-4V Level MLLM on Your Phone. 2024.
  2. RLHF-V: Towards Trustworthy MLLMs via Behavior Alignment from Fine-grained Correctional Human Feedback. CVPR 2024.
  3. RLAIF-V: Aligning MLLMs through Open-Source AI Feedback for Super GPT-4V Trustworthiness. 2024.
  4. LLaVA-UHD: an LMM Perceiving Any Aspect Ratio and High-Resolution Images. ECCV 2024.
  5. Large Multilingual Models Pivot Zero-Shot Multimodal Learning across Languages. ICLR 2024.

DeepSeek-V3 技术报告

原文:https://zhuanlan.zhihu.com/p/14890557782

DeepSeek-V3 是一款性能卓越的混合专家(MoE) 语言模型,整体参数规模达到 671B,其中每个 token 激活的参数量为 37B。评估结果表明,DeepSeek-V3 在性能上超越了其他开源模型,并能够与主流闭源模型相媲美。

引言

近年来,LLM 经历了快速迭代和演进,逐步缩小了与通用人工智能(AGI) 的差距。除了闭源模型外,开源模型阵营也在取得重大进展,包括 DeepSeek 系列、LLaMA 系列、Qwen 系列和 Mistral 系列,这些模型正在努力缩小与闭源模型的性能差距。

为了进一步突破开源模型的能力边界,研究团队开发了 DeepSeek-V3,这是一个基于 MoE 架构的大模型,总参数量达到 671B,其中每个 token 会激活 37B 个参数。

基于提升性能和降低成本的双重目标,在架构设计方面,DeepSeek-V3 采用了MLA来确保推理效率,并使用 DeepSeekMoE来实现经济高效的训练。这两种架构在 DeepSeek-V2 中已经得到验证,证实了它们能够在保持模型性能的同时实现高效的训练和推理。

除了延续这些基础架构外,研究团队还引入了两项创新策略来进一步提升模型性能。

首先,DeepSeek-V3 首创了无辅助损失的负载均衡策略,有效降低了负载均衡对模型性能的负面影响。另外,DeepSeek-V3 采用了多 token 预测训练目标,这种方法在评估基准测试中展现出了显著的性能提升。

为了提高训练效率,该研究采用了FP8 混合精度训练技术并对训练框架进行了全面优化。低精度训练作为一种高效的训练方案,其发展与硬件性能的提升密切相关。本研究首次在超大规模模型上成功验证了 FP8 混合精度训练框架的有效性。通过采用 FP8 计算和存储技术,显著提升了训练速度并降低了 GPU 内存占用。

在训练框架方面,研究团队开发的 DualPipe 算法实现了高效的流水线并行处理,减少了流水线停滞,并通过计算和通信并行处理的方式降低了训练过程中的通信开销。这种优化确保了即使在模型规模进一步扩大的情况下,只要维持适当的计算通信比例,就能在不同节点间实现细粒度专家分配,同时将全节点间的通信开销降至接近于零。

此外,研究团队优化了跨节点的全节点通信内核,充分利用了 InfiniBand(IB) 和 NVLink 的带宽性能。通过精细的内存优化,使得 DeepSeek-V3 的训练无需依赖成本高昂的张量并行技术

这些技术改进的综合运用实现了极高的训练效率。

预训练阶段,DeepSeek-V3 使用了 14.8T 高质量且多样化的 token 进行训练。整个预训练过程表现出了出人意料的稳定性,不仅没有出现不可恢复的损失突增,也未发生需要回滚的情况。

随后,模型进行了两个阶段的上下文长度扩展:第一阶段将最大上下文长度提升至 32K,第二阶段进一步扩展至 128K。

接着,研究团队对 DeepSeek-V3 基础模型进行了后训练,包括 SFT 和 RL,以增强模型对人类偏好的理解并进一步提升其性能。在后训练阶段,通过从 DeepSeek R1 系列模型中提取推理能力,同时精确控制模型的输出质量和长度比例。

DeepSeek-V3 在全面的基准测试评估中表现突出。尽管其训练成本较低,但综合评估结果显示,DeepSeek-V3-Base 已成为当前性能最强的开源基础模型,尤其在代码数学领域表现卓越。其对话版本不仅超越了其他开源模型,还在多个标准和开放式基准测试中展现出与领先闭源模型(如 GPT-4o 和 Claude-3.5-Sonnet)相匹敌的性能。

值得注意的是,DeepSeek-V3 实现了极具竞争力的训练成本(详见表1),这得益于在算法、框架和硬件层面的整体优化设计。

表 1:DeepSeek-V3 的训练成本,假设 H800 的租赁价格为$2/GPU小时

在预训练阶段,每处理1T token 仅需 180K H800 GPU 小时,即在配备 2048 个 H800 GPU 的集群上仅需 3.7 天。因此,整个预训练阶段在不到两个月内完成,总计使用了 2664K GPU 小时。

加上上下文长度扩展所需的 119K GPU 小时和后训练阶段的 5K GPU 小时,DeepSeek-V3 的完整训练总共消耗了 2.788M GPU 小时。按照每 GPU 小时 2 美元的 H800 GPU 租用价格计算,总训练成本仅为 557.6 万美元。需要说明的是,这些成本仅包含 DeepSeek-V3 的正式训练环节,不包括前期架构研究、算法验证和数据实验等相关支出。

本研究的主要创新点包括:

架构创新

在 DeepSeek-V2 高效架构的基础上,创新性地提出了无辅助损失的负载均衡策略,有效降低了负载均衡过程对模型性能的影响。

开发并验证了多 token 预测(MTP)训练目标,证实了其对模型性能的提升作用,该技术还可用于推测解码来加速推理过程。

高效预训练

开发了 FP8 混合精度训练框架,首次在超大规模模型上验证了 FP8 训练的可行性和效果。

通过算法、框架和硬件的综合优化,突破了跨节点 MoE 训练中的通信瓶颈,实现了计算与通信的高度重叠。这种优化大幅提升了训练效率,降低了训练成本,同时支持了更大规模模型的训练而无需额外开销。

仅用 2.664M H800 GPU 小时就完成了 DeepSeek-V3 在 14.8T token 上的预训练,打造出当前最强大的开源基础模型。预训练后的其他训练阶段仅需 0.1M GPU 小时。

后训练——DeepSeek-R1 知识蒸馏

该研究提出了一种创新的知识蒸馏方法,将思维链 (CoT) 模型(特别是 DeepSeek R1 系列)的推理能力转移到标准 LLM 中,尤其是 DeepSeek-V3。这一方法成功地将 R1 的验证和反思机制整合到 DeepSeek-V3 中,显著提升了其推理能力,同时有效控制了输出的风格和长度。

核心评估成果

知识领域评估:

  • • 在教育类基准测试中,DeepSeek-V3 的表现超越了所有开源模型,在 MMLU、MMLU-Pro 和 GPQA 测试中分别获得了 88.5、75.9 和 59.1 的优异成绩。这一性能水平已与领先闭源模型 GPT-4o 和 Claude-Sonnet-3.5 相当,显著缩小了开源与闭源模型的性能差距。
  • • 在事实性知识评测中,DeepSeek-V3 在 SimpleQA 和中文 SimpleQA 测试中都展现出领先于其他开源模型的优势。特别值得注意的是,虽然其英语事实知识(SimpleQA)略逊于 GPT-4o 和 Claude-Sonnet-3.5,但在中文事实知识(中文 SimpleQA)方面却超越了这些模型,凸显了其在中文知识领域的特殊优势

技术能力评估:

  • • 在数学领域,DeepSeek-V3 在所有非 CoT 模型(包括开源和闭源)中取得了最优性能。值得注意的是,在 MATH-500 等特定测试中,其表现甚至超越了 GPT-4o,充分展示了其出色的数学推理能力。
  • • 在编程领域,DeepSeek-V3 在 LiveCodeBench 等编程竞赛基准测试中表现最为突出,确立了其在该领域的领先地位。在软件工程相关任务中,尽管略低于 Claude-Sonnet-3.5,但仍大幅领先于其他模型,展示了其在各类技术评测中的综合实力。

架构

DeepSeek-V3 的基本架构具有两个核心特征:

1.采用 MLA 实现高效推理

2.使用 DeepSeekMoE 实现经济高效的训练。

此外,该研究还开发了MTP训练目标,这一创新在评估基准测试中展现出显著的性能提升。

在其他未特别说明的架构细节方面,DeepSeek-V3 延续了 DeepSeek-V2 的设计方案。

基本架构

DeepSeek-V3 的基础架构建立在 Transformer 框架之上。为实现高效推理和降低训练成本,该模型采用了经 DeepSeek-V2 验证的 MLA 和 DeepSeekMoE 技术。相比 DeepSeek-V2,本研究在 DeepSeekMoE 中创新性地引入了无辅助损失负载均衡策略,有效降低了负载均衡过程对模型性能的影响。

图2展示了 DeepSeek-V3 的基本架构,本节将简要介绍 MLA 和 DeepSeekMoE 的技术细节。

图2:DeepSeek-V3 基本架构示意图。基于 DeepSeek-V2,团队采用了多头潜在注意力(MLA)和 DeepSeekMoE 架构,以实现高效推理和经济的训练。

多头潜在注意力机制

DeepSeek-V3 在注意力机制方面采用了 MLA 架构。设向量维度为d,注意力头数为𝑛,每个头的维度为 𝑑,在特定注意力层中第t个 token 的注意力输入表示为 h𝑡 ∈ Rd 。MLA 的核心创新在于对注意力键和值进行低秩联合压缩,以降低推理过程中的键值(KV)缓存开销:

其中:

  • ctKV∈Rdc 表示键和值的压缩潜在向量
  • dc(≪dhnh) 表示 KV 压缩维度
  • WDKV∈Rdc×d 为维度下投影变换矩阵
  • WUK,WUV∈Rdhnh×dc 分别为键和值的维度上投影变换矩阵
  • WKR∈RdhR×d 用于生成携带旋转位置编码(Rotary Positional Embedding, RoPE)的解耦键
  • RoPE(·)表示旋转位置编码矩阵的应用操作
  • [·;·]表示向量连接操作

在 MLA 中,生成过程仅需缓存高亮标记的向量ctKVktR,这种设计显著降低了 KV 缓存空间,同时保持了与标准MHA相当的性能水平。

对于注意力查询(Query)部分,模型同样采用低秩压缩技术,这种设计有效降低了训练过程中的激活值内存占用:

其中:

  • ctQ∈Rd′c 表示查询的压缩潜在向量
  • d′c(≪dhnh) 表示查询压缩维度
  • WDQ∈Rd′c×d 和 WUQ∈Rdhnh×d′c 分别为查询的维度降维和升维变换矩阵
  • WQR∈RdRhnh×d′c 用于生成携带旋转位置编码的解耦查询矩阵

最终,通过组合注意力查询(qt,i )、键 (kj,i)和值( vCj,i ),得到注意力机制的最终输出 Ut

其中𝑊𝑂 ∈ R𝑑×𝑑𝑛为输出维度变换矩阵。

DeepSeekMoE 及其无辅助损失负载均衡机制

DeepSeekMoE的基础架构:在前馈网络(Feed-Forward Networks, FFN) 部分,DeepSeek-V3 采用了 DeepSeekMoE 架构。相比传统的 MoE 架构(如 GShard),DeepSeekMoE 采用了更细粒度的专家分配机制,并创新性地将部分专家设置为共享专家。假设第 t个 token 的 FFN 输入为ut,其输出h′t的计算过程如下:

其中:

  •  Ns和 Nr 分别表示共享专家和路由专家的数量
  • FFNi(s) 和 FFNi(r)(·) 分别代表第 i 个共享专家和路由专家的处理函数
  • Kr 表示被激活的路由专家数量
  • , 代表第 i 个专家的权重系数
  • si,t 表示 token 与专家间的相关度
  • ei 代表第 i 个路由专家的特征向量
  • Topk(·,K) 函数返回第 t 个 token 与所有路由专家计算得到的相关度分数中最高的 K 个值。

无辅助损失负载均衡:对于 MoE 模型,不平衡的专家负载将导致路由崩溃,并在专家并行场景中降低计算效率。传统解决方案通常依赖辅助损失来避免不平衡负载。然而,过大的辅助损失会损害模型性能。为了在负载平衡和模型性能之间实现更好的权衡,研究团队开创了一种无辅助损失负载均衡策略来确保负载平衡。

具体而言,研究团队为每个专家引入了一个偏置项bi,并将其添加到相应的亲和度分数si,t中以确定 top-K 路由:

在这种设计中,偏置项仅用于路由选择,而门控值(用于与 FFN 输出相乘)仍基于原始相关度分数 si,t 计算。训练过程中,系统会实时监控每个训练步骤中所有批次的专家负载分布。在每个步骤结束时,对于负载过高的专家,其偏置项会减少 γ ;对于负载不足的专家,其偏置项会增加 γ ,其中 γ 是控制偏置更新速率的超参数。

通过这种动态调整机制,DeepSeek-V3 在训练过程中实现了专家负载的均衡分布,其性能优于传统仅依靠辅助损失来实现负载均衡的模型。

序列级辅助损失补充机制: 虽然 DeepSeek-V3 主要采用无辅助损失策略来实现负载均衡,但为了防止单个序列中出现显著的负载不均衡现象,模型还引入了补充性的序列级平衡损失:

其中平衡因子 α 是一个超参数,在 DeepSeek-V3 中被设置为极小值; 1(·) 表示指示函数; T 代表序列中的 token 总数。这种序列级平衡损失机制有助于保持单个序列内专家负载的均衡性。

节点约束路由机制: 类似于 DeepSeek-V2 的设备限制路由策略,DeepSeek-V3 采用了受控路由机制来优化训练过程中的通信开销。具体而言,系统限制每个 token 最多只能分配给 M 个计算节点,这些节点的选择基于每个节点上专家的最高 Kr/M 相关度分数总和。

在这种约束下,MoE 训练框架能够实现计算与通信的近乎完全并行处理

完整的 Token 保留机制: 得益于高效的负载均衡策略,DeepSeek-V3 在整个训练过程中都保持着良好的负载平衡状态。因此,训练过程中不存在 token 丢弃现象。同时,通过特定的推理部署策略,DeepSeek-V3 在推理阶段同样实现了完整的 token 保留。

多 token 预测机制 (Multi-Token Prediction, MTP)

DeepSeek-V3 创新性地采用了 MTP 目标,将预测范围扩展到每个位置的多个后续 token

这种设计具有双重优势:

首先,MTP 目标通过增加训练信号的密度可能提高数据利用效率;其次,它使模型能够提前规划表征,从而更准确地预测后续 token。

如图3所示,该实现方案与先前研究的方法有所不同:前者使用独立输出头并行预测 D 个额外 token,而 DeepSeek-V3 采用顺序预测方式,并在每个预测层级保持完整的因果关系链。

图3:MTP实现示意图。V3在每个深度上保持每个 token 预测过程中的完整因果依赖链。

MTP 模块架构: 具体实现中,模型采用 D 个串联模块来预测 D 个额外的 token。每个 MTP 模块(第k个)包含以下组件:

  • 共享向量层 Emb(·)
  • 共享输出头 OutHead(·)
  • Transformer 处理单元 TRM(·)
  • 维度映射矩阵 Mk∈Rd×2d

对于输入序列中的第 i 个 token ti ,在第 k 层预测时,模型首先将两个向量进行组合:该 token 在第 (k−1) 层的特征表示 hik−1∈Rd 和第 (i+k) 个 token 的向量 Emb(ti+k)∈Rd ,通过线性变换进行融合:

其中[·;·]表示向量拼接操作。需要特别说明的是,在 k=1 时,hik−1 代表主模型输出的特征表示。值得注意的是,每个 MTP 模块都与主模型共享同一个向量层。经过组合的特征向量 hi′k 随后输入到第 k 层的 Transformer 处理单元,生成该层的输出特征表示 hik :

其中 T 代表输入序列的长度, i:j 表示包含两端的切片操作。接着,系统将hik输入到共享输出层,计算第 k 个预测 token 的概率分布 Pi+1+kk∈RV (V 为词表大小):

输出层 OutHead(·) 首先通过线性变换将特征表示转换为 logits,然后使用 Softmax(·) 函数计算第 k 个预测 token 的概率分布。与向量层类似,每个 MTP 模块的输出层也与主模型共享。这种保持预测因果链的设计思路与 EAGLE 相近,但两者目标不同:EAGLE 主要用于推测解码,而本研究中的 MTP 主要用于优化训练效果。

MTP 训练目标优化: 系统为每个预测层级计算交叉熵损失 LMTPk :

其中,T 表示输入序列长度,ti 代表第 i 个位置的目标 token,ik[ti] 表示第 k 个 MTP 模块对 ti 的预测概率。最终,通过计算所有层级 MTP 损失的平均值并乘以权重系数 λ ,得到总体 MTP 损失 LMTP ,作为 DeepSeek-V3 的补充训练目标:

推理阶段的MTP:应用 MTP 机制的主要目的是提升基础模型的性能,因此在实际推理阶段可以不使用 MTP 模块,基础模型能够独立完成正常推理。此外,这些 MTP 模块也可以被重新配置用于推测解码,从而降低模型生成的时间延迟。

基础设施

计算集群架构

DeepSeek-V3 的训练环境是一个配备 2048 个 NVIDIA H800 GPU 的大规模计算集群。

该集群中的每个计算节点包含 8 个 GPU,这些 GPU 通过节点内的 NVLink 和 NVSwitch 实现高速互连。节点之间则采用 InfiniBand (IB) 技术进行高效通信。

训练框架设计

模型训练基于自主研发的 HAI-LLM 框架,这是一个经过优化的高效轻量级训练系统。DeepSeek-V3 的并行策略包含三个层面:16 路流水线并行(Pipeline Parallelism, PP)、跨 8 个节点的 64 路专家并行(Expert Parallelism, EP),以及 ZeRO-1 数据并行(Data Parallelism, DP)

为实现高效训练,该框架进行了多方面的工程优化:

  1. 开发了 DualPipe 流水线并行算法,相比现有 PP 方法,该算法显著减少了流水线停滞现象。更重要的是,它实现了前向和后向过程中计算与通信阶段的重叠,有效解决了跨节点专家并行带来的通信负载问题。
  2. 优化了跨节点全对全通信内核,充分利用 IB 和 NVLink 带宽,同时减少了通信所需的流式多处理器(SMs)资源占用。
  3. 通过精细的内存管理优化,使得模型训练无需依赖开销较大的张量并行(Tensor Parallelism, TP)技术。

DualPipe 技术与计算通信协同优化

在 DeepSeek-V3 中,跨节点专家并行机制引入了显著的通信开销,导致计算与通信比例接近1:1,影响了训练效率。

为解决这一问题,模型采用了创新性的 DualPipe 流水线并行算法。该算法通过两个关键优化实现性能提升:有效融合前向和后向计算的通信阶段,同时减少流水线阻塞。

DualPipe 的核心创新在于实现了单个前向和后向计算块内的计算通信重叠。具体来说,每个计算块被划分为四个功能模块:

  • 注意力机制
  • 全节点数据分发
  • MLP 处理
  • 全节点数据整合

特别地,在后向计算块中,注意力和 MLP 模块都被进一步细分为输入梯度计算权重梯度计算两个部分,这一设计借鉴了 ZeroBubble 的思路。此外,还包含专门的 PP 通信模块。

图4:个体前向和后向块的重叠策略(Transformer 块的边界未对齐)。橙色表示前向计算,绿色表示“输入的后向计算”,蓝色表示“权重的后向计算”,紫色表示 PP 通信,红色表示屏障。全对全(all-to-all)通信和 PP 通信可以完全隐藏。

如图4所示,通过优化排列这些功能模块,并精确调控用于通信和计算的 GPU 流处理器资源分配比例,系统能够在运行过程中有效隐藏全节点通信和 PP 通信开销。

完整的 DualPipe 调度机制如图5所示。它采用创新的双向流水线调度策略,实现了从流水线两端同时输入微批次数据,使得大部分通信过程能够与计算过程完全重叠。这种设计确保了即使在模型规模进一步扩大的情况下,只要维持适当的计算通信比例,就能在节点间实现细粒度的专家分配,同时将全节点通信开销降至接近于零。

图5:8 个 PP 排位和 20 个微批次在两个方向上的双管道调度示例。反向方向的微批次与前向方向的微批次对称,因此为简化说明,省略了反向微批次的批次 ID。两个由共享黑色边框围住的单元存在相互重叠的计算和通信。

值得注意的是,即使在通信负载相对较轻的常规应用场景中,DualPipe 仍然展现出显著的效率优势。表2对比了不同 PP 方法在流水线阻塞和内存使用方面的表现。

数据显示,相比 ZB1P 和 1F1B,DualPipe 大幅减少了流水线阻塞,而峰值活性内存仅增加了 1/PP 。虽然 DualPipe 需要维护两份模型参数副本,但由于训练过程采用了大规模 EP,这一冗余并未导致显著的内存开销增加。

与 Chimera 相比,DualPipe 的实现要求更为灵活,仅需要流水线阶段数和微批次数能被 2 整除,而不要求微批次数必须能被流水线阶段数整除。

此外,DualPipe 的一个重要特性是,随着微批次数量的增加,其流水线阻塞和激活内存占用都不会相应增加

跨节点all-to-all通信的高效实现

为了确保 DualPipe 具有充足的计算性能,系统采用了定制化的高效跨节点全对全通信内核(包括分发和组合功能),以节省用于通信的 SMs 数量。

这些内核的实现与 MoE 门控算法和集群的网络拓扑结构进行了协同设计。具体而言,在该集群中,跨节点 GPU 通过 IB 实现全连接,节点内通信则通过 NVLink 处理。NVLink 提供 160GB/s 的带宽,约为 IB(50GB/s)的 3.2 倍。为了有效利用 IB 和 NVLink 的不同带宽特性,系统限制每个 token 最多分发到 4 个节点,从而减少 IB 流量。对于每个 token,当确定其路由决策后,首先通过 IB 传输到目标节点上具有相同节点内索引的 GPU。一旦到达目标节点,系统确保其通过 NVLink 即时转发到承载目标专家的特定 GPU,避免被后续到达的 token 阻塞。

通过这种方式,IB 和 NVLink 的通信实现完全重叠,每个 token 能够在不产生 NVLink 额外开销的情况下,在每个节点上平均高效选择 3.2 个专家。这意味着,虽然 DeepSeek-V3 实际只选择 8 个路由专家,但它可以将这个数字扩展到最多 13 个专家(4 个节点 × 3.2 个专家/节点),同时保持相同的通信成本

总体而言,在这种通信策略下,仅需 20 个 SMs 就足以充分利用 IB 和 NVLink 的带宽。具体而言,系统采用了线程专门化技术,将 20 个 SMs 划分为 10 个通信信道。

在分发过程中,(1)IB 发送、(2) IB 到 NVLink 转发和(3) NVLink 接收由各自的线程组处理。分配给每个通信任务的线程组数量根据所有 SMs 的实际工作负载动态调整。

类似地,在组合过程中,(1) NVLink 发送、(2) NVLink 到 IB 转发和累积,以及(3) IB 接收和累积也由动态调整的线程组处理。此外,分发和组合内核与计算流重叠,因此还考虑了它们对其他 SM 计算内核的影响。具体而言,系统采用了定制的 PTX 指令自动调整通信块大小,这显著降低了 L2 缓存的使用和对其他 SMs 的干扰。

极致的内存节省与最小开销

为了减少训练期间的内存占用,系统采用了以下技术:

RMSNorm 和 MLA 上投影的重计算。在反向传播期间重新计算所有 RMSNorm 操作和 MLA 上投影,从而避免了持久存储其输出激活的需求。这种策略虽带来少量开销,但显著减少了存储激活所需的内存。

CPU 中的指数移动平均(EMA)。在训练期间,系统在 CPU 内存中保留模型参数的EMA,用于学习率衰减后对模型性能的早期估计。EMA 参数存储在 CPU 内存中,并在每个训练步骤后异步更新。这种方法使维护 EMA 参数不会产生额外的内存或时间开销。

MTP的共享向量和输出头。采用 DualPipe 策略,将模型的最浅层(包括向量层)和最深层(包括输出头)部署在相同的PP等级上。这种安排使 MTP 模块和主模型之间能够物理共享参数和梯度,实现共享向量和输出头。这种物理共享机制进一步提高了内存使用效率。

FP8 训练

基于低精度训练领域的最新进展,本研究开发了一种细粒度混合精度框架,采用 FP8 数据格式训练 DeepSeek-V3。

尽管低精度训练技术展现出巨大潜力,但其实际应用常受到激活值、权重和梯度中异常值的制约。虽然推理量化技术取得重要突破,但在大规模语言模型预训练中成功应用低精度技术的案例仍然有限。

为了应对这一挑战并有效扩展 FP8 格式的动态范围,本研究采用了细粒度量化策略:

采用 1×Nc 元素的条状分组或Nc×Nc元素的块状分组。

通过提高精度累积过程,大幅降低了反量化带来的计算开销,这对实现高精度 FP8 通用矩阵乘法(GEMM)至关重要。此外,为降低 MoE 训练中的内存和通信开销,系统采用 FP8 格式进行激活值的缓存和分发,同时使用 BF16 格式存储低精度优化器状态。

该框架在与 DeepSeek-V2-Lite 和 DeepSeek-V2 规模相近的两个模型上进行了验证,训练数据量约为 1T token(详见原文附录B.1)。结果表明,与 BF16 基准相比,FP8 训练模型的相对损失误差始终保持在 0.25% 以下,这完全在训练随机性的可接受范围内。

混合精度框架

本研究在已有低精度训练技术的基础上,设计了专门的 FP8 训练混合精度框架。在这一框架中,大部分计算密集型操作采用 FP8 执行,而关键操作则保持原有数据格式,以实现训练效率和数值稳定性的最优平衡。

整体框架结构如图6所示。

图6:带有 FP8 数据格式的整体混合精度框架。为清晰起见,仅展示了线性算子。

首先,为提高模型训练速度,大部分核心计算操作(尤其是 GEMM 运算),均采用 FP8 精度实现。这些 GEMM 运算接收 FP8 格式的张量输入,输出 BF16 或 FP32 格式的结果。如图6所示,线性运算相关的三个 GEMM 操作,包括 Fprop(前向传播)Dgrad(激活值反向传播)和 Wgrad(权重反向传播),均采用 FP8 执行。这种设计策略理论上将计算速度提升至原有 BF16 方法的两倍。同时,FP8 格式的 Wgrad GEMM 使得激活值能够以 FP8 格式存储用于反向传播,显著降低了内存使用量

虽然 FP8 格式在效率方面具有优势,但某些运算由于对计算精度较为敏感,仍需要更高精度的支持。另外,部分计算开销较小的运算可以采用更高精度而不会显著影响整体训练效率。

因此,经过详细评估,系统对以下模块保持原有精度(BF16 或 FP32):向量层输出层MoE 门控模块标准化运算注意力运算模块。这种针对性的高精度保留策略确保了 DeepSeek-V3 训练过程的动态稳定性。为进一步保障数值计算的稳定性,主要权重参数、权重梯度和优化器状态均采用更高精度存储。虽然这些高精度组件会带来一定的内存开销,但通过在分布式训练系统中跨多个 DP 层级进行高效数据分割,这些额外开销得到了有效控制。

量化和乘法精度优化

基于混合精度 FP8 框架,研究团队开发了多种策略来提升低精度训练的准确性,主要从量化方法和乘法计算两个方面进行优化。

细粒度量化技术: 在低精度训练框架中,由于 FP8 格式的指数位较少导致其动态范围受限,经常出现数值溢出和下溢的问题。传统方法是将输入张量的最大绝对值映射到 FP8 格式的最大可表示值,将输入分布对齐到可表示范围内。然而,这种方法使得低精度训练对激活值中的极端值特别敏感,可能导致量化精度显著下降。

为解决这一问题,该研究提出了一种更细粒度的量化方法。如图7(a)所示,该方法采用两种不同的分组策略:

  1. 激活值采用 1×128 条状分组和缩放(每个 token 的每 128 个通道)
  2. 权重采用 128×128 块状分组和缩放(每 128 个输入通道对应 128 个输出通道)
图7(a): 研究提出了一种细粒度量化方法,用于减轻由特征异常值引起的量化误差;为简化说明,仅展示了前向传播(Fprop)。(b): 配合量化策略,团队通过以间隔 NC = 128 元素的 MMA 提升到 CUDA 核心,从而提高 FP8 GEMM 的精度,以进行高精度累加。

这种方法通过在更小范围内调整缩放因子,显著提高了量化过程对极端值的适应能力。原文附录B.2 中详细分析了在块状基础上对激活值进行分组和缩放时可能出现的训练不稳定现象。

该方法的一项重要创新是在 GEMM 操作的内部维度引入组级缩放因子。虽然标准 FP8 GEMM 不直接支持这一功能,但通过与精确 FP32 累积策略的结合,实现了高效的执行。值得注意的是,这种细粒度量化策略与微缩放格式的理念高度契合,而 NVIDIA 新一代 GPU(Blackwell 系列)的 Tensor Cores 已宣布将支持更细粒度的微缩放格式。这一设计为适配最新 GPU 架构的未来研究提供了重要参考。

累积精度优化: 低精度 GEMM 运算常见的下溢问题主要通过高精度累积来解决,通常采用 FP32 精度。然而,在 NVIDIA H800 GPU 上,FP8 GEMM 的累积精度仅能保持约 14 位有效数字,远低于 FP32 的累积精度。这个问题在内部维度 K 较大时尤为显著,这正是大规模模型训练中的常见情况,因为批量规模和模型宽度都有所增加。例如,在 K=4096 的两个随机矩阵 GEMM 运算测试中,Tensor Cores 的有限累积精度导致最大相对误差接近 2%。尽管存在这些问题,部分 FP8 框架仍将有限累积精度作为默认选项,这严重制约了训练精度的提升。

为解决这一问题,系统采用了 CUDA Cores 提升策略来获得更高的计算精度。如图7(b)所示,在 Tensor Cores 执行 MMA(矩阵乘法累加)时,中间结果先使用有限位宽累加。当达到 NC 间隔时,这些部分结果会转移到 CUDA Cores 的 FP32 寄存器中进行全精度累加。结合细粒度量化在内部维度 K 上的组级缩放因子,系统能够在 CUDA Cores 上高效完成反量化过程,仅带来极少的额外计算开销。

这种设计虽然降低了单个线程组的 WGMMA 指令发出率,但在 H800 架构上通过并发执行两个 WGMMA 得到了优化:一个线程组执行提升操作的同时,另一个可以执行 MMA 操作。这种重叠执行机制保证了 Tensor Cores 的高效利用。实验证明,将 NC 设为 128 个元素(即 4 个 WGMMA)是在不引入显著开销的前提下,能够有效提升精度的最小累积间隔。

在数值表示方面,不同于先前工作采用的混合 FP8 格式(Fprop 使用 E4M3,Dgrad 和 Wgrad 使用 E5M2),本研究在所有张量计算中统一采用 E4M3 格式以提高精度。这种设计的可行性源于细粒度量化策略(平铺和块状缩放),通过在较小元素组内共享指数位来有效缓解有限动态范围的影响。

为确保量化精度并简化框架设计,系统采用在线量化方法,而不是像其他张量级量化框架那样使用基于历史记录的延迟量化。系统对每个1×128激活平铺或 128×128 权重块实时计算最大绝对值,据此确定缩放因子并完成 FP8 格式的在线量化。

低精度存储与通信优化

在 FP8 训练框架的基础上,通过将缓存的激活值和优化器状态转换为更低精度格式,系统进一步优化了内存占用和通信开销。

优化器状态的精度优化: 系统在 AdamW 优化器中使用 BF16 代替 FP32 格式来记录一阶和二阶动量,这种改变并未带来明显的性能损失。同时,为确保训练过程的数值稳定性,主要权重参数(优化器存储)和梯度值(用于批量累积)仍保持 FP32 格式。

激活值精度优化: 如图6所示,Wgrad 运算采用 FP8 执行。为降低内存占用,系统在线性运算的反向传播中使用 FP8 格式缓存激活值。但在实现低成本高精度训练时,以下运算需要特殊处理:

  1. 注意力层后的线性层输入:这些激活值同时用于注意力运算的反向传播,因此对精度特别敏感。系统为这些激活值专门设计了 E5M6 数据格式。在反向传播时,这些激活值的量化模式从 1×128 转换为 128×1 。为避免引入额外的量化误差,所有缩放因子都采用 2 的整数次幂。
  2. MoE 中 SwiGLU 运算的输入:为优化内存使用,系统仅缓存 SwiGLU 运算的输入,在反向传播时重新计算输出。这些激活值采用 FP8 格式存储,并通过细粒度量化方法实现内存效率和计算精度的最优平衡。

低精度通信优化: 通信带宽限制是 MoE 模型训练中的主要性能瓶颈。为解决这一问题,系统在执行 MoE 上投影前将激活值转换为 FP8 格式,再进行数据分发,这种方式与 MoE 上投影中的 FP8 前向传播保持兼容。与注意力层后的线性层输入处理方式相同,这里的激活值缩放因子也采用 2 的整数次幂。同样的处理方式也应用于 MoE 下投影前的激活值梯度计算。考虑到训练精度的重要性,前向和反向传播中的组合运算环节都保持 BF16 格式,以确保训练管道关键环节的计算精度。

推理和部署

DeepSeek-V3 部署在 H800 集群上,集群中每个节点内的 GPU 通过 NVLink 互连,集群内所有 GPU 通过 IB 实现全连接。为同时确保在线服务质量(SLO)和高吞吐量,该系统采用了将预填充和解码阶段分离的部署策略。

预填充

预填充阶段的最小部署单元配置为 4 个节点 32 个 GPU。

注意力机制部分采用 4 路张量并行(TP4)配合序列并行(SP),结合 8 路数据并行(DP8)。较小的 TP 规模有效控制了通信开销。

MoE 部分采用 32 路专家并行(EP32),确保每个专家能处理足够规模的批量数据,提升计算效率。MoE 的全节点通信采用与训练阶段相同的方式:先通过 IB 在节点间传输 token,再通过 NVLink 在节点内 GPU 间传递。特别地,浅层的密集 MLP 采用单路张量并行以降低 TP 通信开销。

为实现 MoE 部分各专家间的负载平衡,系统需要确保每个 GPU 处理相近数量的 token。为此,采用了冗余专家部署策略,对高负载专家进行复制和冗余部署。

系统基于在线部署时收集的统计数据识别高负载专家,并定期调整(如每 10 分钟)。确定冗余专家后,基于负载观测数据在节点内 GPU 间重新分配专家,在不增加跨节点通信开销的前提下,尽可能实现 GPU 间的负载均衡。

DeepSeek-V3 在预填充阶段配置了 32 个冗余专家,每个 GPU 除原有的 8 个专家外,还分配一个额外的冗余专家。此外,为提升吞吐量并降低全对全和 TP 通信开销,系统同时处理两个计算负载相近的微批次,将一个批次的注意力和 MoE 计算与另一个批次的数据分发和聚合重叠。

目前正在探索专家动态冗余机制,使每个 GPU 分配更多专家(如 16 个),但每次推理仅激活其中 9 个。在每层全对全操作开始前,系统实时计算全局最优路由方案。由于预填充阶段本身计算量较大,计算路由方案的额外开销几乎可以忽略。

解码

在解码阶段,系统将共享专家作为一种路由专家处理。这意味着每个 token 在路由时会选择 9 个专家,其中共享专家被视为一个必然选择的高负载专家。

解码阶段的最小部署单元由 40 个节点 320 个 GPU 构成。注意力部分采用 TP4 配合 SP,结合 DP80,而 MoE 部分使用 EP320。MoE 部分,每个 GPU 仅分配一个专家,其中 64 个 GPU 专门负责冗余专家和共享专家。分发和聚合环节的全节点通信通过 IB 直接点对点传输实现低延迟。同时,系统引入 IBGDA 技术进一步降低延迟并提升通信效率。

与预填充阶段类似,系统基于在线服务的专家负载统计数据,定期确定冗余专家配置。由于每个 GPU 仅分配一个专家,无需进行专家重新分配。系统也在研究解码阶段的动态冗余策略,但这需要对全局最优路由方案的计算算法进行更细致的优化,并与分发内核进行融合以减少开销。

此外,为提升吞吐量并降低全节点通信开销,系统正在探索在解码阶段同时处理两个计算负载相近的微批次。与预填充不同的是,在解码阶段注意力机制占用更多时间,因此系统将一个批次的注意力计算与另一个批次的分发、MoE 处理和数据聚合进行重叠。

在解码阶段,每个专家处理的批量规模相对较小(通常不超过 256 个 token),系统瓶颈在于内存访问而非计算能力。由于 MoE 部分只需加载单个专家的参数,内存访问开销较小,因此即使分配较少的 SMs 也不会显著影响整体性能。基于这一特点,系统只需分配少量 SMs 用于分发、MoE 处理和数据聚合,避免影响注意力部分的计算速度。

硬件设计建议

基于全对全通信和 FP8 训练方案的实践经验,研究团队对 AI 硬件厂商提出以下芯片设计建议。

通信硬件 DeepSeek-V3 通过实现计算与通信的并行处理,在计算过程中有效隐藏了通信延迟。这种设计相比串行计算和通信方式,显著降低了对通信带宽的要求。然而,目前的通信实现需要占用大量宝贵的 SMs 资源(如在 H800 GPU 的 132 个 SMs 中占用 20 个),这限制了计算吞吐能力。

另外,将 SMs 用于通信导致张量核心资源的严重浪费。目前,SMs 在全对全通信中主要承担以下任务:

  • 在 IB 和 NVLink 网络间转发数据,同时汇聚来自单个 GPU 发往同一节点内多个 GPU 的 IB 数据流。
  • 在 RDMA 缓冲区(注册的 GPU 内存区域)与输入/输出缓冲区间传输数据。
  • 执行全对全组合的归约运算。
  • 在跨 IB 和 NVLink 网络向多个专家传输分块数据时管理细粒度内存布局。

期望未来硬件厂商能开发专门的硬件,将这些通信任务从计算核心 SM 中分离出来,设计成类似 NVIDIA SHARP 的 GPU 协处理器或网络协处理器。同时,为降低应用开发难度,希望这种硬件能从计算单元的角度统一管理 IB(横向扩展)和 NVLink(纵向扩展)网络。通过这种统一接口,计算单元只需提交简单的通信请求,就能在整个 IB-NVLink 统一网络中轻松实现读取、写入、多播和归约等操作。

计算硬件

张量核心中的 FP8 GEMM 累积精度提升: 当前 NVIDIA Hopper 架构的张量核心在实现 FP8 GEMM 时采用定点累积方式,通过基于最大指数的右移操作对尾数积进行对齐后再相加。实验显示,该设计在符号填充右移后仅使用每个尾数积的最高 14 位,并舍弃超出范围的位。然而,例如要从 32 个 FP8 × FP8 乘法的累积中获得精确的 FP32 结果,至少需要 34 位精度。因此,建议未来芯片设计提高张量核心的累积精度以支持全精度累积,或根据具体训练和推理算法的精度需求选择合适的累积位宽,以在保证计算效率的同时将误差控制在可接受范围内。

支持平铺和块状量化:现有 GPU 仅支持整体张量量化,缺乏对平铺和块状等细粒度量化的硬件支持。当前实现中,达到NC间隔时需要将部分结果从张量核心复制到 CUDA 核心,进行缩放因子乘法运算,再添加到 CUDA 核心的 FP32 寄存器中。虽然结合精确 FP32 累积策略显著降低了反量化开销,但张量核心和 CUDA 核心间频繁的数据移动仍然制约了计算效率。因此,建议未来芯片支持细粒度量化,使张量核心能够直接接收缩放因子并实现组级缩放的 MMA 操作。这样可以直接在张量核心内完成全部的部分和累积与反量化计算,直到生成最终结果,避免频繁的数据迁移。

支持在线量化:尽管研究证实了在线量化的有效性,但当前硬件难以有效支持这一技术。现有流程中需要从 HBM 读取 128 个 BF16 激活值(上一步的计算结果)进行量化,将量化后的 FP8 值写回 HBM,然后再次读取用于 MMA 操作。为解决这一低效问题,建议未来芯片将 FP8 格式转换与 TMA 访问集成为单一融合操作,实现在激活值从全局内存传输到共享内存过程中完成量化,避免频繁的内存读写。同时建议支持线程束级格式转换指令以提升性能,促进层标准化与 FP8 转换的更好融合。另一种方案是采用近内存计算方法,将计算逻辑放置在 HBM 附近,使 BF16 元素在从 HBM 读入 GPU 时直接转换为 FP8,从而将片外内存访问减少约 50%。

支持转置GEMM操作: 现有架构难以实现矩阵转置与 GEMM 操作的有效融合。目前的工作流中,前向传播阶段的激活值需要先量化为 1×128 FP8 平铺格式并存储。在反向传播时,系统必须读取矩阵,执行反量化,进行转置操作,再重新量化为 128×1 平铺格式,最后存入 HBM。为优化内存操作效率,建议未来芯片设计中,对训练和推理中常用的精度格式,支持在 MMA 操作前直接从共享内存进行转置读取。这一改进配合 FP8 格式转换和 TMA 访问的融合机制,将大幅优化量化处理流程。

预训练

数据构建

相比 DeepSeek-V2,本次预训练语料库在提升数学编程样本占比的同时,扩大了英语和中文之外的多语言覆盖范围。

数据处理流程也经过改进,在保持语料多样性的同时降低了数据冗余。系统采用文档打包方法维持数据完整性,但训练过程中不使用跨样本注意力掩码。最终训练语料库包含 14.8T 经 tokenizer 处理的高质量多样化 token。

在 DeepSeekCoder-V2 的训练中发现,填充中间(FIM)策略在保持下一个 token 预测能力的同时,还能让模型基于上下文准确预测中间文本。因此 DeepSeek-V3 的预训练也采用了这一策略。具体实现上,使用前缀-后缀-中间(PSM)框架构建如下数据结构:

<|fim_begin|> pre<|fim_hole|> suf<|fim_end|> middle<|eos_token|>。

该结构在预打包阶段应用于文档级别,FIM 策略的应用比率为 0.1,与 PSM 框架保持一致。

DeepSeek-V3 采用词表大小为 128K 的字节级 BPE tokenizer 。为提高多语言压缩效率,对预分词器和训练数据进行了相应调整。与 DeepSeek-V2 相比,新的预分词器引入了标点符号和换行符的组合 token。然而这种设计在处理无终端换行符的多行提示词时可能产生 token 边界偏差,尤其是在少样本评估场景。为此,训练时对一定比例的组合 token 进行随机分割,使模型接触更多特殊情况来减轻这种偏差。

超参数设置

模型架构参数

系统采用 61 层 Transformer 结构,隐藏维度为 7168。所有可学习参数采用标准差 0.006 的随机初始化。

在 MLA 结构中,注意力头数量 nh 设为 128,每个头的维度 dh 为 128。KV 压缩维度 dc 为 512,查询压缩维度 d′c 为 1536。解耦的查询和键部分,每个头的维度 dhR 设为 64。

除前三层外,所有 FFN 层都替换为 MoE 层,每个 MoE 层配置 1 个共享专家和 256 个路由专家,专家的中间隐藏维度为 2048。

在路由专家中,每个 token 激活 8 个专家,且最多分配到 4 个节点。多 token 预测深度 D 设为 1,即每个 token 除预测下一个精确 token 外,还需预测一个额外 token。

与 DeepSeek-V2 类似,DeepSeek-V3 在压缩潜在向量后添加了 RMSNorm 层,并在宽度瓶颈处引入额外缩放因子。在此配置下,模型总参数量达到 671B,其中每个 token 激活 37B 参数

训练参数

模型采用 AdamW 优化器,参数设置为: β1=0.9 , β2=0.95 ,权重衰减为 0.1。预训练阶段最大序列长度为 4K,在 14.8T token 上进行训练。

学习率调度采用以下策略:首先在前 2K 步内从 0 线性增加至 2.2×10−4 ;保持该学习率直至处理完 10T 训练 token;随后在 4.3T token 区间内按余弦衰减曲线降至 2.2×10−5 。在最后 500B token 的训练中,先用 2.2×10−5 的固定学习率训练 333B token,再以 7.3×10−6 的学习率完成剩余 167B token。

梯度裁剪范数设为 1.0。批量大小采用动态调整策略,在前 469B token 训练过程中从 3072 逐步增加至 15360,此后保持不变。模型采用流水线并行将不同层分配到不同 GPU,每层的路由专家均匀分布在 8 个节点的 64 个 GPU 上。节点限制路由中,每个 token 最多分配至 4 个节点( M=4 )。

在无辅助损失负载均衡方面,前 14.3T token 的偏置更新速度 γ 设为 0.001,剩余 500B token 设为 0。平衡损失参数 α 设为 0.0001,仅用于防止单个序列内出现极端不平衡。MTP 损失权重 λ 在前 10T token 中为 0.3,剩余 4.8T token 中降至 0.1。

长上下文扩展

DeepSeek-V3 采用与 DeepSeek-V2 相似的方法实现长上下文处理能力。预训练完成后,系统使用 YaRN 进行上下文扩展,通过两个各包含 1000 步的额外训练阶段,将上下文窗口从 4K 依次扩展至 32K 和 128K。系统沿用了 DeepSeek-V2 的 YaRN 配置,仅将其应用于解耦的共享键 ktR 。两个阶段采用相同的超参数设置:尺度 s=40 , α=1 , β=32 ,缩放因子 0.1lns+1 。

第一阶段将序列长度设为 32K,批量大小为 1920。第二阶段将序列长度提升至 128K,相应地将批量大小调整为 480。两个阶段均采用与预训练末期相同的学习率 7.3×10−6 。

经过这两阶段的扩展训练,DeepSeek-V3 成功实现了对最长 128K 输入序列的高效处理。如图8所示,在完成监督微调后,模型在“大海捞针”(NIAH)测试中表现出色,在整个 128K 的上下文范围内均保持稳定的性能表现。

图 8:在 NIAH 中的评估结果显示,DeepSeek-V3 在所有上下文窗口长度(最长可达 128K)上均表现优异。

评估

评估基准

DeepSeek-V3 基座模型在以英语和中文为主的多语言语料库上完成预训练,因此评估工作主要针对英语、中文及多语言基准。

评估采用集成于 HAI-LLM 框架的内部评估系统,涵盖以下类别(下划线表示中文基准,双下划线表示多语言基准):

  • 多学科选择题评估:MMLU、MMLU Redux、MMLU-Pro、MMMLU、C-Eval 和 CMMLU
  • 语言理解与推理能力:HellaSwag、PIQA、ARC 和 BigBench Hard (BBH)
  • 知识问答评估:TriviaQA 和 NaturalQuestions
  • 阅读理解测试:RACE、DROP、C3 和 CMRC
  • 指代消歧任务:CLUEWSC 和 WinoGrande
  • 语言建模评估:Pile 中文理解与文化认知:CCPM
  • 数学能力测试:GSM8K、MATH、MGSM 和 CMath
  • 编程能力评估:HumanEval、LiveCodeBench-Base(0801-1101)、MBPP 和 CRUXEval
  • 综合能力测试:AGIEval(包含英语和中文两个子集)

作为前期工作的延续,评估采用多种方法:部分数据集使用困惑度指标,包括 HellaSwag、PIQA、WinoGrande 等;部分采用生成式评估,如 TriviaQA、NaturalQuestions、DROP 等。对 Pile-test 采用语言建模评估方法,使用每字节比特数(BPB)作为统一度量标准,确保不同分词器模型间的公平比较。

评估结果

表3展示了 DeepSeek-V3 基座模型与主流开源基座模型的性能对比,包括 DeepSeek-V2-Base、Qwen2.5-72B- Base  LLaMA-3.1-405B-Base。所有模型均使用统一的内部评估框架和评估标准。需要说明的是,由于近几个月评估框架的更新,DeepSeek-V2-Base 的部分性能指标与此前报告略有差异。

表3:DeepSeek-V3-Base 与其他具有代表性的开源基础模型的性能对比。所有模型均在内部评估框架下进行了测试,并采用了统一的评估设置。得分差距在 0.3 以内的模型被视为表现相当。评估结果表明,DeepSeek-V3-Base 在大多数基准测试中表现出色,尤其是在数学和代码任务上表现尤为突出。

综合评估显示,DeepSeek-V3-Base 全面超越 DeepSeek-V2-Base 和 Qwen2.5-72B-Base,并在绝大多数基准测试中领先 LLaMA-3.1-405B-Base,成为当前性能最强的开源基座模型

具体性能对比如下:

  1. 相比 DeepSeek-V2-Base:通过模型架构优化、规模扩展和数据质量提升,DeepSeek-V3-Base 实现了显著性能提升。
  2. 相比 Qwen2.5-72B-Base:尽管仅使用一半的激活参数,DeepSeek-V3-Base 在英语、多语言、代码和数学领域均展现出明显优势。在中文评测中,除 CMMLU 外的其他测试也优于 Qwen-2.5-72B。
  3. 相比 LLaMA-3.1-405B-Base:即便对方拥有 11 倍的激活参数量,DeepSeek-V3-Base 在多语言、代码和数学领域仍表现更优。在英语和中文语言能力评测中表现相当或更佳,特别是在 BBH、MMLU 系列、DROP、C-Eval、CMMLU 和 CCPM 等测试中表现突出。

得益于高效的架构设计和全面的工程优化,DeepSeek-V3 实现了极高的训练效率。在现有训练框架和基础设施下,每处理1T token 仅需 180K H800 GPU 小时,远低于 72B 或 405B 密集模型的训练成本。

讨论

MTP策略的效果分析

表4显示了 MTP 策略的详细分析结果。

表 4:MTP 策略的消融实验结果表明,该策略在大多数评估基准测试中均能显著提升模型性能。

研究分别在两种规模的基准模型上验证了该策略的效果。小规模实验采用了总参数量为 15.7B 的基线 MoE 模型,使用 1.33T token 进行训练;大规模实验则采用总参数量为 228.7B 的基线 MoE 模型,使用 540B token 训练。在保持训练数据和其他架构不变的情况下,为基准模型增加深度为 1 的 MTP 模块进行对比实验。值得注意的是,由于在推理阶段会移除 MTP 模块,因此比较模型的推理开销完全相同。

结果表明,MTP 策略在绝大多数评估指标上都带来了持续的性能提升。

无辅助损失平衡策略的效果分析

表5展示了无辅助损失平衡策略的分析结果。

表5:无辅助损失负载均衡策略的消融实验结果显示,与完全基于辅助损失的方法相比,无辅助损失策略在大多数评估基准测试中表现出更优的模型性能。

研究同样在两种规模的基线模型上进行了验证。小规模模型总参数量为 15.7B,使用 1.33T token 训练;大规模模型总参数量为 228.7B,使用 578B token 训练。这两个基准模型都采用纯辅助损失来实现负载平衡,使用带有 top-K 相关度归一化的 sigmoid 门控函数,其辅助损失强度的超参数分别与 DeepSeek-V2-Lite 和 DeepSeek-V2 保持一致。

研究在保持其他条件不变的情况下,移除所有辅助损失并引入无辅助损失平衡策略进行对比。结果显示,无辅助损失策略在大多数评估指标上都实现了更好的性能表现。

批次级与序列级负载平衡对比

无辅助损失平衡与序列级辅助损失的核心区别在于平衡范围:前者是批次级,后者是序列级。

批次级平衡提供了更灵活的约束条件,不要求每个序列内部实现领域平衡,这种灵活性使专家能够更好地适应不同领域的特点。为验证这一观点,研究分别记录和分析了一个 16B 的基于辅助损失模型和一个 16B 的无辅助损失模型在 Pile 测试集各领域的专家负载情况。如图9所示,无辅助损失模型确实展现出更明显的专家专业化特征。

图9:Pile 测试集三个领域中,无辅助损失模型与基于辅助损失模型的专家负载分布对比。结果显示,无辅助损失模型展现出更强的专家特化能力。相对专家负载定义为实际专家负载与理论平衡负载的比值。由于篇幅限制,仅展示两个层的结果,完整数据可参见原文附录C。

为深入探究这种灵活性与性能提升之间的关联,研究还设计并验证了一种批次级辅助损失方法,该方法在训练批次而非序列层面实现负载平衡。实验表明,在达到相似的批次级负载平衡程度时,批次级辅助损失能够实现与无辅助损失方法相当的性能。

具体而言,在 1B MoE 模型上的验证损失分别为:序列级辅助损失 2.258,无辅助损失方法 2.253,批次级辅助损失 2.253。3B MoE 模型的实验也显示类似结果:序列级辅助损失模型的验证损失为 2.085,而无辅助损失方法和批次级辅助损失方法均达到 2.080。

尽管批次级负载平衡方法展现出稳定的性能优势,但在实际应用中仍面临两个效率挑战:

  1. 个别序列或小批量数据可能出现负载不均衡;
  2. 推理阶段可能因领域迁移导致负载失衡。

对于第一个挑战,通过采用大规模专家并行和数据并行的训练框架得到了有效解决,这确保了每个微批量都具有足够规模。对于第二个挑战,研究设计了带有冗余专家部署的高效推理框架来应对。

后训练

监督微调(SFT)

研究构建了包含 150 万个多领域实例的指令调优数据集,针对不同领域特点采用了相应的数据创建方法。

推理数据处理: 在数学、代码竞赛和逻辑谜题等推理类任务中,系统采用内部 DeepSeek-R1 模型生成数据。虽然 R1 生成的数据具有较高的准确性,但同时存在推理冗长、格式不规范和输出过长等问题。因此,研究的核心目标是在保持 R1 模型高准确性的同时,实现输出的清晰简洁。

具体实施方法如下:首先针对特定领域(如代码、数学或通用推理)开发专家模型,采用 SFT 和 RL 相结合的训练流程。该专家模型随后作为最终模型的数据生成器。

对每个训练实例,系统生成两类 SFT 样本:一类是问题与原始答案的直接配对,另一类则引入系统提示词,将其与问题和 R1 答案组合。系统提示经过优化设计,包含了引导模型生成具有自我反思和验证机制响应的指令。

在RL阶段,模型通过高温采样生成响应,即使在没有明确系统提示的情况下,也能有效融合 R1 生成数据和原始数据的特征。经过数百轮RL迭代,中间模型成功整合了 R1 的响应模式,显著提升了整体性能。随后,研究采用拒绝采样方法,利用专家模型作为数据源,为最终模型筛选高质量的 SFT 数据。这种方法既保持了 DeepSeek-R1 的高准确性,又确保了输出的简洁性和有效性。

非推理数据处理: 对于创意写作、角色扮演和基础问答等非推理任务,系统利用 DeepSeek-V2.5 生成响应,并通过人工标注确保数据质量。

SFT 训练配置: 研究对 DeepSeek-V3-Base 进行了两轮 SFT 数据集训练,采用余弦衰减的学习率调度策略,初始学习率为 5×10−6,逐步降低至 1×10−6。训练过程中采用多样本序列打包技术,同时通过样本掩码机制确保各样本间的独立性。

强化学习(RL)

奖励模型设计

在强化学习过程中,系统同时采用规则型模型型两种奖励模型(Reward Model, RM)

规则型奖励模型:对于可通过明确规则验证的任务,系统采用规则型奖励机制进行反馈评估。例如,在处理具有确定性答案的数学问题时,要求模型在特定格式(如方框内)给出最终答案,从而可以通过规则进行自动验证。同样,在处理 LeetCode 编程题时,系统可通过编译器执行测试用例生成客观反馈。这种基于规则的验证方法具有较高的可靠性,能有效防止模型的投机行为。

模型型奖励模型:对于具有标准答案但形式灵活的问题,系统使用奖励模型评估输出与标准答案的匹配程度。而对于创意写作等缺乏标准答案的任务,奖励模型则基于问题和回答的整体性给出评估反馈。该奖励模型基于 DeepSeek-V3 的 SFT checkpoint 进行训练。为增强模型可靠性,系统构建的偏好数据不仅包含最终评分,还包含推导评分的完整推理过程,这种设计有效降低了特定任务中的奖励扭曲风险。

群组相对策略优化(Group Relative Policy Optimization, GRPO)

系统采用与 DeepSeek-V2 相似的GRPO方法。这种方法不需要与策略模型规模相当的评论家模型,而是通过群组评分估计基线。具体实现中,对每个问题 q ,GRPO 从原策略模型 πθold 采样一组输出{o1,o2,···,oG} ,并通过最大化以下目标函数优化策略模型 πθ:

其中ε 和 β 表示超参数;πref 代表参考模型;Ai 表示优势函数,其计算基于每组内输出所对应的奖励序列 {r1,r2,…,rG}。

在RL过程中,系统融合了编程、数学、写作、角色扮演和问答等多领域的提示词任务。这种多样化的训练策略不仅提高了模型对人类偏好的适应性,还在基准测试中取得了显著提升,特别是在监督微调数据有限的场景下表现出色。

评估

评估方法设置

评估基准:除基础模型测试所用的基准外,系统还在下列基准上评估了指令调优模型的表现:IFEval、FRAMES 、LongBench v2、GPQA、SimpleQA、C SimpleQA、SWE-Bench Verified、Aider、LiveCodeBench(选取 2024 年 8-11 月题目)、Codeforces、2024 年中国高中数学奥林匹克(CNMO)和 2024 年美国数学邀请赛(AIME)。

基准模型对比:系统选取了多个代表性模型作为性能对照基准,包括 DeepSeek-V2-0506、DeepSeek-V2.5-0905、Qwen2.5 72B Instruct、LLaMA-3.1 405B Instruct、Claude-Sonnet-3.5-1022 和 GPT-4o-0513。其中 DeepSeek-V2 系列选取最具代表性的版本,闭源模型则通过其官方 API 进行评估。

评估具体配置:在标准基准评估中,MMLU、DROP、GPQA 和 SimpleQA 采用 simple-evals 框架的标准提示词模板。MMLU-Redux 的零样本测试采用 Zero-Eval 提示词格式。其他数据集则遵循原始评估方案,使用数据集开发者提供的默认提示词模板。

在代码和数学能力评估方面

  • HumanEval-Mul 数据集覆盖 Python、Java、Cpp、C#、JavaScript、TypeScript、PHP 和 Bash 共 8 种主流编程语言。
  • LiveCodeBench(使用 2024 年 8-11 月数据)的评估同时采用CoT和直接输出两种方式。
  • Codeforces 评估采用参赛者百分位数作为衡量标准。
  • SWE-Bench verified 采用无代理框架进行评估。
  • Aider 相关测试采用”diff”格式评估。

在数学能力测试中,AIME 和 CNMO 2024 使用采样温度 0.7,结果取 16 次运行的平均值,而 MATH-500 则采用贪婪解码策略。

所有评估中,模型的最大输出长度限制为 8192 个 token。

标准评估

表6的评估结果显示,DeepSeek-V3 在开源模型中表现最佳,且与 GPT-4o 和 Claude-3.5-Sonnet 等顶级闭源模型相比具有竞争力。

表 6 | DeepSeek-V3 与其他具有代表性的聊天模型的比较。所有模型均在限制输出长度为 8K 的配置下进行评估。包含少于 1000 个样本的基准测试会通过多次不同温度设置的测试来得出稳健的最终结果。DeepSeek-V3 是表现最佳的开源模型,同时在与前沿闭源模型的对比中也展现出强大的竞争力。

英语能力评估:在 MMLU(评估大语言模型多领域知识和任务能力的标准基准)中,DeepSeek-V3 与 LLaMA 3.1-405B、GPT-4o 和 Claude-Sonnet 3.5 等顶级模型表现相当,明显超越 Qwen2.5-72B。

在更具挑战性的 MMLU-Pro 教育知识评测中,DeepSeek-V3 的表现仅次于 Claude-Sonnet 3.5。

在经过标签修正的 MMLU-Redux 测试中,DeepSeek-V3 的表现领先其他模型。

在博士级评测 GPQA-Diamond 中,DeepSeek-V3 仅落后于 Claude 3.5 Sonnet,但大幅领先其他竞争模型。

在长文本理解方面,DeepSeek-V3 继续保持顶级水平。在 DROP 的少样本测试中达到 91.6 的 F1 分数,领先所有对比模型。在需要处理 10 万 token 上下文的 FRAMES 问答测试中,仅次于 GPT-4o 但显著优于其他模型,充分展示了其处理超长文本的能力。在最新发布的 LongBench v2 测试中的最优表现,进一步证实了这一能力。

在 SimpleQA 事实性知识测试中,DeepSeek-V3 虽然落后于 GPT-4o 和 Claude-Sonnet,但这主要源于其资源分配策略——更多训练资源用于中文知识学习,因此在 C-SimpleQA 中表现优异。在指令遵循能力评估中,相比前代 DeepSeek-V2 系列有显著提升,特别是在理解和执行特定格式要求方面。

代码与数学能力评估:在编程领域,DeepSeek-V3 的评估涵盖工程实践(SWE-Bench-Verified)算法编程(HumanEval、LiveCodeBench)两个维度。

在工程类任务中,虽然未能超越 Claude-Sonnet-3.5-1022,但明显优于其他开源模型。作为开源模型,DeepSeek-V3 的强大能力将推动软件工程和算法开发领域的创新,帮助开发者和研究人员拓展开源模型在编程领域的应用边界。

在算法编程任务上,借助先进的知识蒸馏技术,DeepSeek-V3 在 HumanEval-Mul 和 LiveCodeBench 等测试中超越所有基线模型。

在数学能力测试中,DeepSeek-V3 为非 o1 类模型树立了新标准。在 AIME、MATH-500 和 CNMO 2024 等具有挑战性的测试中,其得分比第二名 Qwen2.5 72B 高出约 10 个百分点,这种显著优势充分验证了 DeepSeek-R1 知识蒸馏技术的有效性。

中文能力评估:在中英双语支持方面,Qwen 和 DeepSeek 是两个代表性的模型系列。

在中文 SimpleQA 事实性知识测试中,尽管 Qwen2.5 的训练数据量更大(18T token,超出 DeepSeek-V3 的 14.8T token 约 20%),DeepSeek-V3 仍领先 16.4 个百分点。

在 C-Eval(中文教育知识评估) CLUEWSC(中文指代消歧挑战)等测试中,两个模型表现相当,表明它们在中文推理和教育任务方面都达到了较高水平。

开放式评估

除标准基准测试外,系统还采用 LLM 作为评估者对模型的开放式生成能力进行评估,结果见表7。

表 7:英文开放式对话评估。在 AlpacaEval 2.0 中,V3使用“长度控制胜率”作为核心评估指标,以衡量模型在对话生成中的表现。

评估严格遵循 AlpacaEval 2.0 和 Arena-Hard 的标准规范,使用 GPT-4-Turbo-1106 进行配对评估。

在 Arena-Hard 测试中,DeepSeek-V3 相对于 GPT-4-0314 基准取得了 86% 以上的优胜率,与 Claude-Sonnet-3.5-1022 等顶级模型表现相当,充分展示了其在处理复杂任务(包括编程和调试)方面的卓越能力。作为首个在 Arena-Hard 测试中突破 85% 的开源模型,DeepSeek-V3 显著缩小了与闭源模型的差距,为开源模型在高难度任务领域树立了新标准。

在 AlpacaEval 2.0 评测中,DeepSeek-V3 同样表现出色,超越了所有参评的开源和闭源模型,展示了其在写作和问答方面的优秀能力。特别是相比 DeepSeek-V2.5-0905 提升了 20%,证明了模型在基础任务处理能力上的显著进步。

生成式奖励模型性能

研究将 DeepSeek-V3 的评判能力与领先模型 GPT-4o 和 Claude-3.5 进行对比。如表8所示,在 RewardBench 评测中,DeepSeek-V3 达到了 GPT-4o-0806 和 Claude-3.5-Sonnet-1022 最优版本的水平,并超越了其他版本。

表 8:GPT-4o、Claude-3.5-sonnet 和 DeepSeek-V3 在 RewardBench 基准测试中的性能对比。

通过引入投票机制,DeepSeek-V3 的评判能力得到进一步提升。基于此,系统采用 DeepSeek-V3 配合投票机制对开放式问题进行评估反馈,有效提高了模型对齐过程的可靠性和稳定性。

讨论

DeepSeek-R1 知识蒸馏分析

研究基于 DeepSeek-V2.5 模型评估了 DeepSeek-R1 知识蒸馏的效果。对比实验中,基准模型使用短链式思维数据训练,而对照组使用专家检查点生成的数据。

表9的结果显示,蒸馏数据在 LiveCodeBench 和 MATH-500 基准测试中都带来了明显提升。

表9:DeepSeek-R1 蒸馏对模型性能的贡献分析。在 LiveCodeBench 和 MATH-500 基准测试中的评估设置与表6相同,旨在确保结果的可比性。

研究发现了一个重要的平衡点:知识蒸馏能提高性能,但同时会显著增加输出长度。为此,DeepSeek-V3 在蒸馏过程中采用了经过优化的参数配置,以平衡模型准确性和计算效率。

研究表明,从推理模型进行知识蒸馏是提升模型后期性能的有效方法。当前研究虽然主要关注数学和编程领域的知识蒸馏,但这种方法在其他领域也展现出广阔前景。其在特定领域的成功表明,长链式思维蒸馏技术有望提升模型在其他需要复杂推理的认知任务中的表现。未来研究将继续探索该方法在不同领域的应用。

自我奖励机制

奖励机制是强化学习中的核心要素,决定着优化方向。在编程或数学等可通过外部工具直接验证的领域,强化学习展现出显著效果。但在更一般场景中,直接通过规则编码构建反馈机制并不可行。因此,在开发 DeepSeek-V3 时,针对这类广泛场景,采用了宪制 AI 方法,使用模型自身的投票评估结果作为反馈。这种方法在对齐效果上取得显著成效,大幅提升了模型在主观评估中的表现。

通过引入额外的宪制规则,DeepSeek-V3 能够向预期方向优化。研究认为,将补充信息与语言模型结合作为反馈来源的范式具有重要意义。大语言模型能够将各类场景中的非结构化信息转化为有效奖励信号,促进模型的持续优化。除自我奖励外,研究团队也在探索其他通用且可扩展的奖励方法,以持续提升模型在通用场景中的能力。

MTP性能

DeepSeek-V3 通过 MTP 技术实现同时预测两个 token,结合推测解码框架显著提升了解码效率。关键问题是第二个预测 token 的可用性,评估显示在不同生成任务中,第二个 token 的接受率稳定保持在 85%-90%,表现出较高的可靠性。

这种高接受率使 DeepSeek-V3 的解码速度提升至原来的 1.8 倍(以每秒生成 token 数衡量)。

结论、局限性和未来发展方向

本研究介绍了 DeepSeek-V3 大规模混合专家语言模型,该模型总参数量达到 671B,每次处理激活 37B 参数,训练数据规模达 14.8T token。

模型在延续 MLA 和 DeepSeekMoE 架构优势的基础上,创新性地提出了无辅助损失负载均衡策略,并引入多 token 预测训练目标以提升性能。

通过采用 FP8 训练技术和精细的工程优化,模型实现了高效的训练过程。在后训练阶段,成功将 DeepSeek-R1 系列模型的推理能力迁移至新模型。

综合评估显示,DeepSeek-V3 不仅成为当前性能最强的开源模型,还达到了与 GPT-4o 和 Claude-3.5-Sonnet 等顶级闭源模型相当的水平。同时,模型维持了极具竞争力的训练成本,完整训练过程(包括预训练、上下文长度扩展和后训练)仅需 2.788M H800 GPU 小时。

尽管模型在性能和训练效率上表现出色,但仍存在一些局限性,特别是在部署方面:首先,为保证推理效率,模型的最小部署单元规模较大,可能超出小型团队的资源能力;其次,虽然当前部署方案使模型的端到端生成速度比上一代提升了两倍以上,但仍有优化空间。这些局限性有望随着硬件技术的进步得到自然解决。

秉持长期发展理念,DeepSeek 将继续坚持开源路线,稳步推进通用人工智能的研究。未来研究将重点关注以下方向:

  • 持续优化模型架构,提升训练和推理效率,探索支持无限上下文长度的高效方案。同时突破 Transformer 架构的固有局限,拓展模型的建模能力边界。
  • 深化训练数据的质量提升和规模扩展,探索新的训练信号来源,实现数据在多个维度的全面扩展。
  • 加强模型的深层推理能力,通过扩展推理的广度和深度,提升模型的智能水平和问题解决能力。
  • 建立更全面的多维度评估体系,避免过度优化特定基准测试集而产生的能力误判,确保模型评估的科学性和全面性。

混合专家模型 (MoE)

随着 Mixtral 8x7B (announcementmodel card) 的推出,一种称为混合专家模型 (Mixed Expert Models,简称 MoEs) 的 Transformer 模型在开源人工智能社区引起了广泛关注。

混合专家模型 (MoEs):

  • 与稠密模型相比, 预训练速度更快
  • 与具有相同参数数量的模型相比,具有更快的 推理速度
  • 需要 大量显存,因为所有专家系统都需要加载到内存中
  • 在 微调方面存在诸多挑战,但 近期的研究 表明,对混合专家模型进行 指令调优具有很大的潜力

什么是混合专家模型?

模型规模是提升模型性能的关键因素之一。在有限的计算资源预算下,用更少的训练步数训练一个更大的模型,往往比用更多的步数训练一个较小的模型效果更佳。

混合专家模型 (MoE) 的一个显著优势是它们能够在远少于稠密模型所需的计算资源下进行有效的预训练。这意味着在相同的计算预算条件下,您可以显著扩大模型或数据集的规模。特别是在预训练阶段,与稠密模型相比,混合专家模型通常能够更快地达到相同的质量水平。

那么,究竟什么是一个混合专家模型 (MoE) 呢?作为一种基于 Transformer 架构的模型,混合专家模型主要由两个关键部分组成:

  • 稀疏 MoE 层: 这些层代替了传统 Transformer 模型中的前馈网络 (FFN) 层MoE 层包含若干“专家”(例如 8 个),每个专家本身是一个独立的神经网络。在实际应用中,这些专家通常是前馈网络 (FFN),但它们也可以是更复杂的网络结构,甚至可以是 MoE 层本身,从而形成层级式的 MoE 结构。
  • 门控网络或路由: 这个部分用于决定哪些令牌 (token) 被发送到哪个专家。例如,在下图中,“More”这个令牌可能被发送到第二个专家,而“Parameters”这个令牌被发送到第一个专家。有时,一个令牌甚至可以被发送到多个专家。令牌的路由方式是 MoE 使用中的一个关键点,因为路由器由学习的参数组成,并且与网络的其他部分一同进行预训练。
[Switch Transformers paper](https://arxiv.org/abs/2101.03961) 论文中的 MoE layer

总结来说,在混合专家模型 (MoE) 中,将传统 Transformer 模型中的每个前馈网络 (FFN) 层替换为 MoE 层,其中 MoE 层由两个核心部分组成: 一个门控网络和若干数量的专家。

尽管混合专家模型 (MoE) 提供了若干显著优势,例如更高效的预训练和与稠密模型相比更快的推理速度,但它们也伴随着一些挑战:

  • 训练挑战: 虽然 MoE 能够实现更高效的计算预训练,但它们在微调阶段往往面临泛化能力不足的问题,长期以来易于引发过拟合现象。
  • 推理挑战: MoE 模型虽然可能拥有大量参数,但在推理过程中只使用其中的一部分,这使得它们的推理速度快于具有相同数量参数的稠密模型。然而,这种模型需要将所有参数加载到内存中,因此对内存的需求非常高。以 Mixtral 8x7B 这样的 MoE 为例,需要足够的 VRAM 来容纳一个 47B 参数的稠密模型。之所以是 47B 而不是 8 x 7B = 56B,是因为在 MoE 模型中,只有 FFN 层被视为独立的专家,而模型的其他参数是共享的。此外,假设每个令牌只使用两个专家,那么推理速度 (以 FLOPs 计算) 类似于使用 12B 模型 (而不是 14B 模型),因为虽然它进行了 2x7B 的矩阵乘法计算,但某些层是共享的。

混合专家模型简史

混合专家模型 (MoE) 的理念起源于 1991 年的论文 Adaptive Mixture of Local Experts。这个概念与集成学习方法相似,旨在为由多个单独网络组成的系统建立一个监管机制。在这种系统中,每个网络 (被称为“专家”) 处理训练样本的不同子集,专注于输入空间的特定区域。那么,如何选择哪个专家来处理特定的输入呢?这就是门控网络发挥作用的地方,它决定了分配给每个专家的权重。在训练过程中,这些专家和门控网络都同时接受训练,以优化它们的性能和决策能力。

在 2010 至 2015 年间,两个独立的研究领域为混合专家模型 (MoE) 的后续发展做出了显著贡献:

  1. 组件专家: 在传统的 MoE 设置中,整个系统由一个门控网络和多个专家组成。在支持向量机 (SVMs) 、高斯过程和其他方法的研究中,MoE 通常被视为整个模型的一部分。然而,Eigen、Ranzato 和 Ilya 的研究 探索了将 MoE 作为更深层网络的一个组件。这种方法允许将 MoE 嵌入到多层网络中的某一层,使得模型既大又高效。
  2. 条件计算: 传统的神经网络通过每一层处理所有输入数据。在这一时期,Yoshua Bengio 等研究人员开始探索基于输入令牌动态激活或停用网络组件的方法。

这些研究的融合促进了在自然语言处理 (NLP) 领域对混合专家模型的探索。特别是在 2017 年,Shazeer 等人 (团队包括 Geoffrey Hinton 和 Jeff Dean,后者有时被戏称为 “谷歌的 Chuck Norris”) 将这一概念应用于 137B 的 LSTM (当时被广泛应用于 NLP 的架构,由 Schmidhuber 提出)。通过引入稀疏性,这项工作在保持极高规模的同时实现了快速的推理速度。这项工作主要集中在翻译领域,但面临着如高通信成本和训练不稳定性等多种挑战。

混合专家模型 (MoE) 的引入使得训练具有数千亿甚至万亿参数的模型成为可能,如开源的 1.6 万亿参数的 Switch Transformers 等。这种技术不仅在自然语言处理 (NLP) 领域得到了广泛应用,也开始在计算机视觉领域进行探索。然而,本篇博客文章将主要聚焦于自然语言处理领域的应用和探讨。

什么是稀疏性?

稀疏性的概念采用了条件计算的思想。在传统的稠密模型中,所有的参数都会对所有输入数据进行处理。相比之下,稀疏性允许我们仅针对整个系统的某些特定部分执行计算。这意味着并非所有参数都会在处理每个输入时被激活或使用,而是根据输入的特定特征或需求,只有部分参数集合被调用和运行。

让我们深入分析 Shazeer 对混合专家模型 (MoE) 在翻译应用中的贡献。条件计算的概念 (即仅在每个样本的基础上激活网络的不同部分) 使得在不增加额外计算负担的情况下扩展模型规模成为可能。这一策略在每个 MoE 层中实现了数以千计甚至更多的专家的有效利用。

这种稀疏性设置确实带来了一些挑战。例如,在混合专家模型 (MoE) 中,尽管较大的批量大小通常有利于提高性能,但当数据通过激活的专家时,实际的批量大小可能会减少。比如,假设我们的输入批量包含 10 个令牌, 可能会有五个令牌被路由到同一个专家,而剩下的五个令牌分别被路由到不同的专家。这导致了批量大小的不均匀分配和资源利用效率不高的问题。在接下来的部分中,将会讨论 让 MoE 高效运行 的其他挑战以及相应的解决方案。

那我们应该如何解决这个问题呢?一个可学习的门控网络 (G) 决定将输入的哪一部分发送给哪些专家 (E):

在这种设置下,虽然所有专家都会对所有输入进行运算,但通过门控网络的输出进行加权乘法操作。但是,如果 G (门控网络的输出) 为 0 会发生什么呢?如果是这种情况,就没有必要计算相应的专家操作,因此我们可以节省计算资源。那么一个典型的门控函数是什么呢?一个典型的门控函数通常是一个带有 softmax 函数的简单的网络。这个网络将学习将输入发送给哪个专家。

Shazeer 等人的工作还探索了其他的门控机制,其中包括带噪声的 TopK 门控 (Noisy Top-K Gating)。这种门控方法引入了一些可调整的噪声,然后保留前 k 个值。具体来说:

  • 添加一些噪声
  • 选择保留前 K 个值
  • 应用 Softmax 函数

这种稀疏性引入了一些有趣的特性。通过使用较低的 k 值 (例如 1 或 2),我们可以比激活多个专家时更快地进行训练和推理。为什么不仅选择最顶尖的专家呢?最初的假设是,需要将输入路由到不止一个专家,以便门控学会如何进行有效的路由选择,因此至少需要选择两个专家。Switch Transformers 就这点进行了更多的研究。

我们为什么要添加噪声呢?这是为了专家间的负载均衡

混合专家模型中令牌的负载均衡

正如之前讨论的,如果所有的令牌都被发送到只有少数几个受欢迎的专家,那么训练效率将会降低。在通常的混合专家模型 (MoE) 训练中,门控网络往往倾向于主要激活相同的几个专家。这种情况可能会自我加强,因为受欢迎的专家训练得更快,因此它们更容易被选择。为了缓解这个问题,引入了一个 辅助损失,旨在鼓励给予所有专家相同的重要性。这个损失确保所有专家接收到大致相等数量的训练样本,从而平衡了专家之间的选择。接下来的部分还将探讨专家容量的概念,它引入了一个关于专家可以处理多少令牌的阈值。在 transformers 库中,可以通过 aux_loss 参数来控制辅助损失。

MoEs and Transformers

Transformer 类模型明确表明,增加参数数量可以提高性能,因此谷歌使用 GShard 尝试将 Transformer 模型的参数量扩展到超过 6000 亿并不令人惊讶。

GShard 将在编码器和解码器中的每个前馈网络 (FFN) 层中的替换为使用 Top-2 门控的混合专家模型 (MoE) 层。下图展示了编码器部分的结构。这种架构对于大规模计算非常有效: 当扩展到多个设备时,MoE 层在不同设备间共享,而其他所有层则在每个设备上复制。我们将在 “让 MoE 起飞” 部分对这一点进行更详细的讨论。

GShard 论文中的 MoE Transformer Encoder

为了保持负载平衡和训练效率,GShard 的作者除了引入了上一节中讨论的类似辅助损失外,还引入了一些关键变化:

  • 随机路由: 在 Top-2 设置中,我们始终选择排名最高的专家,但第二个专家是根据其权重比例随机选择的。
  • 专家容量: 我们可以设定一个阈值,定义一个专家能处理多少令牌。如果两个专家的容量都达到上限,令牌就会溢出,并通过残差连接传递到下一层,或在某些情况下被完全丢弃。专家容量是 MoE 中最重要的概念之一。为什么需要专家容量呢?因为所有张量的形状在编译时是静态确定的,我们无法提前知道多少令牌会分配给每个专家,因此需要一个固定的容量因子。

GShard 的工作对适用于 MoE 的并行计算模式也做出了重要贡献,但这些内容的讨论超出了这篇博客的范围。

注意: 在推理过程中,只有部分专家被激活。同时,有些计算过程是共享的,例如自注意力 (self-attention) 机制,它适用于所有令牌。这就解释了为什么我们可以使用相当于 12B 稠密模型的计算资源来运行一个包含 8 个专家的 47B 模型。如果我们采用 Top-2 门控,模型会使用高达 14B 的参数。但是,由于自注意力操作 (专家间共享) 的存在,实际上模型运行时使用的参数数量是 12B。

Switch Transformers

尽管混合专家模型 (MoE) 显示出了很大的潜力,但它们在训练和微调过程中存在稳定性问题。Switch Transformers 是一项非常激动人心的工作,它深入研究了这些话题。作者甚至在 Hugging Face 上发布了一个 1.6 万亿参数的 MoE,拥有 2048 个专家,你可以使用 transformers 库来运行它。Switch Transformers 实现了与 T5-XXL 相比 4 倍的预训练速度提升。

[Switch Transformers paper](https://arxiv.org/abs/2101.03961) 论文中的 MoE layer

就像在 GShard 中一样,作者用混合专家模型 (MoE) 层替换了前馈网络 (FFN) 层。Switch Transformers 提出了一个 Switch Transformer 层,它接收两个输入 (两个不同的令牌) 并拥有四个专家。

与最初使用至少两个专家的想法相反,Switch Transformers 采用了简化的单专家策略。这种方法的效果包括:

  • 减少门控网络 (路由) 计算负担
  • 每个专家的批量大小至少可以减半
  • 降低通信成本
  • 保持模型质量

Switch Transformers 也对 专家容量 这个概念进行了研究。

上述建议的容量是将批次中的令牌数量均匀分配到各个专家。如果我们使用大于 1 的容量因子,我们为令牌分配不完全平衡时提供了一个缓冲。增加容量因子会导致更高的设备间通信成本,因此这是一个需要考虑的权衡。特别值得注意的是,Switch Transformers 在低容量因子 (例如 1 至 1.25) 下表现出色。

Switch Transformer 的作者还重新审视并简化了前面章节中提到的负载均衡损失。在训练期间,对于每个 Switch 层的辅助损失被添加到总模型损失中。这种损失鼓励均匀路由,并可以使用超参数进行加权。

作者还尝试了混合精度的方法,例如用 bfloat16 精度训练专家,同时对其余计算使用全精度进行。较低的精度可以减少处理器间的通信成本、计算成本以及存储张量的内存。然而,在最初的实验中,当专家和门控网络都使用 bfloat16 精度训练时,出现了不稳定的训练现象。这种不稳定性特别是由路由计算引起的,因为路由涉及指数函数等操作,这些操作对精度要求较高。因此,为了保持计算的稳定性和精确性,保持更高的精度是重要的。为了减轻不稳定性,路由过程也使用了全精度。

这个 Jupyter Notebook 展示了如何对 Switch Transformers 进行微调以进行摘要生成的详细指南。然而,在开始微调 Switch Transformers 之前,强烈建议您先阅读关于 微调混合专家模型 部分的内容。

Switch Transformers 采用了编码器 – 解码器的架构,实现了与 T5 类似的混合专家模型 (MoE) 版本。GLaM 这篇工作探索了如何使用仅为原来 1/3 的计算资源 (因为 MoE 模型在训练时需要的计算量较少,从而能够显著降低碳足迹) 来训练与 GPT-3 质量相匹配的模型来提高这些模型的规模。作者专注于仅解码器 (decoder-only) 的模型以及少样本和单样本评估,而不是微调。他们使用了 Top-2 路由和更大的容量因子。此外,他们探讨了将容量因子作为一个动态度量,根据训练和评估期间所使用的计算量进行调整。

DeepSeek-MoE:共享专家

在 huggingface 上开源的模型包含164亿参数,共 64个路由专家、2个共享专家,每个令牌会匹配6个专家。(引用自 DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models, 模型 deepseek-ai/deepseek-moe-16b-base , 微调代码 github.com/deepseek-ai…)

DeepSeek-MoE 引入了“细粒度/垂类专家”和“共享专家”的概念。

细粒度/垂类专家” 是通过细粒度专家切分 (Fine-Grained Expert Segmentation) 将一个 FFN 切分成 m 份。尽管每个专家的参数量小了,但是能够提高专家的专业水平。

共享专家”是掌握更加泛化或公共知识的专家,从而减少每个细粒度专家中的知识冗余,共享专家的数量是固定的且总是处于被激活的状态。

用 Router z-loss 稳定模型训练

之前讨论的平衡损失可能会导致稳定性问题。我们可以使用许多方法来稳定稀疏模型的训练,但这可能会牺牲模型质量。例如,引入 dropout 可以提高稳定性,但会导致模型质量下降。另一方面,增加更多的乘法分量可以提高质量,但会降低模型稳定性。

ST-MoE 引入的 Router z-loss 在保持了模型性能的同时显著提升了训练的稳定性。这种损失机制通过惩罚门控网络输入的较大 logits 来起作用,目的是促使数值的绝对大小保持较小,这样可以有效减少计算中的舍入误差。这一点对于那些依赖指数函数进行计算的门控网络尤其重要。为了深入了解这一机制,建议参考原始论文以获得更全面的细节。

专家如何学习?

ST-MoE 的研究者们发现,编码器中不同的专家倾向于专注于特定类型的令牌或浅层概念。例如,某些专家可能专门处理标点符号,而其他专家则专注于专有名词等。与此相反,解码器中的专家通常具有较低的专业化程度。此外,研究者们还对这一模型进行了多语言训练。尽管人们可能会预期每个专家处理一种特定语言,但实际上并非如此。由于令牌路由和负载均衡的机制,没有任何专家被特定配置以专门处理某一特定语言。

专家的数量对预训练有何影响?

增加更多专家可以提升处理样本的效率和加速模型的运算速度,但这些优势随着专家数量的增加而递减 (尤其是当专家数量达到 256 或 512 之后更为明显)。同时,这也意味着在推理过程中,需要更多的显存来加载整个模型。值得注意的是,Switch Transformers 的研究表明,其在大规模模型中的特性在小规模模型下也同样适用,即便是每层仅包含 2、4 或 8 个专家。

微调混合专家模型

4.36.0 版本的 transformers 库支持 Mixtral 模型。你可以用以下命令进行安装: pip install "transformers==4.36.0 --upgrade

稠密模型和稀疏模型在过拟合的动态表现上存在显著差异。稀疏模型更易于出现过拟合现象,因此在处理这些模型时,尝试更强的内部正则化措施是有益的,比如使用更高比例的 dropout。例如,我们可以为稠密层设定一个较低的 dropout 率,而为稀疏层设置一个更高的 dropout 率,以此来优化模型性能。

在微调过程中是否使用辅助损失是一个需要决策的问题。ST-MoE 的作者尝试关闭辅助损失,发现即使高达 11% 的令牌被丢弃,模型的质量也没有显著受到影响。令牌丢弃可能是一种正则化形式,有助于防止过拟合。

Switch Transformers 的作者观察到,在相同的预训练困惑度下,稀疏模型在下游任务中的表现不如对应的稠密模型,特别是在重理解任务 (如 SuperGLUE) 上。另一方面,对于知识密集型任务 (如 TriviaQA),稀疏模型的表现异常出色。作者还观察到,在微调过程中,较少的专家的数量有助于改善性能。另一个关于泛化问题确认的发现是,模型在小型任务上表现较差,但在大型任务上表现良好。

一种可行的微调策略是尝试冻结所有非专家层的权重。实践中,这会导致性能大幅下降,但这符合我们的预期,因为混合专家模型 (MoE) 层占据了网络的主要部分。我们可以尝试相反的方法: 仅冻结 MoE 层的参数。实验结果显示,这种方法几乎与更新所有参数的效果相当。这种做法可以加速微调过程,并降低显存需求。

在微调稀疏混合专家模型 (MoE) 时需要考虑的最后一个问题是,它们有特别的微调超参数设置——例如,稀疏模型往往更适合使用较小的批量大小和较高的学习率,这样可以获得更好的训练效果。

此时,您可能会对人们微调 MoE 中遇到的这些挑战而感到沮丧,但最近的一篇论文 《MoEs Meets Instruction Tuning》 (2023 年 7 月) 带来了令人兴奋的发现。这篇论文进行了以下实验:

  • 单任务微调
  • 多任务指令微调
  • 多任务指令微调后接单任务微调

当研究者们对 MoE 和对应性能相当的 T5 模型进行微调时,他们发现 T5 的对应模型表现更为出色。然而,当研究者们对 Flan T5 (一种 T5 的指令优化版本) 的 MoE 版本进行微调时,MoE 的性能显著提升。更值得注意的是,Flan-MoE 相比原始 MoE 的性能提升幅度超过了 Flan T5 相对于原始 T5 的提升,这意味着 MoE 模型可能从指令式微调中获益更多,甚至超过了稠密模型。此外,MoE 在多任务学习中表现更佳。与之前关闭 辅助损失 函数的做法相反,实际上这种损失函数可以帮助防止过拟合。

稀疏 VS 稠密,如何选择?

稀疏混合专家模型 (MoE) 适用于拥有多台机器且要求高吞吐量的场景。在固定的预训练计算资源下,稀疏模型往往能够实现更优的效果。相反,在显存较少且吞吐量要求不高的场景,稠密模型则是更合适的选择。

注意: 直接比较稀疏模型和稠密模型的参数数量是不恰当的,因为这两类模型基于的概念和参数量的计算方法完全不同。

让 MoE 起飞

最初的混合专家模型 (MoE) 设计采用了分支结构,这导致了计算效率低下。这种低效主要是因为 GPU 并不是为处理这种结构而设计的,而且由于设备间需要传递数据,网络带宽常常成为性能瓶颈。在接下来的讨论中,我们会讨论一些现有的研究成果,旨在使这些模型在预训练和推理阶段更加高效和实用。我们来看看如何优化 MoE 模型,让 MoE 起飞。

并行计算

让我们简要回顾一下并行计算的几种形式:

  • 数据并行: 相同的权重在所有节点上复制,数据在节点之间分割。
  • 模型并行: 模型在节点之间分割,相同的数据在所有节点上复制。
  • 模型和数据并行: 我们可以在节点之间同时分割模型和数据。注意,不同的节点处理不同批次的数据。
  • 专家并行: 专家被放置在不同的节点上。如果与数据并行结合,每个节点拥有不同的专家,数据在所有节点之间分割。

在专家并行中,专家被放置在不同的节点上,每个节点处理不同批次的训练样本。对于非 MoE 层,专家并行的行为与数据并行相同。对于 MoE 层,序列中的令牌被发送到拥有所需专家的节点。

容量因子和通信开销

提高容量因子 (Capacity Factor, CF) 可以增强模型的性能,但这也意味着更高的通信成本和对保存激活值的显存的需求。在设备通信带宽有限的情况下,选择较小的容量因子可能是更佳的策略。一个合理的初始设置是采用 Top-2 路由、1.25 的容量因子,同时每个节点配置一个专家。在评估性能时,应根据需要调整容量因子,以在设备间的通信成本和计算成本之间找到一个平衡点。

部署技术

您可以在 Inference Endpoints 部署 mistralai/Mixtral-8x7B-Instruct-v0.1

部署混合专家模型 (MoE) 的一个关键挑战是其庞大的参数规模。对于本地使用情况,我们可能希望使用更小的模型。为了使模型更适合部署,下面是几种有用的技术:

  • 预先蒸馏实验: Switch Transformers 的研究者们进行了预先蒸馏的实验。他们通过将 MoE 模型蒸馏回其对应的稠密模型,成功保留了 30-40%的由稀疏性带来的性能提升。预先蒸馏不仅加快了预训练速度,还使得在推理中使用更小型的模型成为可能。
  • 任务级别路由: 最新的方法中,路由器被修改为将整个句子或任务直接路由到一个专家。这样做可以提取出一个用于服务的子网络,有助于简化模型的结构。
  • 专家网络聚合: 这项技术通过合并各个专家的权重,在推理时减少了所需的参数数量。这样可以在不显著牺牲性能的情况下降低模型的复杂度。

高效训练

FasterMoE (2022 年 3 月) 深入分析了 MoE 在不同并行策略下的理论性能极限,并且探索了一系列创新技术,包括用于专家权重调整的方法、减少延迟的细粒度通信调度技术,以及一个基于最低延迟进行专家选择的拓扑感知门控机制。这些技术的结合使得 MoE 运行速度提升高达 17 倍。

Megablocks (2022 年 11 月) 则专注于通过开发新的 GPU kernel 来处理 MoE 模型中的动态性,以实现更高效的稀疏预训练。其核心优势在于,它不会丢弃任何令牌,并能高效地适应现代硬件架构 (支持块稀疏矩阵乘),从而达到显著的加速效果。Megablocks 的创新之处在于,它不像传统 MoE 那样使用批量矩阵乘法 (这通常假设所有专家形状相同且处理相同数量的令牌),而是将 MoE 层表示为块稀疏操作,可以灵活适应不均衡的令牌分配。

开源混合专家模型

目前,下面这些开源项目可以用于训练混合专家模型 (MoE):

对于开源的混合专家模型 (MoE),你可以关注下面这些:

  • Switch Transformers (Google): 基于 T5 的 MoE 集合,专家数量从 8 名到 2048 名。最大的模型有 1.6 万亿个参数。
  • NLLB MoE (Meta): NLLB 翻译模型的一个 MoE 变体。
  • OpenMoE: 社区对基于 Llama 的模型的 MoE 尝试。
  • Mixtral 8x7B (Mistral): 一个性能超越了 Llama 2 70B 的高质量混合专家模型,并且具有更快的推理速度。此外,还发布了一个经过指令微调的模型。有关更多信息,可以在 Mistral 的 公告博客文章 中了解。

一些有趣的研究方向

首先是尝试将稀疏混合专家模型 (SMoE) 蒸馏 回到具有更少实际参数但相似等价参数量的稠密模型。

MoE 的 量化 也是一个有趣的研究领域。例如,QMoE (2023 年 10 月) 通过将 MoE 量化到每个参数不到 1 位,将 1.6 万亿参数的 Switch Transformer 所需的存储从 3.2TB 压缩到仅 160GB。

简而言之,一些值得探索的有趣领域包括:

  • 将 Mixtral 蒸馏成一个稠密模型。
  • 探索合并专家模型的技术及其对推理时间的影响。
  • 尝试对 Mixtral 进行极端量化的实验。

MOE网络pytorch构建:

import torch
import torch.nn as nn
import torch.nn.functional as F

class Expert(nn.Module):
    """简单的专家模型,这可以是任何神经网络架构"""
    def __init__(self, input_size, output_size):
        super(Expert, self).__init__()
        self.fc = nn.Linear(input_size, output_size)
    def forward(self, x):
        return self.fc(x)

class MoE(nn.Module):
    """简单的MOE模型,包含多个专家和一个门控网络"""
    def __init__(self, num_experts, input_size, output_size):
        super(MoE, self).__init__()
        self.num_experts = num_experts
        self.experts = nn.ModuleList([Expert(input_size, output_size) for _ in range(num_experts)])
        self.gating_network = nn.Linear(input_size, num_experts)

    def forward(self, x):
        # 门控网络决定权重
        gating_scores = F.softmax(self.gating_network(x), dim=1)
        # 专家网络输出
        expert_outputs = torch.stack([expert(x) for expert in self.experts], dim=1)
        # 加权组合专家输出
        moe_output = torch.bmm(gating_scores.unsqueeze(1), expert_outputs).squeeze(1)
        return moe_output

前向推理:


# 示例使用
input_size = 10  # 假设输入特征是大小为10的向量
output_size = 5  # 假设我们想要的输出大小为5的向量
num_experts = 3  # 假设我们有3个专家

# 初始化MOE模型
moe_model = MoE(num_experts, input_size, output_size)

# 创建一个输入向量
input_vector = torch.randn(1, input_size)

# 前向传递
output_vector = moe_model(input_vector)

# 打印输出
print(output_vector)

相关资源

Citation

@misc {sanseviero2023moe,
    author       = { Omar Sanseviero and
                     Lewis Tunstall and
                     Philipp Schmid and
                     Sourab Mangrulkar and
                     Younes Belkada and
                     Pedro Cuenca
                   },
    title        = { Mixture of Experts Explained },
    year         = 2023,
    url          = { https://huggingface.co/blog/moe },
    publisher    = { Hugging Face Blog }
}
Sanseviero, et al., "Mixture of Experts Explained", Hugging Face Blog, 2023.

Qwen2.5 -技术报告

Qwen2.5

🤗 Hugging Face   |   🤖 ModelScope   |    📑 Paper (报告还未发布)    |    📑 Blog    📖 Documentation   |🖥️ Demo   | 博客 | GitHub

Qwen是阿里巴巴集团Qwen团队研发的大语言模型和大型多模态模型系列。目前,大语言模型已升级至Qwen2.5版本。无论是语言模型还是多模态模型,均在大规模多语言和多模态数据上进行预训练,并通过高质量数据进行后期微调以贴近人类偏好。Qwen具备自然语言理解、文本生成、视觉理解、音频理解、工具使用、角色扮演、作为AI Agent进行互动等多种能力。

最新版本Qwen2.5有以下特点:

  • 易于使用的仅解码器稠密语言模型,提供 0.5B 、1.5B 、3B 、7B 、14B 、32B 和 72B 共7种参数规模的模型,并且有基模型和指令微调模型两种变体(其中“ B ”表示“十亿”, 72B 即为 720 亿)
  • 利用我们最新的数据集进行预训练,包含多达 18T tokens (其中“ T ”表示“万亿”, 18T 即为 18 万亿)
  • 在遵循指令、生成长文本(超过 8K tokens )、理解结构化数据(例如,表格)以及生成结构化输出特别是 JSON 方面有了显著改进
  • 更加适应多样化的系统提示,增强了角色扮演的实现和聊天机器人的背景设置。
  • 支持最多达 128K tokens 的上下文长度,并能生成多达 8K tokens 的文本。
  • 支持超过 29 种语言,包括中文、英文、法文、西班牙文、葡萄牙文、德文、意大利文、俄文、日文、韩文、越南文、泰文、阿拉伯文等。

简介

  1. 全面开源:考虑到用户对10B至30B范围模型的需求和移动端对3B模型的兴趣,此次除了继续开源Qwen2系列中的0.5B/1.5B/7B/72B四款模型外,Qwen2.5系列还增加了两个高性价比的中等规模模型—— Qwen2.5-14B 和 Qwen2.5-32B,以及一款适合移动端的 Qwen2.5-3B。所有模型在同类开源产品中均具有很强的竞争力,例如Qwen2.5-32B的整体表现超越了Qwen2-72B,Qwen2.5-14B则领先于Qwen2-57B-A14B。
  2. 更大规模、更高质量的预数据训练集:我们的预训练数据集规模从 7T tokens 扩展到了 18T tokens。
  3. 知识储备升级:Qwen2.5的知识涵盖更广。在MMLU基准中,Qwen2.5-7B 和 72B的得分相较于Qwen2分别从70.3提升到 74.2,和从84.2提升到 86.1。此外,Qwen2.5还在 GPQA、MMLU-Pro、MMLU-redux 和 ARC-c 等多个基准测试中有了明显提升。
  4. 代码能力增强:得益于Qwen2.5-Coder的突破,Qwen2.5在代码生成能力上也大幅提升。Qwen2.5-72B-Instruct在LiveCodeBench(2305-2409)、MultiPL-E和MBPP中的分别得分 55.575.1 和 88.2,优于Qwen2-72B-Instruct的32.2、69.2和80.2。
  5. 数学能力提升:引入了Qwen2-math的技术后,Qwen2.5的数学推理表现也有了快速提升。在MATH基准测试中,Qwen2.5-7B/72B-Instruct得分从Qwen2-7B/72B-Instruct的52.9/69.0上升到了 75.5/83.1
  6. 更符合人类偏好:Qwen2.5生成的内容更加贴近人类的偏好。具体来看,Qwen2.5-72B-Instruct的Arena-Hard得分从 48.1 大幅提升至 81.2,MT-Bench得分也从 9.12 提升到了 9.35,与之前的Qwen2-72B相比提升显著。
  7. 其他核心能力提升:Qwen2.5在 指令跟随、生成 长文本(从1K升级到 8K tokens)、理解 结构化数据(如表格),以及生成 结构化输出(尤其是JSON)上都有非常明显的进步。此外,Qwen2.5能够更好响应多样化的 系统提示,用户可以给模型设置 特定角色 或 自定义条件

模型基础信息

本次发布的 Qwen2.5 语言模型系列包括七个开源模型,规模从 0.5B 到 72B 不等。大多数模型支持 128K(131,072)个 token 的上下文长度,并能生成 8K token 的文本,支持长篇内容创作。除部分特殊版本外,模型主要采用 Apache 2.0 开源许可协议,而 Qwen2.5-3B 和 Qwen2.5-72B 分别使用 Qwen Research 许可协议 和 Qwen 许可协议。

模型性能

Qwen2.5

为了展示 Qwen2.5 的能力,我们用我们最大的开源模型 Qwen2.5-72B —— 一个拥有 720 亿参数的稠密 decoder-only 语言模型——与领先的开源模型如 Llama-3.1-70B 和 Mistral-Large-V2进行了基准测试。我们在多个基准测试中展示了经过指令调优的版本的综合结果,评估了模型的能力和人类偏好。

除了指令微调的模型之外,我们还发现,我们的旗舰开源模型 Qwen2.5-72B 的基础语言模型性能达到了顶级水准,即便是在与 Llama-3-405B 这样更大的模型对比时也是如此。

Qwen2.5 的一个重要更新是重新引入了我们的 140 亿参数和 320 亿参数模型,即 Qwen2.5-14B 和 Qwen2.5-32B。这些模型在多样化的任务中超越了同等规模或更大规模的基线模型,例如 Phi-3.5-MoE-Instruct 和 Gemma2-27B-IT。 它们在模型大小和能力之间达到了最佳平衡,提供了匹配甚至超过一些较大模型的性能。此外,我们的基于 API 的模型 Qwen2.5-Turbo 相比这两个开源模型提供了极具竞争力的性能,同时提供了成本效益高且快速的服务。

近来也出现了明显的转向小型语言模型(SLMs)的趋势。尽管历史上小型语言模型(SLMs)的表现一直落后于大型语言模型(LLMs),但二者之间的性能差距正在迅速缩小。值得注意的是,即使是只有大约 30 亿参数的模型现在也能取得高度竞争力的结果。附带的图表显示了一个重要的趋势:在 MMLU 中得分超过 65 的新型模型正变得越来越小,这凸显了语言模型的知识密度增长速度加快。特别值得一提的是,我们的 Qwen2.5-3B 成为这一趋势的一个典型例子,它仅凭约 30 亿参数就实现了令人印象深刻的性能,展示了其相对于前辈模型的高效性和能力。

除了在基准评估中取得的显著增强外,我们还改进了我们的后训练方法。我们的四个主要更新包括支持最长可达 8K 标记的长文本生成,大幅提升了对结构化数据的理解能力,生成结构化输出(尤其是 JSON 格式)更加可靠,并且在多样化的系统提示下的表现得到了加强,这有助于有效进行角色扮演。

KE-Omni-语音会话大模型

贝壳团队最新的语音大模型工作:面对语音交互对话数据稀缺的行业现状,尝试通过多阶段生成的方式来Scale训练数据;构建了超60000+小时、包含40000+说话人的高质量交互对话数据集Ke-SpeechChat;通过这些方式,表现基本能达到SOTA;

个人理解

  • 1、具体做法是先生成文本token,基于文本token在自回归生成语音token,最后基于语音token合成音频,没办法做到打断和全双工对话。另外,只使用hubert的音频token来合成语音可能效果不好,缺乏声学信息,合成的音频可能不会有太多的情感波动以及音色可能不稳定,看作者demo和论文, HiFi-GAN 声码器针对代理发音人(agent speakers)预先训练,针对中英文男/女 各选了一个音色进行HiFiGAN的训练,如果只在单一音色上训练的HiFiGAN可能音色比较稳定。个人理解应该是每一个音色训练一个HiFiGAN模型,听demo确实语音没有情感波动另外这种方法跟LLama-omni做法基本一致。
  • 2、论文中给出了如何在没有开源的大规模语音交互数据集情况下进行语音对话数据集的制作。比较有借鉴意义。首先对文本数据使用LLM进行重写指令、筛选重写后的指令以及口语化后处理。然后使用TTS技术合成多说话人,多样化的语音。另外在附录中给出了 文本重写指令的prompt以及不同的大小的Qwen2 LLM重写的结果分析。【具体提示词见附录】

论文:通过使用超过 60,000 小时的合成语音对话数据扩展监督微调来推进语音语言模型Advancing Speech Language Models by Scaling Supervised Fine-Tuning with Over 60,000 Hours of Synthetic Speech Dialogue Data

KE-Omni是一个基于 Ke-SpeechChat 构建的无缝大型语音语言模型,这是一个大规模的高质量合成语音交互数据集,由 700 万中英文对话组成,有 42,002 名说话人,总计超过 60,000 小时,这为该领域的研究和开发进步做出了重大贡献。

KE-Omni 模型架构

KE-Omni 由三个主要组件组成:语音编码器、大型语言模型(LLM)和语音解码器针对用户的语音指令,KE-Omni 被设计为无缝生成高质量的文本和语音响应。

语音编码器

采用了 Whisper-large-v3的编码器作为语音编码器。Whisper 是一种广泛使用的多语言语音识别模型,以其在多种语言上的强大性能而著称,非常适合我们的应用场景。一个轻量级的语音适配器被用于语音-文本模态对齐,将语音编码器与 LLM 连接起来。

语音编码器将每秒的音频处理为 50 帧特征。随后,语音适配器进一步压缩语音特征序列的长度,使其与 LLM 的模态对齐。我们在语音适配器中采用了 5 倍的压缩比,这意味着每秒的语音最终被转换为 10 帧特征。这种方法提高了处理速度并降低了 LLM 的延迟,同时保证了质量不受影响。

在整个训练过程中,语音编码器的参数保持冻结状态,仅语音适配器的参数会更新。这种方法保留了编码器强大的语音表示能力,同时使适配器能够学习必要的转换,以实现与 LLM 的高效语音-文本模态对齐。

语言模型

采用了最先进的开源模型 LLaMA作为大型语言模型(LLM)。该模型在多语言推理能力方面表现出色,涵盖中文和英文等多种语言。在 KE-Omni 中,LLM 将提示文本嵌入和语音编码器生成的语音表示拼接后作为输入。这种集成方式使得 LLM 能够利用来自文本和语音模态的上下文信息。然后,LLM 根据用户的语音指令自回归地生成文本响应。为了在性能和效率之间取得平衡,我们选择了 LLaMA-3.1-8B-Instruct 作为我们的 LLM 变体。

语音解码器

语音解码器负责将 LLM 的文本响应映射为对应的语音信号,是实现语音交互的重要组件。解码器包括以下三个关键部分:

  1. 时长预测器来自 Unit-based HiFi-GAN Vocoder with Duration Prediction
  2. 语音单元生成器
  3. 基于单元的声码器(vocoder)

语音特征表示

类似于 (Zhang et al., 2023) 和 (Fang et al., 2024) 的方法,我们采用预训练的 HuBERT 模型(Hsu 等人,2021)来提取连续的语音表示,并使用 K-means 模型将这些连续表示转化为离散的聚类索引。

生成语音响应的步骤

  1. 时长预测
    在生成语音响应之前,时长预测器首先预测每个文本标记(token)的时长。
    • 根据预测的时长信息,文本token序列会被上采样以匹配目标音频帧序列的长度。
    • 时长预测器在 KE-Omni 的训练过程中保持冻结状态。
  2. 语音单元生成
    基于 Transformer 的语音单元生成器以自回归方式生成离散语音单元序列。为了提高预测速度,我们采用基于块的自回归方法,分块预测语音单元。
    • 给定块大小 C 和目标语音单元序列长度 T,第 i 个文本token和第 j 个语音单元的嵌入向量进行拼接【concatenated】作为输入,其中 j=i−C,且 i∈[C,T]。
    • 在第一个块中,语音单元使用零嵌入初始化。
    • 为了确保语音单元生成的质量,我们在扩展的文本token序列和语音单元序列之间引入了 N 步延迟。
  3. 波形合成
    最终,通过基于单元的声码器(vocoder)将语音单元合成波形。我们选择了 HiFi-GAN 作为声码器。Unit-based HiFi-GAN Vocoder with Duration Prediction HiFi-GAN 声码器针对代理发音人(agent speakers)预先训练,并在 KE-Omni 的训练过程中保持冻结状态。

Ke-SpeechChat 数据集构建

目前尚未见到开源的大规模语音交互数据集,这极大地阻碍了语音对话研究的发展。这种稀缺性主要归因于以下两个因素:一是构建语音数据的高成本,二是涉及的隐私风险。

为了有效构建大规模且高质量的语音交互数据集,我们通过利用先进的 LLM 和 TTS 工具包,探索高效的合成数据方法。为避免隐私风险,我们构建了一个虚拟语音库用于语音生成,其中的声音在现实世界中并不存在。此外,我们在数据中嵌入了水印,以表明这些数据是由 AI 生成的,从而防止其被滥用。

在对话数据的构建过程中,我们首先专注于创建能准确反映口语特征的文本对话数据,然后从这些文本对话中合成语音。随后,我们对合成语音进行质量保证和筛选。

文本预处理:

选择的文本对话问答数据集:

https://huggingface.co/datasets/BelleGroup/train_1M_CN
https://huggingface.co/datasets/BelleGroup/train_2M_CN
https://huggingface.co/datasets/BelleGroup/train_3.5M_CN
https://huggingface.co/datasets/fnlp/SpeechInstruct
https://huggingface.co/datasets/fnlp/AnyInstruct

文本数据集存在的问题:

任务不适合语音交互
许多数据集中的指令涉及的任务不适用于语音交互,例如生成图像、撰写长篇文章或创建结构化文本。这些任务难以自然地融入语音对话。

形式过于正式,与口语化不符
数据集中指令的表达通常过于正式和详尽,与日常口语表达存在显著差距。例如,一个数据集中的指令可能是:“如何安装和设置一款软件或设备(例如打印机)”,而在日常对话中,用户通常会简单地问:“怎么用打印机?”

内容过长且包含不可发音的符号
数据集中指令和响应往往过于冗长,并包含不可发音的特殊字符,例如 Markdown 符号、下划线和换行符。这些特性使得文本数据无法很好地适应语音交互的细腻和动态需求。

为了解决上述问题,我们实施了以下三个关键步骤:重写指令筛选重写后的指令以及口语化后处理。这三个阶段均借助大型语言模型(LLMs)完成具体的提示词(prompts)详见附录 A.1。

重写指令

重写指令的主要目标是将指令任务转化为更适合口头交互的形式。我们的方法是为大型语言模型(LLM)设计特定的提示,要求其将原始指令数据转换为人类可能会以口语形式提出的问题。

我们发现,当将完整的原始指令提供给 LLM 时,其输出通常只对任务的原始格式进行轻微改写,导致结果仍然不适合对话场景。为了解决这个问题,我们针对特定类型的任务(例如分类、摘要和其他指令性任务)实施了特定策略。我们移除了这些任务中的指令性句子,仅保留关键信息片段。随后,我们告知 LLM 这些片段是不完整的,要求其以此为灵感,创造性地生成新的问题。

这种方法有效降低了 LLM 过于依赖原始指令的倾向,并鼓励生成更加自然的对话式问题。因此,我们能够将正式且结构化的指令文本有效地转化为更适合语音场景的查询。

筛选重写后的指令

在指令重写阶段之后,我们会对重写后的指令进行筛选,以确保其适用于口语交互。筛选过程涉及以下三个关键考量:

  1. 适合口头交流:评估重写后的指令是否适合口头交流,排除需要生成长篇或结构化内容(如文章、歌词或电子邮件)的任务。
  2. 清晰度与完整性:评估每条指令的清晰度和完整性,确保其包含足够的背景信息。对于过于模糊或缺乏必要背景的指令(例如“这篇文章的主要内容是什么?”),会被筛除。
  3. 安全性:使用我们内部的系统和 Qwen2-72B-Instruct 模型对指令进行安全性评估。

通过这一筛选过程,数据集主要由清晰、上下文完整且安全的指令组成,从而提升其在对话交互场景中的适用性。

语音风格后处理

在最后阶段,我们使用大型语言模型(LLM)进一步修改筛选后的指令,以提升其对话质量,并以类似自然口语风格生成相应的回答。具体步骤如下:

  1. 对话语气:要求 LLM 采用自然的对话语气,避免生成无法发音的内容,并将数字和公式符号转换为其口头表达形式。
  2. 简洁回答:将回答限制在 100 字以内,确保单次回复不包含过多信息。

通过遵循这些指导原则,数据集被进一步优化,更加适合用于训练支持自然且高效语音交互的模型。

使用的模型版本
本节使用 Qwen2.5-72B-Instruct,而 重写指令筛选重写指令 节使用的是 Qwen2.5-14B-Instruct。值得注意的是,与较小版本(如 Qwen2.5-32B-Instruct 或 Qwen2.5-14B-Instruct)相比,Qwen2.5-72B-Instruct 生成的指令相似,但回答质量显著提升。示例可在附录中查看。

合成音频对话数据

使用 CosyVoice模型,它支持自定义语音特征,将文本对话转换为语音对话。为确保说话人多样性,我们构建了一个包含大量虚拟说话人的语音库这些说话人均来自开源语音数据。为保持合成语音对话的质量,我们对合成音频进行转录并计算字符错误率(CER),根据 CER 进行数据筛选,从而确保数据集的高质量。

语音库

数据来源 WenetSpeech4TTS 数据集源自 WenetSpeech(Zhang et al., 2022),该数据集包含从互联网收集的长音频录音,时长从几分钟到数小时不等。WenetSpeech4TTS 通过语音活动检测(VAD)对这些长录音进行分段,将其分割为较短的音频片段,同时计算每段的 DNSMOS 分数(Reddy et al., 2022)。这些短片段根据说话人的余弦相似性进行合并,以确保每个短片段均由同一说话人发出。然而,WenetSpeech4TTS 未检测同一长录音中不同短片段之间的相似性,而这对我们的工作至关重要,因为我们需要识别由同一人发出的多个片段,以生成稳定的语音特征嵌入。

实际说话人

我们首先从 WenetSpeech4TTS 的优质短片段中(DNSMOS ≥ 4.0)提取音频,并根据其来源的长录音进行分类。我们筛选出包含至少 10 个优质短片段的长录音,记为 Ai​={ai1​,ai2​,…,ain​},其中 i 是长录音的索引,n≥10表示短片段的数量。
接着,我们使用 WavLM(Chen et al., 2022)为这些短片段提取 X-向量,并计算 Ai​ 中每对优质短片段之间的说话人相似性。如果某长录音中至少有 floor⌊2n​⌋ 对短片段的相似性得分超过 0.97,则这些短片段被认为由同一人发出。通过这种方法,我们识别出了 5000 多名说话人,且性别均衡。

虚拟说话人

对于每个识别出的语音特征,我们计算平均发音速度(即每个字符的平均发音时间,取整至最近的 10 毫秒)。然后,根据发音速度将这些特征进行分类。我们随机选择一个语音特征,并与同性别、发音速度相同的另一语音特征配对,通过加权平均生成合成语音特征,以保护隐私并生成不存在的、虚拟的合成语音。这一过程可以用来生成无限数量的虚拟语音。
通过这些步骤,我们的语音库包含高质量、多样化、性别均衡的虚拟语音,适用于语音合成的多种应用,同时不会对应任何真实个人。

语音合成

CosyVoice 进行语音合成。对于每段对话,我们随机选择一位用户语音和一位代理语音进行合成。为了防止数据滥用,所有合成语音均使用 AudioSeal(San Roman et al., 2024)进行水印保护。

质量保证

为确保合成对话的质量,我们对中文部分使用 Belle-whisper-large-v3-turbo-zh 进行转录,对英文部分使用 Whisper-large-v3-turbo 进行转录。
分别计算中文的字符错误率(CER)和英文的单词错误率(WER)。若某条对话的中文 CER 超过 5% 或英文 WER 超过 10%,则该对话被剔除,以确保数据的高质量。

Ke-SpeechChat 数据集细节

所有元数据存储在单个 JSON 文件中,每条对话都包含以下信息:对话 ID、说话人、性别、文本内容和音频路径。示例详见附录 C。

详细统计信息如表 1 所示,其中中文和英文对话的数据分别列出。

  • 中文对话:数量超过 510 万条,总时长达 40,884 小时。
  • 英文对话:数量超过 170 万条,总时长达 19,484 小时。

数据集中的说话人性别均衡,包含 40,000 名用户和 2 名代理【输出语音】(用户和代理的分布均适用于中文和英文)。大量的对话和说话人确保了数据集的多样性。

训练数据被随机划分为五个不同大小的子集:XSSMLXL

  • 每个较大的子集都包含所有较小子集的数据。
  • 所有子集均完整覆盖 42,002 名说话人。

质量评估
为评估 Ke-SpeechChat 的质量,我们使用以下客观指标:

  1. DNSMOS(P.835 OVRL)和 UTMOS 评分:分别衡量音频质量和语音自然度。
  2. ASR 和 TTS 任务:进一步评估数据集性能。

附录

A:PROMPTS提示

指令重写:

指令过滤:

语音风格后处理 [根据指令获得响应]:

B:Qwen不同版本的能力 比较

本附录介绍了使用不同版本的Qwen2.5模型对口语风格后处理的影响,如下表所示

C: Dialogue Format

Synchronous LLMs as Full-Duplex Dialogue Agents


同步 LLMs 作为全双工对话代理

https://syncllm.cs.washington.edu/

尽管对语音对话代理进行建模有着广泛的兴趣,但大多数方法本质上都是 “半双工” 的 —— 仅限于回合制交互,响应需要用户明确提示或隐式跟踪中断或静音事件。相比之下,人类对话是“全双工”的,允许以快速和动态的轮流、重叠语音和反向通道的形式实现丰富的同步性。从技术上讲,使用 LLMs在于将同步建模为预训练的 LLMs 没有“时间”感。为了弥合这一差距,我们提出了用于全双工口语对话建模的同步 LLMs。我们设计了一种新颖的机制,将时间信息集成到 Llama3-8b 中,以便它们与现实世界的时钟同步运行。我们还介绍了一个训练方法,该方法使用从文本对话数据生成的 212k 小时的合成口语对话数据来创建一个模型,该模型仅使用 2k 小时的真实口语对话数据即可生成有意义且自然的口语对话。同步 LLMs 在保持自然性的同时,在对话意义方面优于最先进的。最后,我们通过模拟在不同数据集上训练的两个代理之间的交互,同时考虑高达 240 毫秒的 Internet 规模延迟,展示了该模型参与全双工对话的能力。

Latency tolerant interaction

SyncLLM 是一种仅限自回归解码器的 transformer 模型,可以用作全双工对话代理。在下图中,在当前时间步(图中的 chunk N),SyncLLM 的上下文包含 LLM 的语音到当前 chunk 的交错块,以及对应于除当前 chunk 之外的所有 chunk 的用户语音。为了与用户同步,LLM 必须在当前 chunk 结束之前生成其下一个 chunk (chunk N+1)。因此,SyncLLM 首先生成估计用户的 chunk,该 chunk 又附加到上下文并用于预测其下一个 chunk。

SyncLLM 经过训练,可以预测对应于对话两侧的语音单元的交错块,如图 2 所示。1. 在每个时间步长中,模型预测与对话一侧的固定持续时间(称为模型的块大小)相对应的语音单位,然后是与对话的用户一侧相对应的语音单位。通过这种方法,该模型能够生成与真实时钟同步的两个语音流。这允许我们的方法对所有对话线索进行建模,例如反向通道、重叠、中断等。

Training

SyncLLM 使用简单的 next-token 预测目标进行训练,其中全双工口语对话的格式如下。(顶行)我们将语音对话表示为 HuBERT 令牌的交错块,其中块大小决定了同步令牌 [S0] 的频率。(中间行)我们训练 SyncLLM 生成去重 HuBERT 令牌的交错块以及定期同步令牌。(底行)我们在每个块中插入去重的标记,以获得原始格式的语音对话序列。

如果我们可以将两个令牌流中的一个替换为与真实用户相对应的令牌流,那么经过训练的模型可以用于全双工语音交互。在图 .1,紫色框对应于每个时间块中 LLM 侧对话的标记序列,绿色框对应于对话的用户侧。我们通过丢弃 LLM 用户语音交互。

HuBERT 令牌 :使用 HuBERT  来表示语音。我们使用 Nguyen 等 人的分词化参数,分词采样率为 25 Hz,每 40 毫秒音频产生一个分词,词汇量为 501。为了模拟两个说话人 0 和 1 之间的对话,我们定义了两个特殊的标记 [S0] 和 [S1],称为说话人标签,分别指定每个说话人的标记序列的开始。我们将对话表示为两个并行的语音流,每个说话人一个,交错,如上图 的顶行所示。对于每个流,我们嵌入一个周期性的 speaker 标签,其时间段等于模型的块大小。

重复数据删除。HuBERT 令牌的固定时间段对于在全双工对话中对时间进行建模很有用。然而,原始 HuBERT 序列由大量重复的标记组成,主要是由话语内和话语之间的沉默引起的。每个唯一标记的重复次数表示标记所表示的声学单元的持续时间。然而,语义内容可以通过在删除重复标记序列时仅考虑唯一标记来建模。重复的标记序列会对最终口语对话模型的语义能力产生不利影响 ,因为如上图 所示,与去重序列相比,它们每个标记的语义内容比去重后的序列低约50%。

插值。虽然去重的标记序列有利于自回归建模,但要生成适合语音合成的标记序列,我们需要原始格式的周期性 HuBERT 标记。由于 speaker 标签 [S0] 维护了计时信息,因此我们知道每个块中去重后删除的令牌数量。我们使用它来插入已删除重复数据的令牌,以匹配每个块中的预期令牌数量。例如,在 Fig.2,则说话人 0 的流在去重后只有一个 Token。但是由于在这种情况下,块大小为 160 毫秒,因此每个块将包含 160/40 = 4 个令牌。所以如图 3 日的第三行所示。2 中,我们重复 deed token 三次以重建 chunk。如果一个块有多个去重的令牌,如图 2 中的第二个 token。2,我们以相等的数量重复每个 Token。我们注意到这种方法可能会导致错误,因为原始 chunk 可能不遵循这种启发式方法。我们观察到,即使数据块大小为 240 毫秒,其影响也是难以察觉的,这可能是因为每个标记的预测持续时间的误差受到数据块大小的上限。此外,在具有更多新词元的 chunk 中,误差会更小。

采用三阶段训练,训练数据:

第 1 阶段:具有合成语音数据的回合制口语对话模型。 鉴于口语对话数据有限,我们从大规模文本对话数据集中生成合成语音数据。 我们使用监督式微调 (SFT) 数据集作为我们的源文本对话数据集。我们使用 Bark TTS AI (2023) 模型生成文本对话数据集的口语版本,其中包含 10 个说话人预设。

第 2 阶段:假设没有重叠的全双工对话。回合制语音对话是无重叠的全双工对话的特例。基于这一观察结果,我们可以将合成的语音对话数据视为全双工语音对话数据,其中轮到一个说话人时,另一个说话人完全沉默。在这个阶段,我们从文本对话数据创建合成的口语对话数据,与上一阶段类似,但有一个主要区别:从对话的每个回合中,我们生成一个对应于一个说话者的语音话语和对应于另一个说话者的等长沉默。然后,我们以图 2 第二行所示的格式对并行语音对话数据进行标记。2. 这样,我们可以进一步利用文本对话数据来帮助我们的模型学习图 1 中的标记序列格式。2. 此微调阶段对话语中的计时进行建模。该模型还无法学习轮流提示,例如反向信道或两个说话人之间的重叠。

第 3 阶段:使用真实世界的口语对话数据进行建模。最后,我们对模型进行微调,从现实世界的口语对话数据中学习轮流线索。我们使用 Fisher Cieri et al. (2004) 的数据集,其中包含 2000 小时的口语对话,其中对话中每个说话者的语音都被分成独立的音频通道。我们将数据集分别以 98:1:1 的比例分为 train、val 和 test split。对话中的每个音频声道都单独标记化,并以上一阶段使用的全双工对话格式交错。在此阶段,除了学习话语中的计时外,该模型还学习有效的轮流对话线索,例如在轮流和反向通道之间准确分配停顿。

Mini-Omni: Language Models Can Hear, Talk While Thinking in Streaming


Mini-Omni:语言模型可以在流中听、说和思考

Github:https://github.com/gpt-omni/mini-omni

Paper:arxiv.org/abs/2408.16725

对话训练数据集开源:VoiceAssistant-400K is uploaded to Hugging Face.基于cosyvoice合成的

  • Qwen2 as the LLM backbone.
  • litGPT for training and inference.
  • whisper for audio encoding.【用于模型音频表征编码】
  • snac for audio decoding.【RVQ架构用于模型音频解码】
  • CosyVoice for generating synthetic speech.【用于合成训练数据】
  • OpenOrca and MOSS for alignment.
  • Mini-Omni的基本思想是通过文本来指导音频的生成,这种方法基于假设:text token有更高的信息密度,可以使用更少的token表示相同的信息。
  • 生成音频token时以对应文本token为条件,类似在线语音合成系统,且生成音频前用 N 个pad token填充,确保先产生文本token。
  • 模型可依据说话者和风格的embedding,控制说话者特征和风格元素。

Introduction  

Mini-Omni,这是一种基于音频的端到端对话模型,能够进行实时语音交互。为了实现这种能力,提出了一种文本指导的语音生成方法,以及推理过程中的批处理并行策略,以进一步提高性能。该方法还有助于以最小的退化保留原始模型的语言能力,使其他工作能够建立实时交互能力。我们将这种训练方法称为 “Any Model Can Talk”。我们还引入了 VoiceAssistant-400K 数据集以微调针对语音输出优化的模型。据我们所知,Mini-Omni 是第一个用于实时语音交互的完全端到端的开源模型,为未来的研究提供了宝贵的潜力。

Figure 1:The Mini-Omni model architecture.

 Mini-Omni,这是第一个具有实时对话功能的开源多模型大型语言模型,具有完全端到端的语音输入和输出功能。它还包括各种其他音频转文本功能,例如自动语音识别 (ASR)。我们采用了目前可用的现成方法来离散语音标记,并采用了最简单的模型架构,使我们的模型和方法很容易被其他研究人员采用。直接音频推理带来了重大挑战;然而,我们的方法仅使用 0.5B 模型和有限数量的合成音频数据就成功地解决了这个问题

重要的是,我们的训练框架可以在不严重依赖广泛的模型功能或大量数据的情况下实现这一目标。

为了利用和保留语言模型的原始功能,我们提出了一种并行生成范式,其中 transformer 同时生成音频和文本标记。随后,我们观察到音频模态对文本能力的影响很小,并进一步引入了基于批处理的并行生成,这显着增强了模型在流式音频输出过程中的推理能力。作为一个 重要决策,我们选择不牺牲音频质量来换取更简单、比特率更低的音频编码器,以降低模型中音频推理的复杂性。但是,为了确保音频质量,我们选择了 SNAC ,这是一款音乐级编码器,具有 8 层码本,每秒处理数百个令牌。创新地,我们应用了文本指导的延迟并行生成解决长 SNAC 码本序列的问题。实验表明,音频输出质量与常见的 TTS 系统相当。

我们还提出了一种方法,该方法只要对原始模型进行最少的训练和修改,使其他工作能够快速发展自己的语音能力。我们将这种方法称为 “Any Model Can Talk”,旨在使用有限数量的附加数据实现语音输出。该方法通过额外的适配器和预先训练的模型来扩展语音功能,并使用少量合成数据进行微调。这与上述并行建模方法相结合,可以在新模态中启用流式输出,同时保留原始模型的推理能力。

最后,观察到大多数开源 QA 数据集都包含混合代码或过长的文本,这使得它们不适合语音模型。为了克服这一限制,我们引入了 VoiceAssistant-400K 数据集,其中包含超过 400,000 个由 GPT-4o 专门生成的条目,用于语音助理监督微调 (SFT)。

方法

提出了一种同时生成文本和音频的新方法。这种方法假设文本输出具有更高的信息密度,因此可以通过更少的标记实现相同的响应。在生成音频标记的过程中,模型能够高效地基于对应的文本标记进行条件生成,类似于在线 TTS 系统。为确保在生成音频标记之前先生成对应的文本标记,我们在模型中引入了以 N 个标记进行填充的机制,该值可作为超参数进行调整。此外,模型还能够基于说话人嵌入风格嵌入进行条件生成,从而实现对说话人特征和风格元素的控制。

将audio token和text token合并成新的词表,生成时同时预测audio token和text token,Loss如下:

其中 T ,A 是训练语料 C 中的文本-音频输出对,m 是训练样本的数量。 Xj 是第 j 个示例的输入条件,nj 是 的最大个数样本 Tj 和 AjTi,j 和 Ai,j 表示第 j 个样本的第 i 个文本标记和音频标记。

解码策略

Mini-Omni 对响应进行了重组,通过文本-音频并行解码方法将这些推理能力转移到流式音频输出。这种方法同时输出音频和文本令牌,并通过文本到语音合成生成音频,确保实时交付,同时利用基于文本的推理优势。为了与大型模型的输入保持一致,在生成下一个标记之前,将并行生成的所有序列相加,如图 1 所示。这种方法使模型能够在聊天场景中实现实时语音输出,同时将第一个标记延迟降至最低。

文本延迟并行解码。并行生成最早是由 MusicGen引入的,以加速音乐生成过程,我们已将这种方法集成到文本模态中以增强推理能力。并行解码是可行的,因为语言模型训练中使用的音频标记码本通常由多个层组成;同时生成所有层可以显著提高模型速度。对于实时语音输出模型,并行解码更为重要,它允许在标准设备上每秒生成数百个音频令牌。在本文中,我们采用 SNAC 作为音频编码器,它由 7 个具有互补关系的标记层组成。因此,我们采用 8 个子语言模型头(sub-Language Model heads),一步生成 8 个标记,包括文本,同时在相邻层之间保持一步延迟。由于音频令牌是从文本合成派生的,因此首先输出文本令牌,然后输出从第一层到第七层的 SNAC 令牌。我们提出的文本优先延迟并行解码的过程如图 2(b) 所示。

批量并行解码。尽管前面介绍的并行生成方法有效地将推理能力从文本模态转移到音频模态,但我们的实验表明,模型的推理性能在文本和音频任务之间仍然存在差异,音频响应往往更简单。我们假设这是由于模型容量的限制或音频数据不足造成的。为了解决这个问题并进一步增强模型在对话过程中的推理能力,最大限度地转移其基于文本的能力,我们实验性地采用了 Batch 方法。鉴于该模型在文本模态中的性能更强,我们将单个输入的推理任务扩展到批量大小 2:如前所述,一个样本需要文本和音频响应,而另一个样本只需要文本响应,专注于基于文本的音频合成。但是,第一个样本的文本标记输出将被丢弃,第二个样本的文本输出将嵌入到第一个样本的相应文本标记位置。同时,使用第二个样本的纯文本响应中的内容对第一个样本中的音频进行流式处理;我们将此过程称为 Batch 并行解码。通过这种方法,我们以最小的资源开销,有效地、几乎完全地将模型的基于文本的能力转移到音频模态中,从而显着增强了它在新模态中的推理能力。批量并行解码的推理过程如图 2(c) 所示。我们相信批量并行解码代表了一项关键的算法创新,它使如此小的模型能够表现出强大的对话能力。

训练方法:Any Model Can Talk

该方法旨在尽可能保留原始模型的功能。这首先是由于我们的基础模型的强大性能,其次是因为该方法可以应用于其他在文本输出方面表现出色但缺乏强大的语音交互能力的工作。

Audio Encoding:音频输入主要侧重于从输入音频中提取特征,选项包括 Hubert 或单独预训练的音频编码器。鉴于我们专注于语音输入,Whisper  和 Qwen2-audio也展示了在一般音频任务中的有效性能。对于音频输出,使用多码本方法选择音频令牌可以更好地捕获音频细节。尝试了用于音频令牌建模的扁平化,但结果导致令牌过长,这对流式有害,并导致学习不稳定。相反,受 MusicGen 启发的并行解码采用了延迟模式与文本条件相结合。

三阶段训练。 我们的训练方法分为三个不同的阶段:(1) 模态对齐。此阶段的目标是增强文本模型理解和生成语音的能力。Mini-Omni 的核心模型完全冻结,只允许在两个适配器中使用gradients 。在此阶段,我们使用来自语音识别和语音合成的数据来训练模型的语音识别和合成能力。(2) 适应训练。一旦新模态与文本模型的输入对齐,适配器就会被冻结。在这个阶段,我们只专注于在给定音频输入时训练模型的文本功能,因为音频输出只是从文本合成的。该模型使用来自语音识别、语音问答和其他文本响应的任务【 TextQA 和 AudioQA 】的数据进行训练。(3) 多模态微调。在最后阶段,使用综合数据对整个模型进行微调。此时,所有模型权重都已解冻并训练。由于主要模态对齐任务是在适配器训练期间处理的,因此最大限度地保留了原始模型的功能。

模型输入 ID。给定 8 个并行输出序列,输入也需要 8 个序列,这导致了极大的复杂性。因此,我们在这里简要概述了模型输入的组织。该模型可以接受文本或音频输入,这些输入被放置在相应的模态序列中。对于音频输入,输入token和 Whisper 特征通过适配器转换为相同维度的张量,然后连接起来。根据任务的不同,我们将特殊 token 放置在不同的位置,引导模型的输出,实现多模态输出。一些任务的组织如图 4 所示。在输入模型之前,所有序列都会相加并求平均值以集成特征。

实验

数据:

为了建立基础语音功能,我们使用三个语音识别数据集训练了模型,总计约 8,000 小时,专注于语音理解和合成。对于文本模态,我们整合了来自 Open-Orca (OpenOrca,) 数据集的 200 万个数据点,并将它们与其他模态集成以保持文本准确性。Moss 的 SFT 数据集 (Sun et al., 2024) 与零样本 TTS 一起使用,合成了 150 万个语音 QA 对。为避免不合适的代码和符号输出,我们使用 GPT-4o 创建了 VoiceAssistant-400K 数据集。表 1 中详细介绍了数据集。阶段 1 涉及用于训练语音适配器的 ASR 数据。阶段 2 使用 TextQA 和 AudioQA 进行音频/文本输入和文本响应训练。第 3 阶段侧重于使用 AudioQA 的音频模态进行多模态交互。最后阶段的培训包括退火和语音 QA 微调。

数据集及其用于训练 Mini-Omni 的用途如下:在模态表示法中,T 和 A 表示文本和音频模态,下标 1 和 2 表示输入或输出。

训练参数:

模型在 8 个 A100 GPU 上进行训练,使用余弦退火学习率调度器,最小学习率为 4e-6,最大学习率为 4e-4。每个训练 epoch 由 40000 个步骤组成,每个步骤的批次大小为 192。基本语言模型采用 Qwen2-0.5B ,这是一种具有 24 个块且内部维度为 896 的 transformer 架构。语音编码器使用 Whisper-small 编码器,ASR 适配器通过两层 MLP 连接,TTS 适配器通过添加 6 个额外的transformer 块来扩展原始模型。在微调过程中,我们使用从 4e-6 到 5e-5 的学习率。

实验结果:

首先评估了该模型在 ASR 任务上的性能,以评估其语音理解能力。使用 LibriSpeech 的四个测试集。

Case Study 

我们展示了几个案例来演示 Mini-Omni 在语音理解和推理方面的能力。这些示例表明,与基于文本的推理相比,基于语音的推理要弱一些,这凸显了批量生成的必要性。更多令人印象深刻的例子,请参考 https://github.com/gpt-omni/mini-omni。

总结 

Mini-Omni,这是第一个具有直接语音转语音功能的多模态模型。在以前使用文本引导语音生成的方法的基础上,我们提出了一种并行文本和音频生成方法,该方法利用最少的额外数据和模块将语言模型的文本功能快速传输到音频模态,支持具有高模型和数据效率的流式输出交互。我们探索了文本指令流式并行生成和批量并行生成,进一步增强了模型的推理能力和效率。我们的方法使用只有 5 亿个参数的模型成功地解决了具有挑战性的实时对话任务。我们开发了基于前适配器和后适配器设计的 Any Model Can Talk 方法,以最少的额外训练促进其他模型的快速语音适应。此外,我们还发布了 VoiceAssistant-400K 数据集,用于微调语音输出,旨在最大限度地减少代码符号的生成,并以类似语音助手的方式帮助人类。我们所有的数据、推理和训练代码都将在 https://github.com/gpt-omni/mini-omni 逐步开源。

语音多模态大模型汇总–Github

重点关注:

⚡ 语音表示模型:这些模型专注于学习结构性语音表示,然后可以将其量化为离散的语音标记,通常是指语义标记

⚡ 语音神经编解码器模型:这些模型旨在学习语音和音频离散标记,通常称为声学标记,同时保持重建能力和低比特率。

⚡ 语音大型语言模型:这些模型在语言建模方法的语音和声学标记之上进行训练。他们展示了对语音理解和语音生成任务的熟练程度。

Awesome Speech LM-语音大模型系列汇总

GitHub:https://github.com/ga642381/speech-trident/tree/master

在这个代码库中,我们研究了以下三个关键领域:(1) 表征学习,(2) 神经编解码器,以及 (3) 语言模型,这些领域共同推动了语音/音频大语言模型的发展。

  1. 语音表征模型:这些模型专注于学习语音的结构化表征,随后将其量化为离散的语音标记,通常被称为语义tokens
  2. 语音神经编解码模型:这些模型旨在学习语音和音频的离散标记,通常被称为声学tokens,同时保持良好的重构能力和低比特率。
  3. 语音大语言模型这些模型基于语音和声学token,采用语言建模方法进行训练,在语音理解和语音生成任务中展现出较高的能力。

🔱 Speech/Audio Language Models

DateModel NamePaper TitleLink
2024-11Building a Taiwanese Mandarin Spoken Language Model: A First AttemptPaper
2024-11UltravoxUltravox: An open-weight alternative to GPT-4o RealtimeBlog
2024-11hertz-devblogGitHub
2024-11Freeze-OmniFreeze-Omni: A Smart and Low Latency Speech-to-speech Dialogue Model with Frozen LLMpaper
2024-11Align-SLMAlign-SLM: Textless Spoken Language Models with Reinforcement Learning from AI Feedbackpaper
2024-10IchigoIchigo: Mixed-Modal Early-Fusion Realtime Voice Assistantpapercode
2024-10OmniFlattenOmniFlatten: An End-to-end GPT Model for Seamless Voice Conversationpaper
2024-10GPT-4oGPT-4o System Cardpaper
2024-10Baichuan-OMNIBaichuan-Omni Technical Reportpaper
2024-10GLM-4-VoiceGLM-4-VoiceGitHub
2024-10Roadmap towards Superhuman Speech Understanding using Large Language Modelspaper
2024-10SALMONN-OMNISALMONN-OMNI: A SPEECH UNDERSTANDING AND GENERATION LLM IN A CODEC-FREE FULL-DUPLEX FRAMEWORKpaper
2024-10Mini-Omni 2Mini-Omni2: Towards Open-source GPT-4o with Vision, Speech and Duplex Capabilitiespaper
2024-10HALL-EHALL-E: Hierarchical Neural Codec Language Model for Minute-Long Zero-Shot Text-to-Speech Synthesispaper
2024-10SyllableLMSyllableLM: Learning Coarse Semantic Units for Speech Language Modelspaper
2024-09MoshiMoshi: a speech-text foundation model for real-time dialoguepaper
2024-09Takin AudioLLMTakin: A Cohort of Superior Quality Zero-shot Speech Generation Modelspaper
2024-09FireRedTTSFireRedTTS: A Foundation Text-To-Speech Framework for Industry-Level Generative Speech Applicationspaper
2024-09LLaMA-OmniLLaMA-Omni: Seamless Speech Interaction with Large Language Modelspaper
2024-09MaskGCTMaskGCT: Zero-Shot Text-to-Speech with Masked Generative Codec Transformerpaper
2024-09SSR-SpeechSSR-Speech: Towards Stable, Safe and Robust Zero-shot Text-based Speech Editing and Synthesispaper
2024-09MoWE-AudioMoWE-Audio: Multitask AudioLLMs with Mixture of Weak Encoderspaper
2024-08Mini-OmniMini-Omni: Language Models Can Hear, Talk While Thinking in Streamingpaper
2024-08Make-A-Voice 2Make-A-Voice: Revisiting Voice Large Language Models as Scalable Multilingual and Multitask Learnerpaper
2024-08LSLMLanguage Model Can Listen While Speakingpaper
2024-06SimpleSpeechSimpleSpeech: Towards Simple and Efficient Text-to-Speech with Scalar Latent Transformer Diffusion Modelspaper
2024-06UniAudio 1.5UniAudio 1.5: Large Language Model-driven Audio Codec is A Few-shot Audio Task Learnerpaper
2024-06VALL-E RVALL-E R: Robust and Efficient Zero-Shot Text-to-Speech Synthesis via Monotonic Alignmentpaper
2024-06VALL-E 2VALL-E 2: Neural Codec Language Models are Human Parity Zero-Shot Text to Speech Synthesizerspaper
2024-06GPSTGenerative Pre-trained Speech Language Model with Efficient Hierarchical Transformerpaper
2024-04CLaM-TTSCLaM-TTS: Improving Neural Codec Language Model for Zero-Shot Text-to-Speechpaper
2024-04RALL-ERALL-E: Robust Codec Language Modeling with Chain-of-Thought Prompting for Text-to-Speech Synthesispaper
2024-04WavLLMWavLLM: Towards Robust and Adaptive Speech Large Language Modelpaper
2024-02MobileSpeechMobileSpeech: A Fast and High-Fidelity Framework for Mobile Zero-Shot Text-to-Speechpaper
2024-02SLAM-ASRAn Embarrassingly Simple Approach for LLM with Strong ASR Capacitypaper
2024-02AnyGPTAnyGPT: Unified Multimodal LLM with Discrete Sequence Modelingpaper
2024-02SpiRit-LMSpiRit-LM: Interleaved Spoken and Written Language Modelpaper
2024-02USDMIntegrating Paralinguistics in Speech-Empowered Large Language Models for Natural Conversationpaper
2024-02BATBAT: Learning to Reason about Spatial Sounds with Large Language Modelspaper
2024-02Audio FlamingoAudio Flamingo: A Novel Audio Language Model with Few-Shot Learning and Dialogue Abilitiespaper
2024-02Text Description to speechNatural language guidance of high-fidelity text-to-speech with synthetic annotationspaper
2024-02GenTranslateGenTranslate: Large Language Models are Generative Multilingual Speech and Machine Translatorspaper
2024-02Base-TTSBASE TTS: Lessons from building a billion-parameter Text-to-Speech model on 100K hours of datapaper
2024-02It’s Never Too Late: Fusing Acoustic Information into Large Language Models for Automatic Speech Recognitionpaper
2024-01Large Language Models are Efficient Learners of Noise-Robust Speech Recognitionpaper
2024-01ELLA-VELLA-V: Stable Neural Codec Language Modeling with Alignment-guided Sequence Reorderingpaper
2023-12SeamlessSeamless: Multilingual Expressive and Streaming Speech Translationpaper
2023-11Qwen-AudioQwen-Audio: Advancing Universal Audio Understanding via Unified Large-Scale Audio-Language Modelspaper
2023-10LauraGPTLauraGPT: Listen, Attend, Understand, and Regenerate Audio with GPTpaper
2023-10SALMONNSALMONN: Towards Generic Hearing Abilities for Large Language Modelspaper
2023-10UniAudioUniAudio: An Audio Foundation Model Toward Universal Audio Generationpaper
2023-10Whispering LLaMAWhispering LLaMA: A Cross-Modal Generative Error Correction Framework for Speech Recognitionpaper
2023-09VoxtLMVoxtlm: unified decoder-only models for consolidating speech recognition/synthesis and speech/text continuation taskspaper
2023-09LTU-ASJoint Audio and Speech Understandingpaper
2023-09SLMSLM: Bridge the thin gap between speech and text foundation modelspaper
2023-09Generative Speech Recognition Error Correction with Large Language Models and Task-Activating Promptingpaper
2023-08SpeechGenSpeechGen: Unlocking the Generative Power of Speech Language Models with Promptspaper
2023-08SpeechXSpeechX: Neural Codec Language Model as a Versatile Speech Transformerpaper
2023-08LLaSMLarge Language and Speech Modelpaper
2023-08SeamlessM4TMassively Multilingual & Multimodal Machine Translationpaper
2023-07Speech-LLaMAOn decoder-only architecture for speech-to-text and large language model integrationpaper
2023-07LLM-ASR(temp.)Prompting Large Language Models with Speech Recognition Abilitiespaper
2023-06AudioPaLMAudioPaLM: A Large Language Model That Can Speak and Listenpaper
2023-05Make-A-VoiceMake-A-Voice: Unified Voice Synthesis With Discrete Representationpaper
2023-05SpectronSpoken Question Answering and Speech Continuation Using Spectrogram-Powered LLMpaper
2023-05TWISTTextually Pretrained Speech Language Modelspaper
2023-05PengiPengi: An Audio Language Model for Audio Taskspaper
2023-05SoundStormEfficient Parallel Audio Generationpaper
2023-05LTUJoint Audio and Speech Understandingpaper
2023-05SpeechGPTEmpowering Large Language Models with Intrinsic Cross-Modal Conversational Abilitiespaper
2023-05VioLAUnified Codec Language Models for Speech Recognition, Synthesis, and Translationpaper
2023-05X-LLMX-LLM: Bootstrapping Advanced Large Language Models by Treating Multi-Modalities as Foreign Languagespaper
2023-03Google USMGoogle USM: Scaling Automatic Speech Recognition Beyond 100 Languagespaper
2023-03VALL-E XSpeak Foreign Languages with Your Own Voice: Cross-Lingual Neural Codec Language Modelingpaper
2023-02SPEAR-TTSSpeak, Read and Prompt: High-Fidelity Text-to-Speech with Minimal Supervisionpaper
2023-01VALL-ENeural Codec Language Models are Zero-Shot Text to Speech Synthesizerspaper
2022-12WhisperRobust Speech Recognition via Large-Scale Weak Supervisionpaper
2022-10AudioGenAudioGen: Textually Guided Audio Generationpaper
2022-09AudioLMAudioLM: a Language Modeling Approach to Audio Generationpaper
2022-05Wav2SeqWav2Seq: Pre-training Speech-to-Text Encoder-Decoder Models Using Pseudo Languagespaper
2022-04Unit mBARTEnhanced Direct Speech-to-Speech Translation Using Self-supervised Pre-training and Data Augmentationpaper
2022-03d-GSLMGenerative Spoken Dialogue Language Modelingpaper
2021-10SLAMSLAM: A Unified Encoder for Speech and Language Modeling via Speech-Text Joint Pre-Trainingpaper
2021-09p-GSLMText-Free Prosody-Aware Generative Spoken Language Modelingpaper
2021-02GSLMGenerative Spoken Language Modeling from Raw Audiopaper

🔱 Speech/Audio Codec Models

DateModel NamePaper TitleLink
2024-11PyramidCodecPyramidCodec: Hierarchical Codec for Long-form Music Generation in Audio Domainpaper
2024-11UniCodecUniversal Speech Token Learning Via Low-Bitrate Neural Codec and Pretrained Representationspaper
2024-11SimVQAddressing Representation Collapse in Vector Quantized Models with One Linear Layerpaper
2024-11MDCTCodecMDCTCodec: A Lightweight MDCT-based Neural Audio Codec towards High Sampling Rate and Low Bitrate Scenariospaper
2024-10APCodec+APCodec+: A Spectrum-Coding-Based High-Fidelity and High-Compression-Rate Neural Audio Codec with Staged Training Paradigmpaper
2024-10A Closer Look at Neural Codec Resynthesis: Bridging the Gap between Codec and Waveform Generationpaper
2024-10SNACSNAC: Multi-Scale Neural Audio Codecpaper
2024-10LSCodecLSCodec: Low-Bitrate and Speaker-Decoupled Discrete Speech Codecpaper
2024-10Co-design for codec and codec-LMTOWARDS CODEC-LM CO-DESIGN FOR NEURAL CODEC LANGUAGE MODELSpaper
2024-10VChangeCodecVChangeCodec: A High-efficiency Neural Speech Codec with Built-in Voice Changer for Real-time Communicationpaper
2024-10DC-SpinDC-Spin: A Speaker-invariant Speech Tokenizer For Spoken Language Modelspaper
2024-10TAAEScaling Transformers for Low-Bitrate High-Quality Speech Codingpaper
2024-10DM-CodecDM-Codec: Distilling Multimodal Representations for Speech Tokenizationpaper
2024-09MimiMoshi: a speech-text foundation model for real-time dialoguepaper
2024-09NDVQNDVQ: Robust Neural Audio Codec with Normal Distribution-Based Vector Quantizationpaper
2024-09SoCodecSoCodec: A Semantic-Ordered Multi-Stream Speech Codec for Efficient Language Model Based Text-to-Speech Synthesispaper
2024-09BigCodecBigCodec: Pushing the Limits of Low-Bitrate Neural Speech Codecpaper
2024-08X-CodecCodec Does Matter: Exploring the Semantic Shortcoming of Codec for Audio Language Modelpaper
2024-08WavTokenizerWavTokenizer: an Efficient Acoustic Discrete Codec Tokenizer for Audio Language Modelingpaper
2024-07Super-CodecSuperCodec: A Neural Speech Codec with Selective Back-Projection Networkpaper
2024-07dMeldMel: Speech Tokenization made Simplepaper
2024-06CodecFakeCodecFake: Enhancing Anti-Spoofing Models Against Deepfake Audios from Codec-Based Speech Synthesis Systemspaper
2024-06Single-CodecSingle-Codec: Single-Codebook Speech Codec towards High-Performance Speech Generationpaper
2024-06SQ-CodecSimpleSpeech: Towards Simple and Efficient Text-to-Speech with Scalar Latent Transformer Diffusion Modelspaper
2024-06PQ-VAEAddressing Index Collapse of Large-Codebook Speech Tokenizer with Dual-Decoding Product-Quantized Variational Auto-Encoderpaper
2024-06LLM-CodecUniAudio 1.5: Large Language Model-driven Audio Codec is A Few-shot Audio Task Learnerpaper
2024-05HILCodecHILCodec: High Fidelity and Lightweight Neural Audio Codecpaper
2024-04SemantiCodecSemantiCodec: An Ultra Low Bitrate Semantic Audio Codec for General Soundpaper
2024-04PromptCodecPromptCodec: High-Fidelity Neural Speech Codec using Disentangled Representation Learning based Adaptive Feature-aware Prompt Encoderspaper
2024-04ESCESC: Efficient Speech Coding with Cross-Scale Residual Vector Quantized Transformerspaper
2024-03FACodecNaturalSpeech 3: Zero-Shot Speech Synthesis with Factorized Codec and Diffusion Modelspaper
2024-02AP-CodecAPCodec: A Neural Audio Codec with Parallel Amplitude and Phase Spectrum Encoding and Decodingpaper
2024-02Language-CodecLanguage-Codec: Reducing the Gaps Between Discrete Codec Representation and Speech Language Modelspaper
2024-01ScoreDecScoreDec: A Phase-preserving High-Fidelity Audio Codec with A Generalized Score-based Diffusion Post-filterpaper
2023-11HierSpeech++HierSpeech++: Bridging the Gap between Semantic and Acoustic Representation of Speech by Hierarchical Variational Inference for Zero-shot Speech Synthesispaper
2023-10TiCodecFEWER-TOKEN NEURAL SPEECH CODEC WITH TIME-INVARIANT CODESpaper
2023-09RepCodecRepCodec: A Speech Representation Codec for Speech Tokenizationpaper
2023-09FunCodecFunCodec: A Fundamental, Reproducible and Integrable Open-source Toolkit for Neural Speech Codecpaper
2023-08SpeechTokenizerSpeechtokenizer: Unified speech tokenizer for speech large language modelspaper
2023-06VOCOSVOCOS: CLOSING THE GAP BETWEEN TIME-DOMAIN AND FOURIER-BASED NEURAL VOCODERS FOR HIGH-QUALITY AUDIO SYNTHESISpaper
2023-06Descript-audio-codecHigh-Fidelity Audio Compression with Improved RVQGANpaper
2023-05AudioDecAudiodec: An open-source streaming highfidelity neural audio codecpaper
2023-05HiFi-CodecHifi-codec: Group-residual vector quantization for high fidelity audio codecpaper
2023-03LMCodecLMCodec: A Low Bitrate Speech Codec With Causal Transformer Modelspaper
2022-11Disen-TF-CodecDisentangled Feature Learning for Real-Time Neural Speech Codingpaper
2022-10EnCodecHigh fidelity neural audio compressionpaper
2022-07S-TFNetCross-Scale Vector Quantization for Scalable Neural Speech Codingpaper
2022-01TFNetEnd-to-End Neural Speech Coding for Real-Time Communicationspaper
2021-07SoundStreamSoundStream: An End-to-End Neural Audio Codecpaper

Speech/Audio Representation Models

DateModel NamePaper TitleLink
2024-09NEST-RQNEST-RQ: Next Token Prediction for Speech Self-Supervised Pre-Trainingpaper
2024-01EATSelf-Supervised Pre-Training with Efficient Audio Transformerpaper
2023-10MR-HuBERTMulti-resolution HuBERT: Multi-resolution Speech Self-Supervised Learning with Masked Unit Predictionpaper
2023-10SpeechFlowGenerative Pre-training for Speech with Flow Matchingpaper
2023-09WavLabLMJoint Prediction and Denoising for Large-scale Multilingual Self-supervised Learningpaper
2023-08W2v-BERT 2.0Massively Multilingual & Multimodal Machine Translationpaper
2023-07Whisper-ATNoise-Robust Automatic Speech Recognizers are Also Strong General Audio Event Taggerspaper
2023-06ATSTSelf-supervised Audio Teacher-Student Transformer for Both Clip-level and Frame-level Taskspaper
2023-05SPINSelf-supervised Fine-tuning for Improved Content Representations by Speaker-invariant Clusteringpaper
2023-05DinoSRSelf-Distillation and Online Clustering for Self-supervised Speech Representation Learningpaper
2023-05NFASelf-supervised neural factor analysis for disentangling utterance-level speech representationspaper
2022-12Data2vec 2.0Efficient Self-supervised Learning with Contextualized Target Representations for Vision, Speech and Languagepaper
2022-12BEATsAudio Pre-Training with Acoustic Tokenizerspaper
2022-11MT4SSLMT4SSL: Boosting Self-Supervised Speech Representation Learning by Integrating Multiple Targetspaper
2022-08DINONon-contrastive self-supervised learning of utterance-level speech representationspaper
2022-07Audio-MAEMasked Autoencoders that Listenpaper
2022-04MAESTROMatched Speech Text Representations through Modality Matchingpaper
2022-03MAE-ASTMasked Autoencoding Audio Spectrogram Transformerpaper
2022-03LightHuBERTLightweight and Configurable Speech Representation Learning with Once-for-All Hidden-Unit BERTpaper
2022-02Data2vecA General Framework for Self-supervised Learning in Speech, Vision and Languagepaper
2021-10WavLMWavLM: Large-Scale Self-Supervised Pre-Training for Full Stack Speech Processingpaper
2021-08W2v-BERTCombining Contrastive Learning and Masked Language Modeling for Self-Supervised Speech Pre-Trainingpaper
2021-07mHuBERTDirect speech-to-speech translation with discrete unitspaper
2021-06HuBERTSelf-Supervised Speech Representation Learning by Masked Prediction of Hidden Unitspaper
2021-03BYOL-ASelf-Supervised Learning for General-Purpose Audio Representationpaper
2020-12DeCoAR2.0DeCoAR 2.0: Deep Contextualized Acoustic Representations with Vector Quantizationpaper
2020-07TERATERA: Self-Supervised Learning of Transformer Encoder Representation for Speechpaper
2020-06Wav2vec2.0wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representationspaper
2019-10APCGenerative Pre-Training for Speech with Autoregressive Predictive Codingpaper
2018-07CPCRepresentation Learning with Contrastive Predictive Codingpaper

🔱 Related Repository