本系列主要介绍Rust与AI的那些天作之合(开源项目),我们会以开源项目代码阅读的方式推进,以Rust为主,同时科普AI相关知识,目的是让更多非算法、非Rust的程序员进一步学习Rust和AI相关知识。当然,很显然地,我们也希望Rust程序员和AI算法工程师能从中有所收获。前者可以关注AI算法的设计和优化,后者可以关注Rust如何助力AI算法。
本篇是系列第一篇,主要介绍Rust和AI各自的特点与发展近况,以及它俩的遇见会碰撞出怎样的火花。我们热爱AI,我们喜欢Rust语言,仅此而已。
当前发展
AI与LLM
随着ChatGPT的发展浪潮,AI又一次迎来了发展良机,很多应用、服务都在基于大模型重新设计。同时,由于大模型的超能力,应用的开发门槛进一步下降,一些新的创意产品在不断涌现。总的来说,在AI应用领域呈现出了一片欣欣向荣、百家争鸣的景象。
这一切的背后是ChatGPT为代表的大语言模型(后面以LLM代替),LLM以序列方式根据给定上下文生成文本,它对上下文的精准理解能力和基于此的生成能力都令人赞叹。作为一名从业多年的自然语言处理(后面以NLP代替)工程师,可以负责任地说,LLM的能力确实远超此前的语言模型,尤其是理解方面。
LLM的最大特点是大,这里的大是指参数量非常多。也就是说,无论是加载还是运行这样一个模型,都需要消耗比较多的资源。要想让模型执行的快,性能就成了绕不开的坎。
参数其实就是很多很多的数字,一般来说都是FP32的浮点数,但浮点数可以通过量化降低到FP16、BF16或Int,量化后内存的占用明显是降低了的,一般也会同时带来执行速度的提升。
抛开语言、模型架构和量化先不谈,要加速执行很多数字的运算,一般我们可以想到的最容易的解决方案大概就是并行。没错,并行是当前LLM甚至深度学习最通用的方案,典型代表就是使用类似GPU、TPU这样的专用设备来加速。当然,即使没有这些设备,普通CPU甚至移动端的CPU都可以利用数据级并行、指令级并行、线程级并行等方案来加速。除了并行,还可以优化存储层次和传输,进一步提升性能。
上面提到这些优化方案都和计算机底层有关,一般来说都需要用到C语言或C++编程,现在我们有了新的选择——Rust。其实,这个“现在”应该可以再提前个几年,毕竟Rust在AI领域默默发力已经有些时日了。C语言和C++都是非常强大的语言&