谈谈DataFlow Processor和深度学习的若干问题

又是一年Pi节,记得小时候帮长辈们做股票委托需要快速准确的按电话(电话委托时代)和电脑的数字小键盘,于是常常喜欢用Pi来训练自己,至今还能清楚的记住Pi的小数点前100位,这种训练对于数字的敏感程度,但是数学本身并不是简单的计数。今天要谈论的是另一个问题。Gary Marcus说”Deep Learning is Hitting a Wall”,Lecun又怼起来了”The title is so rdiculously wrong it’s hilarious”.

神仙打架轮不上渣去评价什么,只是顺便看到Tenstorrent的一些文章,再加上自己的一些研究有些共鸣想分享出来.

数学模型

其实很多时候我们对人工智能的期望,就如同我们的数学老师:谈谈DataFlow Processor和深度学习的若干问题

从模型上来看,渣是不那么喜欢深度学习的,因为很多生活中的问题例如渣平时做的一些网络流量趋势预测和容量预估,简单的用一些Holt-Winters或者ARIMA模型就能解决,例如渣在一个流计算引擎中就集成了Holt-Winters[1]模型做inline streaming的训练和推理。如果用深度学习LSTM/RNN反而觉得把事情搞复杂了。

当然针对一些波动更加异常的数据, TSA(时间序列分析)又显得太过理想化了,例如股票预测,于是神学出现了,基于神经网络的K线形态拟合,但似乎深度学习模型又少了一些确定性和可解释性,就像你让一个股民天天看k线,让他提取各种k线特征,神马双肩顶,神马W底,神马触底反弹,神马一飞冲天, 然后真让他拿钱照着买股票的时候, 一坨屎。。。所以针对量化交易或者金融风控这些领域,渣基本上不会用这样的模型,因为每次训练的随机性会给回测带来巨大的不稳定性,这也是很多大厂搞AI的工程师总想着用AI吊打韭菜却被现实搞得“跌妈不认”的原因。当然事情也没那么绝对,在一些高频场景中的订单预测上有些作用,当然渣因为合规要求不能撸高频(毕竟几大交易所的网络还有一些券商的项目渣都参与了)。

其实很多事情都是在数学和工程之间的微妙平衡,只可惜数学家们十指不沾阳春水,理论上很美工程上一坨屎的事情多的去了。 而同样做工程的人并不知道怎么用数学的语言去描述和约束自己的系统。

顺便推荐几本华为翻译的理论书,这一点还是要特别感谢华为的,不过有些编辑画蛇添足有点意思(在总序里).

谈谈DataFlow Processor和深度学习的若干问题

当然同样也要谈一下这个问题, 重视数学重视理论当然很不错, 但是工程上的结合还是需要考虑更多的问题的,有些时候太数学了并不是件好事, 特别是工艺/成本/功耗,乃至功能等各方面的平衡, 在工程上有些时候真能搞出简单的大力出奇迹的东西。包括我自己有些时候都懒得根据排队论来算要多少buffer,反正弄个管够的样机或者条件不允许随手写点代码仿真一下,拟合搞个可用的值出来就行了,美其名曰深度学习也行。

复杂网络和图深度学习

Complex network是一个1998年诞生的学科,更早期的是叫巨型系统复杂性的研究,某种意义上是将一种二元关系通过图论的方式呈现出来,然后对图特征进行分析的交叉学科,如度分布,中心性度量,链路预测等,当然里面也有很多民科的东西。但你不得不承认这些在个体间存在的纽带,基因也好,或者有些所谓的模因(meme)论也罢,但总体来看总有一些相似的特征,一个较严格的定义:具有自组织、自相似、吸引子、小世界、无标度中部分或全部性质的网络称为复杂网络。有篇文章[2]提到的一些内容可以参考一下.

渣很早就关注于这个方向,例如金融风控中的复杂网络理论,疫情的SIR等传染模型,还有网络中的DDoS和异常主机检测等,也做了不少的模型了,例如nVidia前段时间被盗1T的数据 ,实际上卖螺丝的网卡如果能做Flow logging,然后很简单的做一个Bloomfilter把per flow日志进行处理和基线监控,很容易根据度分布和中心度分布迁移或者是Laplacian矩阵的特征值看到一些异常,点到为止,这个问题的答案值一个小目标。

