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 机器学习
每月115 次下载
用于 weave-writer
2MB
12K SLoC
drama_llama
drama_llama
是 llama.cpp
的另一个 Rust 包装器。它仍在开发中,不建议用于生产。API 将会 改变。
有关示例,请参阅 bin
文件夹。有两个示例二进制文件。
- Dittomancer - 与训练中具有良好代表性的个性进行聊天。
- Regurgitater - 测试本地语言模型的记忆内容。
支持的功能
- LLaMA 3 支持。
- 产生候选、令牌和片段的迭代器。
- 正则表达式、令牌序列和/或字符串序列的停止标准。
- 金属支持。可以使用
cuda
和cuda_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
以外的后端(例如 MLC,TensorRT-LLM,Ollama)
已知问题
- 在 LLaMA 3 中,安全词汇表尚未工作,因此必须通过命令行参数传递
--vocab unsafe
或使用VocabKind::Unsafe
为Engine
构造函数。 - 模型在生成开始之前不会加载,因此第一次生成时可能会有较长的暂停。然而,由于使用了
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