一、简介

在今年的 CSDN 程序员节庆典中,我有幸参与了知存科技精心策划的 AI 工作坊——“探索存内计算芯片开发板在语音识别中的应用”。作为众多成功完成挑战的参与者之一,我感到无比兴奋。随着AI时代的到来,作为AI入门的新手有着好学之心,在此次活动参与中,我回顾了大学的嵌入式课程,又结合了实际的硬件操作,实验搭建完成之后的满满成就感,感觉大学老师没白教!接下来带大家领略一下这个技术之旅以及实际的搭建过程:

随着数据驱动的人工智能技术在各个领域的广泛应用,高能效的存内计算(In-Memory Computing,
IMC)作为解决传统冯·诺依曼架构瓶颈的有效途径,正逐渐成为计算架构领域的研究热点。存内计算的核心思想是将计算任务直接在存储器内部完成,从而减少数据在处理器和存储器之间频繁传输所带来的能耗和时间延迟。

存内计算技术通过在存储单元内部集成计算功能,使得数据在被读取的同时即刻完成计算,极大地提高了计算效率并降低了能耗。这种计算方式特别适合于处理大规模并行计算任务,如深度学习算法中的矩阵运算,能够显著提升智能算法的能效。

在实际应用中,存内计算技术可以广泛应用于自动驾驶、医疗诊断、智能家居等多个领域,通过融合图像、语音、传感器等多种数据源,实现更智能的决策和控制。

存内计算技术的发展不仅为解决传统计算架构的瓶颈提供了新的思路,也为智能计算的发展注入了新的活力,预示着计算技术的深刻变革。

二、活动内容

此次活动主要分为几个部分:

  • 多模态时代,存内计算框架的应用与发展
  • 分布式环境下深度学习任务的高效可靠执行研究
  • IGZO在后道单片三维集成中的机遇与挑战
  • 存内实训
  • AGI 开源圆桌分享

2.1 多模态时代,存内计算框架的应用与发展

知存科技是全球领先的存内计算芯片企业,全球率先 量产商用、KK级 量产出货,2024年首颗存内计算 视觉AI芯片 WTM-8系列即将量产,感兴趣的可以关注期待一下。
在这里插入图片描述

1、多模态时代计算需求

云端侧大模型应领域:主要在移动终端、智能助手、具身智能、自动驾驶等。
在这里插入图片描述

超大模型参数:数字信号处理、人脸识别、人脸识别、端侧大模型、云端大模型。

端侧LLM Decoding需求:语音多模态 输入输出、信息总结能力、逻辑推理能力、通用具身智能

近存计算技术:基于2.5D的混合工艺集成,将不同的die集成在硅基基座上 混合集成逻辑芯片、模拟芯片、内存芯片 基于UCIE协议,可多芯片高速互联,接口带宽达1Kbit 集成成本高,但芯片设计成本低。

存内计算-相比CPU/GPU,更高计算并行度。更高能效:
在这里插入图片描述

2、存内计算技术

数字存算/模拟存算对比:
在这里插入图片描述

模拟存内计算- 浮栅:

在这里插入图片描述

3、知存科技存内产品

在这里插入图片描述

2.2 分布式环境下深度学习任务的高效可靠执行研究

在这里插入图片描述

基于强化学习的流水线分布式训练调度方案(PG-MPSS)—— 系统框架
在这里插入图片描述

模型划分方案
① 提取模型特征–层的操作类型、输入数据大小、输出数据大小、计算量
② 将每层的特征编码依次输入到分组网络
③ 分组网络输出得到本层与下一层合并的规则。若输出0,则将本层与下一层合并;若输出1,则把前面标记都是0的层加上本层作为一个阶段
④ 在层间流水线并行的基础上加入层内数据并行

阶段映射方案
① 提取阶段的特征,通过对属于阶段的所有层特征进行逻辑或操作得到的
② 将每阶段的特征编码依次输入到映射网络
③ 映射网络输出每阶段对应放置的计算节点编号
④ 按照此模型划分和阶段映射结果做流水线并行训练

2.3 IGZO在后道单片三维集成中的机遇与挑战

1、IGZO的背景

芯片级的三维集成目前提高集成电路密度和性能的主要手段,能够快速满足芯片集成密度提高的需求,基于后道工艺的单片三维集成是未来芯片级三维集成的重要发展方向。基于后道工艺的单片三维集成需要一种兼容低温工艺的成熟半导体材料。

在这里插入图片描述

2、IGZO的优势

氧化物半导体的导电机制:氧化物半导体的迁移率与是否结晶无关,比其他非晶半导体具有更高的迁移率。

氧化物半导体的稳定性主要与Vo浓度、H含量、C杂质有关。

在这里插入图片描述

氧化物半导体在后道集成中的优势

  • 氧化物半导体能够在非晶态时具有较高的电子迁移率
  • 氧化物半导体器件的阈值电压能够通过元素组分调节
  • 氧化物半导体兼容低温工艺且易于三维集成

3、IGZO器件的“三座大山”

