llama2.c

llama2.c

轻量级Llama 2推理引擎 支持多平台高性能部署

llama2.c是一个基于Llama 2的开源轻量级推理引擎,支持在Linux、BSD、macOS和Windows等多平台上运行。它提供高性能CPU和GPU推理,并可利用OpenBLAS、Intel MKL等加速库。该项目旨在通过部署小型网络化LLM,在资源受限环境(如学校图书馆)中实现AI应用,推动AI技术的普及和集体智能的发展。

Llama 2AI模型自然语言处理开源项目人工智能Github

<译文>

Llama 2 无处不在 (L2E)

注:非常感谢在HN、Twitter、Reddit和其他地方的所有点赞。对于操作系统,请从发布页面下载。当前系统要求为512MB内存和x86_64(64位)PC。操作系统版本是一个玩具演示,目前还不太实用。我们正在努力改进它。如果您喜欢这个在最小硬件上运行的实用AI操作系统的想法,欢迎赞助我们。请注意,这个项目是建立在巨人的肩膀上的。在底部可以找到致谢名单。

<p align="center"> <img src="https://yellow-cdn.veclightyear.com/2b54e442/b1777e8e-40c4-4af0-82bf-065f9b78d744.jpg" width="600" height="454" alt="LLamas到处都是!"> </p>

独立、二进制可移植、可引导的Llama 2

Llama 2 无处不在(L2E)的主要目标是确保其在广泛设备上的兼容性,从学区淘汰的Chromebook上引导到企业中的高密度unikernel部署。

我们相信,未来通过利用一群具有适度硬件要求的小型专门LLM,这些LLM是网络化、分布式和自我协调的,L2E有潜力使AI访问民主化,并释放超越单一大型LLM的集体智慧。

L2E当前引人注目的用例涉及在各种文本源上训练小型模型,包括教科书、开放书籍和SlimPajama语料库等综合语料库。这些训练后的模型将来可以使用L2E部署,使它们能够在资源受限的计算机上作为可引导实例运行。这种部署场景在互联网连接有限或不可用的学校图书馆或教室中特别有价值,作为学生的信息门户*,无需持续依赖互联网。

通过追求Llama 2 无处不在的愿景,我们旨在创建一个包容性的AI生态系统,可以适应不同环境并在全球范围内赋能个人和社区。

除此之外,我的研究目标是使用各种硬件遥测数据训练模型,希望模型学会解释传感器输入并根据从传感器输入中获得的洞察控制执行器。这个研究方向可能在自动化、太空、机器人和物联网等领域开辟令人兴奋的可能性,L2E可以在AI和物理系统之间架起桥梁。

最初是优秀的@karpathy的llama2.c的友好分支,现在已经高度分化,考虑到我们可以用它构建一个完整的操作系统。

我会不时地合并https://github.com/karpathy/llama2.c的进展,添加可移植性、性能改进和便利功能,这些肯定不适合上游,因为那里有最小化优雅的要求。

在Meta了解更多关于Llama2模型和架构:Llama 2 @ Meta

人们怎么说:

功能和里程碑

Llama 3.1 支持进行中

  • 推理现在快了约23%。(提交e842bf7及以上)
  • 有bug,阅读下面的Llama3部分,正在寻找更快的硬件以加快开发

示例输出:

Meta的Llama 3.1模型可以输出多语言文本,这很棒。以下是8位量化8b模型的一些示例输出,输出100个token(-n 100)...

