datawhale动手学大模型应用开发-第一章-大模型简介

2024-04-17 00:52

本文主要是介绍datawhale动手学大模型应用开发-第一章-大模型简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一. 常见的大模型简介

1.1 常见闭源大模型简介

名称简介地址
 ChatGPT
ChatGPT是OpenAI推出的基于GPT-3.5和GPT-4的聊天机器人,擅长对话、编程、解答等,具有丰富的知识基础和上下文理解能力。https://chat.openai.com/
GPT-4
GPT-4是OpenAI推出的多模态大型语言模型,具有更高的参数量和性能,支持长上下文,提供安全响应,需付费使用。https://chat.openai.com/
Claude 系列
Claude 3是Anthropic公司开发的闭源语言模型,包含Claude 3 Haiku、Sonnet和Opus三个版本,特点各异,旨在满足不同需求,具有200k的上下文长度,费用不同。App unavailable \ Anthropic
PaLM/Gemini 系列

Gemini是Google开发的PaLM系列语言模型的最新迭代版本,即Gemini 1.0,它取代了之前的Bard并成为了新的对话应用的基础。Gemini根据参数量的不同,分为Ultra、Pro和Nano三个版本,旨在满足不同的使用需求和设备要求。

https://gemini.google.com/app
文心一言
文心一言是由百度推出的知识增强型语言大模型,基于文心大模型的最新4.0版本,专注于提升中文处理能力。该模型包含多种类型的大模型,涵盖NLP、CV、跨模态和生物计算等领域。文心一言
星火大模型
星火大模型是科大讯飞开发的集文本生成、语言理解、知识问答等多能力于一体的认知智能大模型,具备跨领域知识理解与自然对话能力,并在数学、代码等方面展现出色性能。其特点包括对中文的深度优化、多模态交互能力以及适应国产算力平台的高效训练讯飞星火认知大模型-AI大语言模型-星火大模型-科大讯飞

1.2 常见开源大模型简介

模型名称参数量大模型架构类型大模型框架词表上下文长度改进点inference扩展
baichuan2-13B130亿2.6T 多语言tokens预训练casual-decoder12569640961.7b:RoPE ; 13b:ALiBi
2.SwiGLU作为激活函数
3.Layer Normalization; RMSNorm
4.AdamW+NormHead+Max-z损失
Llama-2-13b-chat130亿2T 0.13%中文casual-decoder2048->4096

LayerNorm换成了RMSNorm

llama1:MQA
llama2:  GQA

position embedding:RotayEmbedding
增加了RLHF
强化学习阶段采用了GAtt机制解决上下文遗忘问题

Qwen-7B-Chat70亿3T 多语言tokens预训练casual-decoder152k训练:2048

预测外推:8192
1.embedding和输出映射不进行权重共享
2.使用了RoPE(旋转位置编码)进行位置编码
3.在大多数层中移除了Bias,但在QKV层保留
4.使用了预归一化(Pre-Norm)和RMSNorm进行规范化
5.SwiGLU作为激活函数
6.Flash Attention
 
NKT感知插值
LogN-Scaling
窗口Self-Attention
ChatGLM2-6B60亿在1.4万亿中英文tokens数据集上训练,并做了模型对齐prefix-decoder 
->
casual-decoder
32k1.更长的上下文:使用了FlashAttention技术,升级到32K
2.Multi-Query Attention

二、检索增强RAG

2.1 RAG简介

检索增强生成(Retrieval-Augmented Generation,简称RAG)是一种结合了信息检索和自然语言生成的自然语言处理方法。它的核心原理在于利用信息检索技术从大量的文本数据中获取相关信息,然后结合这些信息使用自然语言生成技术来产生符合用户需求的文本结果。

RAG模型通常包括信息检索和生成两个主要模块。在信息检索模块,模型通过理解和解析用户输入,使用索引和检索算法从大规模的文本数据中快速提取与查询相关的内容。随后,在生成模块,RAG利用检索到的信息作为上下文,通过自然语言生成模型(如大型语言模型)生成自然语言文本,以更加贴近用户需求。

2.2 RAG 基本流程

RAG 的工作流程主要分为三个步骤:检索、增强和生成。

检索: 使用用户查询从外部知识源中检索相关上下文。将用户查询嵌入到向量空间中,与向量数据库中的附加上下文进行相似性搜索,返回前 N 个最接近的数据对象。

