llama.cpp作者创业,用纯C语言框架降低大模型运行成本

简介: llama.cpp作者创业,用纯C语言框架降低大模型运行成本


大模型的应用前景将越来越广泛。

通常,神经网络的推理代码是使用 Python 语言编写的。但相比于 Python,C/C++ 代码运行速度更快,编写过程更严谨,因此一些开发者尝试用 C/C++ 语言实现神经网络。


在众多使用 C/C++ 语言编写神经网络代码的开发者中,Georgi Gerganov 是一位佼佼者。Georgi Gerganov 是资深的开源社区开发者,曾为 OpenAI 的 Whisper 自动语音识别模型开发 whisper.cpp。


Georgi Gerganov


今年 3 月 Georgi Gerganov 又构建了开源项目 llama.cpp,llama.cpp 让开发者在没有 GPU 的条件下也能运行 Meta 的 LLaMA 模型。llama.cpp 让开发者在没有 GPU 的条件下也能运行 LLaMA 模型。项目发布后,很快就有开发者尝试并成功在 MacBook 和树莓派上运行 LLaMA。


打开 Georgi Gerganov 的个人主页,我们发现全是开源项目,满满的干货。


现在,Georgi Gerganov 宣布创立一家新公司 ggml.ai,旨在支持 ggml 的开发。ggml 是 Georgi Gerganov 使用 C/C++ 构建了机器学习张量库,能够帮助开发者在消费级硬件上实现大模型,并提升模型性能。ggml 张量库具有以下特点:


  • 用 C 语言编写;
  • 支持 16bit 浮点数;
  • 支持整数量化(包括 4 位、5 位、8 位);
  • 自动微分;
  • 内置优化算法(例如 ADAM、L-BFGS);
  • 为 Apple 芯片设置特定优化;
  • 在 x86 架构上使用 AVX / AVX2 Intrinsic;
  • 通过 WebAssembly 和 WASM SIMD 提供 Web 支持;
  • 无第三方依赖;
  • 运行时零内存分配;
  • 支持指导型语言输出。


作为纯 C 语言编写的框架,ggml 大幅降低了大模型的运行成本。llama.cpp 和 whisper.cpp 都使用了 ggml,我们来看一下使用 llama.cpp 和 whisper.cpp 的例子。


下图是一个在树莓派上使用 whisper.cpp 检测短语音命令的例子:


在单个 M1 Pro 上同时运行 LLaMA-13B + Whisper Small 的 4 个实例,如下图所示:


在 M2 Max 上以 40 tok/s 的速度运行 LLaMA-7B,如下图所示:


总体来说,ggml 让本地运行大型语言模型变得更容易,操作更便捷。Georgi Gerganov 成立新公司之后,简单高效的 ggml 张量库将获得更多开发者和投资者的支持。我们相信随着开发人员在技术层面做出努力,大模型的应用前景将会越来越广泛。


参考链接:http://ggml.ai/

相关文章
|
7月前
|
存储 编译器 程序员
C语言的模型玩具:结构体的使用以及操作符优先级
C语言的模型玩具:结构体的使用以及操作符优先级
|
7月前
|
存储 编译器 C语言
【数据结构】C语言实现链队列(附完整运行代码)
【数据结构】C语言实现链队列(附完整运行代码)
134 0
|
7月前
|
存储 编译器 C语言
【数据结构】C语言实现带头双向循环链表万字详解(附完整运行代码)
【数据结构】C语言实现带头双向循环链表万字详解(附完整运行代码)
62 0
|
7月前
|
存储 编译器 C语言
【数据结构】C语言实现单链表万字详解(附完整运行代码)
【数据结构】C语言实现单链表万字详解(附完整运行代码)
133 0
|
7月前
|
存储 算法 程序员
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
176 0
|
7月前
|
存储 自然语言处理 程序员
C语言程序运行过程
C语言程序运行过程
103 0
|
3月前
|
安全 程序员 编译器
C语言框架的优缺点如下
C语言框架的优缺点如下
63 1
|
3月前
|
网络协议 安全 网络安全
C语言 网络编程(四)常见网络模型
这段内容介绍了目前被广泛接受的三种网络模型:OSI七层模型、TCP五层模型以及TCP/IP四层模型,并简述了多个网络协议的功能与特性,包括HTTP、HTTPS、FTP、DNS、SMTP、TCP、UDP、IP、ICMP、ARP、RARP及SSH协议等,同时提到了ssh的免费开源实现openssh及其在Linux系统中的应用。
|
3月前
|
网络协议 数据处理 C语言
利用C语言基于poll实现TCP回声服务器的多路复用模型
此代码仅为示例,展示了如何基于 `poll`实现多路复用的TCP回声服务器的基本框架。在实际应用中,你可能需要对其进行扩展或修改,以满足具体的需求。
90 0
|
5月前
|
Linux C语言 Windows
C语言文件编程-Linux环境下运行
本文介绍了在Linux环境下使用C语言进行文件编程时的两种主要接口:C标准库函数与Linux系统调用。C标准库提供了`fopen`, `fread`, `fwrite`, 和 `fclose`等函数,适用于普通文件操作;而Linux系统调用如`open`, `read`, `write`, 和 `close`则更适合处理设备文件,同时也可用于普通文件。这两种方法的主要区别在于前者使用文件指针,后者使用文件描述符。文章还给出了两个示例程序:一个使用C标准库函数实现文件复制,另一个则使用Linux系统调用完成相同任务。