AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


通往 LLM 算法工程师之路
发布日期:2024-04-11 07:34:03 浏览次数: 1850


由于近一年多 LLM 发展非常迅猛,市面上 LLM 课程也是五花八门,于是本文按照下面的学习路径整理 LLM 算法工程师 应该具备的技术栈。

Github地址: https://github.com/mlabonne/llm-course


1. LLM 架构


  1. 编码器-解码器Transformer架构:更具体地说是 decoder only 的Transformer 架构,这是 LLMs 的基础,几乎所有的生成大语言模型都会用到这个架构。

  2. Tokenization:了解如何将原始文本数据转换为模型可以理解的格式

  3. 注意力机制:掌握注意机制背后的理论,包括自注意力和缩放点积注意力,这使模型在生成输出时能够专注于输入的不同部分。

  4. 文本生成:了解模型生成输出序列的不同方式。常见的策略包括贪心解码(greedy decoding), 束搜索(beam search, top-k 采样 和 nucleus sampling(top-p sampling)。


2. 如何准备训练数据集


  1. Alpaca-like数据集:使用OpenAI API(GPT)从头开始生成合成数据。您可以指定seed和系统提示以创建多样化的数据集。

  2. 高级技术:学习如何使用Evol-Instruct改进现有数据集,以及如何生成像Orca和phi-1论文中那样的高质量合成数据。

  3. 数据过滤:传统的技术包括正则表达式、删除近似重复项、专注于具有大量token的答案等。

  4. 提示模板:没有真正标准的格式化说明和答案的方式,这就是为什么了解不同的聊天模板(如ChatML、Alpaca等)很重要的原因。


3. 预训练模型

预训练是一个非常漫长且昂贵的过程,对大多数人来说可以不把重点放在这方面。但是了解预训练都干什么还是有必要的,只是不需要进行实际操作。

  1. 数据pipeline:预训练需要大规模的数据集(例如,Llama 2是在2万亿个token上进行训练的),这些数据集需要进行过滤、Tokenization,并与预定义的词汇表合并。

  2. 因果语言建模:学习因果语言建模与掩码语言建模的区别,以及在这种情况下使用的损失函数。为了进行高效的预训练,还需要了解Megatron-LM / gpt-neox。

  3. 缩放定律:缩放定律介绍如何基于模型大小、数据集大小以及用于训练的计算量来预测模型性能。

  4. 高性能计算:如果要从头搭建自己的LLM(硬件、分布式工作负载等),那么关于HPC的知识还是很重要的。


4. 有监督微调


预训练模型仅在 next-token prediction 任务上进行训练,这就是为什么它们有时候比较蠢或者说容易产生幻觉的原因。有监督微调可以对它们进行调整以适应指令。此外,它允许我们在任何数据上进行微调(私有数据,GPT-4未见过的数据等),并且无需支付像OpenAI的API费用即可调用。


  1. 全参微调:全参微调是指对模型中的所有参数进行重新训练。当然啦,代价高昂,但会产生更好的结果。

  2. LoRA:一种基于低秩适配器的参数高效技术(PEFT)。我们不训练所有参数,而是训练适配器。

  3. QLoRA:另一种基于LoRA的PEFT,它还将模型的权重量化为4比特,并引入了分页优化器来管理内存峰值。将其与Unsloth结合使用,可以在Colab上运行。

  4. Axolotl:一个用户友好且功能强大的微调工具,广泛用于许多最先进的开源模型中。

  5. DeepSpeed:针对多GPU和多节点场景的LLM的高效预训练和微调框架(在Axolotl中有实现)。


5. 基于人工反馈的强化学习(RLHF)


在监督微调之后,RLHF技术可以对LLM的答案进行优化调整,给出与期望更相符的答案。其思想是从人类反馈中学习偏好,这可以减少偏差、审查模型。与SFT相比,它更为复杂,通常被视为可选步骤。

  1. 偏好数据集:这些数据集通常包含带有某种排序的多个答案,这使其比指令数据集更难创建。

  2. 近端策略优化:该算法利用一个奖励模型,预测给定文本是否被打更高的分。然后,利用基于KL散度的惩罚优化SFT模型。

  3. 直接偏好优化:DPO通过将其重新构建为分类问题简化了该过程。它使用一个参考模型而不是奖励模型(无需训练),并且只需要一个超参数,使其更加稳定和高效。


6. 模型评估


评估LLM是大模型工作流中被经常忽视的一个环节,它耗时且可靠性一般。我们的下游任务决定了我们想要评估的指标,但始终要记住古德哈特定律:“当一个指标成为目标时,它就不再是一个好的指标。”

  1. 传统指标:像perplexity和BLEU分数这样的指标不像以前那样流行,因为它们在大多数情况表现不好。但我们还是得学习和了解一下。

  2. 一般基准:基于语言模型评估测试框架,Open LLM排行榜是通用LLM(如ChatGPT)的主要基准。还有其他流行的基准,如BigBench、MT-Bench等。

  3. 任务特定的基准:摘要、翻译和问答等任务有专门的评价体系、指标甚至子领域(医学、金融等),例如:生物医学问答的PubMedQA。

  4. 人类评估:最可靠的评估是用户接受率。如果您想知道一个模型的表现如何,最简单但最可靠的方法是自己使用它。


7. 量化


量化是使用较低精度将模型的权重(和激活)压缩的过程。例如,使用16比特存储的权重可以转换为4比特表示。这种技术已经变得越来越重要,因为可以减少与LLM相关的计算和内存成本。

  1. 基本技术:了解不同的精度级别(FP32、FP16、INT8等),以及如何使用absmax和 zero-point技术执行naive 量化。

  2. GGUF和llama.cpp:最初设计是在CPU上运行,llama.cpp和GGUF格式已成为在消费级硬件上运行LLM最流行工具。

  3. GPTQ和EXL2:GPTQ和更具体地说是EXL2格式提供了令人难以置信的速度,但只能在GPU上运行。模型还需要很长时间才能被量化。

  4. AWQ:这种新格式比GPTQ更准确(困惑度更低),但使用的VRAM要多得多,并不一定更快。


8. 发展趋势


  1. 位置嵌入:了解LLM如何编码位置,特别是像RoPE这样的相对位置编码方案。通过YaRN(通过 temperature factor乘以注意力矩阵)或ALiBi(基于 token distance的注意力惩罚)来扩展上下文长度。

  2. 模型合并:合并已训练的模型已成为创建性能良好的模型而无需任何微调的流行方法。流行的mergekit库实现了最流行的合并方法,如SLERP、DARE和TIES。

  3. 专家混合:Mixtral通过其出色的性能重新流行了MoE架构。与此同时,一种名为frankenMoE的类型出现在开源社区中,通过合并Phixtral等模型,这是一种更便宜且性能良好的选项。

  4. 多模态模型:这些模型(如CLIP、Stable Diffusion或LLaVA)使用统一的嵌入空间处理多种类型的输入(文本、图像、音频等),这解锁了诸如文本到图像等强大应用。


结语

大模型发展日新月异,本文仅梳理成为大模型算法工程师一些典型的技术,期望帮助大家在通往 LLM 算法工程师的道路上走的更扎实。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询