🚀 Ichigo-llama3s 模型
Ichigo-llama3s 模型家族由 Homebrew Research 開發併發布,該模型家族能夠原生理解音頻和文本輸入。此模型在聲音理解能力上有顯著提升,可有效處理多輪語音對話,並能在嘈雜環境中保持良好性能,適用於多種研究應用場景。
🚀 快速開始
你可以通過 Google Colab Notebook 來試用這個模型。
首先,我們需要將音頻文件轉換為聲音令牌:
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)
✨ 主要特性
- 多模態輸入理解:原生支持音頻和文本輸入,能夠處理複雜的多模態信息。
- 增強的聲音處理能力:在多輪語音對話和嘈雜環境下表現出色,具有更好的魯棒性。
- 廣泛的應用場景:主要用於研究領域,可推動聲音理解相關技術的發展。
📚 詳細文檔
模型詳情
我們開發併發布了 Ichigo-llama3s 模型家族。該模型家族能夠原生理解音頻和文本輸入。
此模型是 homebrewltd/Ichigo-llama3.1-s-base-v0.3 的監督微調(SFT)版本,在來自 Instruction Speech WhisperVQ v4 數據集的超過 10 億個標記上進行訓練。該數據集基於 Instruction Speech WhisperVQ v3 構建,增加了多輪語音對話和噪聲抑制能力,從而提高了性能。因此,該模型在面對嘈雜的環境輸入時表現出更強的魯棒性,並增強了多輪對話能力,使其在實際應用中更加可靠。
模型開發者:Homebrew Research。
輸入:文本和聲音。
輸出:文本。
模型架構:Llama-3。
語言:英語。
預期用途
預期用例:該模型家族主要用於研究應用。此版本旨在進一步提高大語言模型的聲音理解能力。
禁止用途:嚴禁以任何違反適用法律法規的方式使用 llama3-s。
🔧 技術細節
訓練過程
訓練指標圖像
以下是訓練損失曲線的可視化快照:

模型 |
MMLU 得分 |
llama3.1-instruct-8b |
69.40 |
ichigo-llama3.1-s-v0.4 |
64.66 |
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 |
硬件
GPU 配置:8 塊 NVIDIA H100 - SXM - 80GB 組成的集群。
GPU 使用情況:
訓練參數
我們使用 torchtune 庫實現最新的 FSDP2 訓練代碼。
參數 |
指令微調 |
輪數 |
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}
🙏 致謝