llm.pdf

4个月前发布 243 00

llm.pdf 不是为了替代现有的 LLM 部署方式,而是对“计算载体边界”的一次有趣探索。它证明了 PDF 这种看似静态的文档格式,也能成为完整 AI 推理的容器。

所在地:
美国
收录时间:
2025-08-04
其他站点:

llm.pdf 并不是一个实用工具,而是一个技术探索项目——它试图回答一个问题:

我们能否仅用一个 PDF 文件,完成大语言模型(LLM)的推理?

答案是:可以。尽管效率有限,但这个项目成功实现了在标准 PDF 阅读器中运行完整的 LLM 推理流程。

llm.pdf

它是如何工作的?

llm.pdf 的核心技术基于以下几个关键步骤:

  1. 将 llama.cpp 编译为 Web 可执行代码
    使用 Emscripten,项目将原本用于本地运行的 llama.cpp 编译为 asm.js(一种可在浏览器中运行的低级 JavaScript 表示),使其能在支持 JavaScript 的环境中执行。
  2. 通过 PDF JS 注入技术嵌入运行环境
    利用早期 PDF 标准中允许嵌入 JavaScript 的特性,项目将编译后的 JS 代码和运行逻辑注入到 PDF 文件中。
  3. 模型以 Base64 编码内嵌于文件
    整个 GGUF 格式的模型文件被编码为 Base64 字符串,直接嵌入 PDF 内部。这意味着最终的 PDF 是完全自包含的——无需外部依赖,打开即运行。

当用户用支持 JavaScript 的 PDF 阅读器打开该文件时,模型会在本地解码、加载并执行推理,整个过程发生在用户的设备上。

📽️ 想看完整实现过程?作者在 YouTube 上发布了详细讲解视频(文末附链接)。

如何生成你自己的 llm.pdf?

项目提供了一个脚本,用于将任意兼容的 LLM 模型打包为可运行的 PDF 文件。

使用方法

进入 scripts 目录,运行以下命令:

cd scripts
python3 generatePDF.py --model "path/for/model.gguf" --output "path/to/output.pdf"

该脚本会自动完成以下操作:

  • 读取指定的 GGUF 模型文件
  • 进行 Base64 编码
  • 注入 llama.cpp 编译后的 JS 运行时
  • 生成一个可直接打开的 PDF 文件

你生成的 PDF 将具备与原始项目相同的功能:在支持 JS 的 PDF 阅读器中启动本地推理。

模型选择建议

由于运行环境受限(JavaScript + 单线程 + 解码开销),模型性能受显著影响。选择模型时请注意以下几点:

  • ✅ 仅支持 GGUF 格式:必须是 llama.cpp 兼容的量化模型。
  • ✅ 推荐使用 Q8_0 量化:相比更低精度的量化(如 Q4),Q8 在 asm.js 环境中运行更快,因减少了解压缩计算负担。
  • ⚠️ 参数规模需谨慎
    • 135M 参数模型:每 token 推理约需 5 秒(输入+输出)
    • 超过 1B 参数的模型可能响应极慢,甚至无法完成加载
  • 📌 适合轻量级任务:如简单文本补全、关键词生成等,不适用于复杂对话或多轮推理

技术意义与局限

✅ 意义

  • 展示了“纯文件”形式部署 AI 模型的可能性
  • 实现了端到端的离线推理,无需网络、服务器或额外软件(只要 PDF 阅读器支持 JS)
  • 对隐私敏感场景有一定启发价值——数据完全保留在本地

❌ 局限

  • 大多数现代 PDF 阅读器默认禁用 JavaScript(安全考虑)
  • 模型加载时间长,推理速度慢
  • 文件体积巨大(Base64 编码使模型膨胀约 33%)
  • 仅限概念验证,不具备生产可用性

数据统计

相关导航

暂无评论

none
暂无评论...