❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- Zamba2-2.7B 是一款结合状态空间模型和 Transformer 的混合模型。
- 具备高效推理和低内存占用特点,适用于边缘设备和消费级 GPU。
- 主要功能包括语言理解和生成、图像描述等。
正文(附运行示例)
Zamba2-2.7B 是什么
Zamba2-2.7B 是一款由 Zyphra 公司推出的混合模型,结合了状态空间模型(SSM)和 Transformer 的优势。它基于 Zamba 架构,采用 Mamba2 块和两个共享注意力块,通过 LoRA 投影器提升性能,适用于高效推理和低内存占用的场景。
Zamba2-2.7B 的主要功能
- 高效的语言理解与生成:能够理解和生成自然语言,适用于文本摘要、翻译、问答等任务。
- 图像描述任务:特别优化于生成图像描述,能理解图片内容并生成相应文字。
- 边缘设备兼容性:模型尺寸小,推理速度快,适合在智能手机和其他 IoT 设备上运行。
- 消费级 GPU 优化:能在普通消费级 GPU 上高效运行,降低硬件门槛。
Zamba2-2.7B 的技术原理
- 混合 SSM-注意力架构:结合 Mamba 层和共享注意力层,最小化参数成本。
- Mamba2 块:替换 Mamba1 块,提升效率。
- 共享注意力块:使用两个共享注意力块,以 ABAB 模式交错排列。
- LoRA 投影器:在共享 MLP 块上应用 LoRA 投影器,增强模型适应性。
- 大规模预训练数据集:使用 3T tokens 的高质量数据集进行预训练。
- 退火预训练阶段:通过退火阶段提升模型泛化能力。
如何运行 Zamba2-2.7B
前置条件
- 克隆并安装仓库:
git clone https://github.com/Zyphra/Zamba2.git
cd Zamba2
pip install -e .
pip install -U mamba-ssm causal-conv1d
推理示例
from mamba_model import MambaModel
from mamba_config import MambaConfig
import torch
from transformers import AutoTokenizer
# 加载tokenizer和模型
tokenizer = AutoTokenizer.from_pretrained("Zyphra/Zamba2-2.7B")
input_text = 'A funny prompt would be '
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")["input_ids"].transpose(0,1)
model = MambaModel.from_pretrained(model_name = "Zyphra/Zamba2-2.7B").cuda().half()
# 生成文本
tokens_to_generate = 20
model.eval()
with torch.no_grad():
for _ in range(tokens_to_generate):
out = model(input_ids)
out_last = out[:, -1]
idx = torch.argmax(out_last)[None, None]
input_ids = torch.cat((input_ids, idx), dim=0)
input_ids = input_ids.transpose(0, 1)[0]
print(repr(tokenizer.decode(input_ids.cpu().numpy().tolist())))
资源
- 项目官网:zyphra.com/post/zamba2…
- Github 仓库:github.com/Zyphra/Zamb…
- HuggingFace 模型库:huggingface.co/Zyphra/Zamb…
❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