KuiperLLama

zjhellofss长期未更新

从零手写支持 Llama2/3 和 Qwen2.5 的大模型推理框架,用 C++ 和 CUDA 实现,适合校招、秋招、春招和实习作为练手项目。

校招、秋招、春招、实习好项目,带你从零动手实现支持LLama2/3和Qwen2.5的大模型推理框架。

course5_code发布于 2024-07-07 11:42 UTC583star146fork同步于 2026-11-07 07:28 UTC

怎么上手

由 README 提炼,执行前请确认
mkdir build && cd build && cmake -DUSE_CPM=ON .. && make -j16
硬件要求按 README 说明

README 提到运行平台为 Nvidia 3060 laptop(LLama1.1b fp32 约 60.34 token/s),CUDA 加速需安装 Cuda Toolkit;CPU 后端可运行但未给出具体配置要求,显存需求 README 未说明。

需要 CUDA
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

从零手写 C++ 大模型推理框架,支持 LLama2/3 与 Qwen2.5,适合校招面试项目

从零手写支持 Llama2/3 和 Qwen2.5 的大模型推理框架,用 C++ 和 CUDA 实现,适合校招、秋招、春招和实习作为练手项目。

核心能力

  • 用 C++20 手写 CPU 与 CUDA 双后端算子
  • 支持 LLama2/3.x 及 Qwen2.5 系列模型推理
  • 支持 Int8 量化与 CUDA 加速
  • 用 CMake+Git 管理项目并配单元测试与 Benchmark
  • 提供 Python 脚本把 HF 模型导出为自定义 bin 格式

容易踩的坑

