网站首页
手机版

垂直领域LLM大模型全栈DIY工具(垂直领域im产品)

更新时间:2024-08-06 13:46作者:小乐

llama2.c是一款极简的Llama 2 LLM全栈工具,非常适合为利基市场垂直领域制作大规模语言模型。

建议:使用NSDT Designer 快速构建可编程3D 场景。

1.简介使用此存储库中的代码,您可以在PyTorch 中从头开始训练Llama 2 LLM 架构,然后将权重导出到二进制文件并将其加载到大约500 行的C 文件(run.c)中以推断模型。或者,您可以加载、微调和推理Meta 的Llama 2(但这仍在积极充实中)。因此,这个仓库是Llama 2 LLM 的“全栈”训练+推理解决方案,重点是极简主义和简单性。您可能会认为需要具有数十亿个参数的法学硕士才能完成任何有用的事情,但事实上,如果领域足够窄,非常小的法学硕士也可以非常强大。我建议您查看TinyStories 论文以获取灵感。请注意,这只是我最近开始的一个有趣的周末项目:我采用了以前的nanoGPT 并对其进行了修改以实现Llama-2 架构而不是GPT-2,其核心是用run.c 编写的C 推理引擎。所以这个项目还很年轻并且进展很快。向精彩的llama.cpp 致敬,为该项目提供了灵感。我想要一些超级简单的东西,所以我选择对Llama 2 架构进行硬编码,坚持使用fp32,并推出一个没有依赖项的纯C 推理文件。

2. 感受魔力让我们在C 语言中运行一个小型Llama 2 模型。您需要一个模型检查点。下载我在TinyStories 数据集上训练的这个15M 参数模型(约58MB 下载)并将其放入默认检查点目录中:

wget https://karpathy.ai/llama2c/model.bin -P out(如果这不起作用,请尝试使用谷歌驱动器)。编译并运行C代码:

gcc -O3 -o run run.c -lm./run out/model.bin 您将看到一个文本流示例。在我的M1 MacBook Air 上,它的运行速度约为110 个令牌/秒。请参阅性能或Makefile 以获取可以显着加快速度的编译标志。输出示例:

从前,有一个男孩,名叫蒂米。蒂米喜欢和他的朋友们一起运动。他非常擅长投球和接球。有一天,蒂米的妈妈给了他一件新衬衫,让他穿去参加聚会。蒂米认为这令人印象深刻,并请他妈妈解释衬衫的用途。 “衬衫就像篮球比赛的特殊套装,”他的妈妈说。蒂米很高兴听到这个消息并穿上了他的新衬衫。他感觉自己就像一个士兵走进军队,大声喊叫。从那天起,蒂米每次在聚会上和朋友们做运动时,都会穿着他的新衬衫。从前,有一个小女孩,名叫莉莉。她喜欢和朋友们一起到外面玩。有一天,莉莉和她的朋友艾玛正在玩球。艾玛把球扔得太用力,球击中了莉莉的脸。莉莉觉得不好意思,不想再玩了。艾玛问莉莉出了什么问题,莉莉告诉她她的记忆。艾玛告诉莉莉,她很尴尬,因为她把球扔得太用力了。莉莉感觉不好实现tok/s: 129.146172 更新:我上传了一个更大的检查点。这是一个具有512 个维度、8 个层、8 个头、上下文长度1024 和约44M 参数的Transformer。它在4XA100 40GB GPU 上训练了大约8 小时,批量大小为32,进行了200K 次迭代。您可以像这样使用这个更大、更强大的检查点:

wget https://karpathy.ai/llama2c/model44m.bin -P out44m./run out44m/model44m.bin 仍然以交互速率运行并采样更加连贯和多样化的故事:

从前,有一个小女孩,名叫莉莉。她喜欢在床上玩玩具。有一天,她决定和她的毛绒动物一起举办一场茶会。她往一个小茶壶里倒了一些茶,然后放在茶壶上面。突然,她的弟弟麦克斯走进房间,也想参加茶会。莉莉不想分享她的茶,她让麦克斯走开。麦克斯开始哭泣,莉莉感觉很糟糕。她决定把茶会让给麦克斯,两人共用茶壶。但随后,意想不到的事情发生了。茶壶开始摇晃。莉莉和麦克斯很害怕,不知道该怎么办。突然,茶壶开始向天花板飞去,落在床顶上。莉莉和麦克斯很惊讶,他们拥抱在一起。他们意识到分享比自私有趣得多。从那天起,他们总是分享茶会和玩具。更新2:110M参数模型现已可用,请参阅模型。

3. Meta的Llama 2模型由于神经网络架构相同,我们也可以使用Meta发布的Llama 2模型进行推理。不幸的是,由于许可问题,这里存在一些摩擦(我不认为我可以直接上传检查点)。因此,第1 步,按照Meta 的说明获取Llama 2 检查点。一旦我们有了这些检查点,我们就必须将它们转换为llama2.c 格式。为此,我们使用export_meta_llama_bin.py 文件,例如对于7B 模型:

