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实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示