GitHub 热门 LLM 公开资料与大模型入门教程
本文整理了大型语言模型(LLM)领域的核心学习资料,涵盖基础数学与 Python、架构原理、微调技术、量化方法及工程化部署。内容分为 LLM 基础、科学家视角及工程师视角三部分,包含预训练、指令微调、RLHF、RAG 管道构建等关键知识点,并推荐了相关工具库与评估基准,适合希望系统掌握大模型技术的开发者参考。
0. 一些有用的 Notebook
与大型语言模型相关的笔记本和文章列表。
工具
- RunPod:使用 RunPod 自动评估大语言模型(LLMs)。
- LazyMergekit:轻松使用 MergeKit 一键合并模型。
- AutoGGUF:一键将大语言模型(LLMs)量化为 GGUF 格式。
- Model Family Tree:可视化被合并模型的家族树。
Fine-tuning
- Colab Llama2:使用 Colab 对 Llama2 进行 fine-tuning。
- Axolotl:使用 Axolotl 对 LLMs 进行 fine-tuning。
- DPO Mistral-7b:使用 DPO 对 Mistral-7b 进行 fine-tuning。
Quantization
- 8-bit 量化:使用 8-bit 量化优化大语言模型。
- GPTQ:使用 GPTQ 进行 4-bit 量化。
- GGUF 和 llama.cpp:使用 GGUF 和 llama.cpp 进行量化。
- ExLlamaV2:LLMs 运行最快的库。
其它
- 解码策略:大语言模型 LLMs 中的解码策略。
- 损失函数可视化:GPT-2 的损失函数值可视化。
- 知识图谱:使用知识图谱提升 chatGPT。
- Mergekit:使用 mergekit 合并 LLMs。
1. LLM 基础
1.1 机器学习 ML 的数学基础
在学习机器学习之前,了解这些算法背后的基本数学概念非常重要。
- 线性代数:这对于理解许多算法至关重要,尤其是那些用于深度学习的算法。关键概念包括向量、矩阵、行列式、特征值和特征向量、向量空间以及线性变换。
- 微积分:许多机器学习算法涉及连续函数的优化,这需要理解导数、积分、极限和级数。多变量微积分和梯度概念也很重要。
- 概率与统计:这些对于理解模型如何从数据中学习并进行预测至关重要。关键概念包括概率论、随机变量、概率分布、期望、方差、协方差、相关性、假设检验、置信区间、最大似然估计和贝叶斯推断。
资源推荐:
- 一系列视频,为这些概念提供了几何直觉。
- 为许多统计概念提供了简单明了的解释。
- 一系列 Medium 文章,提供了每个概率分布背后的直觉。
- 另一种线性代数的视觉解释。
- 非常适合初学者,以非常直观的方式解释概念。
- 一个互动课程,涵盖了微积分的所有基础知识。
- 以易于理解的格式呈现材料。
1.2 ML 中的 Python
Python 是一种功能强大且灵活的编程语言,由于其可读性、一致性以及数据科学库的强大生态系统,特别适合用于机器学习。
- Python 基础:Python 编程需要对基本语法、数据类型、错误处理和面向对象编程有良好的理解。
- 数据科学库:包括熟悉用于数值运算的 NumPy,用于数据操作和分析的 Pandas,以及用于数据可视化的 Matplotlib 和 Seaborn。
- 数据预处理:这涉及特征缩放和归一化、处理缺失数据、异常值检测、分类数据编码以及将数据分割为训练集、验证集和测试集。
- 机器学习库:熟练掌握 Scikit-learn 库至关重要,该库提供了广泛的监督和无监督学习算法。了解如何实现线性回归、逻辑回归、决策树、随机森林、k-最近邻(K-NN)和 K-均值聚类等算法很重要。降维技术如 PCA 和 t-SNE 对于可视化高维数据也非常有帮助。
资源推荐:
- 一个全面的资源,提供初学者和高级 Python 概念的文章和教程。
- 一个长视频,全面介绍 Python 的所有核心概念。
- 一本免费的数字书籍,是学习 pandas、NumPy、Matplotlib 和 Seaborn 的极佳资源。
- 为初学者提供不同机器学习算法的实用介绍。
- 免费课程,涵盖 PCA 和其他几个机器学习概念。
1.3 神经网络
神经网络是许多机器学习模型的基本组成部分,特别是在深度学习领域。为了有效地利用它们,全面理解它们的设计和机制是必不可少的。
- 基础知识:包括理解神经网络的结构,如层、权重、偏置和激活函数(sigmoid、tanh、ReLU 等)。
- 训练和优化:熟悉反向传播和不同类型的损失函数,如均方误差(MSE)和交叉熵。理解各种优化算法,如梯度下降、随机梯度下降、RMSprop 和 Adam。
- 过拟合:理解过拟合的概念(模型在训练数据上表现良好,但在未见数据上表现不佳),并学习各种正则化技术(dropout、L1/L2 正则化、早停、数据增强)以防止过拟合。
- 实现多层感知器(MLP):使用 PyTorch 构建一个 MLP,也称为全连接网络。
资源推荐:
- 这个视频直观地解释了神经网络及其内部工作原理。
- 这个视频高效地介绍了深度学习中所有最重要的概念。
- 为有编码经验且想要学习深度学习的人设计的免费课程。
- 一系列视频,为完全初学者学习 PyTorch。
1.4 自然语言处理(NLP)
NLP 是人工智能的一个迷人分支,它弥合了人类语言和机器理解之间的差距。从简单的文本处理到理解语言的细微差别,NLP 在许多应用中扮演着至关重要的角色,比如翻译、情感分析、聊天机器人等。
- 文本预处理:学习各种文本预处理步骤,如分词(将文本分割成单词或句子)、词干提取(将单词还原到基本形式)、词形还原(类似于词干提取但考虑上下文)、停用词移除等。
- 特征提取技术:熟悉将文本数据转换为机器学习算法可以理解的格式的技术。关键方法包括词袋模型(BoW)、词频 - 逆文档频率(TF-IDF)和 n-gram。
- 词嵌入:词嵌入是一种单词表示类型,允许意义相似的单词具有相似的表示。关键方法包括 Word2Vec、GloVe 和 FastText。
- 循环神经网络(RNNs):理解 RNNs 的工作原理,这是一种专为处理序列数据设计的神经网络。探索 LSTM 和 GRU,这两种 RNN 变体能够学习长期依赖关系。
资源推荐:
- 关于 Python 中 spaCy 库进行 NLP 任务的详尽指南。
- 一些笔记本和资源,用于实践解释 Python 中的 NLP。
- 理解著名的 Word2Vec 架构的好参考。
- 在 PyTorch 中实现 RNN、LSTM 和 GRU 模型的实用且简单的方法。
- 关于 LSTM 网络的更具理论性的文章。
2. LLM Scientist
本节专注于学习如何使用最新技术构建最佳的大型语言模型(LLMs)。
2.1 LLM 架构
虽然不需要深入了解,但了解其输入(token)和输出(logits)是很重要的。标准的是另一个关键组成部分,需要掌握,因为后续会介绍其改进版本。
- 高层次视角:重新审视编码器 - 解码器 Transformer 架构,更具体地说是解码器,在 LLM 中都有使用。
- 分词:理解如何将原始文本转换为模型可以理解的格式,这涉及到将文本分割成 token(通常是单词或子词)。
- 注意力机制:掌握注意力机制背后的理论,包括 self-attention 和 scaled dot-product attention,这允许模型在生成输出时关注输入的不同部分。
- 文本生成:了解模型可以生成输出序列的不同方式。常见策略包括贪婪解码、束搜索、Top-k 采样和核采样。
资料推荐:
- Jay Alammar 的文章:对 Transformer 模型进行了视觉和直观的解释。
- Jay Alammar 的另一篇文章:比前一篇文章更重要,专注于 GPT 架构,它与 Llama 的架构非常相似。
- Brendan Bycroft 的作品:对 LLM 内部发生的事情进行了令人难以置信的 3D 可视化。
- Andrej Karpathy 的视频:一个长达 2 小时的 YouTube 视频,从头开始重新实现 GPT(面向程序员)。
- Lilian Weng 的文章:以更正式的方式介绍了注意力的需求。
- 代码示例:提供代码和不同解码策略的视觉介绍,以生成文本。
2.2 构建指令数据集
虽然从维基百科和其他网站找到原始数据很容易,但在野外收集指令和答案的配对却很困难。与传统机器学习一样,数据集的质量将直接影响模型的质量,这就是为什么它可能是微调过程中最重要的组成部分。
- 类的数据集:使用 OpenAI API(GPT)从头开始生成合成数据。您可以指定种子和系统提示,以创建多样化的数据集。
- 高级技术:学习如何使用改进现有数据集,以及在论文中生成高质量的合成数据。
- 数据过滤:涉及正则表达式的传统技术,去除近似重复项,专注于具有高 token 数量的答案等。
- 提示模板:格式化指令和答案没有真正的标准方式,这就是为什么了解不同的聊天模板,如 Alpaca 等,是很重要的。
资料推荐:
- Thomas Capelle 的文章:探索 Alpaca 和 Alpaca-GPT4 数据集以及如何格式化它们。
- Solano Todeschini 的教程:介绍如何使用 GPT-4 创建合成指令数据集。
- Kshitiz Sahay 的文章:使用 GPT 3.5 创建指令数据集,以微调 Llama 2 进行新闻分类。
- 笔记本:包含几种过滤数据集并上传结果的技术的笔记本。
- Matthew Carrigan 的页面:Hugging Face 关于提示模板的页面。
2.3 预训练
预训练是一个非常漫长且成本高昂的过程,这就是为什么这不是本课程的重点。了解预训练期间发生的事情有一定的理解水平是好的,但不需要实践经验。
- 数据管道:预训练需要巨大的数据集(例如,Llama 2 是在 2 万亿个 token 上训练的),这些数据集需要被过滤、分词,并与预定义的词汇表整合。
- 因果语言建模:了解因果语言建模和掩蔽语言建模之间的区别,以及在这种情况下使用的损失函数。为了高效的预训练,了解更多关于 Flash Attention 等信息。
- Scaling laws:描述了基于模型大小、数据集大小和用于训练的计算量预期的模型性能。
- 高性能计算:这不在讨论范围内,但如果计划从头开始创建自己的 LLM(硬件、分布式工作负载等),更多关于 HPC 的知识是基础。
参考资料:
- Junhao Zhao 的文章:预训练、微调和 RLHF 策划的数据集列表。
- Transformers 库教程:使用 transformers 库从头开始预训练 GPT-2 模型。
- Zhang 等人的项目:查看这个项目,以了解从头开始训练 Llama 模型的过程。
- 博客文章:解释因果语言建模和掩蔽语言建模之间的区别,以及如何快速微调 DistilGPT-2 模型。
- nostalgebraist 的文章:讨论规模法则,并解释它们对一般 LLM 的意义。
- BigScience 的报告:描述 BLOOM 模型是如何构建,包含了许多关于工程部分和遇到问题的有用信息。
- Meta 的研究日志:研究日志显示了什么出了问题,什么做得对。如果您计划预训练一个非常大的语言模型(在这种情况下,是 175B 参数),这会很有用。
- 开源框架:一个开源 LLM 框架,包含训练和数据准备代码、数据、指标和模型。
2.4 微调
预训练模型仅在下一个 token 预测任务上进行训练,这就是为什么它们不是有用的助手。SFT(监督式微调)允许您调整它们以响应指令。此外,它允许您在任何数据上微调您的模型(私有的、GPT-4 未见过的等),并且无需支付像 OpenAI 这样的 API 费用。
- 全微调:全微调指的是训练模型中的所有参数。这不是一种高效的技术,但它可以产生稍微更好的结果。
- LoRA:一种基于低秩适配器的参数高效技术(PEFT)。我们不是训练所有参数,而是只训练这些适配器。
- QLoRA:另一种基于 LoRA 的 PEFT,它还将模型的权重量化为 4 位,并引入分页优化器来管理内存峰值。结合 Unsloth,可以在免费的 Colab 笔记本上高效运行。
- Axolotl:一个用户友好且强大的微调工具,被许多最先进的开源模型使用。
- DeepSpeed:在多 GPU 和多节点设置中高效预训练和微调 LLM(在 Axolotl 中实现)。
资料推荐:
- Alpin 的文章:概述了在微调 LLM 时需要考虑的主要概念和参数。
- Sebastian Raschka 的文章:关于 LoRA 的实际见解以及如何选择最佳参数。
- Hugging Face 教程:动手教程,介绍如何使用 Hugging Face 库微调 Llama 2 模型。
- Benjamin Marie 的文章:为因果 LLM 填充训练示例的最佳实践。
- Axolotl 教程:介绍如何使用 Axolotl 微调 CodeLlama 模型。
2.5 RLHF(基于人类反馈的强化学习)
在监督式微调之后,RLHF 是一个用于使大型语言模型(LLM)的答案与人类期望对齐的步骤。这个想法是从人类(或人工)反馈中学习偏好,这可以用来减少偏见、审查模型或使它们以更有用的方式行动。它比 SFT 更复杂,通常被视为可选的。
- 偏好数据集:这些数据集通常包含几个答案,并附有某种排名,这使得它们比指令数据集更难制作。
- 近端策略优化(PPO):该算法利用一个奖励模型来预测给定文本是否被人类高度排名。然后使用这个预测来优化 SFT 模型,基于 KL 散度的惩罚。
- 直接偏好优化(DPO):DPO 通过将其重新定义为分类问题来简化过程。它使用参考模型而不是奖励模型(无需训练),并且只需要一个超参数,使其更稳定、更高效。
资料推荐:
- Ayush Thakur 的文章:解释为什么 RLHF 有助于减少 LLM 中的偏见并提高性能。
- Hugging Face 教程:介绍使用奖励模型训练和强化学习的 RLHF。
- Hugging Face 实战:使用 transformers 库高效地使用 RLHF 对齐 LLaMA 模型。
- Sebastian Rashcka 的文章:概述 RLHF 过程及其替代方案,如 RLAIF。
- DPO 微调:使用 DPO 微调 Mistral-7b 模型,并复现 NeuralHermes-2.5。
2.6 评估
评估大型语言模型(LLMs)是流程中被低估的部分,它既耗时又只有适度的可靠性。您的下游任务应该决定您想要评估的内容,但请始终记住古德哈特定律:'当一个度量成为目标时,它就不再是一个好的度量。'
- 传统指标:像困惑度(perplexity)和 BLEU 分数这样的指标并不像以前那样受欢迎,因为它们在大多数情况下都有缺陷。尽管如此,理解它们以及它们何时可以应用仍然很重要。
- 通用基准:基于语言模型评估工具(LMSYS Chatbot Arena),是通用 LLM(如 ChatGPT)的主要基准。还有其他流行的基准,如 MMLU 等。
- 任务特定基准:像摘要、翻译和问答这样的任务有专门的基准、指标,甚至还有子领域(如医学、金融等),例如 PubMedQA 用于生物医学问答。
- 人类评估:最可靠的评估是用户接受率或人类进行的比较。如果您想知道一个模型的表现如何,最简单但也最确定的方法是自己使用它。
资料推荐:
- Hugging Face 教程:介绍困惑度并提供使用 transformers 库实现它的代码。
- BLEU 分数文章:介绍 BLEU 分数及其许多问题,并提供示例。
- Chang 等人的论文:关于评估什么、在哪里评估以及如何评估的全面论文。
- lmsys 榜单:基于人类比较的通用 LLM 的 Elo 等级。
2.7 量化
量化是使用较低精度转换模型的权重(和激活)的过程。例如,使用 16 位存储的权重可以转换为 4 位表示。这种技术变得越来越重要,以减少与大型语言模型(LLMs)相关的计算和内存成本。
- 基础技术:了解不同的精度级别(FP32、FP16、INT8 等)以及如何使用 absmax 和零点技术进行朴素量化。
- GGUF 和 llama.cpp:最初设计用于在 CPU 上运行,llama.cpp 和 GGUF 格式已成为在消费级硬件上运行 LLMs 最受欢迎的工具。
- GPTQ 和 EXL2:GPTQ,更具体地说,EXL2 格式提供了惊人的速度,但只能在 GPU 上运行。模型量化也需要很长时间。
- AWQ:这种新格式比 GPTQ 更准确(更低的困惑度),但使用更多的 VRAM,并且不一定更快。
资料推荐:
- LLM.int8() 教程:量化、absmax 和零点量化的概述,以及带有代码的 LLM.int8()。
- GGUF 教程:教程,介绍如何使用 llama.cpp 和 GGUF 格式量化 Llama 2 模型。
- AutoGPTQ 教程:教程,介绍如何使用 AutoGPTQ 算法量化 LLM。
- ExLlamaV2 指南:运行 LLM 最快的库:指南,介绍如何使用 EXL2 格式量化 Mistral 模型,并使用 ExLlamaV2 库运行它。
- AWQ 概述:AWQ 技术的概述及其好处。
2.8 新趋势
- 位置编码:了解 LLMs 如何编码位置,特别是相对位置编码方案,如 RoPE。实现(将注意力矩阵乘以温度因子)或 YaRN(基于 token 距离的注意力惩罚),以扩展上下文长度。
- 模型合并:合并训练好的模型已成为无需任何微调即可创建高性能模型的流行方式。流行的库实现了最受欢迎的合并方法,如 SLERP、Linear Interpolation 等。
- 专家混合(MoE):因其出色的性能重新流行了 MoE 架构。同时,开源社区通过合并像 Mixtral 这样的模型,出现了一种类型的 frankenMoE,这是一种更便宜且性能优越的选择。
- 多模态模型:这些模型(如 CLIP、Flamingo 等)处理多种类型的输入(文本、图像、音频等),并使用统一的嵌入空间,这解锁了像文本到图像这样的强大应用。
资料推荐:
- EleutherAI 文章:总结了不同位置编码技术的文章。
- Rajat Chawla 教程:介绍 YaRN。
- Mergekit 教程:关于使用 mergekit 进行模型合并的教程。
- Hugging Face 指南:关于 MoEs 及其工作原理的详尽指南。
- Chip Huyen 文章:多模态系统的概述以及该领域最近的历史。
3. LLM 工程师
本节专注于学习如何构建可以在生产环境中使用的由大型语言模型(LLM)驱动的应用程序,重点是增强模型并部署它们。
3.1 运行 LLMs
由于硬件要求高,运行大型语言模型(LLMs)可能会很困难。根据您的用例,您可能只想通过 API(如 GPT-4)使用模型,或者在本地运行它。在任何情况下,额外的提示和指导技术都可以改善并约束您的应用程序的输出。
- LLM API:API 是部署 LLMs 的便捷方式。这个领域分为私有 LLMs(OpenAI、Anthropic 等)和开源 LLMs(Llama、Mistral 等)。
- 开源 LLMs:Hugging Face 是寻找 LLMs 的好地方。您可以直接在 Hugging Face Spaces 中运行它们中的一些,或者在像 LM Studio 这样的应用程序中下载并在本地运行,或者通过 Ollama 的 CLI 运行。
- 提示工程:常见技术包括零次提示、少次提示、思维链和 ReAct。它们在更大的模型上效果更好,但可以适应更小的模型。
- 结构化输出:许多任务需要结构化的输出,如严格的模板或 JSON 格式。可以使用 Outlines、Guidance 等库来指导生成并尊重给定的结构。
资料推荐:
- Nisha Arya 指南:关于如何使用 LM Studio 的简短指南。
- DAIR.AI 列表:详尽的提示技术列表及示例。
- Outlines 文档:由 Outlines 启用的引导生成技术列表。
- LMQL 介绍:介绍 LMQL 语言。
3.2 构建 RAG
创建向量存储是构建检索增强生成(RAG)管道的第一步。文档被加载、分割,相关的部分被用来生成向量表示(嵌入),这些嵌入被存储起来,以便在推理过程中将来使用。
- 摄取文档:文档加载器是方便的包装器,可以处理许多格式:PDF、JSON、HTML、Markdown 等。它们还可以直接从某些数据库和 API(GitHub、Reddit、Google Drive 等)检索数据。
- 分割文档:文本分割器将文档分解成更小的、语义上有意义的块。与其在 n 个字符后分割文本,通常更好地按标题或递归分割,并附加一些额外的元数据。
- 嵌入模型:嵌入模型将文本转换为向量表示。它允许对语言有更深入、更细致的理解,这对于执行语义搜索至关重要。
- 向量数据库:向量数据库(如 Pinecone、Weaviate、Chroma、Milvus 等)被设计用来存储嵌入向量。它们能够高效地检索与基于向量相似性的查询'最相似'的数据。
资料推荐:
- LangChain 文档:LangChain 中实现的不同文本分割器列表。
- Embedding 模型库:流行的嵌入模型库。
- Embedding 排行榜:嵌入模型的排行榜。
- Moez Ali 比较:比较最佳和最受欢迎的向量数据库。
3.3 检索增强生成(RAG)
通过 RAG,LLMs 从数据库中检索上下文文档以提高其答案的准确性。RAG 是在不进行任何微调的情况下增强模型知识的流行方式。
- 协调器:协调器(如 LangChain、LlamaIndex 等)是连接您的 LLMs 与工具、数据库、记忆等并增强其能力的流行框架。
- 检索器:用户指令并未针对检索进行优化。可以应用不同的技术(例如,多查询检索器、HyDE 等)来重述/扩展它们并提高性能。
- 记忆:为了记住之前的指令和答案,LLMs 和像 ChatGPT 这样的聊天机器人将这些历史添加到它们的上下文窗口中。这个缓冲区可以通过摘要(例如,使用较小的 LLM)、向量存储+RAG 等进行改进。
- 评估:我们需要评估文档检索(上下文精确度和召回率)和生成阶段(忠实度和答案相关性)。这可以通过 RAGAS 工具和 TruLens 简化。
资料推荐:
- RAG 概念:构建 RAG 管道时需要了解的主要概念。
- RAG 概述:检索增强过程的概述。
- RAG 教程:构建典型 RAG 管道的逐步教程。
- 记忆列表:不同类型记忆的列表及其相关用途。
- 评估指标:评估 RAG 管道使用的主要指标概述。
3.4 高级 RAG
现实世界中的应用可能需要复杂的管道,包括 SQL 或图形数据库,以及自动选择相关的工具和 API。这些高级技术可以改进基线解决方案并提供额外的功能。
- 查询构建:存储在传统数据库中的结构化数据需要特定的查询语言,如 SQL、Cypher、元数据等。我们可以直接将用户指令翻译成查询,以访问数据。
- 代理和工具:代理通过自动选择最相关的工具来增强 LLMs 以提供答案。这些工具可以像使用 Google 或 Wikipedia 一样简单,也可以像 Python 解释器或 Jira 一样复杂。
- 后处理:处理输入到 LLM 的最终步骤。它通过重新排名、Cross-Encoder 和分类增强检索到的文档的相关性和多样性。
资料推荐:
- 查询构建博客:关于不同类型的查询构建的博客文章。
- Text-to-SQL 教程:教程,介绍如何使用 LLMs 与 SQL 数据库交互,涉及文本到 SQL 和可选的 SQL 代理。
- 代理介绍:介绍具有不同类型代理和工具的介绍。
- Lilian Weng 文章:关于 LLM 代理的更理论性文章。
- OpenAI 策略:概述 OpenAI 采用的 RAG 策略,包括后处理。
3.5 推理优化
文本生成是一个成本高昂的过程,需要昂贵的硬件。除了量化之外,还提出了各种技术来最大化吞吐量并降低推理成本。
- Flash Attention:优化注意力机制,将其复杂度从二次方降低到线性,加快训练和推理的速度。
- 键值缓存:理解键值缓存以及在多查询注意力(MQA)和分组查询注意力(GQA)中引入的改进。
- 推测性解码:使用小型模型生成草稿,然后由更大的模型进行审查,以加快文本生成速度。
资料推荐:
- Hugging Face 优化:解释如何在 GPU 上优化推理。
- Databricks 最佳实践:如何在生产中优化 LLM 推理的最佳实践。
- Hugging Face 技术:优化速度和内存三种主要技术,即量化、Flash Attention 和架构创新。
- Speculative Decoding:HF 的推测性解码版本,这是一篇有趣的博客文章,介绍了它的工作原理,并提供了实现它的代码。
3.6 部署 LLMs
大规模部署 LLMs 是一项工程壮举,可能需要多个 GPU 集群。在其他情况下,演示和本地应用程序可以通过更低的复杂度实现。
- 本地部署:隐私是开源 LLMs 相对于私有 LLMs 的一个重要优势。本地 LLM 服务器(Ollama、LM Studio 等)利用这一优势为本地应用程序提供动力。
- 演示部署:像 Streamlit 和 Gradio 这样的框架有助于原型应用程序的开发和演示的共享。您还可以轻松地将它们在线托管,例如使用 Hugging Face Spaces。
- 服务器部署:大规模部署 LLMs 需要云(AWS、Azure 等)或本地基础设施,并且通常利用优化的文本生成框架,如 vLLM、TGI 等。
- 边缘部署:在受限环境中,像 MLC LLM 这样的高性能框架可以将 LLM 部署在 Web 浏览器、Android 和 iOS 上。
资料推荐:
- Streamlit 教程:使用 Streamlit 制作基本的类似 ChatGPT 应用程序的教程。
- SageMaker 部署:使用 Hugging Face 的推理容器在 Amazon SageMaker 上部署 LLMs。
- SageMaker 文章:关于使用 Amazon SageMaker 部署 LLMs 的高质量文章集合。
- 性能比较:在吞吐量和延迟方面比较 TGI、vLLM、CTranslate2 和 mlc。
3.7 LLMs 安全
除了与软件相关的传统安全问题外,LLMs 由于它们的训练和提示方式具有独特的弱点。
- 提示黑客攻击:与提示工程相关的不同技术,包括提示注入(额外的指令以劫持模型的答案)、数据/提示泄露(检索其原始数据/提示)和越狱(精心设计的提示以绕过安全特性)。
- 后门:攻击向量可以针对训练数据本身,通过污染训练数据(例如,使用虚假信息)或创建后门(在推理期间改变模型行为的秘密触发器)。
- 防御措施:保护您的 LLM 应用程序的最佳方法是对它们进行这些漏洞的测试(例如,使用红队和 Garak 这样的检查),并在生产中观察它们(使用像 Helicone 这样的框架)。
资料推荐:
- HEGO Wiki:LLM 应用程序中看到的 10 个最关键漏洞列表。
- Joseph Thacker 指南:专为工程师设计的关于提示注入的简短指南。
- @llm_sec 列表:与 LLM 安全相关的资源的广泛列表。
- Microsoft 指南:如何使用 LLMs 进行红队操作的指南。

