当前位置: 首页 > news >正文

CANN-LLM:基于昇腾 CANN 的高性能、全功能 LLM 推理引擎

在上一篇中,我们实现了毫秒级请求取消机制,使系统具备了生产级的鲁棒性。现在,我们将整合前六篇的所有技术成果,构建一个完整的、可开源的 LLM 推理服务项目模板,命名为:

CANN-LLM:基于昇腾 CANN 的高性能、全功能 LLM 推理引擎

本文将提供:

  • 完整的项目目录结构
  • CMake 构建系统配置
  • Docker 部署方案
  • 性能调优 checklist
  • 以及如何贡献到 GitCode 开源社区

目标:让开发者 10 分钟内跑通 INT4 + Continuous Batching + QoS + StreamingLLM 的 Llama-2-7B 服务


cann组织链接:https://atomgit.com/cann
ops-nn仓库链接:https://atomgit.com/cann/ops-nn

一、项目整体架构

cann-llm/ ├── cmake/# CMake 模块│ ├── FindCANN.cmake# 自动查找 CANN 安装│ └── cann-llm-config.cmake ├── src/ │ ├── core/# 核心推理逻辑│ │ ├── engine.cpp# 主推理引擎│ │ ├── scheduler.cpp# QoS + Continuous Batching│ │ ├── kv_manager.cpp# PagedAttention + StreamingLLM│ │ └── cancellation.cpp# 请求取消│ ├── model/# 模型加载与量化│ │ ├── int4_loader.cpp │ │ └── quantize_tool.py │ ├── ops/# tbe 算子注册│ │ ├── int4_gemm.cpp │ │ ├── fused_attention.cpp │ │ └── sparse_attention.cpp │ ├── server/# HTTP/WebSocket 服务│ │ ├── http_server.cpp │ │ └── ws_streamer.cpp │ └── main.cpp# 入口├── tbe_kernels/# Python tbe 算子源码│ ├── int4_gemm.py │ ├── paged_attention.py │ └── streaming_sparse_attn.py ├── tools/ │ ├── quantize_llama.py# 离线量化脚本│ └── profile_cann.py# 性能分析工具├── configs/ │ └── llama2_7b_int4.yaml# 模型配置├── docker/ │ └── Dockerfile# 一键部署├── tests/ │ └── e2e_test.py# 端到端测试├── README.md └── CMakeLists.txt

二、CMake 构建系统(关键片段)

CMakeLists.txt

cmake_minimum_required(VERSION 3.18) project(cann-llm LANGUAGES CXX) # 查找 CANN find_package(CANN REQUIRED) # 编译 tbe 算子(自动调用 te_build) add_custom_target(tbe_ops ALL COMMAND python ${CMAKE_SOURCE_DIR}/tbe_kernels/build_all.py WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tbe_kernels DEPENDS ${CMAKE_SOURCE_DIR}/tbe_kernels/*.py ) # 主程序 add_executable(llm_server src/main.cpp src/core/engine.cpp src/core/scheduler.cpp src/model/int4_loader.cpp src/server/http_server.cpp # ... 其他源文件 ) # 链接 CANN 库 target_link_libraries(llm_server PRIVATE ${CANN_LIBRARIES} pthread dl ) # 依赖 tbe 算子 add_dependencies(llm_server tbe_ops) # 安装规则 install(TARGETS llm_server DESTINATION bin) install(DIRECTORY configs/ DESTINATION etc/cann-llm)

cmake/FindCANN.cmake

find_path(CANN_INCLUDE_DIR ge/ge_api.h PATHS /usr/local/Ascend/ascend-toolkit/latest/include $ENV{ASCEND_HOME}/include ) find_library(CANN_GE_LIB ge PATHS /usr/local/Ascend/ascend-toolkit/latest/lib64 ) set(CANN_LIBRARIES ${CANN_GE_LIB} ${CANN_RUNTIME_LIB} ...) set(CANN_FOUND TRUE)

三、Docker 一键部署

docker/Dockerfile

FROM ascend-cann-toolkit:8.0.RC1 WORKDIR /app COPY . . # 安装 Python 依赖(用于量化 & tbe) RUN pip install torch transformers sentencepiece # 构建 C++ 引擎 RUN mkdir build && cd build && \ cmake .. -DCMAKE_BUILD_TYPE=Release && \ make -j$(nproc) && \ make install # 量化模型(示例) RUN python tools/quantize_llama.py \ --model meta-llama/Llama-2-7b-hf \ --output ./models/llama2-7b-int4 EXPOSE 8080 CMD ["llm_server", "--model", "/app/models/llama2-7b-int4", "--port", "8080"]

构建与运行:

dockerbuild -t cann-llm -f docker/Dockerfile.dockerrun -d --device=/dev/davinci0 --name llm-server cann-llm

四、启动与测试

启动服务

./build/llm_server\--model ./models/llama2-7b-int4\--max-batch-size8\--window-size2048\--sink-size4\--port8080

调用 API

