AI 大模型系统实战

news2024/9/22 13:34:38

AI 大模型是什么?

维基百科对基础模型的定义是这样的,基础模型是一种大型机器学习模型,通常在大量数据上进行大规模训练(通过自监督学习或半监督学习),以使它可以适应各类下游任务。因此,它需要兼顾参数量大(大型模型),训练数据量大(大量数据大规模训练)和迁移学习能力强(适应多种下游任务)几点才能够叫做基础模型,而不只是参数量大,就能够叫做基础模型,我们在甄别时需要特别注意。

另一个重要的定义就是 AIGC,目前工业界普遍将 AIGC(Artificial Intelligence Generated Content)称为生成式人工智能。

所谓“涌现”,指的是在大模型领域,当模型突破某个规模时,性能显著提升,表现出让人惊艳、意想不到的能力。

所谓思维链(Chain-of-thought,CoT)指的是通过一系列有逻辑关系的思考步骤,形成一个完整的思考,进而得出答案的过程。

大模型的“大”是一个相对概念,是一个持续的过程。更大规模的训练数据需要模型具备更强的记忆、理解和表达能力。而为了拥有更强的记忆、理解和表达能力,模型则需要更大的参数量,也就是更大的模型。

生成式 AI 大模型的兴起

不仅仅是由于模型规模变大,而是多个因素相互作用形成的。

首先,在近年的技术发展中,大型语言模型,特别是以 GPT 3.0 为代表的大模型,展现出了出色的涌现、思维链和上下文学习的能力,不再停留在“人工智障”的阶段,极大地提升了自然语言理解和生成的能力,然而,这只是其中的一个必要条件。

第二个必要条件是跨模态建模能力的发展。这让同一个模型能像人类一样同时理解和处理 Excel、PPT、PDF、图像和视频等多种形式的数据。加持了这样的能力,算法生成的信息量从此发生质变,生成式人工智能发挥作用的舞台就更多了。

第三个必要条件是生成式模型的交互方式。生成式 AI 产品巧妙地利用了人类的惰性,通过新的交互方式,大大提高了产品的渗透率。这使得人们不断地使用 ChatGPT,并逐渐产生了依赖。这也成为了当前 AI 大模型产业,迅速发展的关键点。

然而,所有这些前提条件的实现,都依赖于存储和计算能力的持续发展,“孩子”身体的发育,使模型能够容纳和记忆更大规模的数据。不过,以上只是生成式 AI 大模型兴起的一些必要条件,但其全面走红还涉及到资本和产业发展的需求等多个因素的综合效果。

任务规划(Planning)

这种方法可以让 LLM 对自己的想法进行调整和反思,最经典的方法是 ReAct,他有三个概念:

Thought:表示让大语言模型思考,目前需要做哪些行为,行为的对象是谁,它要采取的行为是不是合理的。

Act:也就是针对目标对象,执行具体的动作,比如调用 API 这样的动作,然后收集环境反馈的信息。

Obs:它代表把外界观察的反馈信息,同步给大语言模型,协助它做出进一步的分析或者决策。

我们可以用这种方法来启发 LLM 工作,比如让它帮你制定工作方案,并持续向它提问,例如:你的执行步骤有哪些潜在隐患和风险、有哪些方法可以降低风险、能否帮助我制定一些安全风险预案等等问题,以确保它生成的内容安全可靠。在这个过程中,你要尽量唤醒 LLM 的相关知识,生成合理的计划,此时思维链技术(CoT)就非常重要了,它可以让 LLM 将任务分解为可解释的步骤。

记忆唤醒(Memory)

无论是在制定计划、使用工具或执行任务的过程中,LLM 都需要外部信息的帮助来辅助进行思考。为了更好地让 LLM 拥有记忆力,我们不妨先参考一下人类是如何记忆的。在神经科学研究中,人类的记忆可分为感觉记忆、短期记忆和长期记忆三种类型。

感觉记忆,是人体接收到外部信号以后,瞬间保留的视觉、听觉、触觉的记忆片段,在 AI 系统中类似于高维嵌入表示,也就是我们常说的 “Embedding”。

短期记忆,是你当前意识中的信息,在 LLM 中类似于提示词(Prompt)中的所有信息。

