跳到主要内容
AI教程

使用 Transformers 在本地运行 Naive-N0.5-Flash

了解 Naive-N0.5-Flash 适用于编程和 AI 研究的原因,理解其混合 SWA–DSA 架构,安装所需的 Transformers 依赖项,并使用已发布的 FP8 权重生成文本。

使用 Transformers 在本地运行 Naive-N0.5-Flash

什么是 Naive-N0.5-Flash?

Naive-N0.5-Flash 是一款面向编程以及 AI 研究与开发的开放权重混合专家模型。它包含 3090 亿个总参数,其中 155 亿个为激活参数,并原生支持最长达 100 万个 token 的上下文窗口。

模型权重和推理代码均依据 MIT 许可证发布。你可以在 Hugging Face 上找到该模型,并在 GitHub 上查看源项目。

主要特性

  • 原生支持 100 万 token 上下文:模型采用滑动窗口注意力(SWA)与 DeepSeek 稀疏注意力(DSA)的混合架构,不包含完整注意力层。
  • MoE 效率:虽然模型共有 3090 亿个参数,但每个 token 仅激活 155 亿个参数。
  • 专注于编程和 AI 研发:模型经过训练,旨在提升软件工程、研究和系统优化能力。
  • FP8 推理:发布的检查点支持在支持 FP8 的 NVIDIA GPU 上进行混合精度推理。
  • 高吞吐量推理:NaiveRT 推理系统结合了超大内核融合、程序化依赖启动和推测解码。README 报告称,Standard 模式下每位用户最高可达每秒 50 个 token,Ultrafast 模式下最高可达每秒 2000 个 token。

了解混合注意力设计

Naive-N0.5-Flash 使用 48 个 Transformer 层:39 个 SWA 层和 9 个 DSA 层。SWA 将局部注意力限制在 128 个 token 的窗口内,而 DSA 使用索引器对完整历史记录进行评分,并选出排名前 2048 的 token 供主干注意力使用。

模型由 8 个六层模块组成。典型模块包含 5 个 SWA 层,后接 1 个 DSA 层;第一个模块的第一层也替换为 DSA 层。DSA 使用具有 4 个键值组的分组查询注意力,称为 GQA4,其索引器包含 16 个查询头。

这种设计使大部分注意力计算保持在局部范围内,同时允许长上下文中的选定信息影响生成过程。完整的键值缓存会被保留,但主干网络只关注选定的 DSA token。

硬件与安装要求

Naive-N0.5-Flash 需要支持 FP8 的 NVIDIA GPU。模型权重约占用 315 GB,此外还应为推理预留额外的 GPU 显存。

README 提供了基于 Transformers 的快速入门方法。请安装较新版本的 Transformers、PyTorch 以及所需的内核:

pip install "transformers[torch,kernels]>=5.17.0"

使用 Transformers 运行模型

安装依赖并确认具备所需的 GPU 资源后,从 Hugging Face 加载 FP8 检查点。以下示例会创建分词器、加载模型、格式化用户消息并生成响应:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "NaiveAI/Naive-N0.5-Flash-FP8"
tokenizer = AutoTokenizer.from_pretrained(
    model_id,
    trust_remote_code=True,
)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    trust_remote_code=True,
    dtype="auto",
    device_map="auto",
)

inputs = tokenizer.apply_chat_template(
    [{"role": "user", "content": "Hello!"}],
    add_generation_prompt=True,
    return_dict=True,
    return_tensors="pt",
).to(model.device)

output = model.generate(
    **inputs,
    max_new_tokens=2048,
)
response = tokenizer.decode(
    output[0, inputs["input_ids"].shape[1]:],
    skip_special_tokens=True,
)
print(response)

示例原理

  1. 选择检查点:NaiveAI/Naive-N0.5-Flash-FP8 用于标识 Hugging Face 上的 FP8 模型。
  2. 加载分词器:trust_remote_code=True 启用模型仓库中的自定义 Transformers 代码。
  3. 加载模型:dtype="auto" 让 Transformers 使用检查点适用的数据类型,而 device_map="auto" 会将模型组件分配到可用设备上。
  4. 格式化对话:apply_chat_template 将用户消息转换为模型所需的格式,并添加生成提示。
  5. 生成文本:max_new_tokens=2048 限制新生成 token 的数量。
  6. 仅解码响应:从输入长度之后开始切片,从而移除原始提示,只打印生成的文本。

推荐的生成设置

对于一般用途,项目建议将 temperature=1.0 和 top_p=0.95 作为设置值。这些值未包含在 README 的最简示例中,但如果希望明确指定采样行为,可以将它们传递给 generate:

output = model.generate(
    **inputs,
    max_new_tokens=2048,
    temperature=1.0,
    top_p=0.95,
)

请根据任务使用合适的 max_new_tokens 值。更大的限制可以生成更长的回答,但也需要更多的生成时间和内存。

高级使用注意事项

合理使用长上下文

1M token 的上下文窗口通过混合 SWA–DSA 架构原生支持。对于大型代码库、研究资料或多文件任务,请以结构化方式提供相关上下文,并保持指令清晰。该架构旨在通过 SWA 保留局部细节,同时通过 DSA 选择重要的历史信息。

加载前规划 GPU 容量

该检查点在未计入额外推理内存的情况下约占 315 GB。在启动模型之前,请确认你的支持 FP8 的 NVIDIA GPU 配置具有足够容量。通过 device_map="auto" 自动放置设备可以将模型分配到可用设备上,但不会减少检查点和运行时所需的总内存。

考虑使用优化后的推理方案

README 将 NaiveRT 描述为该项目的优化推理系统。其技术包括超大内核融合、程序化依赖启动和推测解码。如果你需要超越基础 Transformers 部署的高吞吐量,请参阅项目的技术博客,了解 NaiveRT 案例研究和实现细节。

了解基准测试背景

已发布的评测涵盖编码、软件工程、智能体任务、AI 研究和系统优化。除非另有说明,结果通常使用 Claude Code 2.1.207、1M token 上下文窗口、温度 1.0、top-p 0.95,以及基础文件 I/O 和 Bash 工具进行评估。请注意,基准测试比较结果取决于其声明的测试框架和评估协议。

许可证和更多资源

Naive-N0.5-Flash 以 MIT 许可证发布。有关模型发布和相关项目,请访问 NaiveAI GitHub 组织或 NaiveAI Hugging Face 主页。有关架构、训练过程和推理优化的技术背景,请参阅项目的技术博客。

结论

Naive-N0.5-Flash 将具有 309B 参数的 MoE 设计与 15.5B 个激活参数、混合 SWA–DSA 注意力以及原生 1M token 上下文窗口相结合。要在本地试用,请安装带有所需内核的 Transformers,使用约需 315 GB 权重空间且支持 FP8 的 NVIDIA 硬件,加载 Hugging Face 检查点,并使用推荐的采样设置生成响应。