🚀 Slamming:在一天内用单块GPU训练语音语言模型
本项目介绍了一种在单块学术GPU上24小时内训练高质量语音语言模型(SLM)的方法。通过对模型初始化、架构、合成训练数据等方面的实证分析,实现了高效训练,且该方法在更多计算资源下也能取得良好效果。
🚀 快速开始
若你想了解模型的完整使用说明,请参考官方仓库 - github。
✨ 主要特性
- 高效训练:能够在单块学术GPU上24小时内训练出高质量的语音语言模型。
- 可扩展性:训练方法在更多计算资源下也能取得与领先SLM相媲美的结果。
- 多数据集支持:使用了多个数据集进行预训练和微调,包括LibriSpeech、Libri - Light、sTinyStories和SpokenSwag等。
📦 安装指南
文档未提及具体安装步骤,故跳过此章节。
💻 使用示例
文档未提供代码示例,故跳过此章节。
📚 详细文档
模型详情
模型描述
此语音语言模型在论文"Slamming: Training a Speech Language Model on One GPU in a Day"中被提出,专注于高效训练。它基于[Qwen/Qwen2.5 - 0.5B](https://huggingface.co/Qwen/Qwen2.5 - 0.5B)进行微调,词汇表包含从[mhubert - 25hz](https://huggingface.co/slprl/mhubert - base - 25hz)的第11层提取的500个语音标记。
该模型在LibriSpeech、Libri - Light的子集以及合成数据集sTinyStories上使用下一个标记预测进行预训练,随后在SpokenSwag上使用DPO进行微调。
属性 |
详情 |
开发团队 |
SLP - RL |
模型类型 |
SpeechLM |
许可证 |
MIT |
微调基础模型 |
[Qwen/Qwen2.5 - 0.5B](https://huggingface.co/Qwen/Qwen2.5 - 0.5B) |
模型来源
- 仓库:[https://github.com/slp - rl/slamkit](https://github.com/slp - rl/slamkit)
- 论文:https://arxiv.org/abs/2502.15814
- 演示:[https://pages.cs.huji.ac.il/adiyoss - lab/slamming/](https://pages.cs.huji.ac.il/adiyoss - lab/slamming/)
用途
这个基础语音语言模型可用于生成语音片段的延续内容,也可作为进一步微调的基础。更多使用细节请参考_SlamKit_ [代码库](https://github.com/slp - rl/slamkit),并查看[演示页面](https://pages.cs.huji.ac.il/adiyoss - lab/slamming/)获取一些生成示例。
适用范围外的使用
该模型在经过精心挑选的语音数据集上进行训练,这些数据集主要包含有声书籍和故事,因此其输出不应被视为事实信息。
训练详情
强烈建议用户阅读完整的论文以了解完整的训练细节,以下是简要概述。
训练数据
该模型在预训练阶段使用了LibriSpeech训练子集、[Libri - Light](https://ai.meta.com/tools/libri - light/)和合成数据集sTinyStories。在微调阶段,还使用DPO在合成数据集SpokenSwag上进行训练。
训练过程
该模型通过在多个数据集上进行下一个标记预测训练,然后在SpokenSwag上使用DPO进行训练。完整的训练配方请参考论文或[代码](https://github.com/slp - rl/slamkit)。
预处理
使用[Hubert - 25hz](https://huggingface.co/slprl/mhubert - base - 25hz)从音频中提取语音标记,并使用textlesslib中与模型一起发布的官方kmeans进行量化。对单元进行去重处理。若你想了解完整细节,建议探索官方仓库 - [github](https://github.com/slp - rl/slamkit)。
评估
论文提供了完整的结果,这里给出一些结果,并建议参考[演示页面](https://pages.cs.huji.ac.il/adiyoss - lab/slamming/)听取一些样本。
模型 |
GPU数量 |
参数 |
标记数量 |
sBLIMP ↑ |
sStoryCloze ↑ |
tStoryCloze ↑ |
GenPPL ↓ |
Auto - BLEU ↓ |
仅语音预训练 |
|
|
|
|
|
|
|
|
GSLM |
8×V100 |
100M |
1B |
54.2 |
53.3 |
66.6 |
— |
— |
SyllableLM |
4×A40 |
300M |
16B |
63.7 |
— |
75.4 |
— |
— |
TWIST - 350M |
8×V100 |
305M |
10.8B |
56.2 |
— |
— |
137.3 |
3.46 |
TWIST - 1.3B |
32×V100 |
1B |
10.8B |
57.0 |
52.4 |
70.6 |
131.8 |
3.20 |
TWIST - 7B |
32×V100 |
7B |
36B |
59.0 |
55.3 |
74.1 |
93.74 |
3.06 |
TWIST - 13B |
32×V100 |
13B |
36B |
59.2 |
55.4 |
76.4 |
— |
— |
Scaled Optimal |
— |
823M |
82B |
61.3 |
56.7 |
78.0 |
— |
— |
Moshi |
?×H100 |
7B |
? |
58.9 |
58.7 |
81.8 |
— |
— |
SpiritLM |
64×A100 |
7B |
100B |
58.0 |
54.8 |
72.9 |
— |
— |
使用文本/偏好优化 |
|
|
|
|
|
|
|
|
Scaling Interleaving |
— |
9B |
~1T |
— |
62.4 |
82.9 |
— |
— |
Moshi |
?×H100 |
7B |
~720B |
58.8 |
60.8 |
83.0 |
— |
— |
SpiritLM |
64×A100 |
7B |
100B |
58.3 |
61.0 |
82.9 |
— |
— |
AlignSLM - 1.3B |
64×A100 |
1B |
10.8B + ~158B |
59.8 |
55.0 |
80.0 |
— |
— |
AlignSLM - 7B |
64×A100 |
7B |
36B + ~158B |
62.3 |
61.1 |
86.8 |
— |
— |
我们的模型 (Slam) |
|
|
|
|
|
|
|
|
Slam (-DPO) |
2×A100 |
358M |
16.7B |
58.53 |
58.15 |
80.71 |
67.3 |
3.25 |
Slam |
1×A5000 |
358M |
1.4B + 5M |
58.86 |
58.04 |
82.04 |
62.8 |
3.88 |
Slam (scaled) |
2×A100 |
358M |
16.7B + 9M |
61.11 |
61.30 |
84.18 |
46.6 |
3.75 |
计算基础设施
该模型是在论文"Slamming: Training a Speech Language Model on One GPU in a Day"的研究背景下进行训练的,专注于高效训练。
硬件
该模型仅使用2块Nvidia A100 GPU训练了48小时。
软件
模型使用[SlamKit](https://github.com/slp - rl/slamkit)代码库进行训练,该代码库基于🤗transformers构建,扩展了其对语音语言模型的简单高效训练支持。
🔧 技术细节
该模型在单块学术GPU上24小时内训练高质量语音语言模型的技术,主要通过对模型初始化、架构、合成训练数据、偏好优化等方面的实证分析实现。具体可参考论文Slamming: Training a Speech Language Model on One GPU in a Day。
📄 许可证
本项目采用MIT许可证。
📚 引用
若你使用了本模型或相关研究,请使用以下BibTeX引用:
@misc{maimon2025slamming,
title={Slamming: Training a Speech Language Model on One GPU in a Day},
author={Gallil Maimon and Avishai Elmakies and Yossi Adi},
year={2025},
eprint={2502.15814},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2502.15814},
}