
NOSA-1B 应用实战5 段代码玩转小说创作与超长文档摘要【免费下载链接】NOSA-1B项目地址: https://ai.gitcode.com/OpenBMB/NOSA-1BNOSA-1B 是 OpenBMB 开源社区推出的轻量级长上下文大模型。它仅约 1B 参数却凭借 NOSA 稀疏注意力机制原生支持 32K 超长上下文解码吞吐最高可达传统全注意力模型的 5.04 倍堪称低成本 长上下文的标杆。本文用 5 段代码带你从零部署 NOSA-1B并实战演示小说创作与超长文档摘要两大高频场景小白也能轻松上手。NOSA-1B 是什么轻量长上下文大模型的新选择 NOSANative and Offloadable Sparse Attention原生可卸载稀疏注意力是一种可训练的稀疏注意力机制它把大量 KV 缓存卸载到 CPU 内存GPU 上只保留高价值的关键块配合 NOSI 推理系统实现了上下文更长、显存更省、速度更快的三赢。除了 1B 版本OpenBMB 还同步开源了 NOSA-3B 与 NOSA-8B可按需选用。核心参数一览特性参数参数规模约 1B28 层 Transformer上下文长度32KLongRoPE 扩展注意力机制NOSA 稀疏注意力 KV Cache 卸载权重精度bfloat16支持语言中文 / 英文开源协议Apache-2.0解码吞吐对比1B/3B/8B 模型实测⚡对比基线吞吐提升FullAttn全注意力最高5.04×InfLLMv2最高1.92×ShadowKV最高1.83×模型仓库内的关键文件如下感兴趣的读者可以对照阅读源码config.json模型结构配置声明隐藏层维度 2048、注意力头 16、GQA 分组等参数modeling_llama_long_infllmv2.py稀疏注意力模型实现SparseLlamaForCausalLMmodeling_minicpm.pyMiniCPM 底座实现内含压缩注意力逻辑cis_pooling.pyTriton 加速的 CIS 池化算子tokenizer.json/tokenizer_config.json分词器与对话模板配置快速上手NOSA-1B 本地部署的一键加载步骤 先克隆仓库并安装依赖命令如下git clone https://gitcode.com/OpenBMB/NOSA-1B cd NOSA-1B pip install torch transformers accelerate triton代码一一键加载模型。仓库自带远程代码与权重只需 4 行即可完成加载import torch from transformers import AutoModelForCausalLM, AutoTokenizer model AutoModelForCausalLM.from_pretrained( ./NOSA-1B, torch_dtypetorch.bfloat16, trust_remote_codeTrue ) tokenizer AutoTokenizer.from_pretrained(./NOSA-1B, trust_remote_codeTrue)由于模型只有 1B 参数消费级显卡约 4GB 显存即可流畅运行无需高端集群。5 段代码玩转 NOSA-1B 实战 ✍️代码二基础对话验证模型是否就绪先跑一个最简单的问答确认模型工作正常def chat(content, max_new512): messages [{role: user, content: content}] prompt tokenizer.apply_chat_template( messages, tokenizeFalse, add_generation_promptTrue) inputs tokenizer(prompt, return_tensorspt).to(model.device) out model.generate(**inputs, max_new_tokensmax_new) return tokenizer.decode(out[0][inputs[input_ids].shape[1]:], skip_special_tokensTrue) print(chat(你好请用一句话介绍你自己))仓库tokenizer_config.json内置了 MiniCPM 风格的对话模板apply_chat_template会自动拼好|im_start|/|im_end|格式非常省心。代码三小说创作让模型当你的写作搭子 32K 长上下文意味着你可以把完整的世界观设定、人物小传一并喂给模型再让它续写setting 世界观星际流浪纪元人类靠巨型飞船诺亚号在宇宙中漂泊。 主角船长林澈冷静寡言背负着寻找新家园的使命。 story chat( f{setting}\n请基于以上设定续写一个 300 字左右的章节开头 要求有画面感节奏紧凑。 ) print(story)默认采样参数generation_config.json中temperature0.8、top_p0.8在创意写作上表现均衡既不会过于发散也不至于死板。想更放飞想象力可以调高 temperature 到 1.0 左右。代码四超长文档摘要万字长文一键浓缩 这是 NOSA-1B 的核心杀手锏数万字的文档可以整篇塞进提示词无需切分、不丢细节def summarize_long_doc(file_path): with open(file_path, encodingutf-8) as f: full_text f.read() # 数万字也没问题模型上下文 32K return chat( f请通读以下全文输出一份分章节的结构化摘要 f每章 3-5 句最后给出全文主旨。\n\n{full_text} ) print(summarize_long_doc(长篇小说.txt))对比传统做法普通模型要么截断前 4K token 导致看了开头忘结尾要么用 map-reduce 式切块摘要导致前后矛盾。NOSA-1B 的长上下文 稀疏注意力让整篇通读成为可能摘要质量与一致性都明显更好。代码五批量文档摘要多份资料一把抓 处理多份报告或论文集时写个小循环就能批量出摘要files [报告A.txt, 报告B.txt, 报告C.txt] for f in files: summary summarize_long_doc(f) print(f {f} 摘要 ) print(summary)配合 NOSA 的 KV Cache 卸载机制多轮、多文档处理时显存占用稳定长任务也不容易 OOM。附赠技巧流式输出边生成边显示 长摘要等待时间久用TextStreamer让内容逐字流出体验立刻升级from transformers import TextStreamer prompt tokenizer.apply_chat_template( [{role: user, content: 写一篇 500 字的科幻短文}], tokenizeFalse, add_generation_promptTrue) inputs tokenizer(prompt, return_tensorspt).to(model.device) streamer TextStreamer(tokenizer, skip_promptTrue, skip_special_tokensTrue) model.generate(**inputs, max_new_tokens1024, streamerstreamer)使用建议与注意事项 长上下文要善用写小说时把设定前置做摘要时把全文完整放入才能发挥 32K 上下文与稀疏注意力的最大价值。参数可微调追求稳定输出可调低temperature如 0.6创意任务可调高至 0.9-1.0。修改generation_config.json即可全局生效。显存不足的兜底NOSA 本身已通过卸载 KV Cache 降低显存压力若仍紧张可用device_mapauto让模型跨设备运行。源码学习想深入理解稀疏注意力实现重点阅读modeling_llama_long_infllmv2.py与cis_pooling.py前者包含完整的稀疏注意力前向逻辑后者是 Triton 算子代码注释清晰、适合入门。总结长上下文大模型从此不再高不可攀 ✨NOSA-1B 用 1B 参数撬动了 32K 长上下文把超长文档处理从云端大模型的专利变成了人人可本地运行的日常能力。无论是小说创作、学术文献摘要还是批量文档归纳5 段代码即可全部搞定。如果你正在寻找一款免费、轻量、能处理超长文本的开源大模型NOSA-1B 绝对值得放进你的工具箱。【免费下载链接】NOSA-1B项目地址: https://ai.gitcode.com/OpenBMB/NOSA-1B创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考