英语
./run ../llama3.1_8b_instruct_q8.bin -z tokenizer_l3.bin -l 3 -n 100 -i " My cat is funny"
我的猫很有趣。"有趣的猫,"我走近它说。"你在做什么?"它直起身子,歪着头看着我,似乎在说,"你怎么了?"有时我只能对猫有多有趣而笑。所以我说,"好吧,你很有趣。我给你一些零食。"它稍微伸展了一下,我给它一些零食。它迅速吃完,开始
achieved tok/s: 5.376052
德语
./run ../llama3.1_8b_instruct_q8.bin -z tokenizer_l3.bin -l 3 -n 100 -i " Besitzen Sie einen Amiga 500?"
您拥有Amiga 500吗?如果没有,您会知道这是一台在20世纪80年代末和90年代初用于为特定身体伤害的人设计的游戏的计算机。有时我们需要回忆起我们现在知道是艰难的过去时期。这里有一个链接讨论我的故事
achieved tok/s: 5.367599
法语
./run ../llama3.1_8b_instruct_q8.bin -z tokenizer_l3.bin -l 3 -n 100 -i " Le vin français est"
法国葡萄酒在许多方面都是一种源头之酒,因为它在法国历史中扮演了重要角色"。法国葡萄酒的声誉主要基于其口感品质和受控的葡萄园管理,这使法国葡萄酒成为"特殊产品"。因此,法国是世界葡萄酒生产的领导者,占世界出口量的25%
achieved tok/s: 5.43299
泰语
./run ../llama3.1_8b_instruct_q8.bin -z tokenizer_l3.bin -l 3 -n 100 -i " แมวของฉันตลก"
我的猫很有趣,喜欢在纸卷上玩耍,我不确定是否应该允许它玩。

随着时间的推移,我看到我的猫经常玩纸卷,所以我决定尝试改变游戏,让它更有趣
achieved tok/s: 5.376052
印地语
./run ../llama3.1_8b_instruct_q8.bin -z tokenizer_l3.bin -l 3 -n 100 -i " मेरी बिल्ली बहुत मज़ाया है"
我的猫很有趣,她总是用她的身体动作逗我笑。事实上,当她陷入她的玩具中时,她变得特别经典。此外,她是一只小
achieved tok/s: 5.460864

阅读下面的Llama 3部分,了解如何从Meta获取模型(https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct)的访问权限,并按以下步骤操作:

huggingface-cli download meta-llama/Meta-Llama-3.1-8B-Instruct --include "original/*" --local-dir Meta-Llama-3.1-8B-Instruct git clone https://github.com/trholding/llama2.c.git cd llama2.c/ # 导出量化8位 python3 export.py ../llama3.1_8b_instruct_q8.bin --version 2 --meta-llama ../Meta-Llama-3.1-8B-Instruct/original/ # 最快的量化推理构建 make runq_cc_openmp # 测试Llama 3.1推理,它应该生成合理的文本 ./run ../llama3.1_8b_instruct_q8.bin -z tokenizer_l3.bin -l 3 -i " My cat"

Llama 3 支持进行中

Llama3模型现在可以工作了。

  • 支持非量化(fp32)。run支持llama2和llama3,使用-l 3选项。
  • 现在支持使用runq进行量化推理。
  • 已知问题 - 吞掉第一个token(暂时添加空格),聊天模式还不工作,修复即将到来
  • 总体上目前还有bug

示例输出: </译文> <SOURCE_TEXT>

./run ../llama3_8b_instruct_q8.bin -z tokenizer_l3.bin -l 3 -i " My cat"
我的猫有很多事要做!"她走出去,留下我一脸茫然,就像一个刚刚被歌曲卡在脑子里的醉汉。我盯着她的背影,感觉自己仿佛陷入了一集超现实的"暮光之城"。

当我转身回到吧台时,我在柜台尽头看到了一个熟悉的身影。是酒保米奇,正在用一块脏抹布擦拭着杯子。我滑到他旁边的凳子上说:"那是个奇怪的女人,米奇。"

米奇抬起头,挑了挑眉毛。"你说得对。她来过这里几次,总是点一些奇怪的饮料,还跟着自己的个人配乐唱歌。我觉得她脑子里有个磁带在播放,她在试图跟着唱。"

我笑了。"我想你说得对。她就像21世纪版的那个疯女人,过去常在百货商店的钢琴旁唱'My Way'。"

米奇也笑了。"是啊,只不过她唱的不是'My Way',而是一只有很多事要做的猫。"

