60个版本
0.1.67 | 2023年8月9日 |
---|---|
0.1.66 | 2023年8月8日 |
0.1.58 | 2023年7月31日 |
0.1.28 | 2023年6月30日 |
#298 in 科学
2MB
44K SLoC
rs-llama-cpp
为LLaMA.cpp生成自动Rust绑定
描述
LLaMA.cpp 正在快速发展,每天都有众多个人为其贡献力量。目前,它的C API非常底层,由于项目发展迅速,跟上这些变化并将示例移植到更高层次的API比较困难。作为权衡,本项目优先考虑自动化,自动为LLaMA.cpp的主示例生成Rust绑定。
限制
本项目的主要设计目标是通过尽可能自动化步骤来最小化更新LLaMA.cpp的努力。然而,这种方法确实存在一些局限性
- API非常高级,类似于调用LLaMA.cpp的主函数,并通过回调函数接收令牌。
- 目前,该项目不暴露难以转换为Rust的类型参数,例如
std::unordered_map
和std::vector
。 - 通过Rust API暴露的一些参数仅对CLI相关。
- 生成的C++库向
stderr
和stdout
输出大量调试信息。目前无法配置
用法
use rs_llama_cpp::{gpt_params_c, run_inference, str_to_mut_i8};
fn main() {
let params: gpt_params_c = {
gpt_params_c {
model: str_to_mut_i8("/path/to/model.bin"),
prompt: str_to_mut_i8("Hello "),
..Default::default()
}
};
run_inference(params, |token| {
println!("Token: {}", token);
if token.ends_with("\n") {
return false; // stop inference
}
return true; // continue inference
});
}