Zamba2-2.7B:创新小型语言模型,秒速推理、低内存占用,边缘设备也能轻松驾驭!

162 阅读2分钟

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. Zamba2-2.7B 是一款结合状态空间模型和 Transformer 的混合模型。
  2. 具备高效推理和低内存占用特点,适用于边缘设备和消费级 GPU。
  3. 主要功能包括语言理解和生成、图像描述等。

正文(附运行示例)

Zamba2-2.7B 是什么

zamba27b.png

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

前置条件

  1. 克隆并安装仓库:
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())))

资源


❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