我举起杯子跟他碰了碰。"为这家优秀酒吧的奇特而精彩的顾客们干杯。"


achieved tok/s: 4.356963

首先你需要获得Meta的批准才能在hugging face上下载llama3模型。

所以请前往https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct,填写表格,然后https://huggingface.co/settings/gated-repos查看接受状态。一旦被接受,按以下步骤下载模型,导出并运行。

huggingface-cli download meta-llama/Meta-Llama-3-8B-Instruct --include "original/*" --local-dir Meta-Llama-3-8B-Instruct git clone https://github.com/trholding/llama2.c.git cd llama2.c/ # 导出fp32 #python3 export.py ../llama3_8b_instruct.bin --meta-llama ../Meta-Llama-3-8B-Instruct/original/ # 导出量化8位 python3 export.py ../llama3_8b_instruct_q8.bin --version 2 --meta-llama ../Meta-Llama-3-8B-Instruct/original/ make runq_cc_openmp # 或者执行make查看所有构建选项 # 测试Llama 3推理,它应该生成合理的文本 ./run ../llama3_8b_instruct_q8.bin -z tokenizer_l3.bin -l 3 -i " My cat"

导出大约需要10-15分钟。但在慢速系统或内存不足的情况下,你需要添加一个交换文件(之后可以swapoff并删除)。使用交换文件导出可能需要更长时间,例如在一个具有24GB RAM和4个vCPU的oracle云aarch64实例上,花费了一个多小时。以下是启用交换的方法:

sudo fallocate -l 32G swapfile sudo chmod 600 swapfile sudo mkswap swapfile sudo swapon swapfile

L2E操作系统(Linux内核)

你是否曾经想要真正地启动并推理一个小型Llama 2模型在计算机上?没有?好吧,现在你可以了!

temple dos

GUI

你是否曾经想要执行cat /dev/llamaecho "Sudo make me a sandwich!" > /dev/llama或传递一个内核参数如l2e.quest="What is the meaning of life?"?没有?好吧,幸运的是,现在你可以了!

dmesg

从最新发布中下载并运行ISO!

Unikraft Unikernel构建

你是否曾经想要在大型企业服务器上启动并推理成千上万个虚拟小型Llama 2模型?没有?好吧,现在你可以了!

l2e_unik

Unikraft / Kraft Cloud的酷人们有一个L2E unikraft unikernel的官方unikraft分支在这里:app-llama2-c一定要试试,并通过购买云账户来支持他们。感谢@razvand和@felipehuici使这成为可能。

我们非常喜欢unikraft,以至于未来版本的L2E OS(linux)将具有KVM和自托管支持,并展示L2E unikraft unikernels的演示实例,这样你就可以在自己的机器上测试unikraft unikernels了!

只需执行以下操作即可构建:

make run_unik_qemu_x86_64

请注意,在构建之前,将自动克隆需求 - unikraft和musl源代码。

构建完成后(需要一段时间),像这样运行L2E:

qemu-system-x86_64 -m 256m -accel kvm -kernel build/L2E_qemu-x86_64

你也可以使用-nographic选项直接在终端中交互。

qemu-system-x86_64 -m 256m -accel kvm -kernel build/L2E_qemu-x86_64 -nographic

在最新发布中下载并尝试这个和cosmocc构建。

可移植性特性

  • 可在任何x86_64操作系统上运行的单一可执行文件(cosmocc构建)
  • GNU Linux
  • GNU/Systemd
  • *BSD (NetBSD, OpenBSD, FreeBSD)
  • XNU's Not UNIX (Mac)
  • 裸机启动(BIOS & EFI)(尚未完全功能,但几乎完成...)
  • Windows
  • 通过内置BLINK仿真在ARM64上运行
  • 独立
  • 通过ZipOS(cosmocc)、INCBIN、strliteral嵌入模型和分词器
  • 可用性
  • 简易CLI聊天 - 使用任何_incbin、_strlit或_zipos构建。

一些组合特性依赖于特定的cosmocc工具链:https://github.com/jart/cosmopolitan

