写在前面,首先感谢活动方:存内计算开发者社区的邀请来参加本次探索存内计算的未来,高能效内存计算实训专场。下面我给大家分享一下本次的活动实操感受😀。
活动议程
本次活动邀请存内技术专家李阳老师分享存内计算是什么?为什么需要进行存内计算?目前面临的挑战是什么?
有来自杭州电子科技大学的黄彬彬老师分享了分布式环境下深度学习任务的高效可靠执行研究。
还有来自浙江大学集成电路学院李骏康老师分享,IGZO在后道单片三维集成中的机遇与挑战。通过黄彬彬老师和李骏康老师的理论分享和硬件层面分享。进一步佐证了能将存内计算这项技术做的更好。
在专家老师们分享结束之后,由主办方:存内计算开发者社区进行进行分享实操,进一步现场体验了存内计算的的独特魅力~😆
为什么一定需要存内计算?
存内计算出现的背景?
随着视频创作、搜索广告优化、高效办公体验以及元宇宙游戏等新兴需求的不断涌现,AI技术的边界正被不断拓宽。这一趋势直接推动了大模型参数的飞跃性增长,从早期的数万参数级数字信号处理,跃升至现今的数万亿参数云端巨擘。这种变化不仅标志着技术能力的巨大飞跃,也预示着对AI模型能力的要求已悄然升级,从单一的语言多模态输入输出,逐步迈向通用人工智能的广阔天地。
然而,在这一令人振奋的转型过程中,目前也面临着前所未有的挑战。功耗的急剧攀升、训练成本的持续走高、海量数据对带宽的苛刻要求,以及端侧设备对大模型容量需求的激增,构成了四大亟待解决的难题。这些问题如同四道高墙,阻碍着AI技术向更高层次迈进的步伐。
面对这些挑战,不得不重新审视并优化现有的计算架构。传统的近存计算方案,虽已在一定程度上减少了数据移动带来的延迟与功耗,但在面对AI模型参数规模爆炸式增长的现状时,其局限性日益凸显。因此,目前亟需一种更为高效、更为前沿的解决方案——存内计算(In-Memory Computing)。
什么是存内计算?
存内计算(In-Memory Computing)是一种通过将数据处理操作直接在内存中执行的计算模式。与传统的计算方式相比,它不依赖将数据从内存传输到磁盘或其他存储设备进行处理,而是充分利用内存的高速度与低延迟特性,从而显著提升计算性能。
为什么需要存内计算?
存内计算的主要特点和优势包括:
1. 高速处理:由于数据不需要频繁从磁盘读取或写入,减少了I/O操作,存内计算可以极大提高数据处理的速度,特别适合大数据分析、实时数据处理等场景。
2. 低延迟:内存的访问速度比磁盘快得多,这使得存内计算能够在短时间内处理大量数据,满足对低延迟有较高要求的应用。
3. 高吞吐量:存内计算通过在内存中并行执行多个任务,可以大大提高系统的吞吐量。
4. 适用场景:存内计算广泛应用于金融交易、物联网、机器学习、推荐系统等需要快速处理海量数据的领域。
如何保证存内计算的稳定性和准确性?
软件层面:如何保证分布式环境下深度学习任务的高效可靠执行?
为了高效执行深度学习任务的分布式训练,提出了一种基于强化学习的流水线分布式训练调度方案(PG-MPSS)。该方案通过双网络架构实现模型的智能调度,并利用策略梯度法更新模型参数,同时通过精准的奖励函数来提升调度效果,从而构建了高效的模型调度机制。
此外,为了提高对分布式计算节点故障的预测能力,提出了一种基于连续时间动态图的故障预测方案(CTDG-NFP)。该方法通过融合邻居采样策略与长短路径学习,获取更具多样性的信息路径,并利用时间编码器深度学习故障路径数据,最终实现了精确的故障预测。
实验结果表明,PG-MPSS在调度性能方面表现优异,而CTDG-NFP在故障预测准确性上具备显著优势。这两种方案在分布式计算环境中展示了出色的应用潜力。
硬件层面:采用IGZO在后道单片三维集成
IGZO(铟镓锌氧化物)因其优异的特性,成为实现单片三维集成的最佳候选沟道材料。它具有高迁移率、低漏电以及较低的工艺温度,能够通过原子层沉积(ALD)技术实现三维集成,且与后道工艺高度兼容。
然而,当前IGZO器件面临的主要挑战包括高温稳定性不足、抗氢化能力弱以及正偏压温度不稳定性问题。这些问题的解决将有助于进一步提升IGZO的实际应用效果。
在存储阵列(如SRAM、DRAM等)中应用IGZO,可以显著提升芯片的密度与计算效率,这也是未来高性能计算芯片发展的重要方向。通过优化工艺与材料特性,IGZO有望推动芯片技术进入新的高度。
存内计算的现场零距离体验😍
实操的大致步骤
- python 环境安装,参考文档 doc/python 环境安装 .txt ,本 demo推荐在 windows 环境下进行运行。
- 进入代码目录 cd python ,执行后续代码,模型训练配置 config.py 。
- 运行 train.py ,训练完毕后,模型权重为 models/net_type/bestModel.pth 。
- 运行 infer_and_generate_onnx.py ,会将训练得到的 bestModel.pth 进行推理并构建 onnx 模型,即 models/net_type/bestModel_quant.onnx ,将 bestModel.onnx 复制到 mapper/input 下。
- 运行 create_quant_data.py ,在 mapper/input 中生成 test_data_cnn_0_100.npy和 mnist_data_cnn.h 文件,这俩文件是后面生成 map 和上板验证需要的输入文件。
执行过程中部分日志图展示
最后也通过主办方:存内计算开发者社区提供的demo完整体验了内存计算的速度与魅力,确实让之前没有这方面体验的我感受到了存内计算的独特魅力。