1 项目整体规划
1.1 明确场景
-
toB or toC(面向企业还是面向消费者)
- toB(面向企业):指的是产品或服务主要面向其他企业或组织。这类产品通常需要解决特定的商业问题,强调效率和集成性,并且可能需要定制化服务。
- toC(面向消费者):指的是产品或服务直接面向最终用户。这类产品通常更加注重用户体验、易用性和娱乐性。
-
准确度要求,合规性要求
- 准确度要求:根据应用场景的不同,对AI的输出结果的准确性要求也会有所不同。例如,在医疗诊断领域,准确度要求极高,而在推荐系统中,准确度要求相对较低。
- 合规性要求:某些行业(如金融、医疗等)有严格的法律法规要求,AI系统必须遵守这些规定,确保数据处理、隐私保护等方面的合规性。
-
替代人还是辅助人
- 替代人:指的是AI系统能够完全取代人类的工作,如自动化流水线上的机器人。
- 辅助人:指的是AI系统作为人类的助手,帮助提高工作效率或完成某些任务,如智能助手、推荐系统等。
-
一次交付 vs 反复迭代
- 一次交付:在某些项目中,客户可能希望一次性交付一个完整的AI系统,后续不需要频繁更新或迭代。
- 反复迭代:在许多情况下,AI系统需要不断地更新和优化,以适应不断变化的环境或用户需求。这需要持续的数据收集、分析和模型调整。
-
产品边界的划分
- 产品边界指的是产品功能的范围和限制。明确产品边界有助于确定AI系统的功能、性能和责任范围,避免因过度承诺而导致的风险和责任问题。
1.2 技术选型
-
高质量训练数据
- 在技术选型时,首先要考虑的是是否有充足的高质量训练数据。高质量数据是指那些真实、准确、全面并且能够代表实际应用场景的数据。数据的真实性和代表性直接影响模型的训练效果和泛化能力。
-
算力vs数据vs模型
- 算力:指的是硬件的计算能力。A100 80G的卡一张FP16 40B表示拥有强大的浮点运算能力,这对于训练大规模和复杂的模型非常重要。
- 数据:是AI系统的燃料。即使拥有强大的算力,如果数据质量不高或数据量不足,模型的性能也会受到影响。
- 模型:是AI系统的核心,它决定了如何从数据中学习。模型的选择和设计需要根据问题的复杂性和数据的特性来决定。
-
推理时间:在线vs离线
- 推理时间指的是模型在接收到输入后给出预测结果所需的时间。
- 在线推理要求模型能够快速响应,通常用于实时性要求高的场景,如在线推荐、实时监控等。
- 离线推理则允许模型在较长时间内给出结果,适用于对实时性要求不高的场景,如批量数据处理、历史数据分析等。
-
规则系统
- 规则系统:在某些应用中,尤其是对可解释性要求高的场景,规则系统是一个重要的技术选型。规则系统基于明确的逻辑和规则进行决策,易于理解和解释。
- 解决badcase能力:规则系统在处理特定的问题时,可以通过精细化的规则设计来避免模型常见的错误,从而提高系统的整体性能。
-
产品运营
- 产品运营是指AI产品上线后的持续管理和优化过程。它包括数据监控、性能评估、用户反馈收集、模型迭代更新等。
- 产品运营的目的是确保AI产品能够持续满足用户需求,发现并解决潜在问题,提升用户体验。
1.3 如何选择合适的大模型
-
硬件驱动
- 不同的模型可能对硬件有特定的要求,因此在选择模型时需要考虑可用的硬件资源。例如,4090、V100、A10、A600、A100等不同型号的GPU卡有着不同的计算能力和内存容量,这会影响到模型的选择和性能。
-
场景驱动
- 通用问题vs专业问题:通用问题通常需要模型具有广泛的知识和理解能力,而专业问题可能需要模型在特定领域有深入的理解和专业知识。
- 英文vs中文:不同的语言可能需要不同的模型架构和训练数据,因此需要根据应用场景的语言要求选择合适的模型。
-
常见主流开源大模型
- 清华chatglm6B:由清华大学开发的开源聊天机器人模型,适用于通用对话和问答场景。
- 通义千问 13B 72B:阿里巴巴开发的通用预训练模型,适用于多种自然语言处理任务。
- Llama系列,百川,零一万物:这些是其他开源的大型预训练模型,各自有不同的特点和优势,适用于各种自然语言处理任务。
2 技术选型
2.1 大模型的能力
-
知识能力:
- RAG:一种结合了检索和生成能力的模型,能够利用外部知识库来增强回答问题的能力。
- 例如,模型能够回答“生孩子能休几天产假?”这样的知识性问题。
-
逻辑能力:
- 逻辑能力是指模型理解和应用逻辑推理的能力。例如,模型能够理解“生鱼片其实是死鱼片”这样的逻辑性陈述。
- 百度弱智吧:这可能是指百度贴吧中的一个社区,其中的讨论可能涉及到逻辑推理或幽默表达。
-
推理能力:
- 推理能力是指模型能够进行逻辑推断和合理推理的能力。例如,模型能够回答“男职工能否休产假?”这样的问题,需要对相关法律法规和社会习俗有一定的了解。
2.2 主流大模型对比
2.3 ChatGLM-6B
ChatGLM-6B 是一个大型预训练语言模型,它具备以下特点和能力:
-
中英双语预训练:
- ChatGLM2-6B 在中英双语的语料上进行了大量的预训练,总训练量达到了1.4T的token量。这种1:1比例的中英语料训练确保了模型在中英文处理上具有均衡和卓越的能力。与初代ChatGLM-6B相比,其双语性能得到了显著提升。
-
部署门槛较低:
- 在FP16半精度下,ChatGLM-6B的推理需要至少13GB的显存。但是,通过结合模型量化技术,这一显存需求可以进一步降低,例如,使用INT8量化可以降低到10GB,而使用INT4量化可以降低到6GB。这使得ChatGLM-6B能够部署在消费级显卡上,大大降低了部署的硬件门槛。
-
更长的序列长度:
- ChatGLM-6B能够处理的序列长度达到了2048,而ChatGLM2-6B更是支持高达8192的序列长度。这意味着模型能够处理更长的对话和应用,对于需要处理长文本的场景非常有利。
-
人类意图对齐训练:
- ChatGLM-6B采用了多种训练方法来提高对人类指令意图的理解,包括监督微调、反馈自助和人类反馈强化学习等。这些方法使得模型能够更好地理解人类的指令意图,并据此进行响应。
2.4 英伟达历代产品参数
2.5 辅助方法
- 模型微调
- Prompt工程
- RAG
2.6 常见的微调方法
2.7 领域大模型训练trick
2.8 推理参数设置
确定性采样:
- 这种方法直接输出概率最大的词或标记,也称为贪婪解码。它简单且速度快,但可能会导致输出缺乏多样性。
Beamsearch:
- Beamsearch是一种启发式搜索算法,用于序列生成任务。它在每一步都保留多个(称为束大小或beam size)最有潜力的候选序列,并最终选择得分最高的序列作为输出。Beamsearch可以提高输出的质量,但计算成本较高,并且不适合流式输出。
随机采样:
- 随机采样根据模型的输出概率分布随机选择下一个词或标记。这种方法可以为输出带来多样性,但也可能导致输出质量的不稳定。
topK采样:
- topK采样从模型输出的概率分布中选出概率最高的K个词或标记,然后从中随机选择下一个词或标记。例如,如果topK=3,且概率分布为a(0.9), b(0.001), c(0.001),则可能只考虑a。这种方法可以平衡输出的质量和多样性。
topP采样(核采样):
- topP采样与topK采样类似,但它不是选出概率最高的K个词,而是选出累计概率达到某个阈值P的所有词,然后从这些词中随机选择。例如,如果topP=0.8,且概率分布为a(0.3), b(0.2), c(0.2),则可能考虑a和b。这种方法可以动态调整采样的多样性。
流式输出 vs 批量输出:
- 流式输出是指模型在生成文本时实时输出每个词或标记,适合需要实时响应的应用场景。
- 批量输出是指模型先生成整个序列,然后再一次性输出,适合对实时性要求不高的场景。
3 案例分析
3.1 办公大模型
3.2 办公大模型Agent
3.2.1 意图识别
3.2.2 对话系统
3.3 对话系统-知识管理流程
3.4 内容生成能力
3.5 AI核稿-纠错、内容安全审核
3.6 摘要生成
3.7 图像生成
4 问题解答
4.1 知识库问答(KBQA)
知识库问答(KBQA)是自然语言处理中的一个任务,它旨在使知识库中的信息通过自然语言查询变得可访问。用户输入查询语句,系统需要在知识库中找到相关信息并生成回答。这个过程涉及到信息的匹配、召回和排序:
-
知识库问答的问题:
- 知识库问答的主要挑战之一是确保查询语句与知识库中的信息准确匹配。如果用户输入的查询语句是无关字符(如“abcd”),而知识库中恰好有这些字符的条目,系统可能会错误地匹配并生成不相关或错误的回答。这种情况会导致知识库问答系统失去精准性。
-
匹配:
- 匹配是指将用户的查询语句与知识库中的条目对应起来的过程。匹配的准确性直接影响到最终回答的准确性。
-
召回和排序:
- 召回是指从知识库中检索出所有可能与查询语句相关的条目。
- 排序是指根据某些标准(如相关性)对召回的条目进行排序,以便选择最合适的条目来生成回答。
-
倒排索引:
- 倒排索引是一种常用的信息检索技术,它可以帮助快速定位知识库中包含特定词汇的条目。在知识库问答中,倒排索引可以用于加速查询语句的匹配过程。
-
向量匹配:
- 向量匹配是指使用向量的相似度来衡量查询语句与知识库条目的匹配程度。这种方法通常涉及到将查询语句和知识库条目转换为向量表示,然后计算它们之间的相似度。向量匹配可以捕获语义上的相似性,而不仅仅是词汇上的匹配。
4.2 Agent问题
在讨论Agent的问题时,通常指的是如何设计和实现一个能够被精准调用的软件代理(Agent),它可以在特定的环境中执行任务。Langchain是一种可以将不同工具和Agent连接起来的框架,以便它们可以协同工作:
-
如何让Langchain精准地调用到一个Agent:
- 为了让Langchain精准地调用到一个Agent,需要确保Agent被正确地注册和配置在Langchain框架中。这通常涉及到定义Agent的接口,包括它能够处理的输入类型和输出的类型。在Langchain中,这可能意味着需要为Agent创建一个明确的API端点或函数调用接口。
-
如何编写Agent:
- 编写Agent时,需要确定它的职责和功能。Agent应该能够接收输入,处理这些输入,并返回相应的输出。在编写时,应该考虑到输入的多样性和可能的错误处理。Agent的实现可能涉及到编写新的代码,或者封装和集成现有的工具或服务。
-
Agent调度问题不是知识性的问题:
- 这句话指的是Agent的调度(即决定何时调用哪个Agent)通常不是一个基于知识库的问题,而是一个关于系统设计和流程控制的问题。调度可能需要根据系统的状态、用户的需求或特定的触发条件来决定。
-
把模型训练成分类模型:
- 在某些情况下,可以将模型训练成一个分类模型,以便根据输入数据的特征将其分类到不同的处理路径。这种方法可以用于决定哪个Agent应该处理给定的输入。
-
指定格式可穷举的输出:
- 这意味着Agent的输出可以被限定在一个预先定义的、有限的格式集合中。这样做可以简化系统的设计和实现,因为可以预测和枚举所有可能的输出情况。
4.3 大模型如何实现任务理解
-
意图识别:
- 意图识别是指模型能够理解用户的输入并确定其背后的意图。在大模型中,这通常通过预训练和微调来实现,使得模型能够根据上下文和语义理解用户的意图。
-
多分类:
- 多分类是指模型能够将输入数据分类到多个预定义的类别中的一个。在大模型中,这可以通过在预训练阶段使用多样化的数据集,然后在微调阶段针对特定的任务进行调整来实现。
-
多标签:
- 多标签分类是指模型能够为每个输入分配多个标签。这与多分类不同,后者每个输入只分配一个标签。在大模型中实现多标签分类通常需要对模型进行特定的微调,以使其能够处理多个相关的输出。
-
微调还是使用提示工程:
- 微调是指在大模型的基础上,使用特定任务的标注数据来进一步训练模型,以提升模型在该任务上的性能。
- 提示工程(Prompt Engineering)是一种技术,通过为模型提供特定的提示或指令来引导模型生成期望的输出。提示工程可以用于增强模型在特定任务上的表现,而不需要进行微调。
- 对于复杂多任务的理解,微调可以使模型更好地适应特定的任务要求,而提示工程则提供了一种更灵活、更快速的方法来指导模型的输出。
4.4 语料库构建
-
语料库构建的手段:
- 开源数据集:使用公开可用的数据集是构建语料库的一种常见手段。这些数据集通常由研究机构、大学或公司发布,并可以在互联网上免费获取。
- 人工手写:对于一些特定的任务,可能需要通过人工编写样本来构建语料库。这种方法可以确保数据的质量和多样性,但成本较高。
- 大模型拓展:使用大型预训练模型来生成新的数据样本,以扩展语料库。这种方法可以快速生成大量数据,但需要确保生成数据的质量和相关性。
- 线上持续收集:通过在线系统持续收集用户生成的数据,如日志、评论、反馈等,这些数据可以用于构建和更新语料库。
-
开源工具用来制作语料库:
- 有许多开源工具可以帮助制作语料库,例如:
- Dataturks:一个在线数据标注平台,可以用来创建、管理和标注文本数据。
- Doccano:一个开源的文本标注工具,支持多种标注任务,如文本分类、实体识别等。
- Tesseract:一个开源的OCR引擎,可以用来从图像中提取文本数据。
- 有许多开源工具可以帮助制作语料库,例如:
-
语料增强的手段:
- 数据增强:通过一系列技术手段增加数据样本的多样性,如文本合成、同义词替换、随机插入等。
- 模型生成:使用预训练模型生成新的数据样本,以增加语料库的规模和多样性。
-
确保增强的数据符合要求:
- 人工校验:通过人工审核增强后的数据,确保其质量、相关性和准确性。
- 自动化评估:使用预训练的语言模型或特定的评估指标来自动化地评估数据的质量。
4.5 怎么保证结果最优
-
最优结果:
- "最优"在这里指的是生成的答案在质量、相关性和准确性方面都是最高的。由于最优是一个相对概念,实际上我们通常追求的是在特定上下文和任务要求下的最佳平衡。
-
确定性结果:
- 为了获得确定性结果,可以通过调整模型参数或使用特定的解码策略来减少输出的随机性。例如,可以使用较小的温度参数(temperature parameter)来降低随机性,或者使用 beam search 等确定性解码方法。
-
Beam Search:
- Beam Search 是一种启发式搜索算法,用于序列生成任务。它在每一步都保留多个(称为束大小或 beam size)最有潜力的候选序列,并最终选择得分最高的序列作为输出。Beam Search 可以提高输出的质量,因为它考虑了多个可能的答案,但这也意味着更高的计算成本。
-
保证生成结果最优的方法:
- 调整解码参数:如前所述,可以通过调整温度参数、top-k 采样或 top-p 采样等参数来控制模型的随机性。
- 多轮生成和选择:可以生成多个答案,然后根据某些标准(如准确性、新颖性等)选择最佳答案。
- 后处理和过滤:生成答案后,可以使用额外的过滤规则或后处理步骤来改进答案的质量。
- 用户反馈和迭代:收集用户对生成答案的反馈,并根据反馈调整模型,以逐步优化生成结果。
4.6 怎么保证微调后LLM的基础能力
-
1:5的专业vs通用数据进行微调:
- 这里的比例(1:5)指的是在微调过程中,专业数据和通用数据的比例。专业数据是指与特定任务高度相关的数据,而通用数据是指更广泛、更多样化的数据集。
- 通过将专业数据和通用数据以一定比例混合,可以在微调过程中既保留模型在通用领域的知识,又增强模型在特定领域的性能。
- 这种方法有助于防止模型过拟合到专业数据上,从而保持其广泛的知识和基础能力。
-
调用不同的模型:
- 在某些情况下,可以同时使用或调用多个模型,其中一些模型可能是专门为特定任务微调的,而其他模型则保持其通用性质。
- 通过这种方式,可以在需要时利用专用模型的特定能力,同时保持基础模型的通用能力。
4.7 LLM+专用知识库的优势
- 微调大模型:通过在通用大模型的基础上进行微调,可以增强模型对特定任务的理解和处理能力。
- 专用知识库:结合一个专门为特定任务或领域设计的知识库,可以提供更准确和详细的信息。
优势:
- 可解释性:微调后的模型结合专用知识库,通常具有较高的可解释性,因为模型的输出可以直接关联到知识库中的具体信息。
- 便于更新:专用知识库可以独立于模型进行更新,这样即使模型微调后的参数不变,知识库的更新也能带来性能的提升。
缺点:
- 不可控:微调大模型可能会引入一些不可控的偏差,尤其是在使用大规模未标注数据进行微调时。