python export_meta_llama_bin.py path/to/llama/model/7B llama2_7b.bin 导出大约需要10 分钟,并在当前目录中生成一个名为llama2_7b.bin 的26GB 文件(float32 中7B 模型的权重)。据报道,尽管做出了努力,13B 导出目前仍无法正常工作,原因未知(PR 已接受修复)。我们可以正常运行模型:

./run llama2_7b.bin 在我的云中CPU Linux 机器上使用OpenMP 在96 个线程上进行编译,并以大约4 个令牌/秒的速度运行。 (在我的MacBook Air M1 上,如果您仅使用make runfast 进行构建,目前每个令牌的时间接近30 秒。)示例输出:

本文件的目的是强调最先进的CoO 生成技术,包括最新发展和商业用途。重点是具有最高价值的技术,这些技术将成为未来的主导工艺,从而成为ST.RD 感兴趣的技术。因此,对俄罗斯、日本和欧洲开发的CoO 发电技术进行了一定的深入描述。该文件首先介绍了作为复杂产品的氧化钴,并简要介绍了钴作为一种基本材料。该文件继续讨论了与能源和资本消耗以及环境破坏有关的可用CoO 生成流程。基本模型. ()/。由于我们可以使用基本模型进行推理,因此也应该很容易推断出聊天模型并与其进行对话。如果我们能找到一种更有效地运行7B 的方法,我们就可以开始将LoRA 添加到我们的训练脚本中,并在存储库中进行所有微调!

4. 模型为了从头开始获得更小的模型示例,我在TinyStories 上训练了多个模型,并将它们分类如下。所有这些都在我的环境(4x A100 40GB GPU)上训练了几个小时。 110M大约需要24小时。

模型

方面

层数

人数

最大上下文长度

范围

验证损失

下载

奥格

288

6

6

256

15M

模型.bin

44M

第512章

8

8

1024

44M

型号44米.bin

110M

第768章

12

12

1024

110M

0.7601

型号110米.bin

您会注意到110M 模型大约是GPT-1 的大小。或者,这也是GPT-2 系列中最小的模型(GPT-2 Small),只不过最大上下文长度仅为1024 而不是2048。与GPT-1/2 架构相比,唯一显着的变化是Llama使用RoPE 相对位置嵌入而不是绝对/学习位置嵌入,MLP 中更奇特的SwiGLU 非线性,RMSNorm 而不是LayerNorm,所有线性层上的偏差=False,并且可以选择多个查询(但llama2.c 尚不支持)。

5. 训练让我们看看如何使用此存储库中的代码从头开始训练小Llama 2。首先,让我们下载并预先标记一些源数据集,例如我喜欢TinyStories,所以这是此存储库中当前可用的唯一示例。但是添加数据集应该很容易,请参阅代码

python tinystories.py 下载python tinystories.py 预标记然后训练我们的模型:

python train.py6,简短培训指南请参阅train.py 脚本以了解更多奇特的启动和超参数覆盖范围。以下是有关如何设置参数的简要指南。查看Chinchilla 论文末尾的表格,了解Transformer 参数(dim、n_layers、n_heads)如何一起增长或收缩。外推/内插此模式以获得更大或更小的变压器。根据问题,设置最大上下文长度:这应该是预测下一个标记的最大标记数。例如。 Llama 2 使用2048。接下来,对于中型应用程序,您希望每次更新的总批量大小(由脚本打印为“每次迭代的令牌将是:”)约为100K 令牌。对于小型应用程序,它可能会更低,对于大型训练(例如GPT/LLamas),它通常约为0.5M 甚至更多。首先将batch_size设置为系统允许的最大值(例如,我在最近一次运行中设置为16,因为之后我耗尽了GPU内存),然后希望将gradient_accumulation_steps增加到所需的高度,以获得约100K的总Batch大小。最后,调整你的学习率(LR)。学习率与您的训练允许的一样高。非常小的网络可以使用大型LR(例如1e-3 甚至更高)。大型网络需要较低的LR。 3e-4 在大多数中型应用程序中是安全的选择,但对于小型网络来说可能太低,因此请尝试增加它!最后,max_iters 是训练的长度。使用不同的设置。我基本上只调整这些参数,其他大部分参数保持不变。这是我如何训练110M 模型的示例,我认为这远非最佳,但对我来说看起来很合理:dim 768,n_layers 12,n_heads 12(因此每个头的大小为768/12=64 个通道),seq len 为1024,批量大小为16(这最适合我的A100 40GB GPU),gradient_accumulation_steps=8 需要使总令牌批量大小为16 批量大小* 1024 个序列令牌* 8 grad_accum=每次更新131,072 个令牌。好的学习率4e-4(可能有点太低了)。 max_iters 200K(可能有点太高了)。 Dropout 0.1,因为这通常有助于中等尺寸。就是这样。我在云机器上的4 个GPU 上使用分布式数据并行(DDP) 运行它,训练大约需要一天左右的时间。完全理解如果你想跳过模型训练,为了一个简单的演示只需下载我的预训练模型并将其保存到目录out:

