【AI大模型】大模型应用开发学习线路

CSDN 2024-08-23 15:01:06 阅读 83

文章目录

壹. LLM基础一. 数学基础二. Python库的学习三. 深度学习基础四. 自然语言处理(NLP)

贰. LLM应用工程一. 部署和调用LLMLLM API之openAI提示工程构建应用程序其他

二. 构建向量存储三. (RAG)检索增强生成四. 高级 RAG五. 推理优化(ing)六. 生产化部署 LLM七. 加固LLM

壹. LLM基础

一. 数学基础

在掌握机器学习之前,了解驱动这些算法的基本数学概念非常重要。

线性代数:对于理解例如深度学习中使用的算法至关重要。关键概念包括向量、矩阵、行列式、特征值和特征向量、向量空间和线性变换。微积分:许多机器学习算法涉及连续函数的优化,这需要理解导数、积分、极限和级数。多变量微积分和梯度概念也很重要。概率与统计:理解模型如何从数据中学习并做出预测至关重要。关键概念包括概率论、随机变量、概率分布、期望、方差、协方差、相关性、假设检验、置信区间、最大似然估计和贝叶斯推断。

 

二. Python库的学习

Python特别适用于机器学习,这得益于其可读性、一致性和健壮的数据科学库生态系统。

Python基础:基本语法、数据类型、错误处理和面向对象编程。数据科学库:

NumPy进行数值操作;Pandas进行数据处理和分析;Matplotlib和Seaborn做数据可视化。 数据预处理:涉及特征缩放和规范化、处理缺失数据、异常检测、类别数据编码,以及将数据分割为训练、验证和测试集。机器学习库:

Scikit-learn:提供广泛的监督和无监督学习算法的python库。理解如何实现线性回归、逻辑回归、决策树、随机森林、最近邻(K-NN)和K均值聚类等算法。降维技术如PCA和t-SNE对于可视化高维数据很有帮助。

 

三. 深度学习基础

神经网络是许多机器学习模型的基础部分,特别是在深度学习领域。

基础知识:深度神经网络的基本结构、工作原理以及常见的层类型(如全连接层、卷积层、循环神经网络等)、权重、偏差和激活函数(sigmoid、tanh、ReLU等)。训练和优化:熟悉反向传播和不同类型的损失函数,如均方误差(MSE)和交叉熵。理解各种优化算法,如梯度下降、随机梯度下降、RMSprop和Adam。过拟合:理解过拟合的概念(模型在训练数据上表现良好但在未见数据上表现不佳)并学习各种正则化技术(dropout、L1/L2正则化、提前停止、数据增强)来防止它。实现多层感知机(MLP):使用PyTorch构建一个MLP,也称为全连接网络。

 

四. 自然语言处理(NLP)

NLP桥接了人类语言与机器理解之间的差距。从简单的文本处理到理解语言细微差别,NLP在许多应用中发挥着关键作用,如翻译、情感分析、聊天机器人等等。

文本预处理:学习各种文本预处理步骤,如分词(将文本分割成单词或句子)、词干提取(将词汇还原到其根形式)、词形还原(类似于词干提取但考虑上下文)、停用词移除等。特征提取技术:将文本数据转换为机器学习算法能理解的格式的技术。关键方法包括词袋(BoW)、词频-逆文档频率(TF-IDF)和n-gram。词嵌入(embedding):词嵌入是一种词表示方式,允许意义相近的词有相似的表示。关键方法包括Word2Vec、GloVe和FastText。循环神经网络(RNNs):理解RNN的工作原理,RNN是一种设计用来处理序列数据的神经网络。探索LSTM和GRU,这两种RNN变体能够学习长期依赖。

【大模型应用极简开发入门(1)】LLM概述:LLM在AI中所处位置、NLP技术的演变、Transformer与GPT、以及GPT模型文本生成逻辑

【大模型应用极简开发入门(2)】GPT模型简史:从GPT-1到GPT-4:从小数据量的微调到大数据量的强化学习不断优化模型

 

 

贰. LLM应用工程

一. 部署和调用LLM

由于高硬件要求,运行LLM可能很困难。可以简单地通过API(如GPT-4)来调用大模型。

LLM API:API是部署LLM的便捷方式。这个领域分为私有LLM(OpenAI、Google、Anthropic、Cohere等)和开源LLM(OpenRouter、Hugging Face、Together AI等)。开源LLM:Hugging Face Hub是寻找LLM的好地方。您可以直接在Hugging Face Spaces中运行其中一些,或者下载并在诸如LM Studio的应用中或通过CLI与llama.cpp或Ollama在本地运行它们。提示工程:常见技术包括零次提示、少次提示、思维链和ReAct。它们在更大的模型上效果更好,但可以适应较小的模型。结构化输出:许多任务需要结构化输出,如严格的模板或JSON格式。库如LMQL、Outlines、Guidance等可用于引导生成并遵循给定结构。

LLM API之openAI

【大模型应用开发极简入门】ChatGPT-hello world

【使用ChatGPT的API之前】OpenAI API提供的可用模型

【大模型应用开发极简入门】使用GPT-4和ChatGPT的编程起点:ChatCompletion详解

【大模型应用开发极简入门】agent之前:Function Calling:将自然语言转换为API调用或数据库查询

【大模型应用开发极简入门】广泛使用API之前:考虑成本和数据隐私

【大模型应用开发极简入门】其他OpenAI API和功能:embedding(文本之间的向量相关性)、Moderation(内容审核模型)、Image generation

 

提示工程

常见技术包括零次提示、少次提示、思维链和ReAct。它们在更大的模型上效果更好,但可以适应较小的模型。