使用gcc或clang构建会产生类似上游的普通二进制文件。

阅读更多: 如何构建

性能特性

CPU

  • OpenBLAS
  • CBLAS
  • BLIS
  • Intel MKL
  • ArmPL
  • Apple Accelerate Framework (CBLAS) (进行中/测试中)

CPU/GPU

  • OpenMP
  • OpenACC

当前OpenMP和OpenACC构建都使用主机CPU,不会卸载到GPU。

GPU

  • OpenCL (通过CLBlast) (直接 - 计划中)
  • OpenGL
  • Vulkan

从发布中下载预构建的run.com二进制文件

llama2.c

<p align="left"> <img src="https://yellow-cdn.veclightyear.com/2b54e442/dae7ba15-711f-47ab-973a-76661a841485.jpg" width="150" height="150" alt="可爱的羊驼"> </p>

优秀的llama2.c的友好分支

原始仓库提供了一个使用PyTorch和一个简单的500行C文件来训练和推理Llama 2 LLM架构的全栈解决方案。重点是极简主义和简单性,该仓库是一个年轻的项目,仍在积极开发中。作者建议查看TinyStories论文以获得灵感,因为小型LLM在狭窄领域可以有强大的性能。C推理引擎run.c是项目的主要关注点,Llama 2架构是硬编码的,没有依赖。

感受魔力

git clone https://github.com/trholding/llama2.c.git cd llama2.c make run_cc_fast wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin ./run stories15M.bin

你也可以用前缀提示模型:

./run stories42M.bin -t 0.8 -n 256 -i "一只大狗"

在提示时,需要温度和步骤参数,因为我们使用简单的位置参数。

输出

一只名叫Zip的大狗。它喜欢在阳光下奔跑和玩耍。它是一只快乐的狗。有一天,Zip看到地上有一只小鸟。这只鸟看起来很无助。Zip想帮助这只鸟。它跑到鸟旁边,躺在它身边。Zip和小鸟成为了朋友。他们每天一起玩耍。Zip会带着小鸟去树上玩。小鸟会四处飞翔,而Zip会叫。他们在一起非常快乐。

模型

原作者在他们的设置上训练了一系列小型TinyStories模型,训练只花了几个小时。110M模型花了大约24小时。这些模型托管在huggingface hub上: </SOURCE_TEXT> <SOURCE_TEXT>

模型维度层数头数最大上下文长度参数量验证损失下载
OG2886625615M1.072stories15M.bin
42M51288102442M0.847stories42M.bin
110M76812121024110M0.760stories110M.bin

上游项目所有者在Lambda labs提供的4X A100 40GB机器上训练了llama2.c讲故事模型。

关于采样的简要说明,推荐使用 -t 1.0 -p 0.9 以获得良好结果,即使用温度为1.0的top-p采样,p值为0.9(这是默认设置)。要控制样本的多样性,可以使用温度(即在0到1之间变化 -t,并保持top-p关闭,使用 -p 0)或top-p值(即在0到1之间变化 -p,并保持 -t 1),但不要同时使用两者。关于LLM采样策略的不错解释包括这个这个这个

./run llama2_7b.bin

可以以较慢的速度推理转换后的Meta的Llama 2 7b模型。

用法

完整用法

用法:   run <检查点> [选项]
示例: run model.bin -n 256 -i "从前有一个"
选项:
  -t <float>  温度值,范围[0,inf],默认1.0
  -p <float>  top-p(核采样)中的p值,范围[0,1],默认0.9
  -s <int>    随机种子,默认time(NULL)
  -n <int>    运行的步数,默认256。0 = max_seq_len
  -i <string> 输入提示
  -z <string> 自定义分词器的可选路径
  -m <string> 模式: generate|chat,默认: generate
  -y <string> (可选)聊天模式下的系统提示
  -b <int>    要缓冲的令牌数,默认1。0 = max_seq_len
  -x <int>    扩展信息/统计,默认1 = 开启。0 = 关闭

<检查点>必需的检查点/模型文件。