长期记忆,包含了你能回忆的所有信息,在 LLM 中类似于外部向量存储。

驾驭工具(Tools)

要让 LLM 学会使用工具,首先需要让它认识工具,比如 TALM、Toolformer 和 Gorilla 等方法让 LLM 学会理解 API 的调用注释,这是 Plugin 和 Function 等功能的基础。下图展示了 Gorilla 教会 LLM 使用 API 的全过程。

首先,我们使用大量 API 调用代码和文档作为语料,训练一个可以理解 API 的大语言模型。

然后,AI 系统还将对这些 API 进行向量化操作,将它们存储在向量数据库中作为外部记忆。

随后,当用户发起请求时候,AI 系统会从外部记忆中,获取跟请求相关的 API 交给 LLM。

最后,LLM 组合串联这些 API 形成代码,并执行代码,完成 API 的调用,生成执行结果。

链式调用黏合剂(Langchain)

首先,我们来为你的原型系统搭建一个“调度中心”。这个调度中心将帮助大语言模型(LLM)连接到我们之前学到的各种生态组件,如计划组件、记忆组件和工具组件等等。目前最主流的做法是采用链式调用。链式调用可以让你的编码更高效,只需少量代码,就能让用户、LLM 和组件之间进行复杂的互动。

为了让大语言模型能够实现与人类友好的多轮对话,我们需要额外引入两个组件。第一个是 ConversationBufferMemory,它将帮助 LLM 记录我们的对话过程。第二个是 ConversationChain,它会帮我们管理整个会话过程,通过调取 BufferMemory 中的对话信息,让无状态的 LLM 了解我们的对话上下文。同时,ConversationChain 还会通过补充一些“提示语”,确保 LLM 知道它在与人类进行交流。

from langchain.llms import OpenAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory

import os
os.environ["OPENAI_API_KEY"] = '...'

llm = OpenAI(temperature=0)
mem = ConversationBufferMemory()

# Here it is by default set to "AI"
conversation = ConversationChain(llm=llm, verbose=True, memory=mem)

conversation.predict(input="Hi there!")

零代码快速搭建(Flowise)

在学习更高级的用法之前,先给你一个学习加速包,让你“无痛”地进行下面的过程。这个加速包叫做 Flowise,用于零代码搭建 LLM 应用平台。通过使用它,你可以在一分钟内搭建起刚才的应用。

领域知识库(Embedding & 向量检索引擎)

这类模型有两个标准动作。第一是让 LLM 做好考前“冲刺训练”也就是领域微调,它的训练成本较高,我们会在第四章中讲解这个方法。第二是为模型增加外部记忆,在提示词中引入一些领域知识,帮助模型提升回答质量。先使用第二种方法:具体制作步骤是这样的。

对团队的技术文档进行切片,生成语义向量(Embedding),存入向量数据库作为外部记忆。

根据同事所提问题中的内容,检索向量数据库,获取技术文档的内容片段。

把文档片段和同事的问题一并交给大语言模型(LLM),让它理解文档内容,并针对问题形成恰当回答,返回给同事。

接下来,我们继续使用 Flowise 实现这个项目,你只需要依次加入以下组件。

1、Folder with Files 组件,负责将相关知识文档上传。

2、Recursive Character Text Splitter 组件,用来给上传的文档内容做断句切片。

3、OpenAI Embeddings 组件负责将断句后的内容切片映射成高维 Embedding。

4、In-Memory Vector Store 组件用来将 Embedding 存入数据库中,供给 LLM 作为外部记忆。

5、Conversational Retrieval QA Chain  组件则会根据问题,获得外部知识,在 LLM 思考形成回答后返回给用户问题答案。

自主可控 LLM 底座(LocalAI)

OpenAI API 的开源替代方案——LocalAI,它可以将唾手可得的开源 LLM,封装成 OpenAI API 相同的接口形式,为你的应用提供服务。下面我们开始搭建这个底座,首先执行以下指令,部署 LocalAI 的代码:

$ git clone https://github.com/go-skynet/LocalAI
$ cd LocalAI

更高、更快、更强(Llama)

其实你可以使用“更大”的模型来提升效果,比如 Meta 开源的 Llama 系列模型。Llama 是 Meta AI 公司于 2023 年 2 月发布的大型语言模型系列,Llama-2 已经非常接近 GPT-3.5 的水平,而且可以免费商用。

