[嵌入式AI从0开始到入土]嵌入式AI系列教程

注:等我摸完鱼再把链接补上
可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。

往期回顾:我的专栏



前言

openJiuwen作为开源Agent平台,致力于提供灵活、强大且易用的AI Agent开发与运行能力。

小艺开放平台依托HarmonyOS生态,为开发者打造全链路智能体开发解决方案。

CANNBot 是面向CANN开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的Skills模块,目前已实现 Ascend C / PyPTO 算子开发全流程覆盖,未来将拓展至 CANN 更多技术领域。

如果你是以下之一,我觉得你非常需要本文,毕竟无缝接入华为设备,动动嘴指挥小艺帮你写算子,查api还是很舒服的。

  • CANN 社区开发者
  • 昇腾 NPU 平台 AI 应用开发者
  • Ascend C / PyPTO 算子开发者

按照本文的步骤,你能实现类似下面的效果。
在这里插入图片描述

一、CANNBot Skills包含的主要内容

1.1 Skills 技能库

1.1.1 Ascend C 算子开发

Skill 功能
ascendc-api-best-practices API 使用最佳实践、参数限制
ascendc-npu-arch NPU 架构知识、芯片型号映射
ascendc-docs-search API 文档索引 + 在线搜索
ascendc-env-check NPU 设备查询、CANN 环境验证
ascendc-tiling-design Tiling和Kernel 设计方法论,按算子类别分类
ascendc-precision-debug 精度调试,症状-原因速查、常见陷阱
ascendc-runtime-debug 运行时错误调试,错误码解析、Kernel 挂起排查
ascendc-ut-develop UT 开发与覆盖率增强
ascendc-st-design aclnn 接口测试用例设计、L0/L1 用例生成
ascendc-code-review 代码检视方法论、5 大类别规范
ascendc-task-focus 任务聚焦,解决长任务"迷失在中间"问题
ascendc-whitebox-design 白盒测试用例生成
ascendc-registry-invoke-to-direct-invoke 注册调用算子转 <<<>>> kernel 直调
ascendc-direct-invoke-template Kernel 直调工程模板,提供验证过的样例工程和修改指南
ops-profiling NPU 性能采集与分析,CSV 指标解读、瓶颈定位、优化建议
ops-precision-standard 算子精度标准,按 dtype 分类提供 atol/rtol 精度比对标准
ascendc-docs-gen 算子文档写作参考,支持需求分析、详细设计等多个标准模版

1.1.2 PyPTO 算子开发

Skill 功能
pypto-op-design 算子方案设计生成
pypto-op-develop 算子代码实现与测试
pypto-golden-generate Golden 参考实现生成
pypto-intent-understand 需求意图理解与规格生成
pypto-api-explore API 可行性探索与分析
pypto-precision-debug 精度问题代码层排查
pypto-precision-compare 精度中间结果对比分析
pypto-op-perf-tune 算子性能分析与自动调优

1.2 Agents 智能代理

1.2.1 Ascend C 算子开发

Agent 功能
ascendc-ops-architect 算子架构师,支持需求分析和方案设计两种场景
ascendc-ops-reviewer 代码检视专家,支持快速检视和全功能检视两种模式
ascendc-kernel-architect Kernel直调架构师,支持需求分析、API验证、方案设计
ascendc-kernel-developer Kernel直调开发者,支持代码实现、编译测试、性能采集、文档编写
ascendc-kernel-reviewer Kernel直调审查者,支持独立构建验证、7维度评分、精度验证

1.2.2 PyPTO 算子开发

Agent 功能
pypto-op-analyst 需求分析与方案设计
pypto-op-developer 算子代码实现与精度调试
pypto-op-perf-tuner 性能分析与调优

二、jiuwenclaw安装

注:openclaw也可以,步骤差不多。但是jiuwenclaw的界面相对来说简洁很多。

2.1 docker

  1. 这里我已经全部打包好了,直接在终端中执行下面的命令即可。
    1. 未安装cann-toolkit的版本,可以安装ascendc算子文档查询等skills。
    docker run --name jiuwenclaw -it -d --net=host \
        -v /tmp:/tmp \
        -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
        swr.cn-north-4.myhuaweicloud.com/toolsmanhehe/jiuwen:0.1.8-py311-ubuntu22.04
    
    1. 安装了cann-9.0.0-beta.2的版本,支持调用CANNBot Skills通过CPU和NPU进行自动算子开发和测试。注意,需要手动补充nnal和硬件对应的ops包才能在NPU上进行模型适配等工作。
    docker run --name jiuwenclaw -it -d --net=host \
        -v /tmp:/tmp \
        -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
        swr.cn-north-4.myhuaweicloud.com/toolsmanhehe/jiuwen:0.1.8-cann9.0.0-py311-ubuntu22.04-x86
    
  2. 然后使用浏览器访问http://localhost:5173,局域网使用http://{ip}:5173

2.2 pip安装

如果不想用容器的话,按照下面的步骤执行也可以。

# 确认python:>=3.11,<3.14
python3 --version

# 安装 JiuwenClaw
pip install jiuwenclaw

# 初始化 JiuwenClaw (首次启动)
jiuwenclaw-init

# 启动 JiuwenClaw
jiuwenclaw-start

# 如需远程访问需要在两个终端中分别执行下面的命令
jiuwenclaw-app
jiuwenclaw-web --host 0.0.0.0 --port 5173

三、CANNBot Skills安装