最小用法

./run <检查点文件>

平台

多操作系统构建

make run_cosmocc

该二进制文件将在裸机上启动,并可在任何64位操作系统(如Linux、*BSD、Windows)上运行,在Aarch64 Mac和Linux上运行较慢。

目前,当用于启动时,它无法找到模型。这是一个工具链功能,预计会合并PR。

此构建的性能是基本构建的两倍以上。

这个构建需要cosmopolitan工具链。在这里阅读:如何构建

请注意,使用cosmocc构建的多操作系统二进制文件会导致AV/Microsoft Defender和Virus Total出现误报

问题在于,AV认为未签名的二进制文件或包含多个操作系统二进制签名的二进制文件是可疑的。 在此处获取更多见解: https://github.com/trholding/llama2.c/issues/8https://github.com/jart/cosmopolitan/issues/342

Linux

Centos 7 / Amazon Linux 2018

make rungnu 或使用openmp的 make runompgnu

其他Linux发行版 / Mac

make runfast 或使用openmp的 make runomp

Windows

在Windows上构建:

在Visual Studio命令提示符中使用 build_msvc.bat

MSVC构建将使用openmp和适合您CPU的最大线程数,除非您设置了 OMP_NUM_THREADS 环境变量。

在Linux和Windows上构建:

使用mingw编译器工具链的 make win64

Android

请参阅@lordunix关于如何在termux内的Android上构建的帖子:

https://github.com/trholding/llama2.c/issues/7#issue-1867639275

待办事项。

性能

基本

此构建不启用任何优化。

make run

这可以用作与其他构建性能比较的基准构建。

快速

此构建通过编译器提供的优化启用基本性能提升。

make runfast

加速构建

OpenMP

此构建通过OpenMP启用加速

make run_cc_openmp

需要系统上有OpenMP库和支持OpenMP的编译器。 例如,在ubuntu上 apt install clang libomp-dev

运行推理时,确保使用OpenMP标志设置线程数,例如:

OMP_NUM_THREADS=4 ./run out/model.bin

更多线程并不总是更好。

OpenACC

此构建通过OpenACC启用加速

make run_cc_openacc

需要系统上有OpenACC库和支持OpenACC的编译器。

OpenBLAS

此构建通过OpenBLAS启用加速

make run_cc_openblas

需要在系统上安装OpenBLAS

BLIS

此构建通过BLIS启用加速

make run_cc_blis

需要在系统上安装使用 ./configure --enable-cblas -t openmp,pthreads auto 编译的BLIS

Intel oneAPI MKL

此构建在x86_64系统和Intel Mac OS上通过Intel® oneAPI Math Kernel Library启用加速 - 正在进行中

make run_cc_mkl

需要在系统上安装Intel oneAPI MKL

Arm Performance Library (ArmPL)

此构建在ARM64系统(如Linux或Mac OS)上通过Arm Performance Library启用加速

首先,您需要下载并安装ArmPL:

wget https://developer.arm.com/-/cdn-downloads/permalink/Arm-Performance-Libraries/Version_24.04/arm-performance-libraries_24.04_deb_gcc.tar tar -xvf arm-performance-libraries_24.04_deb_gcc.tar cd arm-performance-libraries_24.04_deb/ sudo ./arm-performance-libraries_24.04_deb.sh # 您需要接受他们的许可协议。输入yes作为答案 sudo apt install environment-modules # 现在您需要退出shell并重新登录 export MODULEPATH=$MODULEPATH:/opt/arm/modulefiles/ module load armpl/24.04.0_gcc # 在同一个shell中执行 make run_cc_armpl

需要在系统上安装ArmPL

还需要为您的操作系统/发行版安装environment-modules包Environment Modules

Apple Accelerate

此构建在Mac OS上通过Apple Accelerate启用BLAS加速 - 测试中

make run_cc_mac_accel

需要系统上有Apple Accelerate

注意:需要测试。

通用CBLAS

此构建通过任何兼容Netlib CBLAS接口的库启用加速

