模型简介
模型特点
模型能力
使用案例
🚀 Hymba-1.5B-Instruct
Hymba-1.5B-Instruct 是一个基于 15 亿参数的模型,它在多种复杂重要任务上表现出色,如数学推理、函数调用和角色扮演等,并且可用于商业用途。
🚀 快速开始
步骤 1:环境搭建
由于 Hymba-1.5B-Instruct 使用了 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
步骤 2:与 Hymba-1.5B-Instruct 聊天
环境搭建完成后,你可以使用以下脚本与我们的模型进行对话:
from transformers import AutoModelForCausalLM, AutoTokenizer, StopStringCriteria, StoppingCriteriaList
import torch
# 加载分词器和模型
repo_name = "nvidia/Hymba-1.5B-Instruct"
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()
messages = [
{"role": "system", "content": "You are a helpful assistant."}
]
messages.append({"role": "user", "content": prompt})
# 应用聊天模板
tokenized_chat = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt").to('cuda')
stopping_criteria = StoppingCriteriaList([StopStringCriteria(tokenizer=tokenizer, stop_strings="</s>")])
outputs = model.generate(
tokenized_chat,
max_new_tokens=256,
do_sample=False,
temperature=0.7,
use_cache=True,
stopping_criteria=stopping_criteria
)
input_length = tokenized_chat.shape[1]
response = tokenizer.decode(outputs[0][input_length:], skip_special_tokens=True)
print(f"Model response: {response}")
Hymba-1.5B-Instruct 使用的提示模板如下,该模板已集成到分词器中,可以使用 tokenizer.apply_chat_template
应用:
<extra_id_0>System
{system prompt}
<extra_id_1>User
<tool> ... </tool>
<context> ... </context>
{prompt}
<extra_id_1>Assistant
<toolcall> ... </toolcall>
<extra_id_1>Tool
{tool response}
<extra_id_1>Assistant\n
✨ 主要特性
- 多任务处理能力:Hymba-1.5B-Instruct 能够处理多种复杂和重要的任务,如数学推理、函数调用和角色扮演等。
- 高性能表现:该模型在各项任务中均超越了流行的小型语言模型,实现了最高的平均性能。
- 商业可用性:此模型可用于商业用途。
📦 安装指南
环境搭建
- 本地安装:使用提供的
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 安装:下载并使用预配置的 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 AutoModelForCausalLM, AutoTokenizer, StopStringCriteria, StoppingCriteriaList
import torch
# 加载分词器和模型
repo_name = "nvidia/Hymba-1.5B-Instruct"
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()
messages = [
{"role": "system", "content": "You are a helpful assistant."}
]
messages.append({"role": "user", "content": prompt})
# 应用聊天模板
tokenized_chat = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt").to('cuda')
stopping_criteria = StoppingCriteriaList([StopStringCriteria(tokenizer=tokenizer, stop_strings="</s>")])
outputs = model.generate(
tokenized_chat,
max_new_tokens=256,
do_sample=False,
temperature=0.7,
use_cache=True,
stopping_criteria=stopping_criteria
)
input_length = tokenized_chat.shape[1]
response = tokenizer.decode(outputs[0][input_length:], skip_special_tokens=True)
print(f"Model response: {response}")
📚 详细文档
模型概述
Hymba-1.5B-Instruct 是一个 15 亿参数的模型,它基于 Hymba-1.5B-Base 进行微调,使用了开源指令数据集和内部收集的合成数据集的组合。该模型通过监督微调(Supervised Fine-Tuning)和直接偏好优化(Direct Preference Optimization)进行微调。
- 模型开发者:NVIDIA
- 模型训练时间:2024 年 9 月 4 日至 2024 年 11 月 10 日
- 许可证:该模型根据 NVIDIA 开放模型许可协议 发布。
模型架构
Hymba-1.5B-Instruct 的模型嵌入大小为 1600,有 25 个注意力头,MLP 中间维度为 5504,总共 32 层,16 个 SSM 状态,3 个全注意力层,其余为滑动窗口注意力。与标准的 Transformer 不同,Hymba 中的每个注意力层都有标准注意力头和 Mamba 头的混合组合,并且并行运行。此外,它还使用了分组查询注意力(Grouped-Query Attention,GQA)和旋转位置嵌入(Rotary Position Embeddings,RoPE)。 该架构的特点包括:
- 融合注意力头和 SSM 头:在同一层内融合注意力头和 SSM 头,对相同输入进行并行和互补处理。
- 引入元令牌:在输入序列前添加元令牌,与所有后续令牌进行交互,从而存储重要信息并减轻注意力中的“强制关注”负担。
- 集成跨层 KV 共享和全局 - 局部注意力:进一步提高内存和计算效率。
性能亮点
Hymba-1.5B-Instruct 在各项任务中均超越了流行的小型语言模型,实现了最高的平均性能。
模型微调
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 进行高效微调。更多详细信息,请参考 Hymba 的 LMFlow 文档。
局限性
该模型在包含有毒语言、不安全内容和社会偏见的数据上进行训练,这些数据最初是从互联网上爬取的。因此,该模型可能会放大这些偏见并返回有毒响应,尤其是在输入有毒提示时。即使提示本身不包含任何明确的冒犯性内容,该模型也可能生成不准确的答案,遗漏关键信息,或包含无关或冗余的文本,产生社会不可接受或不期望的文本。 测试表明,该模型容易受到越狱攻击。如果在 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-Instruct 的模型嵌入大小为 1600,有 25 个注意力头,MLP 中间维度为 5504,总共 32 层,16 个 SSM 状态,3 个全注意力层,其余为滑动窗口注意力。与标准的 Transformer 不同,Hymba 中的每个注意力层都有标准注意力头和 Mamba 头的混合组合,并且并行运行。此外,它还使用了分组查询注意力(Grouped-Query Attention,GQA)和旋转位置嵌入(Rotary Position Embeddings,RoPE)。该架构通过融合注意力头和 SSM 头、引入元令牌以及集成跨层 KV 共享和全局 - 局部注意力等方式,提高了模型的性能和效率。
📄 许可证
该模型根据 NVIDIA 开放模型许可协议 发布。
📋 模型信息
属性 | 详情 |
---|---|
基础模型 | nvidia/Hymba-1.5B-Base |
库名称 | transformers |
许可证 | 其他 |
许可证名称 | nvidia-open-model-license |
许可证链接 | https://developer.download.nvidia.com/licenses/nvidia-open-model-license-agreement-june-2024.pdf |
任务类型 | 文本生成 |
⚠️ 重要提示
该模型在包含有毒语言、不安全内容和社会偏见的数据上进行训练,可能会放大这些偏见并返回有毒响应。此外,该模型容易受到越狱攻击,在使用时建议使用强大的输出验证控制。
💡 使用建议
当使用该模型时,开发者应与内部模型团队合作,确保该模型符合相关行业和用例的要求,并解决不可预见的产品滥用问题。同时,建议在 RAG 或智能体环境中使用强大的输出验证控制,以确保安全。



