因为我在研发机器学习编译器,而且编译器大体上就是个复杂艰深些的软件项目,所以我敢自称编译器人。但是前两天看到王垠的高论*有点受打击,加上编程语言理论全是数学有些吓人,不敢自称编程语言理论人……
@fulkrum 🍈能否科普一下什么是机器学习编译器
@peko20 机器学习编译器是用于自动部署机器学习模型的软件。
模型就像其他计算机程序,依赖特定的操作系统、开发库和硬件平台运行。比如你在Linux、NV卡服务器开发(训练)的模型,就不能直接复制到iOS、Android的Arm手机运行(预测/推理);即使可以,效率也会很低,因为NV卡和手机芯片的加速接口、功耗环境完全不同。
按照手机软硬件接口剪裁、修改模型,使其在目标平台即手机高效运行,这一过程称作部署。机器学习编译器可以自动部署模型。
@peko20 概括来看这类软件在变换机器学习模型(高维数组),就像编译器在变换计算机程序,故名机器学习编译器。但这并不是说二者如同印度和印度尼西亚。实际这类软件的设计和技术也如同传统编译器,变换的过程由前端、IR、后端以及若干Pass组成,同时也要根据硬件后端开发或对接相应的Codegen。
@peko20 如果只是NV卡到手机这种场景也还好。实际上现在各种机器学习加速芯片满天飞,如果你有M种模型,N种平台要部署,那就出现了可怕的M×N问题……
@fulkrum 竟然还要部署到手机,可便携式式 AI 是吗
@peko20 对,比如Hi, Siri的一些语音识别功能就是本地计算。这样隐私和延迟都更好,更别提自动驾驶这种性命攸关的应用了……
@peko20 您如果留意的话,这几年手机商家都在宣传自己手机上的机器学习加速功能。苹果好像是A12开始称作「仿生」芯片,意指其附带了ML加速模块;高通的芯片也带了类似模块;谷歌前两年在Pixel手机上搞了个TPU,应该就是Google Cloud上TPU的底配版……
@fulkrum 仿生……好浮夸 😕
之后回过味儿来,我意识王垠自己就是「偏执心理和理想主义……恶化人际关系」的人。
文中最打击我的一段,「编译器领域处于编程语言(PL)和计算机体系构架(computer architecture)两个领域的夹缝中,上面的语言不能改,下面的指令也不能改,并没有很大的创造空间。」我后来一琢磨这套说辞可以套在绝大多数领域……