论文

将代码 LLM 编译为轻量级可执行文件

Compiling Code LLMs into Lightweight Executables

摘要

对神经网络更好的预测精度和更高的执行性能的需求持续增长。 大语言模型 (LLM) 的出现和成功产生了许多用于软件工程任务(例如代码建议)的基于云的工具。云部署虽然有效,但引发了人们对隐私、延迟和对网络连接的依赖的担忧。在笔记本电脑等个人设备上本地运行 LLM 可以解决这些问题,因为它可以实现离线使用并减少响应时间。然而,本地部署具有挑战性,因为商用设备缺乏 GPU 等高性能加速器,并且受到有限的内存和计算能力的限制,这使得高效执行大型模型变得困难。我们提出了 Ditto,这是一个框架,可以优化代码 LLM 的模型大小以及执行它们的推理程序。我们的方法集成了两个组件。第一种是受乘积量化启发的量化技术,它通过 K-Means 聚类将模型参数分组到每块码本中,并将每个权重存储为位打包的低位宽索引。第二个组件是集成到 LLVM 中的编译通道,可自动检测并替换未优化的通用矩阵向量乘法 (GEMV) 操作,并调用针对目标硬件高度优化的基本线性代数子程序 (BLAS) 库。 Ditto 的输出是一个已编译的可执行文件,可在商用硬件上运行选定的代码 LLM。我们在三种流行的 Code LLM(即 Code Llama、MagicCoder 和 OpenCodeInterpreter)上对 Ditto 进行了评估,与原始推理管道相比,推理速度提高了 10.5$\time$,内存使用量降低了 6.4$\time$,能耗降低了 10.5$\time$,同时保持了接近全精度模型的精度,平均损失仅为 0.27%通过@1。