make run_cc_cblas

需要在系统上安装任何具有Netlib CBLAS接口的BLAS库,如LAPACK

CLBlast (GPU/OpenCL)

此构建通过OpenCL和CLBlast启用经过优化的GPU加速

make run_cc_clblast

需要在系统上安装使用 cmake -DNETLIB=ON 编译的CLBlast

注意:目前运行速度比CPU慢得多!需要调查或内存I/O在测试系统上是瓶颈。

可移植二进制构建

您是否曾经希望在任何操作系统上或作为操作系统使用单个可执行文件来推理婴儿Llama 2模型?没有?好吧,现在您可以了!

通过使用Cosmopolitan libc工具链来构建llama2.c,我们可以获得这些功能。

说明

获取并构建comopolitan libc工具链:

按照https://github.com/jart/cosmopolitan的说明操作

或者执行:

sudo mkdir -p /opt
sudo chmod 1777 /opt
git clone https://github.com/jart/cosmopolitan /opt/cosmo
export PATH="/opt/cosmo/bin:/opt/cosmos/bin:$PATH"
echo 'PATH="/opt/cosmo/bin:/opt/cosmos/bin:$PATH"' >>~/.profile
cosmocc --update   # 拉取cosmo并构建/重建工具链

生成带嵌入模型的实际可移植可执行文件(APE)的示例构建: </SOURCE_TEXT> <SOURCE_TEXT>

mkdir out wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin -O out/model.bin make run_cosmocc_incbin

生成APE的示例构建:

make run_cosmocc

在任何支持的系统上运行或复制并运行:

如果模型已嵌入:

./run.com

否则

/run.com model.bin

所有'make'目标

执行make <目标>以构建特定目标。

示例:

make run_cc_openmp

用法和目标:

用法:
  make <目标>

简单构建
  run_cc                        - 基本优化的标准构建
  runq_cc                       - 量化构建的同等版本
  run_cc_fast                   - 更优化的构建。忽略严格的标准合规性
  runq_cc_fast                  - 量化构建的同等版本
  run_cc_gnu                    - 优化的通用Linux发行版构建
  runq_cc_gnu                   - 量化构建的同等版本

加速构建
  run_cc_avx                    - ***新增*** AVX加速构建
  run_cc_openmp                 - OpenMP加速构建
  runq_cc_openmp                - 量化构建的同等版本
  run_cc_openacc                - OpenACC加速构建
  runq_cc_openacc               - 量化构建的同等版本
  run_cc_omp_gnu                - 通用Linux发行版 + OpenMP构建
  runq_cc_omp_gnu               - 量化构建的同等版本
  run_cc_clblast                - CLBlast OpenCL CBLAS GPU加速构建
  runq_cc_clblast               - 量化构建的同等版本
  run_cc_openblas               - Openblas CBLAS加速构建
  runq_cc_openblas              - 量化构建的同等版本
  run_cc_cblas                  - 通用CBLAS加速构建
  runq_cc_cblas                 - 量化构建的同等版本
  run_cc_blis                   - BLIS加速构建
  runq_cc_blis                  - 量化构建的同等版本

特殊构建 

---> x86_64
  run_cc_mkl                    - ***新增*** OpenMP + Intel MKL CBLAS构建(x86_64 / intel Mac)
  runq_cc_mkl                   - 量化构建的同等版本

---> ARM64 / aarch64
  run_cc_armpl                  - ARM PL BLAS加速构建(ARM64和Mac)(进行中)
  runq_cc_armpl                 - 量化构建的同等版本

---> Macintosh
  run_cc_mac_accel              - Mac OS OPENMP + 通过Accelerate Framework的CBLAS构建(进行中/测试)
  runq_cc_mac_accel             - 量化构建的同等版本

---> Windows
  run_win                       - 使用MinGW-w64工具链的优化Windows构建
  runq_win                      - 量化构建的同等版本
  run_win_msvc                  - 使用MSVC工具链的OpenMP加速Windows构建(未测试)
  runq_win_msvc                 - 量化构建的同等版本