当然搞AI的人总喜欢把平凡的东西取一些莫名其妙的名字, 这不就来了么GraphDL, GNN..

提到这个的原因是为接下来的DataFlow proccessing, 一旦变到图上渣就兴奋了,因为就会有一个很有趣的器件”Router”. 对于渣而言,无论是芯片里的Branch Prediction,或者是片上NOC的路由,再到网络上的NP,再到应用上的API-Gateway,或者SideCar,再到Flink甚至自研Nimble流处理引擎,乃至深度学习中的MoE, 最后到前端常用的React-Router或者vue-router。

这些都有路由的概念在里面,而且还几乎很一致的会遇到两端带宽差距悬殊需要拥塞控制、可靠传输、和Cache隐藏延迟等上层业务的需求,只是有些做交换芯片的压根不知道这里面的门道,于是搞些DPU号称把交换机塞到Host,或者简单的拿多核期望大力出奇迹,真是有点好笑。

DataFlow & Spatial Computing

喜欢Tenstorrent并不是因为Jim Keller,而是他们正在做一个事情Tensor-Torrent,

这件事情本身又和另一个事情串在一起了,就是现在数据湖技术中的一些流计算(Streaming Processing)引擎,Tensor is a packet多么优美?数据湖的水滴是什么呢?

当然看到这里有些思绪万千, 特别是在看RISC-V的一些文档提到Customized CPU的时候提及的Tensilica。而思科Quantum Flow Processor便是这样一颗处理器,片上结构和TensTorrent惊人的一致,只是在2004年的时候还没有RISC-V而选了Tensilica,至于很多人争论DSA还是通用RTC处理器的时候, 很简单的告诉你,思科一套路由器的代码用了快20年了,市占率还世界第一,具体的内容就不泄密了,至于一个数据包的处理需要几千个CPU Cycles,而普通路由器只要30~80Cycles,中间做了什么就不多说了,而自然那些只跑几十个Cycle的路由器要去用DSA大力出奇迹,而QFP是一个Flow Processor。

回到TensTorrent的片上网络和片间网络来,很喜欢这样的架构。

而算子间的通信源语很简单,这也是我们自己为什么要在NetDAM上添加ALU实现一些MPI的原因。只是穷没法流片,几百Mhz的FPGA玩不起RISC-V

然后就是图的划分,主观觉得每个stage的指令数是可以估计的,算子进出的带宽是可以估计的

那么最后mapping到核上的约束也似乎好做:

真的是简单的大力出奇迹: 

只不过整个网络的拥塞控制怎么玩?这是我在思考的问题: 

事实上在前面的图mapping的过程中已经消除了一些拥塞点了,微观上只是在同一个Layer内多个核之间可能会有拥塞,但同时你会发现有Mini-Tensor这个东西就豁然开朗了。

复杂网络视角下的Spatial Computing

大自然是一个非常神奇的东西,简单的复制、畸变、选择的机制下的代际更替。而如今神经网络的结构还是我们自己设计的,在很多DSA上编译执行都遇到了很多问题,那么是否有一种简单的自然选择的机制呢?也就是说一个XPU如同一个智能体,在约束通信范围和通信邻居的基础上,让Tensor像Flow那样有自主选择的权力, 而MoE似乎已经有一点类似的味道了:

而前面的约束本身,似乎又有一些范畴论的味道。而复杂网络本身的度分布和中心性约束似乎也可以用,当然这样的系统是否能收敛,我不知道,只是感觉好像应该这么尝试一下。前路漫漫,”Deep Learning is Hitting a Wall”,但似乎看到一点光了..

Reference

[1]

Holt-Winters: https://github.com/zartbot/holtwinters

[2]

关于钱学森定义复杂网络一事的探究: https://blog.csdn.net/DSTJWJW/article/details/83934394

谈谈DataFlow Processor和深度学习的若干问题》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:https://www.bookhoes.com/4343.html