抗氢(H)性:IGZO中H可以作为浅能级施主杂质提供电子,导致IGZO器件的阈值电压减小。
热稳定性:后段的ILD、FG退火等工艺会使器件长时间处于400oC,导致薄膜性能退化 F处理能够增强IGZO中M-O的键结,提高薄膜的稳定性。
偏压温度不稳定性:对IGZO进行F plasma处理并优化HK,能够使PBTI可靠性达到十年。

2.4 神经网络推理框架与实践

1、实验介绍

这次实验主要是想通过用AISHELL-WakeUp-1 数据集为例,用不同网络结构展示模型训练及移植过程。AISHELL-WakeUp-1是一个包含中英文唤醒词的语音数据库,其中唤醒词为“你好,米雅”和“hi, mia”。该数据库收录了3936003条语音样本,总计1561.12小时的录音。共有254位发音人参与录制。录音工作在真实的家庭环境中进行,设置了7个录音位置。远距离录音使用了6个圆形的16路PDM麦克风阵列,采样率为16kHz,位深为16bit;近距离录音则使用了1个高保真麦克风,采样率为44.1kHz,位深同样为16bit。

本次实验用到的是witin_nn 框架,这个框架是基于 PyTorch 开发的,witin_nn 框架主要实现了适配知存科技芯 片的量化感知训练(QAT)和噪声感知训练(NAT)方法,目前支持 Linear、Conv2d、 ConvTranspose2d、GruCell 等算子。

通过在神经网络的正向传播链路上引入输 入、权重、偏置以及输出的噪声,干预神经网络的反向传播(参数更新),从而增强网 络的泛化能力。具体来说,witin_nn 模拟神经网络映射到知存科技存内芯片计算的过程, 支持输入和输出的 8bits~12bits 位宽量化以及权重的 8bits 量化,实现 QAT,并引入 模拟电路噪声,实现 NAT。

2、实验环境准备

实验环境准备:

硬件:x3 开发板、GPIO 为 16,17所用串口 、WTMDK2101-X3评估板。

WTMDK2101-X3评估板:WTMDK2101-X3 是针对 WTM2101 AI SOC 设计的评估板。

包含:

()1) WTM2101 核心板,即我们的存算芯片。
()2) 和 I/O 板:WTM2101 运行需要的电源、以及应用 I/O 接口等。

在这里插入图片描述

                                     核心板                                  

在这里插入图片描述

                              WTMDK2101-X3 I/O 板

在这里插入图片描述

软件环境:其中的python环境需要安装3.11版本的。
在这里插入图片描述

安装步骤为:

第一步:安装Miniconda3
	Miniconda3-py311_24.7.1-0-Windows-x86_64.exe
	
第二步:Miniconda下创建环境  :
	conda info -e
	conda create -n py3.11_torch2.3.1 python=3.11
	conda activate py3.11_torch2.3.1
 
第三步:安装onnx、matplotlib、opencv-python、tqdm模块 
	conda install onnx 
	pip install matplotlib    -i https://pypi.tuna.tsinghua.edu.cn/simple
	pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
	pip install -i https://mirrors.aliyun.com/pypi/simple/ -U numpy
	pip install tqdm
	pip install einops
 
第四步:安装torch模块和Torchvision模块,win环境下在tools目录中有提供对应文件
	Torch:torch-2.3.1+cpu-cp311-cp311-win_amd64.whl
	Torchvision:torchvision-0.18.1+cpu-cp311-cp311-win_amd64.whl
	运行如下命令进行安装: 
	pip install /PATH/TO/torch-2.3.1+cpu-cp311-cp311-win_amd64.whl
	pip install  /PATH/TO/torchvision-0.18.1+cpu-cp311-cp311-win_amd64.whl

其中第四步中的TO需要改写torch-2.3.1+cpu-cp311-cp311-win_amd64.whl和torch-2.3.1+cpu-cp311-cp311-win_amd64.whlf分别的文件路径。如下所示:

在这里插入图片描述

在这里插入图片描述

3、模型训练

本 demo 提供 CNN 网络结构为:
在这里插入图片描述
接下来我们就开始训练了。本次实验推荐在 windows 环境下进行运行。操作步骤为:

(1)python 环境安装配置完成。
(2)进入代码目录 cd python,执行后续代码,模型训练配置 config.py。
(3)运行 train.py,训练完毕后,模型权重为 models/net_type/bestModel.pth。
(4)运行 infer_and_generate_onnx.py,会将训练得到的 bestModel.pth 进行推理并 构建 onnx 模型,即 models/net_type/bestModel_quant.onnx,将 bestModel.onnx 复制 到 mapper/input 下。
(5)运行 create_quant_data.py,在 mapper/input 中生成 test_data_cnn_0_100.npy 和 mnist_data_cnn.h 文件,这俩文件是后面生成 map 和上板验证需要的输入文件。

4、知存 onnx 格式模型转芯片 mapper 格式

mapper 是知存工具链制定的一套工具,目的在于将模型转换至芯片所需格式。

4.1、连接 mapper 环境

(1)安装 Xshell/Xftp、或者mobaxterm软件,能连接服务器的也行。通过 Xshell 连接到 mapper 服务器

  • 服务器 IP 地址: 101.126.129.212
  • 端口: 8090
  • 账号: guest
  • 密码: guest111

