LLM Core - Transformer
背景 不论是 GRU 还是 LSTM 都面临梯度消失和梯度爆炸的问题 RNN 必须按照顺序处理序列中的每个元素,无法并发处理 RNN 还有长依赖问题,虽然可以处理长序列,但实战效果不佳 Attention Is All You Need - http://arxiv.org/pdf/1706.03762 简单介绍 Transformer 是一种基于自注意力机制的深度学习模型,诞生于 2017 年 目前大部分的语言模型(如 GPT 系列、BERT系列)都基于 Transformer 架构 Transformer 摒弃了之前序列处理任务中广泛使用的 RNN 转而使用自注意力层来直接计算序列内各元素之间的关系,从而有效捕获长距离依赖 Transformer 明显提高了处理速度 Transformer 由于其并行计算的特性,大幅度提升了模型在处理长序列数据时的效率 Transformer 由编码器和解码器组成 每个部分均由多层重复的模块构成,其中包括自注意力层和前馈神经网络 优势 Transformer 通过其独特的架构设计,在效率、效果和灵活性方面提供了显著优势使其成为处理复杂序列数据任...
LLM Core - Seq2Seq
简单介绍 Word2Vec 的主要能力是将词汇放在多维空间中,相似的词汇会被放在邻近的位置 Seq2Seq 不仅能理解词汇,还能将词汇串联成完整的句子 Seq2Seq 即从一个序列到另一个序列的转换 不仅仅能理解单词之间的关系,还能把整个句子的意思打包,并解压成另一种形式的表达 Seq2Seq 的核心角色 - 编码器(Encoder) + 解码器(Decoder) Role Desc Encoder 理解和压缩信息 - 把一封长信函整理成一个精简的摘要 Decoder 将摘要打开,并翻译成另一种语言或形式的完整信息 优缺点Seq2Seq 固定长度上下文 + 逐步输入(长序列) + 参数规模小 Seq2Seq 是一种比较高级的神经网络模型,适用于语言翻译,甚至是基本的问答系统 Seq2Seq 使用固定的上下文长度,因此长距离依赖的能力比较弱 Seq2Seq 的训练和推理通常需要逐步处理输入和输出序列,在处理长序列会受限 Seq2Seq 的参数量通常较少,在面对复杂场景时,模型性能可能会受限 Word2Vec 基本概念 Seq2Seq 是一种神经网络架构,模型的核心组成 ...
LLM Core - Word2Vec
Word2Vec概述 在 NLP 中,在文本预处理后,进行特征提取,涉及到将词语转化成数值的形式,方便计算机理解 Word2Vec 的目的 - 将词语转换成向量形式,使得计算机能够理解 通过学习大量文本数据,捕捉到词语之间的上下文关系,进而生成词的高维表示 - 即词向量 架构 Word2Vec 有 2 种主要的模型 - Skip-Gram + CBOW Model Desc CBOW 根据周围的上下文词汇来预测目标词 Skip-Gram 根据目标词预测其周围的上下文词汇 优劣 Key Value 优点 揭示词与词之间的相似性 - 通过计算向量之间的距离来找到语义相近的词 缺点 无法处理多义词,每个词被赋予一个向量,不考虑上下文中的多种含义 模型架构 连续词袋 - Continuous Bag of Words, CBOW跳字模型 - Skip-Gram 连续词袋 CBOW 模型是一种通过上下文预测目标词的神经网络架构 上下文由目标词周围的一个词或多个词组成,这个数目由窗口大小决定 窗口是指上下文词语的范围 - 如果窗口为 10,那么模型将使用目标词前后各...
LLM Core - NLP
基础 NLP 的研究目的是让计算机能够理解、解释和生成人类语言,一般包含 4 个步骤 Step Desc 文本预处理 将原始文本转换成机器容易理解的格式分词(单词或短语)、去除停用词、词干提取、词性标注等 特征提取 从处理过的文本中提取特征,以便用于机器学习模型将文本转换成数值形式 - 向量化 - 词袋模型 or 词嵌入 模型训练 使用提取到的特征和相应的机器学习算法来训练模型分类器、回归模型、聚类算法等 评估与应用 评估模型的性能,并在实际应用中使用模型来解释、生成或翻译文本 应用场景 - 搜索引擎 / 语音转换 / 文本翻译 / 系统问答 ML vs NLP Scope Desc ML 让计算机通过查看大量的例子来学习如何完成任务 NLP 教会计算机理解和使用人类语言 ML + NLP 用机器学习的技术来让计算机学习如何处理和理解语言 文本预处理 将原始文本转换成易于机器理解和处理的格式 文本清洗 去除噪音(对分析无关紧要的部分)及标准化文本 123456789101112131415161718impor...
LLM Core - RNN
背景 RNN 主要用来处理序列数据,目前大部分 LLM 都是基于 Transformer 通过学习 RNN,有助于理解 Transformer 有助于理解神经网络如何处理序列中的依赖关系、记忆过去的信息,并在此基础上生成预测 有助于理解关键问题 - 梯度消失 / 梯度爆炸 RNN Recurrent neural network - 循环神经网络 RNN 是一类用于处理序列数据的神经网络,RNN 能够处理序列长度变化的数据 - 文本 / 语音 RNN 的特点是在模型中引入了循环,使得网络能够保持某种状态,表现出更好的性能 左边 $x$ 为输入层,$o$ 为输出层,中间的 $s$ 为隐藏层,在 $s$ 层进行一个循环 $W$ 右边(展开循环) 与时间 $t$ 相关的状态变化 神经网络在处理数据时,能看到前后时刻的状态,即上下文 RNN 因为隐藏层有时序状态,那么在推理的时候,可以借助上下文,从而理解语义更加准确 优劣优势 RNN 具有记忆能力,通过隐藏层的循环结构来捕捉序列的长期依赖关系 特别适用于文本生成、语音识别等领域 局限 存在梯度消失和梯度爆炸的...
LLM Core - Machine Learning Algorithm
线性回归概述 线性回归是一种预测分析技术,用于研究两个或者多个变量之间的关系 尝试用一条直线(二维)或者一个平面(三维)的去拟合数据点 这条直线或者平面,可以用来预测或者估计一个变量基于另一个变量的值 数学 假设有一个因变量 y 和一个自变量 x 线性回归会尝试找到一条直线 y=ax+b a 为斜率,而 b 为截距 以便这条直线尽可能地接近所有数据点 $$y=ax+b$$ sklearn 房价预测 - 房价是因变量 y,而房屋面积是自变量 x 12345678910111213141516171819202122232425import matplotlib.pyplot as pltimport numpy as npfrom sklearn.linear_model import LinearRegression# 定义数据X = np.array([35, 45, 40, 60, 65]).reshape(-1, 1) # 面积y = np.array([30, 40, 35, 60, 65]) # 价格# 创建并拟合模型model = LinearRegre...
LLM Core - Machine Learning Concept
机器学习 机器学习是让计算机利用数据来学习如何完成任务 机器学习允许计算机通过分析和学习数据来自我改进以及作出决策 房价预测 利用 scikit-learn 进行预测 数据集 housing_data.csv 面积 卧室数量 地理位置 售价 100 2 1 300 150 3 2 450 120 2 2 350 80 1 1 220 线性回归12345678910111213141516171819202122232425from sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LinearRegressionimport pandas as pd# 加载数据集data = pd.read_csv("housing_data.csv") # 假设这是我们的房屋数据# 准备数据X = data[['面积', '卧室数量', '地理位置']] # 特征y = data[...
LLM - API
背景 LLM 是没有 Web API 的,需要进行一次封装 将 LLM 的核心接口封装成 Web API 来为用户提供服务 - 必经之路 接口封装FastAPI接口封装 Uvicorn + FastAPI Uvicorn 类似于 Tomcat,但比 Tomcat 轻量很多,作为 Web 服务器 允许异步处理 HTTP 请求,非常适合处理并发请求 基于 uvloop 和 httptools,具备非常高的性能 FastAPI 类似于 SpringBoot,同样比 SpringBoot 轻量很多,作为 API 框架 结合 Uvicorn 和 FastAPI 可以构建一个高性能的、易于扩展的异步 Web 应用程序 Uvicorn 作为服务器运行 FastAPI 应用,可以提供优异的并发处理能力 安装依赖12$ pip install fastapi$ pip install uvicorn 代码分层1234567891011121314import uvicornfrom fastapi import FastAPI# 创建API应用app = FastAPI()@app.get(&quo...
LLM RAG - ChatGLM3-6B + LangChain + Faiss
RAG 使用知识库,用来增强 LLM 信息检索的能力 知识准确 先把知识进行向量化,存储到向量数据库中 使用的时候通过向量检索从向量数据库中将知识检索出来,确保知识的准确性 更新频率快 当发现知识库里面的知识不全时,可以随时补充 不需要像微调一样,重新跑微调任务、验证结果、重新部署等 应用场景 ChatOps 知识库模式适用于相对固定的场景做推理 如企业内部使用的员工小助手,不需要太多的逻辑推理 使用知识库模式检索精度高,且可以随时更新 LLM 基础能力 + Agent 进行堆叠,可以产生智能化的效果 LangChain-Chatchat组成模块 模块 作用 支持列表 大语言模型 智能体核心引擎 ChatGLM / Qwen / Baichuan / LLaMa Embedding 模型 文本向量化 m3e-* / bge-* 分词器 按照规则将句子分成短句或者单词 LangChain Text Splitter 向量数据库 向量化数据存储 Faiss / Milvus Agent Tools 调用第三方...
LLM PEFT - ChatGLM3-6B + LoRA
通用 LLM 千亿大模型(130B、ChatGPT)和小规模的大模型(6B、LLaMA2)都是通用 LLM 通用 LLM 都是通过常识进行预训练的 在实际使用过程中,需要 LLM 具备某一特定领域知识的能力 - 对 LLM 的能力进行增强 增强方式 Method Desc 微调 让预先训练好的 LLM 适应特定任务或数据集的方案,成本相对低LLM 学会训练者提供的微调数据,并具备一定的理解能力 知识库 使用向量数据库或者其它数据库存储数据,为 LLM 提供信息来源外挂 API 与知识库类似,为 LLM 提供信息来源外挂 互不冲突,可以同时使用几种方案来优化 LLM,提升内容输出能力 LoRA / QLoRA / 知识库 / API LLM Performance = 推理效果 落地过程 Method Pipeline 微调 准备数据 -> 微调 -> 验证 -> 提供服务 知识库 准备数据 -> 构建向量库 -> 构建智能体 -> 提供服务 API 准备数据 -&g...















