Ichigo Llama3.1 S Instruct V0.3 Phase 2
Ichigo-llama3s系列模型原生支持音频和文本输入理解,基于Llama-3架构,使用WhisperVQ作为音频文件的tokenizer。
下载量 16
发布时间 : 9/17/2024
模型简介
该模型主要用于研究应用,旨在提升大语言模型的音频理解能力。支持英语,输入为文本和音频,输出为文本。
模型特点
多模态输入支持
原生支持音频和文本输入理解,扩展了传统LLM的能力。
WhisperVQ音频tokenizer
使用WhisperVQ作为音频文件的tokenizer,提升了音频处理的效率和质量。
研究导向
主要用于研究应用,特别关注音频理解能力的提升。
模型能力
音频理解
文本生成
多模态输入处理
使用案例
研究应用
音频指令理解
理解并执行基于音频的指令,如语音命令。
在语音指令基准测试中获得较高分数。
多模态对话系统
构建支持音频和文本输入的对话系统。
🚀 Ichigo-llama3s 语音指令语言模型
Ichigo-llama3s 是 Homebrew Research 开发的一系列模型,能够原生理解音频和文本输入。该模型家族在语音理解能力上有显著提升,适用于相关的研究应用。
🚀 快速开始
你可以通过 Google Colab Notebook 来体验这个模型。
步骤 1:将音频文件转换为声音令牌
device = "cuda" if torch.cuda.is_available() else "cpu"
if not os.path.exists("whisper-vq-stoks-medium-en+pl-fixed.model"):
hf_hub_download(
repo_id="jan-hq/WhisperVQ",
filename="whisper-vq-stoks-medium-en+pl-fixed.model",
local_dir=".",
)
vq_model = RQBottleneckTransformer.load_model(
"whisper-vq-stoks-medium-en+pl-fixed.model"
).to(device)
vq_model.ensure_whisper(device)
def audio_to_sound_tokens(audio_path, target_bandwidth=1.5, device=device):
wav, sr = torchaudio.load(audio_path)
if sr != 16000:
wav = torchaudio.functional.resample(wav, sr, 16000)
with torch.no_grad():
codes = vq_model.encode_audio(wav.to(device))
codes = codes[0].cpu().tolist()
result = ''.join(f'<|sound_{num:04d}|>' for num in codes)
return f'<|sound_start|>{result}<|sound_end|>'
步骤 2:进行推理
def setup_pipeline(model_path, use_4bit=False, use_8bit=False):
tokenizer = AutoTokenizer.from_pretrained(model_path)
model_kwargs = {"device_map": "auto"}
if use_4bit:
model_kwargs["quantization_config"] = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4",
)
elif use_8bit:
model_kwargs["quantization_config"] = BitsAndBytesConfig(
load_in_8bit=True,
bnb_8bit_compute_dtype=torch.bfloat16,
bnb_8bit_use_double_quant=True,
)
else:
model_kwargs["torch_dtype"] = torch.bfloat16
model = AutoModelForCausalLM.from_pretrained(model_path, **model_kwargs)
return pipeline("text-generation", model=model, tokenizer=tokenizer)
def generate_text(pipe, messages, max_new_tokens=64, temperature=0.0, do_sample=False):
generation_args = {
"max_new_tokens": max_new_tokens,
"return_full_text": False,
"temperature": temperature,
"do_sample": do_sample,
}
output = pipe(messages, **generation_args)
return output[0]['generated_text']
# 使用示例
llm_path = "homebrewltd/llama3.1-s-instruct-v0.2"
pipe = setup_pipeline(llm_path, use_8bit=True)
✨ 主要特性
- 多模态输入:原生支持音频和文本输入。
- 语义令牌实验:使用 WhisperVQ 作为音频文件的分词器,扩展了语义令牌实验。
📦 安装指南
文档未提及具体安装步骤,可参考快速开始部分的代码示例进行环境配置和模型使用。
💻 使用示例
基础用法
# 转换音频文件为声音令牌
device = "cuda" if torch.cuda.is_available() else "cpu"
if not os.path.exists("whisper-vq-stoks-medium-en+pl-fixed.model"):
hf_hub_download(
repo_id="jan-hq/WhisperVQ",
filename="whisper-vq-stoks-medium-en+pl-fixed.model",
local_dir=".",
)
vq_model = RQBottleneckTransformer.load_model(
"whisper-vq-stoks-medium-en+pl-fixed.model"
).to(device)
vq_model.ensure_whisper(device)
def audio_to_sound_tokens(audio_path, target_bandwidth=1.5, device=device):
wav, sr = torchaudio.load(audio_path)
if sr != 16000:
wav = torchaudio.functional.resample(wav, sr, 16000)
with torch.no_grad():
codes = vq_model.encode_audio(wav.to(device))
codes = codes[0].cpu().tolist()
result = ''.join(f'<|sound_{num:04d}|>' for num in codes)
return f'<|sound_start|>{result}<|sound_end|>'
# 进行推理
def setup_pipeline(model_path, use_4bit=False, use_8bit=False):
tokenizer = AutoTokenizer.from_pretrained(model_path)
model_kwargs = {"device_map": "auto"}
if use_4bit:
model_kwargs["quantization_config"] = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4",
)
elif use_8bit:
model_kwargs["quantization_config"] = BitsAndBytesConfig(
load_in_8bit=True,
bnb_8bit_compute_dtype=torch.bfloat16,
bnb_8bit_use_double_quant=True,
)
else:
model_kwargs["torch_dtype"] = torch.bfloat16
model = AutoModelForCausalLM.from_pretrained(model_path, **model_kwargs)
return pipeline("text-generation", model=model, tokenizer=tokenizer)
def generate_text(pipe, messages, max_new_tokens=64, temperature=0.0, do_sample=False):
generation_args = {
"max_new_tokens": max_new_tokens,
"return_full_text": False,
"temperature": temperature,
"do_sample": do_sample,
}
output = pipe(messages, **generation_args)
return output[0]['generated_text']
# 使用示例
llm_path = "homebrewltd/llama3.1-s-instruct-v0.2"
pipe = setup_pipeline(llm_path, use_8bit=True)
📚 详细文档
模型详情
- 模型开发者:Homebrew Research。
- 输入:文本和声音。
- 输出:文本。
- 模型架构:Llama - 3。
- 语言:英语。
我们开发并发布了 Ichigo-llama3s 模型家族。该家族能够原生理解音频和文本输入。我们使用 Instruction Speech WhisperVQ v3 数据集中近 10 亿个令牌,从 homebrewltd/Ichigo-llama3.1-s-base-v0.3 开始,将 WhisperVQ 作为音频文件的分词器,扩展了语义令牌实验。这是第 7000 步的模型检查点。由于训练数据中存在一些噪声,该模型在语音指令基准测试中的得分人为偏高。
预期用途
- 预期用例:主要用于研究应用,此版本旨在进一步提高大语言模型的声音理解能力。
- 禁止用途:严禁以任何违反适用法律法规的方式使用 llama3 - s。
🔧 技术细节
训练过程
训练指标图像
MMLU 评估
模型 | MMLU 得分 |
---|---|
llama3.5 - instruct - 8b | 69.40 |
ichigo - llama3.1 - s - v0.3: phase 3 | 63.79 |
ichigo - llama3.1 - s - v0.3: phase 2 | 63.08 |
ichigo - llama3.1 - s - base - v0.3 | 42.11 |
llama3.5 - instruct - v0.2 | 50.27 |
AudioBench 评估
模型基准 | Open - hermes Instruction Audio (GPT - 4 - O judge 0:5) | Alpaca Instruction Audio (GPT - 4 - O judge 0:5) |
---|---|---|
[Llama3.1 - s - v2](https://huggingface.co/homebrewltd/llama3 - s - instruct - v0.2) | 3.45 | 3.53 |
[Ichigo - llama3.1 - s v0.3 - phase2 - cp7000](https://huggingface.co/homebrewltd/Ichigo - llama3.1 - s - instruct - v0.3 - phase - 2) | 3.42 | 3.62 |
[Ichigo - llama3.1 - s v0.3 - phase2 - cplast](https://huggingface.co/jan - hq/llama3 - s - instruct - v0.3 - checkpoint - last) | 3.31 | 3.6 |
[Ichigo - llama3.1 - s v0.3 - phase3](https://huggingface.co/homebrewltd/Ichigo - llama3.1 - s - instruct - v0.3 - phase - 3) | 3.64 | 3.68 |
[Qwen2 - audio - 7B](https://huggingface.co/Qwen/Qwen2 - Audio - 7B) | 2.63 | 2.24 |
硬件
- GPU 配置:8 个 NVIDIA H100 - SXM - 80GB 的集群。
- GPU 使用时间:持续训练 12 小时。
训练参数
我们使用 torchtune 库实现最新的 FSDP2 训练代码。
参数 | 指令微调 |
---|---|
Epoch | 1 |
全局批量大小 | 256 |
学习率 | 7e - 5 |
学习率调度器 | 带热身的余弦调度器 |
优化器 | Adam torch fused |
热身比例 | 0.01 |
权重衰减 | 0.005 |
最大序列长度 | 4096 |
📄 许可证
本项目采用 apache - 2.0 许可证。
📖 引用信息
BibTeX:
@article{Llama3-S: Sound Instruction Language Model 2024,
title={Llama3-S},
author={Homebrew Research},
year=2024,
month=August,
url={https://huggingface.co/homebrewltd/llama3.1-s-2024-08-20}
🙏 致谢
- WhisperSpeech
- [Meta - Llama - 3.1 - 8B - Instruct ](https://huggingface.co/meta - llama/Meta - Llama - 3.1 - 8B - Instruct)
Phi 4 Multimodal Instruct
MIT
Phi-4-multimodal-instruct是一款轻量级开源多模态基础模型,融合了Phi-3.5和4.0模型的语言、视觉及语音研究数据。支持文本、图像和音频输入,生成文本输出,并具备128K token的上下文长度。
文本生成音频
Transformers 支持多种语言

P
microsoft
584.02k
1,329
Ultravox V0 5 Llama 3 2 1b
MIT
Ultravox是一个基于Llama3.2-1B和Whisper-large-v3构建的多模态语音大语言模型,能够同时处理语音和文本输入。
文本生成音频
Transformers 支持多种语言

U
fixie-ai
167.25k
21
Seamless M4t V2 Large
SeamlessM4T v2 是 Facebook 发布的大规模多语言多模态机器翻译模型,支持近100种语言的语音和文本翻译。
文本生成音频
Transformers 支持多种语言

S
facebook
64.59k
821
Ultravox V0 3
MIT
Ultravox 是一个基于 Llama3.1-8B-Instruct 和 Whisper-small 构建的多模态语音大语言模型,能够同时处理语音和文本输入。
文本生成音频
Transformers 英语

U
fixie-ai
48.30k
17
Ultravox V0 5 Llama 3 1 8b
MIT
Ultravox是一款基于Llama3.1-8B-Instruct和whisper-large-v3-turbo构建的多模态语音大语言模型,能够同时处理语音和文本输入。
文本生成音频
Transformers 支持多种语言

U
fixie-ai
17.86k
12
Hf Seamless M4t Medium
SeamlessM4T 是一个多语言翻译模型,支持语音和文本的输入输出,实现跨语言交流。
文本生成音频
Transformers

H
facebook
14.74k
30
Granite Speech 3.3 8b
Apache-2.0
专为自动语音识别(ASR)和自动语音翻译(AST)设计的紧凑高效语音语言模型,采用双阶段设计处理音频和文本
文本生成音频
Transformers 英语

G
ibm-granite
5,532
35
Voila Tokenizer
MIT
Voila是一个大型语音-语言基础模型系列,旨在提升人机交互体验,支持多种音频任务和语言。
文本生成音频
Transformers 支持多种语言

V
maitrix-org
4,912
3
Hf Seamless M4t Large
SeamlessM4T 是一个支持多语言语音和文本翻译的统一模型,能够实现语音到语音、语音到文本、文本到语音和文本到文本的翻译任务。
文本生成音频
Transformers

H
facebook
4,648
57
Minicpm O 2 6 Int4
MiniCPM-o 2.6的int4量化版本,显著降低GPU显存占用,支持多模态处理能力。
文本生成音频
Transformers 其他

M
openbmb
4,249
42
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98