安卓机上 4G 内存跑 alpaca,欢迎试用轻量级 LLM 模型推理框架 InferLLM

科技资讯 投稿 13400 0 评论

安卓机上 4G 内存跑 alpaca,欢迎试用轻量级 LLM 模型推理框架 InferLLM

鉴于此,MegEngine 团队开发了 InferLLM 工程,主要目的有两个:

    提供一个比 llama.cpp 更简单更容易上手的本地部署框架,供大家学习和讨论
  • 让 LLM 模型在本地或者端上部署成为可能,未来可以用在一些实际的生产环境中

另外 InferLLM 也可以用在生产中,因为它可以将 LLM 量化的模型在一个性能一般的手机上流畅的运行,可以进行流畅的进行人机对话,目前在手机上运行一个 llama 7b 4bit 的模型,只需要 4G 左右内存,这个内存是现在大多数手机都能满足的。相信在不久之后会出现很多大模型中的轻量化模型,可以直接在端上进行部署和推理,毕竟目前手机是大家最容易获得的计算资源,没有理由浪费如此庞大的计算集群。

    Model:主要负责输入的 tokenizer,词汇表管理,存储一些历史的 token 以及 Decoder 之后的采样等。
  • Graph/Op:负责创建整个模型,包括模型的中 Op 直接的连接关系,Op 的执行,以及 Op 输入输出等内存资源的管理
  • Kernel:提供不同后端优化的 Kernel,目前包括 x86,Arm,naive,当 x86 和 Arm 中没有优化的 Kernel,会直接 fallback 到 naive 中进行运行

InferLLM 主要支持以下功能:

    支持每个 Op 执行前准备资源,每个 Op 执行前都需要调用 pre_execute,执行之后调用 end_execute。这样可以方便在内存不足的设备上,在执行前从磁盘中间权重读取到 RAM 中,执行完成之后将权重存回磁盘中,也可以直接使用 mmap,让操作系统自动处理这些逻辑
  • 支持每一个 Multi-Head Attention 的 KV cache,每次计算出来的 Key 和 Value 都保存在 KVStorage 中,KVStorage 支持通过 token 的 id 索引,另外如果 KV 的 cache 过大时,还支持将其 swap 出去
  • 支持 CPU 上多线程,SIMD,量化,float16计算等加速方式,多线程是通过自己实现的一个类似 OpenMP 静态调度的逻辑,使用无锁的线程池来进行多线程之间的同步
  • 可以兼容多种模型格式,目前仅仅支持了 llama 类似的模型,未来将支持更多的模型结构

附:

更多 MegEngine 信息获取,您可以:查看文档和 GitHub 项目,或加入 MegEngine 用户交流 QQ 群:1029741705。欢迎参与 MegEngine 社区贡献,成为 Awesome MegEngineer,荣誉证书、定制礼品享不停。

编程笔记 » 安卓机上 4G 内存跑 alpaca,欢迎试用轻量级 LLM 模型推理框架 InferLLM

赞同 (64) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