wget https://karpathy.ai/llama2c/model.bin -P out 一旦我们有了model.bin 文件,我们就可以在C 中进行推理。首先编译C 代码:

gcc -O3 -o run run.c -lm 现在你可以简单地运行它:

./run out/model.bin 观察代币流过很有趣!我们还可以运行PyTorch 推理脚本进行比较(如果尚未运行,请将model.ckpt 添加到/out):

python example.py 这给出了相同的结果。更详细的测试将在test_all.py中进行,运行如下:

$ pytest 目前,您需要两个文件来测试或采样:来自我之前运行的PyTorch 训练的model.bin 文件和model.ckpt 文件。我必须考虑在不下载200MB 数据的情况下运行测试。

7.性能说明:这个指南不是很好,因为我个人在Python领域花了很多时间,对C编译的很多特性和标志没有特别深入的理解。根据您的系统,有多种方法可以加速此代码。在这里,我们记录了其中的一些内容以及有关其使用的高级指南。这又是默认编译模式,但使用-O3:

gcc -O3 -o run run.c -lm-O3 包括编译时间和内存使用方面昂贵的优化。包括矢量化、循环展开和分支预测。这里还有一些可以尝试的方法。 -Ofast 除了-O3 之外,还运行可能违反C/IEEE 规范的其他优化。有关详细信息,请参阅GCC 文档。 -march=native 编译程序以使用正在编译的机器的架构,而不是更通用的CPU。这可以实现额外的优化和特定于硬件的调整,例如改进的向量指令/宽度。迄今为止我在MacBook Air (M1) 上看到的最快吞吐量是:

gcc -Ofast -o run run.c -lm 您也可以尝试用clang 替换gcc 。 OpenMP 通过使用OpenMP 编译也可以实现显着的改进,它“激活”matmul 和注意力内部的#pragma omp 并行性。您可以编译例如像这样:

clang -Ofast -fopenmp -march=native run.c -lm -o run 您可以尝试交换clang/gcc,并且可以尝试省略-march=native。但是,在运行推理时,请确保使用OpenMP 标志设置线程数,例如:

OMP_NUM_THREADS=4 ./run out/model.bin 根据您的系统资源,可能需要调整这些超参数。原文链接:http://www.bimant.com/blog/llama2c-vertical-llm-diy-toolchain/

为您推荐

LLM超长上下文查询-性能评估实战

本文经翻译并二次整理自Benchmarking Query Analysis in High Cardinality Situations一文。讲述了基于反馈的GPT自学进化的基础理念,以及基于LangSmith的实践与实操。本系列合集,点

2024-08-06 13:46

《怪物猎人》15周年官方纪念视频 历代作品悉数回顾(怪物猎人几周年了)

生命不息,狩猎不止!卡普空旗下《怪物猎人》系列在今日迎来了15周年诞辰。作为动作类共斗游戏的巅峰,这15年间有过辉煌、有过低谷;和索尼度过蜜月、也被老任独霸过6年,现在的《怪物猎人世界》更是登陆了Xbox One。载体在变,不变的是从初代开

2024-08-06 13:45

IPPC熏蒸 ISPM-15证书标识是什么意思(ippc熏蒸标识查询)

IPPC代表国际植物保护公约(它是一个条约),IPPC制定了ISPM或国际植物检疫措施标准。ISPM-15只是这些标准之一。ISPM-15 直接适用于我们作为木箱及木托盘的包装箱厂家。IPPC熏蒸木箱包装ISPM-15它是什么 简短的版本是

2024-08-06 13:45

怪猎主题microSD卡套装即将发售

大家都知道3月份即将迎来怪物猎人系列15周年,而CAPCOM也是在这个时候推出了15周年的联动周边。如果有关注酋长之前发过的联动信息,都应该知道CAPCOM的联动总会让人大呼鬼才。这次的联动,CAPCOM将与Honma、Followwind

2024-08-06 13:44

法律留学 | 全球LLM 15个专业领域2019年最新排名(llm学校排名)

作者 | 一里团队对于每一位申请者来说,选校是一个决定未来方向的重大抉择。对于美国法学院申请者来说,目前参考最多的就是美国新闻与世界报道(U.S. News & World Report,USN&WR)一年一度的法学院排名(最新排名详情可参

2024-08-06 13:44

鬼才联动还有很多!15周年纪念周边一览(1541十周年版好用吗)

前言:3月份就要迎来怪物猎人系列15周年了,昨天有讲过CAPCOM的一些15周年联动周边。今天就顺便把之前公布的15周年周边商品(截止2019年3月3日)都一一讲一下吧~老山龙塑料玩偶(确信)好吧,是酋长皮了一下~这是CAPCOM与CCP联

2024-08-06 13:43

加载中...