---> 多操作系统构建(使用cosmopolitan libc + 工具链)
  run_cosmocc                   - 优化的可移植 + cosmocc(在所有操作系统上运行)
  runq_cosmocc                  - 量化构建的同等版本

---> 多操作系统构建 ---> 带嵌入模型
  run_cosmocc_zipos             - 优化的可移植 + cosmocc + 嵌入zip模型构建(在所有操作系统上运行)
  runq_cosmocc_zipos            - 量化构建的同等版本
  run_cosmocc_incbin            - 优化的可移植 + cosmocc + 嵌入模型快速构建(在所有操作系统上运行)
  runq_cosmocc_incbin           - 量化构建的同等版本
  run_cosmocc_strlit            - 优化的可移植 + cosmocc + 嵌入模型构建(在所有操作系统上运行)
  runq_cosmocc_strlit           - 量化构建的同等版本

---> GCC/Clang嵌入模型构建
  run_gcc_openmp_incbin         - Gcc + OpenMP + 嵌入模型快速构建
  runq_gcc_openmp_incbin        - 量化构建的同等版本
  run_gcc_openmp_strlit         - Gcc + OpenMP + 嵌入模型构建
  runq_gcc_openmp_strlit        - 量化构建的同等版本
  run_clang_openmp_incbin       - Clang + OpenMP + 嵌入模型快速构建
  runq_clang_openmp_incbin      - 量化构建的同等版本
  run_clang_openmp_strlit       - Clang + OpenMP + 嵌入模型构建
  runq_clang_openmp_strlit      - 量化构建的同等版本

---> GCC/Clang嵌入模型构建 ---> 静态链接
  run_gcc_static_incbin         - 优化的静态gcc + 嵌入模型快速构建
  runq_gcc_static_incbin        - 量化构建的同等版本
  run_gcc_static_strlit         - 优化的静态gcc + 嵌入模型构建
  runq_gcc_static_strlit        - 量化构建的同等版本
  run_clang_static_incbin       - 优化的静态clang + 嵌入模型快速构建
  runq_clang_static_incbin      - 量化构建的同等版本
  run_clang_static_strlit       - 优化的静态clang + 嵌入模型构建
  runq_clang_static_strlit      - 量化构建的同等版本

---> Android
  run_incbin_tmux               - 优化构建 + 为Android上的Termux嵌入模型
  runq_incbin_tmux              - 量化构建的同等版本

编译后优化

二进制优化 
  run_bolt                      - ***新增*** 应用llvm bolt二进制优化

去除符号 
  run_strip                     - ***新增*** 去除符号以使二进制文件更小

---> L2E单内核(Asteroid)
  l2e_unik_qemu                 - 用于kvm / qemu x86_64的L2E单内核(Asteroid)

---> L2E单内核(最新)(Asteroid)
  l2e_unik_qemu_latest          - 用于kvm / qemu x86_64的L2E单内核(最新unikraft单内核)(Asteroid)

---> L2E单内核(Asteroid) ---> 在qemu中启动
  boot_l2e_unik                 - 在qemu中启动L2E单内核(Asteroid)

---> L2E操作系统(Humanoid)
  l2e_os                        - L2E操作系统,内核模块和用户空间构建

---> L2E操作系统(Humanoid) ---> 制作可启动ISO
  l2e_os_iso                    - 制作可启动的L2E操作系统混合UEFI/BIOS ISO镜像

---> L2E操作系统(Humanoid) ---> 在qemu中启动
  boot_l2e_os                   - 在qemu中启动L2E操作系统(Humanoid)

---> L2E操作系统(Humanoid) ---> 在qemu中启动ISO
  boot_l2e_iso                  - 在qemu中启动L2E操作系统ISO镜像

---> L2E操作系统(Humanoid) ---> 在qemu中使用UEFI启动ISO
  boot_l2e_iso_uefi             - 在qemu中使用UEFI启动L2E操作系统ISO镜像