CANNBot Skills仓库在26年4月经历了一次更新,commit 05fbb2fa之后的版本skills目录不在仓库的根目录下了,导致通过源安装会出现明明添加了源但是看不到skills的问题。此时,我们可以通过手动导入的方式安装。

3.1 从源安装

  1. 在jiuwenclaw的web页面上找到技能页面,点击源管理。
    在这里插入图片描述
  2. 源名称可以自己取,这里我用的是CANNBot Skills,git仓库地址写https://gitcode.com/cann/skills.git,然后点击添加并启用这个源。
    在这里插入图片描述
  3. 关闭源管理界面后,就可以在技能页面看到刚刚添加的技能了。我们可以按需启用技能。
    在这里插入图片描述

3.2 手动安装

  1. 进入容器后,将CANNBot Skills仓库拉取到本地。

    docker exec -it jiuwenclaw bash
    git clone https://gitcode.com/cann/skills.git -b 9a8fd0f0
    
  2. 复制本地地址,将其填入openclaw管理页面的导入本地技能的对话框中,保存即可。以下是笔者测试过能够成功jiuwenclaw,且可以正常调用的。

    /root/skills/ops/skills/ascendc-api-best-practices
    /root/skills/ops/skills/ascendc-code-review
    /root/skills/ops/skills/ascendc-direct-invoke-template
    /root/skills/ops/skills/ascendc-docs-gen
    /root/skills/ops/skills/ascendc-docs-search
    /root/skills/ops/skills/ascendc-env-check
    /root/skills/ops/skills/ascendc-npu-arch
    /root/skills/ops/skills/ascendc-precision-debug
    /root/skills/ops/skills/ascendc-registry-invoke-to-direct-invoke
    /root/skills/ops/skills/ascendc-runtime-debug
    /root/skills/ops/skills/ascendc-st-design
    /root/skills/ops/skills/ascendc-task-focus
    /root/skills/ops/skills/ascendc-tiling-design
    /root/skills/ops/skills/ascendc-ut-develop
    /root/skills/ops/skills/ascendc-whitebox-design
    

    在这里插入图片描述

  3. 这里不推荐直接复制skills到openclaw的skills目录下,这样卸载的话就只能手动进入skills目录删除文件了。

四、模型配置

  1. 这里我在本地Ascend310P上用mindie跑了一个模型。服务化配置如下:
    "ipAddress" : "0.0.0.0",
    "allowAllZeroIpListening" : true,
    "httpsEnabled" : false,
    "npuDeviceIds" : [[0,1]],
    "maxSeqLen" : 32768,
    "maxInputTokenLen" : 65535,
    "truncation" : true,
    "modelName" : "Qwen3-30B-A3B-w8a8",
    "modelWeightPath" : "/models/Qwen3-30B-A3B-w8a8",
    "worldSize" : 2,
    "trustRemoteCode" : true,
    "maxPrefillTokens" : 65536,
    "maxIterTimes" : 65536,
    
  2. 在jiuwenclaw的配置信息中进行模型配置。别忘了点保存。
    在这里插入图片描述

五、对话测试

  1. 文档查询
    这里我使用的测试问题是使用ascendc-api-best-practices这个技能,帮我查询一下datacopy的使用方法

    在这里插入图片描述

  2. 编写add算子,这里我使用的提示词是帮我用ascendc实现一个add算子z=x+y,你需要先source /usr/local/Ascend/ascend-toolkit/set_env.sh然后就可以使用cpu进行仿真了,请自己新建工程,cpu仿真通过后告诉我。 以下是大模型的部分输出:
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

六、小艺连接

  1. 访问小艺开放平台,点击立即体验。
    在这里插入图片描述

  2. 点击创建
    在这里插入图片描述

  3. 选择openclaw模式,下面的名字和描述自己填写就好了。
    在这里插入图片描述

  4. 第一次进来这里会提示还没有凭证,我们根据提示创建,key和安全密钥务必保存好,下面要用。创建后回来智能体编辑界面是这样的。
    在这里插入图片描述

  5. 进行一些其他的配置,然后上架这个智能体。
    在这里插入图片描述

  6. 回到jiuwenclaw的配置界面,在频道中配置小艺。
    在这里插入图片描述
    在这里插入图片描述

  7. 打开手机的小艺app界面,在对话页面就会出现刚刚创建的智能体。
    在这里插入图片描述

  8. 我们进行对话测试,我使用的问题是搜索 asc-devkit 中 Exp API 的使用示例
    在这里插入图片描述

七、总结

笔者走完整个流程大概花了2个小时,大部分时间被jiuwenclaw安装卡了。。。
CANNBot Skills的安装和使用倒是没遇到什么大问题,不过可能是没有针对opencalw这种模式优化,在使用的时候有概率不调用安装的skill,但是我们通过指定技能的方式能够实现正确的调用。当然,也有可能是因为笔者刚开始调教我的"油闷大虾"哈。
笔者按照cann skill的说明测试了下面几个场景,模型回答的还是比较准确的,基本没什么错误。在调用skill失败的时候,jiuwenclaw也会降级到websearch,就是多消耗亿点token罢了。

Skill 功能
ascendc-api-best-practices API 使用最佳实践、参数限制
ascendc-npu-arch NPU 架构知识、芯片型号映射
ascendc-docs-search API 文档索引 + 在线搜索
ascendc-env-check NPU 设备查询、CANN 环境验证
ascendc-runtime-debug 运行时错误调试,错误码解析、Kernel 挂起排查

最后,还是建议大家在使用的时候,直接指定技能名称,这样可以有效降低token消耗。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