通义千问大模型调优

通义千问大模型调优
一、什么是大模型调优​​​​大模型调优​​ 指的是通过一系列技术和方法调整或影响一个大语言模型的行为和输出使其更契合特定任务、领域或风格需求的过程。简单来说就是​​“教”一个通用的、知识渊博的模型让它变得更“专业”更能理解并满足你的独特要求。​​您给出的定义非常精准​​“调优是指可以根据自己的需求获取更精准或者更有创建性的一些答案”​​。我们可以从两个维度来理解这个定义​​更精准​​让模型在特定领域如医疗、法律、金融、你公司的内部知识的回答更准确、更可靠减少“幻觉”即胡编乱造。​​更有创造性​​引导模型的输出风格使其更幽默、更正式、更简洁或者模仿某种特定的文风。1、在深入探讨调优方法之前我们需要先了解几个关键概念它们是理解不同调优技术的基础。1向量存储向量存储VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案它特别适用于处理那些经过嵌入模型转化后的数据。在 VectorStore 中查询与传统关系数据库不同。它们执行相似性搜索而不是精确匹配。当给定一个向量作为查询时VectorStore 返回与查询向量“相似”的向量。VectorStore 用于将您的数据与 AI 模型集成。在使用它们时的第一步是将您的数据加载到矢量数据库中。然后当要将用户查询发送到 AI 模型时首先检索一组相似文档。然后这些文档作为用户问题的上下文并与用户的查询一起发送到 AI 模型。这种技术被称为检索增强生成Retrieval Augmented GenerationRAG。2提示词工程Prompt 是引导 AI 模型生成特定输出的输入格式Prompt 的设计和措辞会显著影响模型的响应。Prompt 最开始只是简单的字符串随着时间的推移prompt 逐渐开始包含特定的占位符例如 AI 模型可以识别的 “USER:”、“SYSTEM:” 等。阿里云通义模型可通过将多个消息字符串分类为不同的角色然后再由 AI 模型处理为 prompt 引入了更多结构。每条消息都分配有特定的角色这些角色对消息进行分类明确 AI 模型提示的每个部分的上下文和目的。这种结构化方法增强了与 AI 沟通的细微差别和有效性因为 prompt 的每个部分在交互中都扮演着独特且明确的角色。Prompt 中的主要角色Role包括系统角色System Role指导 AI 的行为和响应方式设置 AI 如何解释和回复输入的参数或规则。这类似于在发起对话之前向 AI 提供说明。用户角色User Role代表用户的输入 - 他们向 AI 提出的问题、命令或陈述。这个角色至关重要因为它构成了 AI 响应的基础。助手角色Assistant RoleAI 对用户输入的响应。这不仅仅是一个答案或反应它对于保持对话的流畅性至关重要。通过跟踪 AI 之前的响应其“助手角色”消息系统可确保连贯且上下文相关的交互。助手消息也可能包含功能工具调用请求信息。它就像 AI 中的一个特殊功能在需要执行特定功能例如计算、获取数据或不仅仅是说话时使用。工具/功能角色Tool/Function Role工具/功能角色专注于响应工具调用助手消息返回附加信息。3Temperature创建性​​官方解释摘要​​Temperature 参数用于控制生成过程中的随机性。它调整的是采样过程中概率分布的平滑程度。​​详细说明​​​​工作原理​​模型会为下一个词计算一个概率分布所有可能词的概率总和为1。Temperature 参数的作用是重新调整这个概率分布。当temperature 1时使用原始的概率分布不做任何调整。当temperature 1时会​​提高​​低概率词的概率​​拉平​​整个概率分布。这使得模型在选择下一个词时不再那么确信高概率的词而是会更多地考虑其他可能性因此输出结果更加随机、不可预测、富有创造性。当temperature 1时尤其是接近0会​​降低​​低概率词的概率​​锐化​​整个概率分布。这使得模型几乎总是选择概率最高的那个词因此输出结果更加确定、一致、保守。​​取值建议与示例​​​​范围​​(0, 2]之间的浮点数。通常不建议设置为0因为这可能导致确定性的输出。​​低温度0.1 - 0.5​​适用于需要事实准确、可重复性高的任务。​​场景​​事实问答、代码生成、数据提取、技术文档摘要。​​示例​​问“法国的首都是哪里”设置temperature0.1模型几乎每次都会回答“巴黎”。​​中等温度0.5 - 0.8​​适用于需要平衡创造性和一致性的任务。​​场景​​内容创作、文案撰写、开放式问答。​​高温度0.8 - 1.2​​适用于需要高度创造性和多样性的任务。​​场景​​写诗、生成故事、头脑风暴、创作广告语。​​示例​​让模型“写一首关于月亮的诗”设置temperature1.0每次运行都可能得到一首立意和用词都不同的诗。​​官方提示​​较高的 Temperature 值可能会导致生成内容看似不连贯或不合逻辑。对于严肃的问答任务建议使用较低的 Temperature 值4Top-p核采样​​官方解释摘要​​Top-p 是一种动态的采样策略也称为核采样。它从概率最高的词开始累积直到累积概率刚好超过 p然后仅从这些词中采样。​​详细说明​​​​工作原理​​与 Temperature 调整概率值本身不同Top-p 是定义一个​​候选词集合​​。模型计算所有可能的下一个词的概率并从高到低排序。从概率最高的词开始累加概率直到累加值​​刚好超过​​设定的 top_p 值例如 0.8。模型会​​仅从这个候选集合中​​选择下一个词并忽略集合外的所有低概率词。​​与 Temperature 的关系​​​​互补使用​​Temperature 控制“如何选”随机性Top-p 控制“从哪儿选”候选范围。通常先设置 Top-p 划定一个合理的候选范围再用 Temperature 在这个范围内增加一些随机性。​​二选一​​为了避免输出过于随机通常不建议同时使用较高的 Temperature 和较高的 Top-p。一种常见的做法是设置一个较高的 Temperature如 0.8-1.0但将 Top-p 设置为一个较低的值如 0.5-0.7来约束随机性或者将 Temperature 设为中等或较低值如 0.5-0.7而将 Top-p 设为较高的值如 0.9-1.0。​​取值建议与示例​​​​范围​​(0, 1]之间的浮点数。​​低 Top-p如 0.1-0.5​​候选集很小模型只会从最可能的一小部分词中选择。输出确定性高但可能缺乏多样性。​​高 Top-p如 0.7-1.0​​候选集很大甚至包含所有可能的词当 top_p1.0 时。输出多样性高但可能包含不相关的内容。​​常用值​​0.8或0.9是一个很好的起点可以在生成质量和多样性之间取得平衡。​​官方提示​​通常建议只更改 temperature 和 top_p 中的一个而不是同时更改两者。5Max Tokens / Max Length最大生成长度​​官方解释摘要​​该参数用于限制模型在单次请求中生成的 token 的最大数量。它限制的是模型​​生成​​的答案的长度。​​详细说明​​​​Token 是什么​​对于模型而言文本被切分成更小的单元token一个 token 可以是一个字、一个词或一个标点。例如“通义千问”四个字可能被切成4个token。​​英文中一个token约等于0.75个单词​​。​​作用​​防止模型生成过长的回答从而控制 API 调用的响应时间和成本。​​注意​​这个限制包括​​你输入的问题Prompt​​ 和​​模型生成的回答Completion​​ 的总 token 数。模型自身有一个上下文窗口上限例如通义千问最大支持 30K tokensmax_tokens的设置值必须保证“输入token数 max_tokens”不超过这个上限。​​取值建议与示例​​​​设置过小​​如果回答被意外截断模型可能无法完成完整的思考。你需要增加max_tokens的值。​​设置过大​​如果生成长度远未达到限制则会造成计算资源的浪费并可能增加不必要的成本。​​策略​​根据任务类型预估回答长度。对于简短问答设置256或512对于摘要或创作可能需要1024或2048。如果不确定可以先设一个较大的值然后根据模型实际生成的长度逐步调整到合适的值。2、调优案例​如何让大模型在专业领域如医疗、公司内部表现得更专业、更准确​​1 问题的根源通用模型的“知识盲区”​​​​问题​​若我们直接使用一个在通用语料上预训练的模型例如BERT模型可能会将其转化为一个向量但这个向量所捕捉到的医学特征可能不够精确因为 BERT 是基于大量的非专业文本进行训练的可能没有在医学文本上见过很多具体的医学术语。​​表现​​模型生成的向量无法精确捕捉专业概念之间的深层关系和上下文含义。​​结论​​直接使用通用模型对专业文本进行向量化效果往往不理想导致 RAG 系统检索不精准所谓 “垃圾进垃圾出” 。​​2 解决方案模型调优——让模型“专业化”​​为了让向量化更精准必须提升模型的专业领域理解能力即​​模型调优​​。主要有两种路径​​选择垂直领域模型​​直接使用在专业数据上预训练好的模型如医学领域的BioBERT它们的基础向量空间就更贴近专业领域。​​对通用模型进行领域微调​​用自己的专业数据医学文献、公司文档继续训练模型更新其参数使其向量表示更适应特定任务。​​核心比喻​​向量化是“翻译”把文本“翻译”成向量语言。一个没学过医学的“翻译”通用模型会词不达意。模型调优就是对这个“翻译”进行专业培训让它能精准传递专业信息的精髓。​​3 核心辩论RAG vs. 模型微调如何选​​这是最关键的部分。二者非替代关系而是​​互补​​的选择取决于场景。特性​​检索增强生成RAG​​​​模型微调​​​​知识更新​​​​动态、灵活​​。知识库向量库可随时增删改成本低即时生效。适合​​知识高频变化​​的场景。​​静态、缓慢​​。更新知识需重新训练模型成本高、周期长。适合​​知识相对稳定​​的领域。​​知识容量与追溯​​​​海量​​。外部知识库可轻松扩展至TB级。​​答案可溯源​​能提供引用来源透明可信减少“幻觉”。​​受限​​。知识被压缩固化在模型参数中通常GB级容量有限。是​​ “黑盒”​​答案无法直接追溯来源。​​处理未知/长尾问题​​​​强大​​。通过检索外部知识能回答训练数据中从未出现过的新问题零样本学习。​​较弱​​。严重依赖于微调数据的覆盖面难以处理训练数据外的边缘或新兴问题。​​核心能力提升​​​​主要增强模型的“知识”​​。模型本身的理解和推理能力不变但被 “喂” 了最相关的信息后再作答。​​主要提升模型的“技能”和“风格”​​。让模型内化特定领域的表达方式、思维模式和专业术语。​​4 最终抉择不是 “二选一”而是 “如何组合”​​​​追求知识实时性、可追溯性、处理海量未知问题​​ → ​​RAG是更优解​​如客服系统、企业知识库、法律咨询。​​需要模型内化一种独特的风格或思维模式且知识相对稳定​​ → ​​微调效果更好​​如生成特定风格的报告、代码补全。​​最佳实践​​​​RAG 微调​​。用一个​​经过微调的、更懂你所在领域的模型​​来驱动你的​​RAG系统​​。这样无论是向量化的质量还是对检索结果的理解和生成能力都得到了最大化提升。二、使用 Spring AI 接入 AI 智能体​1、创建 AI 智能体接入智能体首先需要有一个自己的 AI 智能体可以在阿里云百炼里面的 应用开发 - 应用管理 - 创建一个自己的智能体应用2、创建一个 SpringBoot 应用导入依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-webflux/artifactId /dependency !-- spring-ai alibaba -- dependency groupIdcom.alibaba.cloud.ai/groupId artifactIdspring-ai-alibaba-starter/artifactId version1.0.0-M5.1/version /dependency3、配置 application.yml其中 app-id 是智能体的应用 id创建智能体后就会生成其它的配置不懂的话可以参考上一篇博客https://blog.csdn.net/qq_53281187/article/details/152475814?fromshareblogdetailsharetypeblogdetailsharerId152475814sharereferPCsharesourceqq_53281187sharefromfrom_linkspring: application: name: ai-demo ai: dashscope: api-key: ${AI_DASHSCOPE_API_KEY} agent: app-id: edd68f7d43b94c20bf04ed049c82b9cc4、Java 代码编写RequestMapping(/bai-lian/agent) RestController public class BaiLianAgentRagController { private DashScopeAgent agent; Value(${spring.ai.dashscope.agent.app-id}) private String appId; public BaiLianAgentRagController(DashScopeAgentApi dashScopeAgentApi) { this.agent new DashScopeAgent(dashScopeAgentApi); } GetMapping(/call) public String call(RequestParam(value message) String message) { ChatResponse chatResponse agent.call(new Prompt(message, DashScopeAgentOptions.builder() .withAppId(appId) .build())); return chatResponse.getResult().getOutput().getText(); } }这样一个简单的ai智能体就出来了5、AI 智能体功能增强在 Ai 智能体中有很多系数可以配置以达到一个更智能的智能体1模型更换2模型参数配置参数设置温度系数控制模型输出随机性值越高越多样低则更稳定、聚焦最长回复长度限制单次生成文本的最大长度避免内容过长或资源浪费思考模式开启后模型会模拟多步思考提升复杂任务处理的合理性3提示词AI 模型可以通过提示词检索你的问题是否有答案也就是一个简单的知识库4导入数据回到主界面点击应用数据可以导入独属于你自己的知识库文件以下是导入完成画面5加载知识库回到创建应用界面根据下图就导入了我们之前的数据根据自己需要调节知识库6样例库打开样例库添加样例库示例用户输入某奶茶店想预测夏季销量已知近 3 年每月气温、促销活动买一送一 / 第二杯半价、销量数据目标用时间序列或回归模型预测 8 月销量指导备货模型输出模型选择LSTM 时间序列模型适配时序数据 多特征关联步骤① 清洗数据填补气温缺失值、编码促销活动② 划分训练集前 2.5 年、测试集后 0.5 年③ 构建 LSTM 网络3 层 lstm 1 层 dense 训练后预测7MCPMCP即模型上下文协议Model Context Protocol它旨在统一大语言模型与外部数据源和工具间的通信堪称AI领域的“USB-C接口”。借助MCPAI应用能安全访问、操作本地及远程数据打破数据孤岛实现“即插即用”式智能交互在架构上MCP采用客户端-服务器模式。其主要组件包括想通过MCP访问数据的程序、维持与服务器1:1连接的客户端以及通过标准化协议暴露特定功能的轻量级服务器。数据源涵盖本地文件、数据库也包括远程API点击想要的MCP进入界面后首先点击立即开通然后添加到智能体中下面是我添加的4个 MCP三、总结上面介绍了智能体的配置和如何进行大模型调优其实总体来说最关键的是要训练自己的模型将自己的业务数据、领域知识和独特价值注入到模型中从而形成核心竞争力。ps以下是我整理的 java 面试资料感兴趣的可以看看。最后创作不易觉得写得不错的可以点点关注链接https://www.yuque.com/u39298356/uu4hxh?# 《Java知识宝典》

最新新闻

日新闻

周新闻

月新闻