#llama #text-generation #language #modeling #cpp #chat #wrapper

bin+lib drama_llama

语言建模和文本生成库

22 个版本 (4 个破坏性版本)

0.5.2 2024年6月19日
0.5.1 2024年6月18日
0.4.5 2024年6月14日
0.4.3 2024年5月26日
0.1.2 2024年4月20日

#152 in 机器学习

Download history 295/week @ 2024-04-20 19/week @ 2024-04-27 1/week @ 2024-05-04 277/week @ 2024-05-11 769/week @ 2024-05-18 566/week @ 2024-05-25 39/week @ 2024-06-01 200/week @ 2024-06-08 624/week @ 2024-06-15 23/week @ 2024-06-22 34/week @ 2024-06-29 158/week @ 2024-07-06 115/week @ 2024-07-27

每月115 次下载
用于 weave-writer

自定义许可证

2MB
12K SLoC

drama_llama

llama with drama mask logo

drama_llamallama.cpp 的另一个 Rust 包装器。它仍在开发中,不建议用于生产。API 将会 改变。

有关示例,请参阅 bin 文件夹。有两个示例二进制文件。

  • Dittomancer - 与训练中具有良好代表性的个性进行聊天。
  • Regurgitater - 测试本地语言模型的记忆内容。

支持的功能

  • LLaMA 3 支持。
  • 产生候选、令牌和片段的迭代器。
  • 正则表达式、令牌序列和/或字符串序列的停止标准。
  • 金属支持。可以使用 cudacuda_f16 功能启用 CUDA。
  • Rust 原生采样代码。已翻译所有来自 llama.cpp 的采样方法。
  • 基于 n-gram 的重复惩罚,并针对不应受惩罚的 n-gram 进行自定义排除。
  • 支持使用默认、硬编码的块列表进行 n-gram 块阻止。

贡献

  • 代码是诗歌。让它变得漂亮。
  • 尊重是普遍的。
  • 使用 rustfmt

路线图

  • 具有采样细粒度控制的候选迭代器
  • 新的候选 API 的示例。
  • 支持使用 SampleOptions 链接采样方法。 mode 将成为 modes 并依次应用,直到只剩下一个候选令牌。
  • 采样常见的命令行选项。目前这还没有公开。
  • 更接近 Ollama 的 API。可能支持类似 Modelfile 的内容。
  • 日志记录(非阻塞)和基准支持。
  • 更好的聊天和指令模型支持。
  • 网络服务器。浏览器中的标记化。
  • 将 Tiktoken 作为某些模型的标记化器,而不是 llama.cpp 内置的。
  • 重构、功能、公开的候选 API
  • 语法约束(可能是也可能不是 llama.cpp 风格)
  • 异步流,更好的并行性,具有自动批处理调度
  • 更好的缓存管理。 llama.cpp 似乎没有自动管理最长前缀缓存,因此需要编写一个。
  • 除了 llama.cpp 以外的后端(例如 MLCTensorRT-LLMOllama

已知问题

  • 在 LLaMA 3 中,安全词汇表尚未工作,因此必须通过命令行参数传递 --vocab unsafe 或使用 VocabKind::UnsafeEngine 构造函数。
  • 模型在生成开始之前不会加载,因此第一次生成时可能会有较长的暂停。然而,由于使用了 mmap,在后续进程启动时,操作系统应该已经缓存了模型。
  • 由于 llama.cpp 的 CMakeLists.txt 生成代码,并且不支持写入文件系统,所以 docs.rs 上的文档已损坏。目前请使用 cargo doc --open 代替。其他人通过修补其绑定中的 llama.cpp 来解决这个问题,但我不确定我现在是否想这样做。

生成式人工智能披露

  • 在项目的部分使用了生成式人工智能,特别是微软的 Bing Copilot、GitHub Copilot 和 Dall-E 3。有关使用生成式人工智能的章节,请参阅内联注释。获取器、设置器和一些测试也使用了完成功能。徽标使用 Dall-E 生成,并在 Inkscape 中进行了后期处理。

依赖项

~13–57MB
~1M SLoC