# 1. 提交请求REQ_ID=$(curl-s -X POST http://localhost:8080/generate\-H"X-Priority: high"\-d'{"prompt": "Explain quantum computing in simple terms."}'|jq -r .id)# 2. 流式获取结果curl-N http://localhost:8080/stream/$REQ_ID# 3. 取消请求(如需要)curl-X DELETE http://localhost:8080/requests/$REQ_ID

五、性能调优 Checklist

组件调优项建议值
tbe 算子BLOCK_M / BLOCK_N根据 NPU UB 大小调整(通常 64~128)
PagedAttentionblock_size16 或 32(平衡碎片与管理开销)
Continuous Batchingmax_batch_size8~16(避免长尾延迟)
INT4 GEMMgroup_size128(AWQ 默认)
StreamingLLMsink_size4(论文推荐)
QoSHigh 权重≥5(保障实时性)

💡 使用tools/profile_cann.py分析 kernel 占比,定位瓶颈


六、开源贡献指南(GitCode)

  1. Fork 仓库
    https://gitcode.com/cann-community/cann-llm

  2. 提交 PR 要求

    • 新算子需包含tbe_kernels/xxx.py+ops/xxx.cpp
    • 性能提升需附 benchmark 数据
    • 支持新模型需提供量化脚本
  3. CI/CD 流程

    • 自动编译检查
    • 单元测试(Google Test)
    • 精度回归测试(vs HF FP16)

七、结语:从技术原型到工业基石

通过CANN-LLM项目,我们将前六篇的先进技术——
✅ FusedAttention
✅ INT4 GEMM
✅ Continuous Batching
✅ PagedAttention
✅ StreamingLLM
✅ QoS 调度
✅ 请求取消

——整合为一个开箱即用、生产就绪的推理引擎。

这不仅是一个项目,更是:

国产 AI 软件栈走向成熟、走向生态的关键一步。

我们邀请每一位开发者:

  • 使用它:快速部署自己的 LLM 服务
  • 改进它:贡献算子、调度策略、新模型支持
  • 扩展它:构建多模态、Agent、RAG 等上层应用

🌟CANN-LLM 将于 2026 年 Q2 在 GitCode 正式开源
关注 https://gitcode.com/cann-community 获取最新动态

http://www.jsqmd.com/news/355257/

相关文章:

  • 东三省优质钢化玻璃供应商推荐榜 - 资讯焦点
  • ‌自动化伦理框架:防止AI过度依赖的设计原则
  • 编译器级优化实战:基于 CANN `tbe-scheduler` 的自定义算子自动调度
  • 深度学习:5层CNN实现图片分类(MATLAB版)
  • 2026市政护栏优质供应商推荐榜 - 资讯焦点
  • 厨余垃圾处理器选购技巧?余库/爱适易/海尔等热门品牌分享,买前先看不踩雷! - 资讯焦点
  • CANN-LLM WebUI:打造国产 LLM 推理的“驾驶舱
  • 湖北武汉考研辅导机构口碑实力榜(2026最新前五名) - 资讯焦点
  • 赖氨酸品牌哪个强?2026年赖氨酸品牌功效成分TOP10榜揭晓,Mkule麦高乐以400mg活性赖氨酸引领 - 资讯焦点
  • 历年蓝桥杯青少组省赛国赛C++中/高级组真题解析 | 2024年8月(省赛)
  • 如何基于 CANN 原生能力,构建一个支持 QoS 感知的 LLM 推理调度器
  • 2026国内最新家电售后外包咨询公司top5推荐!广东广州等地优质服务商权威榜单发布,专业服务助力品牌售后升级 - 品牌推荐2026
  • 边缘智能实战:基于 CANN `edge-ai-toolkit` 的 Atlas 500 智能小站部署方案
  • 哪些赖氨酸品牌受欢迎?2026年赖氨酸品牌市场表现TOP10榜发布,哪款占据多平台品类领先榜 - 资讯焦点
  • 卫浴十大品牌前十名揭晓!装修党建议收藏! - 资讯焦点
  • 如何在 CANN 推理引擎中实现毫秒级请求取消(Request Cancellation)机制
  • 02]SynPDF将BMP图片转为
  • 搜索P1784 数独
  • StreamingLLM:无需训练即可支持无限上下文的推理技术
  • 深入解析:C++ map和set
  • 大模型训练加速:基于 CANN `distributed-training-samples` 的多机多卡分布式训练实战
  • 2026.2.7 模拟赛
  • 构建生产级 AI 服务:基于 CANN `inference-server` 的高性能推理引擎实战
  • MoeKoeMusic v1.5.9:高颜值酷狗第三方客户端
  • KTV家具定制源头厂家选择哪家好,讲讲价格和口碑 - myqiye
  • 聊聊耐油O型密封圈货源平台推荐,这些品牌口碑怎么样? - mypinpai
  • CANN 高级调度篇:实现 Continuous Batching 与 PagedAttention
  • 2026年射灯品牌推荐,ARROWARROW箭牌照明“科技+美学+实用” - GEO排行榜
  • 2026年补偿导线高温线厂家好评榜:高温线/工业高温线/高压高温线/耐火线高温线/铁氟龙高温线 - 品牌策略师
  • 2026哪家咖啡豆品牌售后好?消费者关注的保障细节解析 - 品牌排行榜