(2)输入命令:source ~/.bashrc

(3)在用户目录下新建一个文件夹,用于存放后续相关文件,如/home/guest/temp

4.2、准备 mapper 输入文件

进入 mapper 文件夹下, input 文件夹下即我们给 mapper 的输入。

在这里插入图片描述

其中bestModel_quant.onnx 为步骤 3.(4)生成的模型。
opt.protobuf 为模型优化策略配置文件,是可选项。

test_data_cnn_0_100.npy 为 python/create_quant_data.py 生成的数据, 用于模型精度校准。 gen_mapper.py 为转换脚本,其中网络输入形状、名称等,需与模型适配 (如所示)。
在这里插入图片描述

4.3、生成 map

(1)通过 Xftp 将 mapper/input 文件夹传输到

4.1.(3)建立的文件夹下,如 /home/guest/temp/input,执行 gen_mapper.py,转换输出在/home/guest/temp/output, 将 output 文件夹传输回本地。

(2)mapper 的生成产物示例位于 mapper/output
在这里插入图片描述

5、烧写 NPU 权重

我们使用 NPU 烧写板(NPU 烧录器)

(1)系统连接:进行模型烧录和开发时,我们需要将 JTAG,核心板,NPU 烧写 板连接好,并打开开关,如系统连接示意图所示。跳线连接参照图:

在这里插入图片描述

实物连接
在这里插入图片描述

在这里插入图片描述

(3)使用 project/ WitinProgramTool_WTM2101 下的 WitinProgramTool.exe 进行模型 权重烧写。

(4)烧写指令: .\WitinProgramTool.exe -m init .\WitinProgramTool.exe -m program -i XXXX\map.csv -k 2 其中 XXXX 为步骤 4.(3)中生成的 mapper/output/map

在这里插入图片描述

6、板端工程编译及测试

(1)安装知存 IDE Witmem Studio,安装包在 tools 下 WSSetup_1.5.7.exe。

(2)将步骤 4.(3)生成的 mapper/output/register.c 放在 project/Model 下,使用 Witmem Studio 打开工程 project/Project/SES-RISCV/Demo.wmproject。

(3)测试数据为 python/create_quant_data.py 生成的数据 mnist_data_cnn.h,应放在:

在这里插入图片描述

(4)Target->Download 下载工程:
在这里插入图片描述

(5)打开 tools 中的 amaoComV4.9.exe 串口工具,设置波特率 9600,查看准确率输 出。这些串口打印信息会在(4)download 工程完成后开始打印,如果没有看到完整的 打印信息,可以将板子重新下电上电后,先打开串口,再进行(4)download,不能通过开发板 reset 按键进行重启操作。

正确输出见下图:

在这里插入图片描述

如果界面出现这些数据,那么恭喜你, 完成了基于存内计算X3开发板的语音识别从训练到部署全流程。

三、总结与分享

总结

随着人工智能大模型时代的到来,我们大多数人对AI的体验还停留在软件层面,比如智能手机上的虚拟助手、网站自动回复的聊天机器人等。最近,我有幸参与了一个线下的AI体验活动,它让我亲身感受到了AI与物理硬件相结合的独特魅力。

在这次活动中,我有机会体验了AI在嵌入式系统中的应用,这不仅仅是一个简单的软件操作流程,而是需要我亲自动手,将AI技术集成到实体设备中。

在专业导师的辅导下,我完成了一个基于X3内存计算开发板的语音识别项目,从数据采集、模型训练到最终的系统部署,整个过程让我对AI技术的深度和应用价值有了更深刻的认识。在这个过程中,我面临了不少挑战,包括数据清洗的复杂性、模型优化的困难,但每当我克服这些挑战,那种成就感和满足感是难以言表的。

每当我完成一个阶段的工作,那种成就感和自豪感就会涌上心头。从项目的开始到最终的成果展示,我不仅获得了宝贵的知识,还提升了我的实践技能。这次体验不仅加深了我对AI技术的理解,也让我对未来AI的潜力充满了期待。这确实是一次非常珍贵且难忘的经历!

分享—天才博士招募计划

此次线下的导师团队,是由知存科技的算法开发专家团队领衔,包括工具链、AI算法开发和存算架构设计等领域的领军人物,具备丰富的实战经验。如果有这个行业的或者感兴趣的可以加入他们。

分享一下他们团队的一个天才博士招募计划,如果你觉得你觉得你能行你就来!有着广阔的舞台等着你!具体招募要求如下:

  • 面向具有创新精神、良好的解决问题能力、善于和乐于学习、有很强的自我驱动能力和延迟满足感 年薪总包:业界最顶级
  • 人才培养:除年薪外百万元预算用于海外交流、顶级行业科学家辅导、充分自由度的研发项目、独自带队机会。

快来报名:天才博士招募计划

在这里插入图片描述

感兴趣的也可以扫码了解更多信息。

Logo

纵情码海钱塘涌,杭州开发者创新动! 属于杭州的开发者社区!致力于为杭州地区的开发者提供学习、合作和成长的机会;同时也为企业交流招聘提供舞台!

更多推荐