调试构建
  run_debug                     - 可以用valgrind等工具分析的调试构建。
  run_cc_bcdebug                - ***新增*** 发出LLVM位码并转译为C调试构建
  runq_cc_bcdebug               - 量化构建的同等版本
  run_cc_mmdebug                - ***新增*** 矩阵乘法调试日志构建(警告:日志巨大)

测试
  test                          - 运行所有测试(包括Python代码,需要Python)
  testc                         - 仅运行run.c C实现的测试(需要Python)
  testcc                        - 运行C测试,不涉及pytest / Python

清理/清除
  tempclean                     - 查找并删除编辑器留下的所有临时文件  
  clean                         - 简单清理 
  distclean                     - 深度清理(清理子项目)
  mintclean                     - 恢复到原始状态(移除子项目)

其他
  get_model                     - 获取stories15M模型
  list                          - 显示所有目标的排序列表

帮助
  help                          - 显示此帮助。不带目标的make也会显示此帮助。

所有带嵌入模型的构建都需要模型位于out/目录中,模型名称必须为model.bin

示例:

mkdir out wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin -O out/model.bin

待办事项

  • MPI / PVM / PBLAS
  • 清理README.md
  • 将每个使用的项目添加到致谢中
  • 更新许可证以提及所有涉及的许可证

更新日志

见提交记录。今后我们将大幅偏离karpathy llama2.c

贡献

  • 所有合并到上游的拉取请求将自动应用到这里,因为我们紧密镜像上游。
  • 我合并提高性能的拉取请求,即使它们在上游被拒绝。
  • 欢迎性能和可用性改进的贡献。

开发者状态

见"开发者状态"问题。

感谢和致谢

感谢以下库和工具的创建者及其贡献者: </SOURCE_TEXT> <SOURCE_TEXT>

  • Meta - @facebook - llama2和llama3的创造者
  • llama2.c - @karpathy - 发起人和专家
  • cosmopolitan - @jart - 使一次编写随处运行成为可能的工具链
  • OpenBlas - @xianyi - BLAS加速
  • blis - @flame - BLIS BLAS加速
  • CLBlast - @CNugteren - OpenCL BLAS加速
  • incbin - @graphitemaster - 在二进制文件中包含资源
  • strliteral - @mortie - 在二进制文件中包含资源
  • unikraft - @unikraft - 作为单内核运行
  • linux - @torvalds - L2E操作系统中使用的内核
  • limine - @mintsuki - L2E操作系统的引导加载程序
  • llama3.c - @jameswdelancey - llama分词器的导出脚本
  • 还有更多

其他酷炫和值得注意的项目

许可证

MIT、GNU GPL、BSD和其他取决于构建选项 </SOURCE_TEXT>

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

TRELLIS

TRELLIS

用于可扩展和多功能 3D 生成的结构化 3D 潜在表示

TRELLIS 是一个专注于 3D 生成的项目,它利用结构化 3D 潜在表示技术,实现了可扩展且多功能的 3D 生成。项目提供了多种 3D 生成的方法和工具,包括文本到 3D、图像到 3D 等,并且支持多种输出格式,如 3D 高斯、辐射场和网格等。通过 TRELLIS,用户可以根据文本描述或图像输入快速生成高质量的 3D 资产,适用于游戏开发、动画制作、虚拟现实等多个领域。

ai-agents-for-beginners

ai-agents-for-beginners

10 节课教你开启构建 AI 代理所需的一切知识

AI Agents for Beginners 是一个专为初学者打造的课程项目,提供 10 节课程,涵盖构建 AI 代理的必备知识,支持多种语言,包含规划设计、工具使用、多代理等丰富内容,助您快速入门 AI 代理领域。

AEE

AEE

AI Excel全自动制表工具

AEE 在线 AI 全自动 Excel 编辑器,提供智能录入、自动公式、数据整理、图表生成等功能,高效处理 Excel 任务,提升办公效率。支持自动高亮数据、批量计算、不规则数据录入,适用于企业、教育、金融等多场景。

下拉加载更多