首先,如下面的代码所示,我们去 HuggingFace 下载 Llama-2 最新的 ggml 版本。这里我们使用 7B 通用版本来进行演示。

$ wget -c "https://huggingface.co/TheBloke/Llama-2-7B-chat-GGML/resolve/main/llama-2-7b-chat.ggmlv3.q4_0.bin" ./models

下载了模型之后,我们根据以下指令,启动 LocalAI 来快速测试一下模型,确保模型文件没有问题。

$ docker-compose up -d
$ curl -v  http://localhost:8080/v1/models
{"object":"list","data":[{"id":"llama-2-7b-chat.ggmlv3.q4_0.bin","object":"model"}]}

最后,我们回到 Flowise 的界面,将模型名称修改为 llama-2-7b-chat.ggmlv3.q4_0.bin。再次测试聊天机器人,它是不是变得更加聪明了?如果需要更大的模型,你可以按需下载。Local AI 已经在底层支持了 llama.cpp,所以 ggml 格式的模型基本都可以适配。你还可以尝试常用的量化方法,但要注意你的 GPU 是否支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1906885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从入门到精通:Shopee,lazada,temu自养号测评成本、步骤、技巧详解

测评对于卖家来说是一种成本低回报快的推广方式,可以减少高额的平台广告费用,因此是一种很好的辅助手段,对商品的曝光、流量、转化和权重等方面起到了很好的辅助作用 建议还是自己精养一批账号,账号在自己手里比较安全可控&#…

重塑消费体验:探索绿色消费增值模式的新篇章

我是吴军,就职于一家在数字创新领域屡获殊荣的软件企业,担任高级产品策略师。今天,我满怀热忱,想与您一同揭开一种前沿且极具吸引力的商业模式面纱——那就是绿色消费增值模式,一个正逐步改变我们消费习惯与商业生态的…

一.1 信息就是位+上下文

hello程序的生命周期是从一个源程序(或者说源文件)开始的,即程序员通过编辑器创建并保存的文本文件,文件名是hello.c。源程序实际上就是一个由0和1组成的位(又称为比特)序列,8个位被组织成一组&…

平面法向的角度表示以及坐标系变换

1.根据法线计算法线的垂直角sint和法线在水平投影与x轴的夹角phi double phi atan2(normal(1) , normal(0)); // atan2(y,x), 计算法向在xy平面上的投影和x轴之间的夹角double sint asin(normal(2)); //理论上是z轴和 该法向向量之间的夹角 2.根据角度计算法线 Eigen::Vec…

AnaPico为众多工厂产线老化测试提供高效经济的微波解决方案

在电子设备的生产中,老化测试在整个使用寿命期间的可靠性和对声明参数的保证起着重要作用,尤其是在特殊应用(国防和航天工业、电信、医药等)方面。即使经过成功的参数和功能测试,在实际操作条件下使用时也有可能出现设…

集芯微电推出固定输出2V|2.5V|3V|3.3V|4V|4.5V|5V_输入最大16V_10 ppm/°C低噪声低漂移高精度基准电压源

1特征 •低温漂移:3 ppm/C(典型) •高精度:最大0.1% •低噪声:7.5μVPP/V •低IQ:2 mA(典型) •工作温度范围:-40C至125C •高输出电流:10 mA •微型包…

《基于 Kafka + Flink + ES 实现危急值处理措施推荐和范围校准》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 近期刚转战 CSDN,会严格把控文章质量,绝不滥竽充数,欢迎多多交流。&am…

数字签密:信息安全的新防线

随着互联网的普及和数字技术的飞速发展,信息安全问题日益凸显。在这个背景下,数字签密技术应运而生,为保护信息安全提供了新的解决方案。本文将介绍数字签密的概念、原理及应用,探讨其在信息安全领域的重要性。 数字签密的概念 …

抖音微短剧小程序入驻指南

一、抖音微短剧小程序类目和准入要求是什么? 可以明确的告诉你抖音微短剧小程序入驻是需要报白的,属于定邀类目,官方准入要求如下: 类目要求:文娱-微短剧 定向准入,填写“【微短剧】类目定向邀约申请表”…

