微软面向初学者的生成式 AI 官方介绍 —— generative-ai-for-beginnersI
🌟总结
跟着 70w+ 🌟 的 Github 仓库,学习有关构建生成式 AI 应用程序的基础知识。个人主要从以下几个方面的侧重点来做梳理总结
- AI 应用程序的核心概念
- Gent AI 目前前沿的研发工程和应用
- Gent AI 目前的困境和挑战
整体思维导图
📖 课程详情
个人学习课程视频以及 github 教程,梳理出当前课程的重点知识内容。⚠️ 注意:以下课程学习图片均来自课程视频中或 github 官网文档
1. 生成式 AI 和 LLM 简介
生成式 AI 的里程碑- 1956 - 人工智能:计算机科学领域致力于创造能够复制或超越人类智能的智能机器。
- 1997 - 机器学习:人工智能的子集使机器能够从现有数据中学习并改进该数据以做出决策或预测。
- 2012 - 深度学习:一种机器学习技术,其中使用多层神经网络来处理数据和做出决策。
- 2021 - 生成式 AI:基于 transform 算法和注意力机制,根据提示或现有数据创建新的书面、视觉和听觉内容。
关键概念
- tokenization:文本提示被“分块”成 token,帮助模型预测要完成的“下一个 token”。模型具有最大 token 长度,模型的价格通常按使用的 token 数计算。
- propmpt:提示是大型语言模型的输入,通常由用自然语言编写的文本组成。
- complete:完成是模型的输出,该术语指的是模型预测下一个标记的能力。
2. 探索和比较不同的 LLM
- 基础模型:俗称 LLM,作用于将输入的数据资源生成指定的资源结果
还有一种特殊的是“多模态模型”
- 生成式模型类型(开源/专有):
- prompt 字符串转 embedding
- prompt 字符串转 Image
- prompt 字符串转 Text
- 服务和模型
- 通常是通过调用 API 服务,API 调用底层 AI LLM 提供服务。
- 目前生成式 AI 的服务部署于云上,降低学习使用成本,但同时提升了深入成本。
- 调试 LLM 的几种方式(可以叠加使用)
- Azure Al:微软 (Microsoft) 的人工智能服务和工具的集合,它是 Microsoft Azure 云计算平台的一部分。
3. 使用负责任的 GEN AI
- 负责任的 GEN AI:以人为本,用户的最大利益 = 最好的结果,影响需要监控,仅有意图是不够的。
- LLM 潜在的威胁:
- 避免错误的输出或异常出错
- 输出有害内容
- 缺乏公平性(偏见、歧视)
- 如何确保 LLM 负责任
- Prompt Flow:通过开源的工具 Prompt Flow 来进行流量监控和反馈
- 连贯性
- 流式输出体验
- 输出与 prompt 关联性
- 其他 prompt 相似性
4. 解 Prompt 工程基础知识
- 关键概念
- Prompt:使用自然语言输入的“程序”模型
- Response:模型针对该输入“生成”的内容
- Fabrication:生成的内容可能并非基于事实
- Base LLM:基础模型,经过海量数据训练,通常基于基础模型微调出专业模型
- Instruction Tuned LLM:针对任务进行微调的指令
- Prompt Engineering:提升迭代和评估质量,最终让输出符合预期
- Chat Completion:生成式 NLP 响应,多轮沟通
- Embedding:将文本转换为模型的数字映射
- Tokenization:将 token 分成多个标记,用于预测
- Prompt 工程的意义:由于语言模型是随机的,因此需要及时工程来确保响应质量。
- Prompt 工程的运作:
- Prompt 工程类型
- 无代码:使用提供商的 Playground 选项
- 代码优先:使用提供商的 api-key 或 token 与 Notebook
- Prompt 工程的挑战
- 挑战1:但同一提示会在不同提供商、模型和时间中给出不同的响应。
- 挑战2:语言模型并不“理解”含义或上下文,它们只是根据受训练截止日期限制的统计知识来预测下一个标记。当它们返回不符合事实的真实响应(预测)时,就是会捏造输出。(尝试使用较旧的模型)
- Prompt 工程的结构:基本提示(完成) – 迭代(对话) – 指导(任务) - 完善(清晰度) – 完善(长度、格式) – 主要内容(上下文) – 提供提示(指导我)-提供示例(向我展示)
- Prompt 示例:
5. 创建高级 Prompt
- Prompt 的技巧分类
- 零次提示: 这是最基本的提示形式。这是一个单一提示,仅根据其训练数据向 LLM 请求响应。
- 少量提示: 这种类型的提示通过提供 1 个或多个可依赖的示例来指导 LLM 生成其响应。
- Chain-of-thought:这种提示告诉 LLM 如何将问题分解为几个步骤。
- Generated knowledge:增强式信息,为了改善提示的响应,您可以在提示中额外提供生成的事实或知识。
- Least to most:与思路链类似,这种技术是将问题分解为一系列步骤,然后要求按顺序执行这些步骤。
- Self-refine: 自我完善,这种技巧是关于批评LLM的产出,然后要求其改进。
- Maieutic prompting: 引导性提示,确保 LLM 答案正确,并要求它解释答案的各个部分。这是一种自我完善的形式。
- Chain-of-thought:其理念是指导 LLM 理解如何做某事。
给出 LLM 一个类似的例子,显示结果,以及思考过程,最后提出问题。
提示:“丽莎有 7 个苹果,扔出 1 个苹果,给了巴特 4 个苹果,巴特还给了他一个:7 -1 = 6 6 -4 = 2 2 +1 = 3
爱丽丝有 5 个苹果,扔出 3 个苹果,给了鲍勃 2 个,鲍勃还给了他一个,爱丽丝有多少个苹果?” 答案:1
- RAG 增强式提示:使用专业的、私有的增强字符映射。
{{公司}}:{{公司名称}}
{{产品}}:
{{产品列表}}
请根据以下预算和要求推荐保险:
预算:
{{预算}}
要求:{{requirements}}
- Least to most:从少到多提示的理念是将大问题分解为子问题。
提示:如何通过 5 个步骤实现数据科学?
你的人工智能助手会回答:
1. 收集数据
2. 清理数据
3. 分析数据
4. 绘制数据
5. 现有数据
- Self-refine:你不能相信输出,需要验证它,让其自我批评。
prompt 1:xxx
response 1:xxxx
对上述回答提出 3 点改进建议,并完善。
- Maieutic prompting:是一种类似于自我完善的技术,但它更多的是要求 LLM 解释自己。目标是减少 LLM 输出中的不一致之处,以确保它得出正确的答案。要遵循的工作流程是:
1. 要求回答问题
2. 对于答案的每个部分,请 LLM 进行更深入的解释。
3. 如果存在不一致,则丢弃不一致的部分。
- 针对输出的规范约束建议
- 指定上下文。
- 限制输出,特定数量的项目或特定长度。
- 指定内容和方式。记得提及你想要什么以及你想要的方式。
- 使用模板。
6. 构建文本生成应用程序
- 通过 python 程序编写,结合 openAI 以及相关方法封装库来进行构建应用程序
- 利用 Prompt 工程的形式,来创建高级 Prompt 的编程,达到想要的结果
文本生成应用程序示例:地址
7. 构建聊天应用程序
- 聊天机器人还是聊天应用程序
聊天机器人 | 生成式人工智能聊天应用程序 |
---|---|
以任务为中心、基于规则 | 情境感知 |
通常集成到更大的系统中 | 可以托管一个或多个聊天机器人 |
仅限于编程功能 | 融入生成式 AI 模型 |
专业化和结构化的互动 | 能够进行开放域讨论 |
- 三个关键点:
- 选择合适的 APIs 和 SDKs
- 用户丰富的应用功能体验
- 易用性
- 两种构建优化的方式
- 利用 DSL 模型。DSL 代表领域特定语言。可以利用在特定领域训练的所谓 DSL 模型来理解其概念和场景。
- 应用微调。微调是使用特定数据进一步训练模型的过程。
- 一般关键指标
含义 | 定义 | 聊天开发人员的注意事项 |
---|---|---|
正常运行时间 | 测量应用程序运行和被用户访问的时间。 | 如何最大程度地减少停机时间? |
响应时间 | 应用程序回复用户查询所花费的时间。 | 如何优化查询处理以缩短响应时间? |
精确 | 真实阳性预测与阳性预测总数的比率 | 如何验证模型的精确度? |
召回率(敏感度) | 真实阳性预测值与实际阳性数的比率 | 如何衡量并提高回忆率? |
F1 分数 | 准确率和召回率的调和平均值,平衡了两者之间的权衡。 | 你的目标 F1 分数是多少?你将如何平衡准确率和召回率? |
困惑 | 衡量模型预测的概率分布与数据的实际分布的匹配程度。 | 如何尽量减少困惑? |
用户满意度指标 | 衡量用户对应用程序的看法。通常通过调查获取。 | 多久会收集一次用户反馈?如何根据反馈做出调整? |
错误率 | 模型在理解或输出中出错的概率。 | 采取了哪些策略来降低错误率? |
再培训周期 | 模型更新的频率以纳入新的数据和见解。 | 多久重新训练一次模型?什么会触发重新训练周期? |
异常检测 | 用于识别不符合预期行为的异常模式的工具和技术。 | 如何应对异常情况? |
聊天应用示例:地址
8. 构建搜索应用矢量数据库
- 概念
- 语义搜索:是一种搜索技术,它使用查询中单词的语义或含义来返回相关结果。
- 文本嵌入:文本向量是文本的语义数字表示,嵌入用于以机器易于理解的方式表示数据。
- 余弦相似度:两个向量之间相似度的度量,用来找到找到与给定查询最相似的向量。
- 向量存储:将优化后的向量以索引或数据库的形式存储,提升性能。
- 文字内容
- 提取重叠的字符块
- 将其生成文本嵌入
- 将文本嵌入存储在向量存储中
- 搜索应用流程:每一次搜索都在向量存储中以余弦相似度,提取出最匹配的矢量数据。
搜索应用矢量数据库:地址
9. 构建图像生成应用程序
- 应用场景
- 图像编辑与合成。您可以生成用于各种用例的图像,例如图像编辑和图像合成。
- 应用于各种行业。它们还可用于为医疗技术、旅游、游戏开发等各种行业生成图像。
- 模型:DALL-E和Midjourney是两种最流行的图像生成模型,它们允许您使用提示来生成图像。
- 工作原理: autoregressive transformer* *定义了模型如何根据文本描述生成图像,它一次生成一个像素,然后使用生成的像素生成下一个像素,经过神经网络中的多层,直到图像完整。
- 关键参数:
- Temperature:温度是控制生成式 AI 模型输出随机性的参数。温度是 0 到 1 之间的值,其中 0 表示输出是确定性的,1 表示输出是随机的。
- metaprompts:元提示是用于控制生成式 AI 模型输出的文本提示,它们位于文本提示之前,用于控制模型的输出并嵌入到应用程序中以控制模型的输出。
- 构建 DEMO:
- 1. 导入需要的库,包括OpenAI库、dotenv库、requests库、Pillow库。
- 2. 设置端点、OpenAI API 的密钥、版本和类型。
- 3. 调用
<font style="color:rgb(31, 35, 40);">openai.Image.create</font>
模型 API 进行生成图像 - 4. 利用
<font style="color:rgb(31, 35, 40);">Image</font>
打开图像并使用标准图像查看器显示。
图片生成应用程序:地址
10. 构建低代码 AI 应用程序
- 低代码优势:传统开发人员和非开发人员可以使用很少甚至没有代码来构建应用程序和解决方案。通过提供可视化开发环境来实现的,该环境使您可以拖放组件来构建应用程序和解决方案
- 微软示例 Power Platform 由五个关键产品组成:
- Power Apps:移动端的 APP 应用开发,用于构建应用程序来跟踪、管理和与数据交互。
- Power Automate:自动化流程,允许用户在应用程序和服务之间创建自动化工作流,有助于自动化重复的业务流程。
- Power BI:可视化分析报表
- Copilot Studio:私人助理
- Power Pages:面向外部网站
- Gent AI: 通过 Copilot 或 AI Builder 的方式来增强平台上低代码开发和应用。
11. 将外部应用程序与函数调用集成
- 工作流程:
-
函数调用的作用
- 一致的响应格式 :能更好地控制响应格式,可以更轻松地将响应下游集成到其他系统。
- 外部数据:能够在聊天环境中使用来自应用程序其他来源的数据。
-
应用场景:
- 调用外部工具。聊天机器人非常擅长回答用户的问题。通过使用函数调用,聊天机器人可以使用用户的消息来完成某些任务。
-
创建主要步骤:
- 创建消息:通过获取文本输入的值来动态分配,也可以在此处分配值。
- 创建函数:定义一个函数及其参数,更详细地描述每个函数实例:
更详细地描述每个函数实例:
name- 我们想要调用的函数的名称。
description- 这是函数如何工作的描述。这里一定要具体和清晰。
parameters- 您希望模型在其响应中生成的值和格式的列表。参数数组由具有以下属性的项目组成:
type- 属性的数据类型将存储在其中。
properties- 模型将用于响应的具体值列表
name- 键是模型将在其格式化响应中使用的属性的名称,例如product。
type- 此属性的数据类型,例如string。
description- 具体属性的描述。
12. 设计 AI 应用程序的 UX
- 用户体验关键点
- 可用性:实用意味着应用程序具有与其预期目的相匹配的功能。
- 可靠性:意味着应用程序可以一致且无错误地执行其任务。但人工智能就像人类一样并不完美,可能容易出错。应用程序可能会遇到错误或意外情况,需要人工干预或纠正。
- 无障碍设施:意味着将用户体验扩展到具有各种能力的用户,AI 解决方案将变得更具包容性、可用性,并让所有用户受益。
- 令人愉快的:有吸引力的用户体验可以对用户产生积极影响,鼓励他们再次使用应用程序并增加业务收入。
- AI 应用程序,建立信任至关重要,确保信任设计核心的两种方法是可解释性和控制力。
- 可解释性: 让用户明白 AI 应用程序可以做什么。
- 解释应用程序在入门时可以做什么
- 简洁明了的解释
- 基于用户数据的个性化互动
- 控制力: 用户对 AI 应用程序有一定的控制能力
- 如何让用户控制 AI 响应
- 控制应用程序选择接受或拒绝 AI 使用的数据。
- 可解释性: 让用户明白 AI 应用程序可以做什么。
- 设计良好协作和反馈的 AI 应用程序:在设计应用程序时,应确保留出空间来接受用户的反馈,并以简单且易于解释的方式处理错误。
- 反馈:Al 应用程序应该有接收和提供反馈的空间。例如,通过竖起大拇指和竖起大拇指按钮等功能,用户可以轻松表达对结果的满意或不满意。
- 错误处理:Al 应用程序应该检测并解决错误或意外情况。例如,当用户请求 AI 功能之外的内容时出错时,也应该有办法处理此问题
13. 保护生成式 AI 应用程序
- 安全的重要性
- 人工智能/机器学习的影响:对日常生活有重大影响,因此保护它们变得至关重要。
- 安全挑战 :需要适当关注人工智能/机器学习的影响,以解决保护基于人工智能的产品免受复杂攻击的需要。
- 战略问题 :科技行业必须积极应对战略挑战,以确保长期客户安全和数据安全。
- 生成式 AI 应用程序安全挑战:OWASP
- 提示注入: 攻击者通过精心设计的输入来操纵大型语言模型 (LLM),使其表现出超出预期的行为的一种技术。
- 不安全的输出处理: 在大型语言模型生成的输出向下游传递到其他组件和系统之前,对它们进行不充分的验证、清理和处理。
- 训练数据中毒: 操纵预训练数据或微调或嵌入过程中涉及的数据,以引入漏洞(所有漏洞都有独特的、有时是共享的攻击媒介)、后门或偏见,从而可能损害模型的安全性、有效性或道德行为。
- 模型拒绝服务: 攻击者与 LLM 交互的方式会消耗大量资源,导致他们和其他用户的服务质量下降,并可能导致高昂的资源成本。
- 供应链漏洞: 损害生成性 AI 应用的“供应”插件/工具。
- 敏感信息披露: LLM 应用程序有可能通过其输出泄露敏感信息、专有算法或其他机密细节。这可能导致未经授权访问敏感数据、知识产权、侵犯隐私和其他安全漏洞。
- 不安全的插件设计: 不安全的插件允许潜在攻击者构建对插件的恶意请求,可能使恶意输入产生有害后果,包括数据泄露、远程代码执行和权限提升。
- 过度代理: 过多的功能导致过度代理允许对来自 LLM 的意外/模糊输出执行破坏性操作(无论是幻觉/虚构、直接/间接提示注入、恶意插件等)。
- 过度依赖: 过度信任没有监督的模型的输出,生成错误信息并以权威的方式提供。
- 模型盗窃: 恶意行为者或 APT 对 LLM 模型进行未经授权的访问和泄露。
- AI 系统和 LLM 的一些最常见的安全测试方法:
- 数据清理:数据清理可以通过减少机密或个人数据的暴露来帮助防止数据泄露和恶意操纵,这是从训练数据或 AI 系统或 LLM 的输入中删除或匿名化敏感或私人信息的过程。
- 对抗性测试:这是生成对抗性示例并将其应用于 AI 系统或 LLM 的输入或输出的过程,以评估其对对抗性攻击的稳健性和弹性。对抗性测试可以帮助识别和减轻可能被攻击者利用的 AI 系统或 LLM 的漏洞和弱点。
- 模型验证:模型验证可以通过确保模型受到保护和认证来帮助检测和防止模型窃取,这是验证 AI 系统或 LLM 的模型参数或架构的正确性和完整性的过程。
- 输出验证:输出验证可通过确保输出一致且准确来帮助检测和纠正恶意操纵,这是验证 AI 系统或 LLM 输出质量和可靠性的过程。
- AI 安全的机遇与挑战:
- 机遇:将人工智能纳入网络安全战略,在识别威胁和缩短响应时间方面发挥关键作用。人工智能可以帮助自动化和增强对网络攻击(如网络钓鱼、恶意软件或勒索软件)的检测和缓解。
- 挑战:攻击者利用人工智能发起复杂的攻击,(例如生成虚假或误导性内容或利用人工智能系统中的漏洞)。人工智能开发人员需设计出强大且能抵御滥用的系统。
- AI 红队: 通过使用类似的工具、策略和程序来识别系统风险并测试防御者的反应,模拟现实世界的威胁现在被认为是构建弹性人工智能系统的标准做法。
14. 生成式人工智能应用程序生命周期
- LMOps(机器学习运维): 是一系列做法,可帮助数据科学家和工程师更高效地管理机器学习(ML) 生命周期。
- LLMOps(Large Language Model Operations): 是一个涵盖了大型语言模型(如GPT系列)开发、部署、维护和优化的一整套实践和流程。
- 从 LMOps 到 LLMOps 的关键点变化:
- 质量:响应质量
- 危害:负责任的人工智能
- 诚实:回应有理有据(有意义?正确吗?)
- 成本:解决方案预算
- 延迟:令牌响应的平均时间
- LLM 的生命周期
- 构思/探索:在这里我们可以根据业务需求进行探索。原型设计,创建PromptFlow并测试是否对我们的假设足够有效。
- 构建/增强:开始评估针对更大数据集实施的技术,如微调和 RAG,以检查解决方案的稳健性。如果没有,重新实施它,在我们的流程中添加新步骤或重组数据,可能会有所帮助。在测试我们的流程和规模后,如果它有效并检查我们的指标,它就可以进行下一步了。
- 操作化:现在将监控和警报系统添加到我们的系统中,将部署和应用程序集成到我们的应用程序中。
15. 检索增强生成 (RAG) 和矢量数据库
- LLM 的局限: 由 LLM 提供支持的聊天机器人会处理用户提示以生成响应。它旨在实现交互,并与用户就各种主题进行交流。但是,它的响应仅限于所提供的上下文及其基础训练数据。
- 使用 RAG 作用:
- 信息丰富性:确保文本响应是最新的。通过访问内部知识库,可以提高特定领域任务的性能。
- 利用知识库中的可验证数据为用户查询提供上下文,从而减少捏造。
- 与 (LLM) 相比,它更具成本效益,更经济
- RAG 工作原理:
- 知识库:在检索之前,这些文档需要被提取和预处理,通常将大文档分解成较小的块,将它们转换为文本嵌入并将它们存储在数据库中。
- 用户查询:用户提出问题
- 检索:当用户提出问题时,嵌入模型会从我们的知识库中检索相关信息,以提供更多将纳入提示的上下文。
- 增强生成: LLM 根据检索到的数据增强其响应。它允许生成的响应不仅基于预先训练的数据,还基于来自添加上下文的相关信息。检索到的数据用于增强 LLM 返回用户问题的答案。
- 矢量数据库:向量数据库是一种专门用于存储、管理和搜索嵌入向量的数据库。它存储文档的数字表示。
- 向量嵌入: 为了更高检索速度和内存,需要在存储数据库之前将其转换为向量嵌入。
- 检索器: 检索器的目标是获取将用于提供背景信息并将 LLM 与您的数据联系起来的文档,当用户提出问题时,检索器会使用查询编码器将其转换为向量
- 搜索索引:在进行检索之前,需要为知识库构建一个搜索索引。索引将存储我们的嵌入,让我们在大型数据库中也可以快速检索最相似的块。
- 检索:当系统尝试从索引中快速找到满足搜索条件的文档时,就会发生检索。
- 关键字搜索:用于文本搜索
- 语义搜索:利用词语的语义
- 向量搜索:使用嵌入模型将文档从文本转换为向量表示。检索将通过查询向量表示最接近用户问题的文档来完成。
- 混合:关键字搜索和向量搜索的结合。
- 向量相似度:在用户提出查询的场景中,它首先被嵌入,然后与相似的嵌入进行匹配,检索器将在知识数据库中搜索距离较近的嵌入。
- 余弦相似度:基于两个向量之间的角度,是用于确定不同向量相似程度的常见方法。
- 欧几里得距离:向量端点之间的直线。
- 点积:测量两个向量对应元素乘积之和。
- 重新排序:重新排序 LLM 利用机器学习按最相关的顺序对搜索结果进行排序,以提高搜索结果的相关性。
- 框架:为了简化 RAG 的创建,可以使用 Semanti Kernel、Langchain 或 Autogen 等框架。
16. 开源模型
- 开源定义:开放源代码促进会 (OSI) 已定义了10 条标准,以确定软件是否属于开源软件。源代码必须在 OSI 批准的许可证下公开共享。
- LLM 开源需模型需开放的信息:
- 用于训练模型的数据集。
- 完整模型权重作为训练的一部分。
- 评估代码。
- 微调代码。
- 完整的模型权重和训练指标。
- 使用开源模型的优势:
- 高度可定制:由于开放模型发布时附带详细的训练信息,研究人员和开发人员可以修改模型的内部结构。这些模型针对特定任务或研究领域进行了微调,来创建高度专业化的模型。
- 成本:使用和部署这些模型的每个 token 成本低于专有模型。在构建生成式 AI 应用程序时,应考虑在用例中使用这些模型时的性能与价格。
- 灵活性:使用开放模型可以让你灵活地使用不同的模型或组合它们。
- 如何选择开源模型:选择开源 AI 模型没有唯一的答案,可以从质量、速度、价格来做衡量(参考人工智能分析)
17. AI Agent
- AI Agent: AI Agent 通过让大型语言模型 (LLM) 访问状态和工具来执行任务。
- LLM:AI 智能大模型
- State:指 LLM 正在工作的上下文。LLM 使用其过去操作的上下文和当前上下文来指导其后续操作的决策。\ Tools:LLM 需要使用工具,更好完成用户请求的和 LLM 计划好的任务。
- AI Agent 框架:探索几个不同的 AI 代理框架
18. 微调 LLM
- 微调: 思考基础模型和微调模型差异性,用新数据重新训练现有模型以提高任务的性能。
- 作用:
- 响应质量无法通过快速工程或 RAG 方法实现,则可能需要进行微调。
- 减少 Token 使用或提升更便宜的模型的能力(在合理范围内)而实现的成本效率。
- 是否需要微调:
- 用例: 希望改进当前预训练模型的哪些方面?有一个好的用例吗?(格式、边缘情况、新技能)
- 替代方案:是否尝试过其他选择(prompt、RAG)?
- 成本:考虑过其他成本吗?(计算、数据、维护)
- 收益: 是否确认了这些好处?(质量、成本、可扩展性)
- 如何微调:
- 预先训练的模型进行微调
- 用于微调的数据集
- 运行微调作业的训练环境
- 部署微调模型的托管环境
- 参考的微调资源 DEMO:
提供者 | 教程 | 描述 |
---|---|---|
OpenAI | 如何微调聊天模型 | <font style="color:rgb(31, 35, 40);">gpt-35-turbo</font> 通过准备训练数据、运行微调作业以及使用微调模型进行推理,学习针对特定领域(“食谱助手”)进行微调。 |
Azure OpenAI | GPT 3.5 Turbo 微调教程 | 通过创建和上传训练数据、运行微调作业等步骤,学习如何在 Azure 上微调<font style="color:rgb(31, 35, 40);">gpt-35-turbo-0613</font> 模型。部署并使用新模型。 |
Hugging Face | 使用 Hugging Face 对 LLM 进行微调 | 这篇博文将指导您使用transformers 库和Transformer 强化学习 (TRL) 以及 Hugging Face 上的开放数据集对 开放的 LLM(例如:)进行微调。 <font style="color:rgb(31, 35, 40);">CodeLlama 7B</font> |
🤗 AutoTrain | 使用 AutoTrain 对 LLM 进行微调 | AutoTrain(或 AutoTrain Advanced)是 Hugging Face 开发的 Python 库,可用于对许多不同任务进行微调,包括 LLM 微调。AutoTrain 是一种无代码解决方案,可以在您自己的云、Hugging Face Spaces 或本地进行微调。它支持基于 Web 的 GUI、CLI 和通过 yaml 配置文件进行的训练。 |
19. SLM
- SLM 和 LLM:LLM 和 SLM 都建立在概率机器学习的基本原理之上,其架构设计、训练方法、数据生成过程和模型评估技术都遵循类似的方法。
- SLM vs LLM:在模型大小、资源需求、上下文理解、偏见敏感性和推理速度方面存在很大差异。其中 LLM 功能更丰富但资源密集,而 SLM 提供更多领域特定效率并减少计算需求。
特性 | SLM(小型语言模型) | LLM(大型语言模型) |
---|---|---|
参数规模 | 通常为几亿到几十亿参数(如 Mistral 7B 有 70 亿参数) | 通常为数百亿到数万亿参数(如 GPT-4 有 1.76 万亿参数) |
训练数据规模 | 较小,通常针对特定领域数据集 | 极大,通常基于互联网规模的多样化数据集 |
计算资源需求 | 较低,可在中等 GPU 硬件上训练和运行 | 极高,需要大规模 GPU 集群和分布式计算 |
训练时间 | 较短,通常为几小时到几天 | 极长,可能需要数周甚至数月 |
推理速度 | 较快,适合实时应用和本地部署 | 较慢,需要大量并行计算资源 |
领域适应性 | 针对特定领域优化,专业化强 | 通用性强,适用于多种任务和领域 |
泛化能力 | 在特定任务上表现优异,但跨领域泛化能力有限 | 在多种任务和领域上表现优异 |
偏见问题 | 较少,因为训练数据更受控 | 较多,因训练数据来自互联网,可能包含偏见 |
部署成本 | 低,适合中小型企业和个人开发者 | 高,需要大规模基础设施支持 |
典型应用场景 | 特定领域任务(如医疗、法律、客服) | 通用任务(如自然语言处理、编程、内容生成) |
示例模型 | Mistral 7B、LLaMA-7B | GPT-4、PaLM-2、Claude |
- SLM:适合资源有限、需要快速部署和特定领域优化的场景。
- LLM:适合需要强大泛化能力和多功能性的场景,但需要大量计算资源和高成本支持。
🚩 后言
以上就是个人学习的全部内容,整体对于 AI Gent 有更全面的认识,感谢阅读~ 😊