模型概述
模型特點
模型能力
使用案例
🚀 Hymba-1.5B-Base
Hymba-1.5B-Base 是一個基礎的文本生成模型,可應用於各種自然語言生成任務。它採用混合架構,具備商業使用許可,能為開發者提供高效且實用的文本處理解決方案。
🚀 快速開始
環境搭建
由於 Hymba-1.5B-Base 使用了 FlexAttention,它依賴於 Pytorch2.5 及其他相關依賴項,我們提供兩種方式來搭建環境:
- [本地安裝] 使用我們提供的
setup.sh
腳本安裝相關包(支持 CUDA 12.1/12.4):
wget --header="Authorization: Bearer YOUR_HF_TOKEN" https://huggingface.co/nvidia/Hymba-1.5B-Base/resolve/main/setup.sh
bash setup.sh
- [Docker] 我們提供了一個已安裝 Hymba 所有依賴項的 Docker 鏡像。你可以使用以下命令下載 Docker 鏡像並啟動容器:
docker pull ghcr.io/tilmto/hymba:v1
docker run --gpus all -v /home/$USER:/home/$USER -it ghcr.io/tilmto/hymba:v1 bash
與 Hymba-1.5B-Base 對話
環境搭建完成後,你可以使用以下腳本與我們的模型進行對話:
from transformers import LlamaTokenizer, AutoModelForCausalLM, AutoTokenizer, AutoModel
import torch
# 加載分詞器和模型
repo_name = "nvidia/Hymba-1.5B-Base"
tokenizer = AutoTokenizer.from_pretrained(repo_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(repo_name, trust_remote_code=True)
model = model.cuda().to(torch.bfloat16)
# 與 Hymba 對話
prompt = input()
inputs = tokenizer(prompt, return_tensors="pt").to('cuda')
outputs = model.generate(**inputs, max_length=64, do_sample=False, temperature=0.7, use_cache=True)
response = tokenizer.decode(outputs[0][inputs['input_ids'].shape[1]:], skip_special_tokens=True)
print(f"模型回覆: {response}")
✨ 主要特性
- 混合架構:模型採用 Mamba 和注意力頭並行運行的混合架構,結合了標準注意力頭和 Mamba 頭的優勢。
- 元令牌機制:在每個提示前添加一組可學習的元令牌,有助於提高模型的效能。
- KV 緩存共享:模型在兩層之間和單層內的頭之間共享 KV 緩存,提高了計算效率。
- 滑動窗口注意力:90% 的注意力層採用滑動窗口注意力,優化了注意力計算。
- 商業可用:該模型可用於商業用途。
📦 安裝指南
環境搭建
由於 Hymba-1.5B-Base 使用了 FlexAttention,它依賴於 Pytorch2.5 及其他相關依賴項,我們提供兩種方式來搭建環境:
- [本地安裝] 使用我們提供的
setup.sh
腳本安裝相關包(支持 CUDA 12.1/12.4):
wget --header="Authorization: Bearer YOUR_HF_TOKEN" https://huggingface.co/nvidia/Hymba-1.5B-Base/resolve/main/setup.sh
bash setup.sh
- [Docker] 我們提供了一個已安裝 Hymba 所有依賴項的 Docker 鏡像。你可以使用以下命令下載 Docker 鏡像並啟動容器:
docker pull ghcr.io/tilmto/hymba:v1
docker run --gpus all -v /home/$USER:/home/$USER -it ghcr.io/tilmto/hymba:v1 bash
💻 使用示例
基礎用法
from transformers import LlamaTokenizer, AutoModelForCausalLM, AutoTokenizer, AutoModel
import torch
# 加載分詞器和模型
repo_name = "nvidia/Hymba-1.5B-Base"
tokenizer = AutoTokenizer.from_pretrained(repo_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(repo_name, trust_remote_code=True)
model = model.cuda().to(torch.bfloat16)
# 與 Hymba 對話
prompt = input()
inputs = tokenizer(prompt, return_tensors="pt").to('cuda')
outputs = model.generate(**inputs, max_length=64, do_sample=False, temperature=0.7, use_cache=True)
response = tokenizer.decode(outputs[0][inputs['input_ids'].shape[1]:], skip_special_tokens=True)
print(f"模型回覆: {response}")
📚 詳細文檔
模型概述
Hymba-1.5B-Base 是一個基礎的文本生成模型,可用於各種自然語言生成任務。該模型採用混合架構,結合了 Mamba 和注意力頭的優勢。元令牌機制有助於提高模型的效能,同時模型在兩層之間和單層內的頭之間共享 KV 緩存,提高了計算效率。90% 的注意力層採用滑動窗口注意力,優化了注意力計算。該模型可用於商業用途。
模型開發者:NVIDIA
模型訓練時間:Hymba-1.5B-Base 於 2024 年 9 月 1 日至 2024 年 11 月 10 日期間進行訓練。
許可證:該模型根據 NVIDIA 開放模型許可協議 發佈。
模型架構
💡 我們在 GitHub 上發佈了 Hymba 的最小實現,以幫助開發者理解並在自己的模型中實現其設計原則。查看鏈接:barebones-hymba。
Hymba-1.5B-Base 的模型嵌入大小為 1600,有 25 個注意力頭,MLP 中間維度為 5504,總共 32 層,16 個 SSM 狀態,3 個全注意力層,其餘為滑動窗口注意力。與標準 Transformer 不同,Hymba 中的每個注意力層都有標準注意力頭和 Mamba 頭的並行混合組合。此外,它使用了分組查詢注意力(GQA)和旋轉位置嵌入(RoPE)。
該架構的特點包括:
- 並行處理:在同一層內融合注意力頭和 SSM 頭,對相同輸入進行並行和互補處理。
- 元令牌機制:在輸入序列前添加元令牌,與所有後續令牌交互,存儲重要信息並減輕注意力中的“強制關注”負擔。
- 高效計算:集成跨層 KV 共享和全局 - 局部注意力,進一步提高內存和計算效率。
性能亮點
- Hymba-1.5B-Base 在性能上優於所有小於 20 億參數的公開模型。
微調 Hymba
LMFlow 是一個用於微調大語言模型的完整管道。以下步驟提供了一個使用 LMFlow 微調 Hymba-1.5B-Base
模型的示例:
- 使用 Docker
docker pull ghcr.io/tilmto/hymba:v1
docker run --gpus all -v /home/$USER:/home/$USER -it ghcr.io/tilmto/hymba:v1 bash
- 安裝 LMFlow
git clone https://github.com/OptimalScale/LMFlow.git
cd LMFlow
conda create -n lmflow python=3.9 -y
conda activate lmflow
conda install mpi4py
pip install -e .
- 使用以下命令微調模型
cd LMFlow
bash ./scripts/run_finetune_hymba.sh
使用 LMFlow,你還可以在自定義數據集上微調模型。你只需要將數據集轉換為 LMFlow 數據格式。除了全量微調,你還可以使用 DoRA、LoRA、LISA、Flash Attention 等加速技術高效微調 Hymba。更多詳情,請參考 LMFlow for Hymba 文檔。
評估
我們使用 LM Evaluation Harness
來評估模型。評估命令如下:
git clone --depth 1 https://github.com/EleutherAI/lm-evaluation-harness
git fetch --all --tags
git checkout tags/v0.4.4 # squad 完成任務與最新版本不兼容
cd lm-evaluation-harness
pip install -e .
lm_eval --model hf --model_args pretrained=nvidia/Hymba-1.5B-Base,dtype=bfloat16,trust_remote_code=True \
--tasks mmlu \
--num_fewshot 5 \
--batch_size 1 \
--output_path ./hymba_HF_base_lm-results \
--log_samples
lm_eval --model hf --model_args pretrained=nvidia/Hymba-1.5B-Base,dtype=bfloat16,trust_remote_code=True \
--tasks arc_easy,arc_challenge,piqa,winogrande,hellaswag \
--num_fewshot 0 \
--batch_size 1 \
--output_path ./hymba_HF_base_lm-results \
--log_samples
lm_eval --model hf --model_args pretrained=nvidia/Hymba-1.5B-Base,dtype=bfloat16,trust_remote_code=True \
--tasks squad_completion \
--num_fewshot 1 \
--batch_size 1 \
--output_path ./hymba_HF_base_lm-results \
--log_samples
侷限性
該模型在包含有毒語言、不安全內容和社會偏見的數據上進行訓練,這些數據最初是從互聯網上爬取的。因此,模型可能會放大這些偏見並返回有毒回覆,尤其是在接收到有毒提示時。即使提示本身不包含任何明確的冒犯性內容,模型也可能生成不準確的答案,遺漏關鍵信息,或包含無關或冗餘的文本,產生社會不可接受或不良的文本。
測試表明,該模型容易受到越獄攻擊。如果在 RAG 或代理環境中使用此模型,我們建議採用強大的輸出驗證控制,以確保用戶控制的模型輸出的安全風險與預期用例一致。
倫理考量
NVIDIA 認為可信 AI 是一項共同責任,我們已經制定了政策和實踐,以支持各種 AI 應用的開發。當按照我們的服務條款下載或使用該模型時,開發者應與內部模型團隊合作,確保該模型符合相關行業和用例的要求,並解決不可預見的產品濫用問題。 請 在此 報告安全漏洞或 NVIDIA AI 相關問題。
引用
@misc{dong2024hymbahybridheadarchitecturesmall,
title={Hymba: A Hybrid-head Architecture for Small Language Models},
author={Xin Dong and Yonggan Fu and Shizhe Diao and Wonmin Byeon and Zijia Chen and Ameya Sunil Mahabaleshwarkar and Shih-Yang Liu and Matthijs Van Keirsbilck and Min-Hung Chen and Yoshi Suhara and Yingyan Lin and Jan Kautz and Pavlo Molchanov},
year={2024},
eprint={2411.13676},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2411.13676},
}
🔧 技術細節
Hymba-1.5B-Base 的模型嵌入大小為 1600,有 25 個注意力頭,MLP 中間維度為 5504,總共 32 層,16 個 SSM 狀態,3 個全注意力層,其餘為滑動窗口注意力。與標準 Transformer 不同,Hymba 中的每個注意力層都有標準注意力頭和 Mamba 頭的並行混合組合。此外,它使用了分組查詢注意力(GQA)和旋轉位置嵌入(RoPE)。該架構在同一層內融合注意力頭和 SSM 頭,對相同輸入進行並行和互補處理;通過在輸入序列前添加元令牌,與所有後續令牌交互,存儲重要信息並減輕注意力中的“強制關注”負擔;集成跨層 KV 共享和全局 - 局部注意力,進一步提高內存和計算效率。
📄 許可證
該模型根據 NVIDIA 開放模型許可協議 發佈。



