
LongWriter
让长上下文模型一口气写出万字长文,告别输出截断。
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 1882
技术标签
使用教程
ℹ 本教程由 AI 依据该项目 README 整理,个别步骤可能需要按你的环境微调。
环境要求
- Python 环境(项目开发语言为 Python)
- transformers>=4.43.0(README 推荐的部署版本)
- NVIDIA GPU 与 CUDA 环境(脚本以 CUDA_VISIBLE_DEVICES 指定显卡)
- 可访问 HuggingFace 以下载 THUDM/LongWriter-glm4-9b 或 LongWriter-llama3.1-8b 权重
安装与启动步骤
-
1获取项目代码
克隆 LongWriter 仓库并进入目录,trans_web_demo.py 等脚本都在仓库根目录下。
git clone https://github.com/THUDM/LongWriter.git cd LongWriter -
2安装推理依赖
README 明确推荐使用 transformers>=4.43.0 才能正常部署模型,先升级到该版本。
pip install "transformers>=4.43.0" -
3脚本加载模型对话
用官方示例代码加载 LongWriter-glm4-9b,提问 10000 字写作任务并打印结果,注意设置较大的 max_new_tokens。
from transformers import AutoTokenizer, AutoModelForCausalLM import torch tokenizer = AutoTokenizer.from_pretrained("THUDM/LongWriter-glm4-9b", trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained("THUDM/LongWriter-glm4-9b", torch_dtype=torch.bfloat16, trust_remote_code=True, device_map="auto") model = model.eval() query = "Write a 10000-word China travel guide" response, history = model.chat(tokenizer, query, history=[], max_new_tokens=32768, temperature=0.5) print(response) -
4启动网页版 Chatbot
README 给出的自建 Chatbot 方式,用 CUDA_VISIBLE_DEVICES=0 指定 0 号显卡运行仓库内脚本。
CUDA_VISIBLE_DEVICES=0 python trans_web_demo.py -
5vllm 高速推理
README 称用 vllm 可在一分钟内生成万字,示例代码在 vllm_inference.py;需自行按 vllm 官方说明装好 vllm。
python vllm_inference.py
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
max_new_tokens | 是 | 控制单次生成的最大长度,长文写作需设得足够大 | 32768 |
temperature | 否 | 采样温度,示例中设为 0.5 | 0.5 |
torch_dtype | 否 | 模型加载精度,示例使用 bfloat16 | torch.bfloat16 |
device_map | 否 | 设备分配方式,auto 表示自动分配到可用显卡 | auto |
trust_remote_code | 是 | 加载 THUDM 模型时需允许执行远程代码 | True |
CUDA_VISIBLE_DEVICES | 否 | 指定运行 Web Demo 使用的显卡编号 | 0 |
如何确认成功
脚本运行无报错并打印出万字级长文响应;Web Demo 脚本启动后在浏览器中可正常对话生成。
常见问题
Q:生成的内容长度远不到一万字怎么办?
A:把 max_new_tokens 调大(示例为 32768),并在提问中明确写出目标字数,例如 Write a 10000-word China travel guide。
Q:显存不足、模型加载失败怎么办?
A:使用 device_map="auto" 自动分配显存,或改用更小的模型,也可参考 vllm_inference.py 用 vllm 部署以提升吞吐。
Q:如何让生成速度更快?
A:README 推荐用 vllm 部署 LongWriter,示例见仓库中的 vllm_inference.py,可在一分钟生成 10000+ 字。
Q:加载模型时报错提示需要信任远程代码?
A:确认 transformers 版本不低于 4.43.0,并在 from_pretrained 中传入 trust_remote_code=True。
Q:有没有更新的更强模型?
A:2025/06/23 项目发布了 LongWriter-Zero-32B,用纯强化学习训练,长文写作效果优于 LongWriter。
注意事项
- 模型权重较大,首次从 HuggingFace 下载耗时较长,请预留磁盘与网络时间。
- LongWriter-glm4-9b 与 LongWriter-llama3.1-8b 分别基于 GLM-4-9B 和 Meta-Llama-3.1-8B 训练,属对应论文中的 LongWriter-9B-DPO 与 LongWriter-8B。
- README 未给出 Web Demo 的访问端口,启动后请以终端输出的实际地址为准。
- 推理需要 GPU 支持,建议显存充足并优先使用 bfloat16 精度加载。
核心亮点
- 提出 AgentWrite 规划-写作两阶段方法,有效突破模型输出长度限制,实测可生成 10000+ 字连贯内容。
- 开源了 LongWriter-6k 训练数据集和模型权重,覆盖 2k 到 32k 长度,便于社区复现和微调。
- 在长文本生成质量上优于现有长上下文模型,如 GPT-4o 和 Claude 3.5,且支持中英文。
不足之处
- 主要针对 8B 规模模型验证,更大规模(如 70B)效果未充分展示,可能限制实际应用。
- 文档/社区待观察:项目仍处于成长阶段,英文文档为主,中文资料较少,社区生态尚不成熟。
适用场景
- 需要生成万字级长报告、论文或小说等专业写作场景。
- 在长上下文模型基础上扩展输出能力,用于自动化内容创作。
- 研究长文本生成技术,作为对比基线或改进起点。
替代项目
LongBench、LongEval、LongAlpaca
上一篇:llama2-webui
下一篇:MiniOneRec
同类项目推荐
ModernBERT
开源
让老牌 BERT 重获新生,长文本更快更准
Bringing BERT into modernity via both architecture changes and scaling
awesome-fm4co
开源
一网打尽基础模型+组合优化最新论文,快速跟上研究前沿
Recent research papers about Foundation Models for Combinatorial Optimization
ContextDiff
开源
让AI画图/视频更懂你的文字,语义对齐更精准
[ICLR 2024] Contextualized Diffusion Models for Text-Guided Image and Video Generati···
LongLLaDA
开源
让扩散模型也能读懂长文本,解锁超长上下文
Methods and code for extending the context length of diffusion language models
Awesome-LLM-in-Social-Science
开源
一键速览LLM在社会学科的前沿论文,紧跟研究热点
Awesome papers involving LLMs in Social Science.
Chinese-LLaMA-Alpaca-2
开源
让 LLaMA-2 说好中文,支持 64K 超长上下文,开箱即用。
中文LLaMA-2 & Alpaca-2大模型二期项目 + 64K超长上下文模型 (Chinese LLaMA-2 & Alpaca-2···
reconstruction-alignment
开源
用重建对齐让多模态模型零样本能力大爆发
[ICLR 2026] RecA: visual understanding help generation through self-supervised learn···
Attention-Sink
开源
看清注意力汇聚如何产生,优化你的语言模型训练与推理。
[ICLR 2025] When Attention Sink Emerges in Language Models: An Empirical View (Spotl···
Awesome-VLGFM
开源
一张清单看懂视觉语言地理模型全貌
A Survey on Vision-Language Geo-Foundation Models (VLGFMs)