增强: 使用用户查询和检索到的附加上下文填充提示模板。

生成: 将经过检索增强的提示传递给LLM。

三、LangChain

3.1 Langchain简介

LangChain 是一个用于构建由语言模型驱动的应用程序的框架。它旨在实现数据感知和主动性,允许语言模型与其他数据源连接,并与其环境进行交互。

LangChain 提供了模块化的组件抽象和一系列用例特定链,这些链可以被看作是以特定方式组装这些组件,以便最好地完成特定用例

如上图,每个椭圆形代表了 LangChain 的一个模块,例如数据收集模块或预处理模块。
每个矩形代表了一个数据状态,例如原始数据或预处理后的数据。箭头表示数据流的方向,从一个模块流向另一个模块。

3.2 Langchain核心模块

  1. 模型输入输出(Model I/O): 这是 LangChain 框架的核心元素,包括与语言模型交互的构建块。LangChain 提供了与大型语言模型(LLM)进行交互的接口和集成,不提供自己的 LLM,而是提供了一个标准接口,用于与许多不同的 LLM 进行交互。

  2. 数据连接(Data Connection): 数据连接模块提供了文档加载器和文档转换器等工具,用于将非结构化文本转换为可处理的数据。这些工具包括文本拆分器、冗余过滤器、元数据提取器、多语言转换器和对话转换器等,大大增强了 LangChain 框架的灵活性。

  3. 链(Chains): 链允许将多个组件组合在一起,创建一个单一的、连贯的应用程序。LangChain 中主要有基础链(LLMChain)、路由链(RouterChain)、顺序链(SequentialChain)和转换链(TransformChain)等,用于组合和连接不同的功能。

  4. 记忆(Memory): Memory 组件用于在链之间存储和传递信息,实现对话的上下文感知能力。它可以存储之前对话和验证信息的状态,用于后续链的输入,允许链访问和操作共享的内存,实现链之间的协作。

  5. 代理(Agents): 代理(Agents)的核心思想是使用 LLM 作为大脑自动思考,自动决策选择执行不同的动作,最终完成任务。代理模块包括代理(Agent)、工具(Tools)和工具集(Toolkits),使得代理可以调用不同的工具来完成任务。

  6. 回调(Callbacks): LangChain 提供了一个回调系统,允许连接到 LLM 申请的各个阶段,这对于日志记录、监控、流传输和其他任务(如添加标签、计算 Token 等)非常有用
     

四.大模型开发流程

  • 设计

    在开始应用开发前,需明确目标场景、用户群和价值主张。建议个体开发者或小团队从最小可行性产品(MVP)入手,逐步完善。

    功能设计上,先确定核心功能,再规划相关辅助功能。例如,开发个人知识库助手时,核心是知识库内容的问答,辅助功能包括上传和管理知识库,以及纠正模型回答。这样的设计确保了从核心需求出发,逐步扩展,满足用户的实际需求。

  • 搭建整体架构
    在开发大模型应用时,推荐使用LangChain框架来构建项目架构,实现从用户输入到输出的流程。这包括搭建一个个性化数据库,如使用向量数据库Chroma,来支持语义检索。数据预处理是关键步骤,涉及将多种格式转换为纯文本并清洗数据。之后,对数据进行切片和向量化,以便在数据库中建立高效的索引,为大模型提供准确的数据支持。

  • Prompt Engineering
    要提升大模型性能,关键在于精心设计的Prompt。我们应通过创建小规模验证集,遵循有效原则,设计出基础但有效的Prompt,并不断迭代优化。

  • 验证迭代

    验证迭代对提升大模型效能关键,需通过测试发现问题案例并改进Prompt。完成初步设计后,应实际测试、识别Bad Case,分析并优化Prompt,直至实现稳定且满足目标的版本

  • 体验优化
    用户体验跟踪,记录 Bad Case 与用户负反馈,再针对性进行优化即可。

课程地址:动手学大模型应用开发

这篇关于datawhale动手学大模型应用开发-第一章-大模型简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/910375

相关文章

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java Docx4j类库简介及使用示例详解

《JavaDocx4j类库简介及使用示例详解》Docx4j是一个强大而灵活的Java库,非常适合需要自动化生成、处理、转换MicrosoftOffice文档的服务器端或后端应用,本文给大家介绍Jav... 目录1.简介2.安装与依赖3.基础用法示例3.1 创建一个新 DOCX 并添加内容3.2 读取一个已存

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文