需先安装 glog、gtest、sentencepiece、armadillo+openblas、Cuda Toolkit 等第三方依赖,或用 USE_CPM 自动下载且要求网络畅通;运行前必须先用 export.py 把 HF 模型导出为 bin 并准备 tokenizer 文件;LLama3 与 Qwen2.5 需分别加 -DLLAMA3_SUPPORT=ON、-DQWEN2_SUPPORT=ON 重新编译。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本course5_code
  1. course5_code第五次课程代码最新正式版2024-07-07 · 2024-07-07 11:42 UTC

    第五次课程代码

  2. course4_code第四次课程代码2024-07-07 · 2024-07-07 11:42 UTC
    查看更新说明

    第四次课程代码

  3. course3第三次课程代码2024-07-07 · 2024-07-07 11:41 UTC
    查看更新说明

    第三次课程代码

  4. course21第二次课程代码2024-06-22 · 2024-06-22 14:30 UTC

    这个版本没有写更新说明。

  5. course1newnew第一次课程代码2024-06-22 · 2024-06-22 13:51 UTC

    这个版本没有写更新说明。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    KuiperLLama 动手自制大模型推理框架,支持LLama2/3和Qwen2.5

    News:新课发布,《动手自制大模型推理框架》,全手写cuda算子,课程框架支持LLama2和3.x以及Qwen2.5模型

    Hi,各位朋友们好!我是 KuiperInfer 的作者。KuiperInfer 作为一门开源课程,迄今已经在 GitHub 上已斩获 2.5k star。 如今在原课程的基础上,我们全新推出了《动手自制大模型推理框架》, 新课程支持Llama系列大模型(包括最新的LLama3.2)以及Qwen2.5系列大模型,同时支持 Cuda 加速和 Int8 量化,自推出以来便广受好评。

    《动手自制大模型推理框架》课程目录:

    https://tvle9mq8jh.feishu.cn/docx/AGb0dpqwfohQ9oxx4QycqbCjnJh

    《动手自制大模型推理框架》课程优势

    1. 采用最新的C++ 20标准去写代码,统一、美观的代码风格,良好的错误处理;
    2. 优秀的项目管理形式,我们采用CMake+Git的方式管理项目,接轨大厂;
    3. 授人以渔,教大家怎么设计一个现代C++项目,同时教大家怎么用单元测试和Benchmark去测试验证自己的项目;
    4. CPU算子和CUDA双后端实现,对时新的大模型(LLama3和Qwen系列)有非常好的支持。

    如果你对大模型推理感兴趣,想要深入了解并掌握相关技术,想在校招、秋招面试当中脱颖而出,那么这门《动手自制大模型推理框架》课程绝对不容错过。快来加入我们,一起开启学习之旅吧! 感兴趣的同学欢迎扫一扫课程下方二维码或者添加微信 lyrry1997 参加课程

    《动手自制大模型推理框架》课程项目运行效果

    LLama1.1b fp32模型,视频无加速,运行平台为Nvidia 3060 laptop,速度为60.34 token/s

    第三方依赖

    借助企业级开发库,更快地搭建出大模型推理框架

    1. google glog https://github.com/google/glog
    2. google gtest https://github.com/google/googletest
    3. sentencepiece https://github.com/google/sentencepiece
    4. armadillo + openblas https://arma.sourceforge.net/download.html
    5. Cuda Toolkit

    模型下载地址

    1. LLama2 https://pan.baidu.com/s/1PF5KqvIvNFR8yDIY1HmTYA?pwd=ma8r 或 https://huggingface.co/fushenshen/lession_model/tree/main

    2. Tiny LLama

    1. Qwen2.5/LLama

      请参考本项目配套课程,课程参加方式请看本文开头。

    模型导出

    python export.py llama2_7b.bin --meta-llama path/to/llama/model/7B
    # 使用--hf标签从hugging face中加载模型, 指定--version3可以导出量化模型
    # 其他使用方法请看export.py中的命令行参数实例
    

    编译方法

      mkdir build 
      cd build
      # 需要安装上述的第三方依赖
      cmake ..
      # 或者开启 USE_CPM 选项,自动下载第三方依赖
      cmake -DUSE_CPM=ON ..
      make -j16
    

    生成文本的方法

    ./llama_infer llama2_7b.bin tokenizer.model
    
    

    LLama3.2 推理

    • 以 meta-llama/Llama-3.2-1B 为例,huggingface 上下载模型:
    export HF_ENDPOINT=https://hf-mirror.com
    pip3 install huggingface-cli
    huggingface-cli download --resume-download meta-llama/Llama-3.2-1B --local-dir meta-llama/Llama-3.2-1B --local-dir-use-symlinks False
    
    • 导出模型:
    python3 tools/export.py Llama-3.2-1B.bin --hf=meta-llama/Llama-3.2-1B
    
    • 编译:
    mkdir build 
    cd build
    # 开启 USE_CPM 选项,自动下载第三方依赖,前提是需要网络畅通
    cmake -DUSE_CPM=ON -DLLAMA3_SUPPORT=ON .. 
    make -j16
    
    • 运行:
    ./build/demo/llama_infer Llama-3.2-1B.bin meta-llama/Llama-3.2-1B/tokenizer.json
    # 和 huggingface 推理的结果进行对比
    python3 hf_infer/llama3_infer.py
    

    Qwen2.5 推理

    • 以 Qwen2.5-0.5B 为例,huggingface 上下载模型:
    export HF_ENDPOINT=https://hf-mirror.com
    pip3 install huggingface-cli
    huggingface-cli download --resume-download Qwen/Qwen2.5-0.5B --local-dir Qwen/Qwen2.5-0.5B --local-dir-use-symlinks False
    
    • 导出模型:
    python3 tools/export_qwen2.py Qwen2.5-0.5B.bin --hf=Qwen/Qwen2.5-0.5B
    
    • 编译:
    mkdir build 
    cd build
    # 开启 USE_CPM 选项,自动下载第三方依赖,前提是需要网络畅通
    cmake -DUSE_CPM=ON -DQWEN2_SUPPORT=ON .. 
    make -j16
    
    • 运行:
    ./build/demo/qwen_infer Qwen2.5-0.5B.bin Qwen/Qwen2.5-0.5B/tokenizer.json
    # 和 huggingface 推理的结果进行对比
    python3 hf_infer/qwen2_infer.py
    

    Qwen3推理

    和上面同理,我们先从huggingface仓库中将模型下载到本地。

    1. tools/export_qwen3/load.py中导出为pth,模型的输入model_name和输出地址output_file依次需要填写;
    2. 导出pth格式的模型后,再用同文件夹下的write_bin.py导出qwen.bin;
    3. 用CMake选项QWEN3_SUPPORT重新编译项目,其他步骤就都是一样的了。