Logo

llama2.rs: 纯Rust实现的高性能Llama 2推理引擎

llama2.rs

llama2.rs: 纯Rust实现的高性能Llama 2推理引擎

llama2.rs是一个由Rust语言编写的Llama 2推理引擎,旨在提供最快速的CPU推理性能。该项目由GitHub用户srush和rachtsingh开发,是对Andrej Karpathy的llama2.c项目的Rust重新实现和扩展。

主要特性

llama2.rs具有以下几个显著特点:

  1. 支持4位GPTQ量化,大幅降低模型内存占用
  2. 批量预填充prompt tokens,提高推理效率
  3. 利用SIMD指令集加速CPU推理
  4. 内存映射技术,实现70B参数模型的瞬时加载
  5. 静态大小检查,提高内存安全性
  6. 支持分组查询注意力(GQA),适用于大规模Llama模型
  7. 提供Python调用API

在作者的Intel i9台式机上,llama2.rs可以实现70B参数Llama 2模型1 token/s的推理速度,7B参数模型则可达到9 token/s,相比原始的llama2.c有显著提升。

llama cartoon

使用方法

要使用llama2.rs,首先需要安装Rust的nightly工具链:

rustup toolchain install nightly
ulimit -s 10000000 # 增加栈内存限制

然后可以从Hugging Face hub下载预训练模型。例如,以下命令将创建一个70B参数、4位量化、64组大小的模型:

pip install -r requirements.export.txt
python export.py l70b.act64.bin TheBloke/llama-2-70b-Guanaco-QLoRA-GPTQ gptq-4bit-64g-actorder_True

使用cargo编译并运行模型:

cargo run --release --features 70B,group_64,quantized -- -c llama2-70b-q.bin -t 0.0 -s 11 -p "The only thing"

这将输出生成的文本和推理速度。

Python接口

llama2.rs也提供了Python接口。首先需要编译并安装Python包:

cargo build --release --features 7B,group_128,quantized,python
pip install .

然后可以在Python中使用:

import llama2_rs

model = llama2_rs.LlamaModel("lorca13b.act132.bin", False)
tokenizer = llama2_rs.Tokenizer("tokenizer.bin")
random = llama2_rs.Random()
response = llama2_rs.generate(
    model,
    tokenizer,
    "Tell me zero-cost abstractions in Rust ",
    50,
    random, 
    0.0
)

未来计划

llama2.rs的开发团队计划在未来实现以下功能:

  1. 使用Triton支持快速GPU处理
  2. 支持text-generation-webui项目
  3. 完善文档
  4. 发布关于GPTQ快速实现方法的博客文章
  5. 移除对AutoGPTQ的预加载依赖
  6. 直接支持safetensors格式

技术细节

llama2.rs主要依赖以下几个Rust crate:

  • memmap2: 用于内存映射
  • rayon: 用于并行计算
  • clap: 用于命令行参数解析
  • pyO3: 用于Python调用
  • portable_simd: 用于SIMD加速

为了获得最佳性能,llama2.rs需要针对不同的Llama版本进行重新编译。模型参数在.cargo/config中配置,如果与加载的二进制模型不匹配将会失败。

结语

llama2.rs展示了Rust语言在AI推理引擎开发中的潜力。通过利用Rust的零成本抽象、内存安全和并发特性,llama2.rs在保证安全性的同时实现了卓越的性能。这个项目为在普通CPU上运行大规模语言模型提供了一个高效的解决方案,为AI技术的普及应用铺平了道路。

随着项目的不断发展,我们可以期待llama2.rs在未来带来更多优化和功能,进一步推动AI技术在各种计算环境下的应用。对于有兴趣深入了解或贡献该项目的开发者,可以访问llama2.rs的GitHub仓库获取更多信息。

相关项目

Project Cover
xtuner
XTuner是一款高效灵活的大模型微调工具包,支持LLM和VLM在多种GPU上的预训练和微调。它能够在单个8GB GPU上微调7B模型,并支持超过70B模型的多节点微调。XTuner兼容DeepSpeed,支持多种优化技术,并涵盖多种微调方法如QLoRA和LoRA。该工具包提供连续预训练、指令微调和代理微调等功能,输出模型可以无缝集成到部署和评估工具中,适应多种应用场景。
Project Cover
Chinese-Llama-2-7b
项目提供开源且商用的中文Llama2模型及中英文SFT数据集,兼容llama-2-chat格式并支持优化。项目包含在线演示、多模态模型、Docker部署和API接口,支持多种硬件配置,用户可快速下载与测试。
Project Cover
slowllama
slowllama是一个专注于微调Llama2和CodeLLama模型的开源项目,支持70B/35B模型版本,并可在Apple M1/M2设备(如Macbook Air、Mac Mini)或消费级nVidia GPU上运行。通过将模型部分数据转储到SSD或主内存,该项目避免使用量化技巧,优化正向和反向传递性能。采用LoRA方法限制参数更新,操作步骤详尽,包括依赖安装、模型下载和配置脚本,是在资源有限环境下进行大模型微调的理想选择。
Project Cover
llama2.rs
llama2.rs是一个用Rust开发的Llama2 CPU推理库,专注于提供高性能的推理能力。项目支持4位GPT-Q量化、批量预填充提示标记、SIMD加速和内存映射等技术,实现了70B模型的即时加载。通过Python API,开发者可在普通台式机上运行70B Llama2模型(1 token/s)和7B模型(9 tokens/s)。该项目为大规模语言模型的CPU推理提供了高效且灵活的开源解决方案。

最新项目

Project Cover
豆包MarsCode
豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。
Project Cover
AI写歌
Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。
Project Cover
美间AI
美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。
Project Cover
商汤小浣熊
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。
Project Cover
有言AI
有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。
Project Cover
Kimi
Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。
Project Cover
吐司
探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。
Project Cover
SubCat字幕猫
SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。
Project Cover
AIWritePaper论文写作
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。
投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号