《大模型项目开发线上营第二期》文末开秒!!!
为了将语音能力整合到Llama3中,可以类似于我们用于视觉识别的方法(当然,截止到24年7月下旬,和视觉llama3.1一样,语言llama3.1 也暂未发布)
在输入端,结合了编码器和适配器来处理语音信号。利用系统提示(文本形式)来启用Llama 3在语音理解中的不同操作模式。如果没有提供系统提示,模型将作为通用的口语对话模型,能够有效地以与Llama 3文本版本一致的方式响应用户的语音
且对话历史被引入作为提示前缀,以改善多轮对话体验。我们还尝试了启用Llama 3用于自动语音识别(ASR)和自动语音翻译(AST)的系统提示
最终,Llama 3的语音接口支持多达34种语言,且还允许文本和语音的交替输入,使模型能够解决高级音频理解任务
最后,他们还尝试了一种语音生成方法,在这种方法中,实现了一个流式文本到语音(TTS)系统,该系统在语言模型解码过程中实时生成语音波形
具体实现时,基于专有的TTS系统设计了Llama 3的语音生成器,并且没有对语言模型进行语音生成的微调。相反,我们通过在推理时利用Llama 3的嵌入来专注于提高语音合成的延迟、准确性和自然性(Instead, we focus on improving speech synthesis latency, accuracy, and naturalness by leveraging Llama 3 embeddings at inference time)
在具体展开之前,我们先来回顾下包含视觉、语音能力的llama3的整体训练架构,如之前所述,其包含五个阶段的训练:1 语言模型预训练,2 多模态编码器预训练,3 视觉适配器训练,4 模型微调,5 语音适配器训练
语音理解层面的数据、架构及其训练
训练数据可以分为两类。预训练数据包括大量未标注的语音,用于以自监督的方式初始化语音编码器。监督微调数据包括语音识别、语音翻译和口语对话数据;这些数据用于在与大型语言模型集成时解锁特定能力
预训练数据。为了预训练语音编码器,策划了一个包含约1500万小时语音录音的数据集,涵盖大量语言。我们使用语音活动检测(VAD)模型过滤音频数据,并选择VAD阈值高于0.7的音频样本进行预训练 在语音预训练数据中,还注重确保没有个人身份信息(PII)。比如使用Presidio Analyzer来识别这些PII
语音识别和翻译数据。我们的ASR训练数据包含230K小时的手动转录语音记录,涵盖34种语言 我们的AST训练数据包含90K小时的双向翻译:从33种语言到英语以及从英语到33种语言。这些数据包含使用NLLB工具包(NLLB Team等,2022)生成的监督和合成数据。使用合成AST数据使我们能够提高低资源语言的模型质量。另,数据中的语音片段最长为60秒
口语对话数据。为了微调用于口语对话的语音适配器,Meta合成生成响应——通过要求语言模型响应这些提示的转录内容来生成语音提示(Fathullah等,2024年) 比如使用包含60K小时语音的ASR数据集的子集以这种方式生成合成数据 此外,通过在用于微调Llama 3的数据子集上运行Voicebox TTS系统(Le等,2024年)生成25K小时的合成数据,使用了几种启发式方法来选择与语音分布相匹配的微调数据子集。这些启发式方法包括关注相对简短、结构简单且没有非文本符号的prompt
1.2 语音理解模型的架构
在输入端,语音模块由两个连续的模块组成: 语音编码器和适配器
语音模块的输出直接作为token表示输入到语言模型中,从而实现语音和文本标记之间的直接交互
此外,我们引入了两个新的特殊token来封闭语音表示的序列
且语音模块与视觉模块有很大不同,后者通过交叉注意力层将多模态信息输入到语言模型中。相比之下,语音模块生成的嵌入可以无缝集成到文本token中,使语音接口能够利用Llama 3语言模型的所有功能
对于语音编码器
语音编码器是一个具有10亿参数的Conformer(Gulati等,2020)模型。模型的输入由80维的梅尔频谱图特征组成,这些特征首先由一个步幅为4的堆叠层处理,然后通过线性投影将帧长度减少到40毫秒
处理后的特征由一个包含24个Conformer层的编码器处理。每个Conformer层具有1536的潜在维度,由两个4096维度的Macron-net风格前馈网络、一个核大小为7的卷积模块和一个具有24个注意力头的旋转注意力模块(Su等,2024)组成
对于语音适配器
语音适配器包含大约1亿个参数。它由一个卷积层、一个旋转Transformer层和一个线性层组成。卷积层的核大小为3,步幅为2,旨在将语音帧长度减少到80毫秒。这使得模型能够为语言模型提供更粗粒度的特征
Transformer层具有3072的潜在维度和一个4096维度的前馈网络,在卷积下采样后进一步处理带有上下文的语音信息。最后,线性层将输出维度映射到与语言模型嵌入层匹配
1.3 语音理解模型的训练
语音模块的训练分为两个阶段进行
第一阶段,语音预训练,利用未标注的数据训练一个语音编码器,该编码器在不同语言和声学条件下表现出强大的泛化能力
在第二阶段,监督微调,适配器和预训练的编码器与语言模型集成,并与其共同训练,而LLM保持冻结状态。这使得模型能够响应语音输入。这个阶段使用与语音理解能力相对应的标注数据
多语言ASR和AST建模通常会导致语言混淆/干扰,从而导致性能下降
一种流行的缓解方法是在源端和目标端都加入语言识别(LID)信息。这可以在预定的方向上提高性能,但可能会带来通用性损失 例如,如果一个翻译系统在源端和目标端都需要LID,那么模型在训练中未见过的方向上可能不会表现出良好的零样本性能。因此,目前的挑战是设计一个系统,在某种程度上允许LID信息,但保持模型足够通用,以便我们可以让模型在未见过的方向上进行语音翻译
为了解决这个问题,我们设计了只包含目标端LID信息的系统提示。这些提示中的语音输入(源端)没有语言识别信息,这也可能使其能够处理代码切换的语音 对于ASR,我们使用以下系统提示:请用{language}重复我说的话:,其中 {language}来自34种语言之一(英语、法语等) 对于语音翻译,系统提示是:请将以下句子翻译成{language}:。这种设计已被证明在提示语言模型以所需语言响应方面是有效的。且在训练和推理过程中使用了相同的系统提示
对于语音预训练
使用自监督的BEST-RQ算法(Chiu等,2022)来预训练语音编码器,对输入的梅尔频谱图应用长度为32帧、概率为2.5%的掩码
如果语音话语超过60秒,会随机裁剪6000帧,对应60秒的语音。我们通过堆叠4个连续帧来量化梅尔频谱图特征,将320维向量投影到16维空间,并在包含8,192个向量的码书中执行基于余弦相似度度量的最近邻搜索。为了稳定预训练,使用了16个不同的码书。投影矩阵和码书是随机初始化的,并且在模型训练过程中不会更新。为了提高效率,多重软最大损失仅在被掩盖的帧上使用。编码器训练了500K步,全球批量大小为2,048个话语
对于监督微调
在监督微调阶段,预训练的语音编码器和随机初始化的适配器与Llama 3进一步联合优化。在此过
程中,语言模型保持不变。训练数据是ASR、AST和口语对话数据的混合,其中
Llama 3 8B 的语音模型经过 650K 次更新训练,使用 512 个语句的全局批量大小和初始学习率 10−4
Llama 3 70B 的语音模型经过 600K次更新训练,使用 768 个语句的全局批量大小和初始学习率 4 × 10−5
更多细节见七月在线「大模型项目开发线上营」
「大模型项目开发线上营 第二期」不止新学员青睐,大模型第一期学员大多数都续报了第二期。商用项目果然受用
校长July寄语
“为何讲大模型商用项目的课程很罕见
一方面,即便在大厂,虽有技术但没法讲其内部项目,而专门搞应用开发的小厂,很难将其赖之生存的项目拿出来讲
二方面,一般职业讲师 背后没有项目团队 只能搞个demo,至于一般教育机构也很难再搞个项目团队,成本大 招人难 做出成果更难
而我司教育团队外,我司去年专门成立了大模型项目开发团队(由我带全职和在大厂的兼职组成),且从「教育为主」,逐步转型到了「科技为主 教育为辅」”
现在报名加送:
① 一年GPU,封装了诸如ChatGLM3等各大主流大模型
② 一个VIP年卡「200多个AI小课、5个大模型小课(即ChatGPT原理、类ChatGPT微调实战、SD及其二次开发、垂直大模型实战、大模型数据处理实战)」
③多送1个大模型小课:LLM与langchain/知识图谱/数据库的实战
↓↓↓扫码了解详情/抢购↓↓↓
课程咨询可找苏苏老师VX:julyedukefu008或七月在线其他老师
热门跟贴