【大模型应用开发极简入门】提示工程一:1. 通过context、task、role文本结构设计有效的提示词、 2. OpenAI的提示词任务示例

【大模型应用开发极简入门】提示工程二:零样本学习、少样本学习与改善提示效果

 

构建应用程序

【使用ChatGPT构建应用程序】应用程序开发概述:1. 管理秘钥、2. 数据安全、3. 与应用程序解耦、4. 注意提示语的注入攻击

【大模型应用开发极简入门】构建新闻稿生成器:提示词的使用与基于事实的提示词

 

其他

【大模型应用开发极简入门】微调(一):1.微调基础原理介绍、2. 微调的步骤、3. 微调的应用(Copilot、邮件、法律文本分析等)

【大模型认识】警惕AI幻觉,利用插件+微调来增强GPT模型

 

二. 构建向量存储

创建向量存储是构建检索增强生成(RAG)管道的第一步。文档被加载、拆分,相关块被用来生成向量表示(嵌入)。

文档摄入(Ingesting documents):文档加载器可以处理多种格式:PDF、JSON、HTML、Markdown等。文档拆分(Splitting documents):文本拆分器将文档拆分成较小的、语义上有意义的块。嵌入模型(Embedding models):嵌入模型将文本转换为向量表示。这对于进行语义搜索是必要的,因为它允许更深入、更细腻的理解语言。向量数据库(Vector databases):向量数据库(如Chroma、Pinecone、Milvus、FAISS、Annoy等)被设计用于存储嵌入向量。它们根据余弦相似度检索最相似的数据。

 

三. (RAG)检索增强生成

使用RAG,LLM从数据库检索上下文文档以提高其回答的准确性。RAG是一种增强模型知识而无需任何微调的流行方式。

协调器(Retrievers):协调器(如LangChain、LlamaIndex、FastRAG等),用于将LLM与工具、数据库、记忆等连接并增强其能力。检索器(Retrievers):用户指令不是为检索优化的。可以应用不同技术(例如,多查询检索器、HyDE等)来重述/扩展它们并提高性能。记忆(Memory):为了记住之前的指令和答案,像ChatGPT这样的LLM和聊天机器人将这些历史添加到其上下文窗口中。这个缓冲区可以通过摘要(例如,使用较小的LLM)、向量存储+RAG等进行改进。评估(Evaluation):我们需要评估文档检索(上下文的精确度和召回率)和生成阶段(忠实度和答案相关性)。可以使用工具Ragas和DeepEval来简化这一过程。

 

四. 高级 RAG

现实生活中的应用可能需要复杂的流程,包括 SQL 或图数据库,以及自动选择相关工具和 API。

查询构建(Text-to-SQL):存储在传统数据库中的结构化数据需要特定的查询语言,如 SQL、Cypher、元数据等。我们可以直接将用户指令翻译成查询语言,以查询构建方式访问数据。代理和工具(Agents and tools):代理通过自动选择最相关的工具来增强 LLM 的功能,以提供答案。这些工具可以简单到使用 Google 或 Wikipedia,也可以复杂到使用 Python 解释器或 Jira。后处理(Post-processing)(context ing):喂给 LLM 的输入的最终处理步骤。它通过重排序、RAG-融合 和分类来提高检索文档的相关性和多样性。

【大模型应用开发极简入门】agent之前:Function Calling:将自然语言转换为API调用或数据库查询

 

五. 推理优化(ing)

文本生成是一个成本高昂的过程,需要昂贵的硬件。除了量化,还提出了各种技术来最大化吞吐量和减少推理成本。

快速注意力(Flash Attention):优化注意力机制,将其复杂性从二次方降低到线性,加速训练和推理。键值缓存(Key-value cache):了解键值缓存及在 多查询注意力(MQA)和分组查询注意力(GQA)中引入的改进。推测性解码(Speculative decoding):使用小模型产生草稿,然后由更大的模型复审,以加速文本生成。

 

六. 生产化部署 LLM

在多个GPU 集群上部署 LLM 是一项工程壮举。在其他场景中,演示和本地应用可以通过更低的复杂性来实现。

本地部署:本地 LLM 服务器(如 LM Studio、Ollama、oobabooga、kobold.cpp 等)可以为本地应用提供动力。演示部署:像 Gradio 和 Streamlit 这样的框架有助于原型应用的开发和演示分享。你也可以轻松地在线托管它们,例如使用 Hugging Face Spaces。服务器部署:在大规模部署 LLM 需要云(参见 SkyPilot)或本地基础设施,并且经常利用优化的文本生成框架,如 TGI、vLLM 等。边缘部署:在受限环境中,如 MLC LLM 和 mnn-llm 这样的高性能框架可以在网络浏览器、Android 和 iOS 中部署 LLM。

 

七. 加固LLM

由于LLM的训练和提示方式,它们存在如下弱点:

提示攻击:与提示工程相关的不同技术,包括提示注入(额外的指令以劫持模型的答案)、数据/提示泄露(检索其原始数据/提示)和越狱(制作提示以绕过安全特性)。后门:攻击向量可以直接针对训练数据本身,通过污染训练数据(例如,使用错误信息)或创建后门(在推理期间改变模型行为的秘密触发器)。防御措施:保护您的LLM应用程序的最佳方式是对这些漏洞进行测试(例如,使用红队测试和像garak这样的检查)并在生产中观察它们(使用像langfuse这样的框架)。

 

参考:

https://zhuanlan.zhihu.com/p/690025227

https://github.com/mlabonne/llm-course/



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。