【深度学习练习】心脏病预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、什么是RNN RNN与传统神经网络最大的区别在于,每次都会将前一次的输出结果,带到下一隐藏层中一起训练。如下图所示: …

vue2 项目中 echarts 实现排班 效果

效果 代码 <template><div class"index"><div ref"scheduleChart" style"width: 100%; height: 600px"></div></div> </template><script> import * as echarts from "echarts";export de…

记一次微信小程序逆向

扫码领取网安教程 遇到瓶颈了&#xff0c;不知道该干什么&#xff0c;突然想到学校的小程序 闲来无事就看一看 抓包下来的数据是这样的&#xff0c;嗯&#xff0c;下机&#xff08;hhh 一、反编译程序 加密嘛&#xff0c;之前抓了看到是加密就放弃了&#xff0c;现在重新弄一…

下一代 RAG 技术来了!微软正式开源 GraphRAG

省流总结 优点&#xff1a;检索准确度高 缺点&#xff1a;单个19w字构建用时4分30s、gpt4 token花费12美元 概述 7 月 2 日&#xff0c;微软开源了 GraphRAG&#xff0c;一种基于图的检索增强生成 (RAG) 方法&#xff0c;可以对私有或以前未见过的数据集进行问答。在 GitHub…

新时代【机器学习】与【Pycharm】:【随机数据生成】与智能【股票市场分析】

目录 第一步&#xff1a;准备工作 1.1 安装必要的库 小李的理解&#xff1a; 1.2 导入库 小李的理解&#xff1a; 第二步&#xff1a;生成和准备数据 2.1 生成随机股票数据 小李的理解&#xff1a; 2.2 数据探索与可视化 小李的理解&#xff1a; 2.3 数据处理 小李…

Docker使用基础—环境搭建

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;秒針を噛む—ずっと真夜中でいいのに。 0:34━━━━━━️&#x1f49f;──────── 4:20 &#x1f504; ◀️ ⏸ …

力扣爆刷第161天之TOP100五连刷71-75(搜索二叉树、二维矩阵、路径总和)

力扣爆刷第161天之TOP100五连刷71-75&#xff08;搜索二叉树、二维矩阵、路径总和&#xff09; 文章目录 力扣爆刷第161天之TOP100五连刷71-75&#xff08;搜索二叉树、二维矩阵、路径总和&#xff09;一、98. 验证二叉搜索树二、394. 字符串解码三、34. 在排序数组中查找元素的…

姜镇主任科普:号称“大脑杀手”的脑胶质瘤是一种什么样的肿瘤?

面对诸如头痛、频繁呕吐、记忆力显著减退等“轻微症状”&#xff0c;许多人往往掉以轻心&#xff0c;将其归咎于日常压力或不良作息习惯所致&#xff0c;殊不知这样的忽视可能正是身体发出的警示信号&#xff0c;隐藏着脑胶质瘤这一严重疾病的潜在风险。这些看似不起眼的症状&a…

几个小创新模型,KAN组合网络(LSTM、GRU、Transformer)回归预测,python预测全家桶再更新!...

截止到本期&#xff0c;一共发了9篇关于机器学习预测全家桶Python代码的文章。参考往期文章如下&#xff1a; 1.终于来了&#xff01;python机器学习预测全家桶 2.机器学习预测全家桶-Python&#xff0c;一次性搞定多/单特征输入&#xff0c;多/单步预测&#xff01;最强模板&a…

Docker部署Django+MySQL+Redis+Nginx+uWSGI+Celery(超详细)

一、知识储备 经过我们之前学习的Docker相关知识&#xff0c;现在我们来进行实战&#xff0c;以下介绍如何通过Docker Compose部署Django项目&#xff1a; 先前知识: Docker学习笔记&#xff08;一&#xff09;概念理解-CSDN博客 Docker学习笔记&#xff08;二&#xff09;…

20240708 Transformer

如何从浅入深理解transformer&#xff1f; - 知乎 1.出现了一些基于自监督的方法&#xff0c;这包括基于对比学习的方法如MoCo和SimCLR&#xff0c;和基于图像掩码的方法如MAE和BeiT 2、Transformer结构及其应用详解--GPT、BERT、MT-DNN、GPT-2 - 知乎 3. "Decoder-o…