OpenAI如何优化LLM性能?

OpenAI

1个回答

写回答

307134470

2026-01-11 09:00

+ 关注

AI
AI

之后经过人工检查与调整。欲获得更好的阅读体验,请查看:

在流程的另一头,模型精调(Fine - tuning)适用于要求模型更稳定地遵循指令的情况。这一系列操作并非线性的,或许要把RAG和精调相结合,尝试不同组合并评估效果,从而确定最佳优化策略。不断尝试与评估,就能系统地考量这些改变对性能有何影响。评估于整个流程有决定性作用,因其决定是否要改变策略来提升性能。

在LLM性能优化方面,提示工程(Prompt Engineering)是个极为关键的概念。优化策略从一些基本步骤开始,首先要编写清晰指令,让模型能够理解并执行任务;还要把复杂任务拆解成简单的子任务,让问题更易管理。在此过程中,给GPTs留出思考时间也是重要策略,就是让模型在生成回应前有足够的内部处理时间。另外,系统地测试变化在优化进程里也很关键,这样就能评判每次调整对性能的实际影响。设定好评估体系,确保优化朝着既定方向进行,而非盲目调整。

JS
JS

提示工程是优化的绝佳起始点。它利于早期测试与学习,和评估并用时能为后续优化确立基准。不过,提示工程不适合引入新信息,也无法可靠地重现复杂风格或方法,像学习新编程语言就不行,且它不利于最小化token使用。

一个不错的prompt示例:

可加入少量示例(少样本学习):

RAG的一般流程如下:

在优化大型语言模型(LLM)时,会面临一个抉择点:选择检索增强生成(RAG)还是模型精调(Fine - tuning)。这一决策可从短期记忆与长期记忆问题的比较来阐释。当模型要回答问题而需要特定信息时,比如回应用户的直接提问或处理特定的信息查询任务,RAG就提供了一种途径,它通过检索来扩充模型的知识库,就好比给即将参加考试的学生提供教科书(开卷考试),学生能翻书找答案。另一方面,若要模型复制特定结构、风格或者格式(执行一致的指令),模型精调就十分关键。这就好比学生长时间学习将知识内化,从而能在无提示时重现所学内容。需着重指出的是,RAG与精调并非相互排斥,而是能够彼此互补。在一些情形下,把这两种技术相结合可达成最佳的模型性能,因为它们从不同维度强化了模型能力。并且RAG与精调优化的整个流程可能要经过多次迭代才会最终取得良好效果。

作者列举了一个RAG优化的成功案例。在RAG(检索增强生成)的提升案例里,团队最初的准确率为45%,这个起点不太好。他们进行了诸多尝试,用勾号和叉号分别标记哪些方法被用于生产,哪些被放弃,勾号表示成功用于生产的方法。他们对假设性文档嵌入(Hypothetical Document Embeddings, HyDE)进行了尝试。HyDE并非单纯与问题做相似度搜索,而是先生成一个假答案再进行相似度搜索。尽管在一些用例中这种方法成效显著,但在此处却行不通。他们还尝试了精调嵌入,也就是基于训练集改变嵌入空间来助力模型找到正确答案。这种方法在准确性上表现不错,可是由于成本高、速度慢,最终被放弃。他们通过尝试不同大小的信息块,嵌入不同的内容部分来辅助模型识别最相关内容,使准确率提升到了65%。他们采用Reranking以及对不同类别问题特殊处理的方法,将准确率进一步提升至85%。他们又回到了起点,打算更好地开展提示工程。他们对错误问题的类别加以查看,接着依据类别借助工具获取更精准的信息。比如,他们发现存在结构化数据方面的问题,需要从文档里提取数字。于是,他们只赋予模型访问SQL数据库的权限,使其插入变量并执行查询,以得到结构化数据答案。最终,他们还尝试了查询扩展,把一个问题拆分成多个查询并行执行,再把结果整合为一个答案。这些方法相结合,让他们的准确率最终达到了98%。

检索结果并非越多就越好。在评估RAG性能时,他们运用了四个关键度量标准(Ragas score)。这些标准分属两大类别,一类用于考量LLM作答情况,另一类用来衡量检索内容和问题之间的相关性。第一个度量为忠实度(FAIthfulness),其会检查生成答案的事实准确性,把答案拆解成事实,再将这些事实与检索内容进行对应。若无法对应,就视作模型的幻觉。该度量会给出一个数值,若数值低于特定阈值,就可能出现了幻觉。答案相关性(Answer Relevancy)这个度量则是用于衡量模型生成的答案是否切实针对用户所提问题。有时模型生成的答案虽然很好地利用了检索内容,但与用户的原始问题毫无关联,此度量就是为了考量这种情况。若发现答案事实准确但相关性极低,这表示模型可能过于关注内容,忽略了问题实际需求。这就说明我们或许需要进行提示工程(Prompt Engineering)或者采取其他措施,促使模型更多关注问题本身,进而决定是否运用相关内容。

借助这些精细的评估指标,我们可深入认识并优化LLM在RAG应用里的表现,达成最佳的性能与效率。

研究者们在研究RAG和模型精调的差异时发现,模型精调不同于提示技术。模型精调是把已训练的模型放在更小且特定领域的数据集上接着训练。这是一种根本性的转变,从基础模型出发,经过模型精调后,会得到一个与原模型完全不一样的新模型。模型精调:先从在广泛多样数据集上训练好的模型入手,像GPT - 3.5 Turbo或者GPT - 4等模型,其有着丰富的世界知识。然后将这类通用模型进行专门化处理,调整其能力,让它更适配特定任务。

从GPT - 4这类大型模型中提取知识并转移到GPT - 3.5 Turbo之类的小型模型,是精调常见用例之一。和大型模型相比,与小型模型交互往往效率更高。

模型精调在修改或定制模型输出的结构与语调方面很适用。早期模型精调有个典型用例,即强制模型输出有效的JSON。因为若要以编程方式与模型交互,有效的JSON在编程时容易处理,无效的JSON会引发很多错误状况。

另一方面,模型精调不适用于为模型增添新知识。LLM中的知识是在大规模预训练过程中植入的,在有限的模型精调过程中基本无法添加新知识。若要给模型添加新知识,可采用RAG等方法。而且,模型精调也不适合对新用例进行快速迭代。进行模型精调时,反馈循环相对缓慢,创建数据集以及模型精调的其他环节都需要大量投入。因此,他们不建议将模型精调作为起始点。

Canva的成功案例表明,模型精调在凸显基础模型已有知识上是有效的。其任务为把用户对设计模型的自然语言描述转化成结构化设计指南,再由大型语言模型(LLM)输出,目标是利用这些指南生成全尺寸模型展示给用户。结果所示。这个用例为何会成功?其一,不需要新知识。解决该问题所需知识基础模型中均已具备,不过模型要输出结构非常特定的结果。其二,使用了高质量的训练数据,还有很好的基线用于两者比较。他们对3.5 Turbo和GPT - 4进行评估,知晓其成功之处与不足之处,于是明白模型精调是解决这一任务的良策。

在实际中怎样对模型进行精调?如同任何机器学习问题,首要步骤便是获取数据集。和大多数机器学习问题相同,这往往是最难的部分。获取数据集的途径众多,能下载开源数据集,可于私人市场购买数据,或者付钱给人工标注者来采集和标注数据,还能从更大的模型中提炼数据(若该模型的服务条款支持特定用例)。不管怎样,都得设法拿到用于模型微调的数据集。接下来开始启动训练过程。在训练时,了解可调整的超参数非常关键。这些超参数可能引发过拟合、欠拟合或者灾难性遗忘等情况,所以要清楚有哪些超参数可用,以及它们对模型精调结果有何影响。接下来要明白损失函数的重要性。在对大型语言模型(LLM)进行精调时,损失函数用于预测下一个标记(token)。这种预测在精调模型时是有用的,不过下一个标记预测与人们关注的下游任务性能并非总是有很好的相关性。要对模型进行评估。评估模型的方式有多种。专业人员可查看输出并进行一定程度的排名,也可取不同模型生成输出后相互比较,还能利用像GPT - 4这种更强大的模型对输出进行排名。最后进行模型部署。这能够形成反馈循环与数据反馈循环,先训练模型、评估模型,再将其部署到生产环境,从生产中采集样本构建新数据集,对数据集下采样,接着基于此数据集进一步精调模型,产生飞轮效应。

总结模型精调时的一些推荐最佳实践。先从提示工程与少样本学习入手,这两种技术既简单又投入小,还能让人凭直觉了解大型语言模型(LLMs)处理特定问题的方式,所以是很好的起始点。在转向模型精调之前,建立基准是极为重要的。就像Canva的成功案例,他们试用了3.5 Turbo和GPT - 4。他们对自身面临问题的各个方面都有很好的理解,知晓这些模型的失败之处以及优点,所以他们很清楚通过模型精调想要解决的目标是什么。在进行模型精调时,要从小处做起,别去下载14万条Slack消息然后一次性处理。应当开发一个规模小但质量高的数据集,开展模型精调工作,之后评估模型,看是否朝着正确方向发展。这里可采用类似主动学习的方法。模型精调后,查看模型的输出,找出其在哪些方面存在困难,再用新数据专门针对这些方面进行改进。在模型精调上,数据质量比数量更关键。数据数量是预训练时处理的,现在更应关注数量少但质量高的样本。

他们最初尝试RAG最简单的方式——简单检索。采用余弦相似度,用问题去查找能回答类似问题的SQL查询。他们还试过不同的嵌入格式与提示工程,不过效果欠佳。之后,他们想到一个问题由于数据库模式不同,答案可能完全不一样,所以仅用问题做相似度搜索不太合适。相反,用假设问题的答案进行搜索或许会有更好的结果。

接下来,他们又尝试了一些更为高级的技术,像是思维链推理(chAIn of thought reasoning),试图先让模型识别列,再识别表,最后构建查询。而他们最终选用的方法比较简单,即自我一致性检查(self - consistency check)。他们让模型构建查询并运行,要是出错了,就提供错误信息,让模型再试一次。这种方法能让GPT自我修复,在有些用例里,若延迟和成本不是关键问题的话,这一方法其实相当有效。他们的结果表明,刚开始仅采用提示工程时,性能不尽人意。接着添加少样本示例后,性能有所改进,这意味着RAG能进一步提升性能。在使用问题进行搜索时,性能提升了3%,使用假设性文档嵌入时,又进一步提升了5%。仅用假设答案而非实际输入问题进行搜索,性能就得到了极大提升。他们只是增加了示例数量,便快要达到该领域的最高水平了。仅仅经过几天的尝试,从提示工程入手再转向RAG,就展现出他们能从这些很基础的起始方法中挖掘出巨大性能。

在模型精调工作上,他们把任务交给了合作伙伴Scale AI。Scale AI先建立了基线,和之前推荐的一样,与之前幻灯片中的69%相同,而这仅仅是通过简单的提示工程技术达成的。随后,他们采用简单的提示工程技术对GPT - 4进行模型精调,还简化了进入示例的模式。经过这样的模型精调与提示工程,其性能提升到接近82%,目前已接近行业的领先水平。

他们想强调的是,查看Spider排行榜的开发集就会发现,其中采用的技术极为复杂,有大量数据预处理和后处理工作,还常把边缘情况硬编码进评估模型的脚本。但在这里,这些复杂技术都未被使用。只是通过简单的模型精调与提示工程,并遵循最佳实践,就已经非常接近这个著名基准测试的行业领先水平了。这彰显了模型精调与RAG联用的巨大潜力。

若要解决问题并提升LLM性能,提示工程技术应是首选。其投入成本低,可快速迭代,能验证LLMs解决问题的可行性。持续迭代提示直至达到性能瓶颈,之后就需要分析所遇错误的类型了。若要给模型引入新知识或更多背景信息,可选择走RAG路径。要是模型在遵循指令方面不一致,或者需要遵循严格、新颖的输出结构,又或者想要更高效地与模型交互,那或许就该尝试模型精调了。需牢记,此过程并非线性的。要达成真正令人满意的精度,或许需多次迭代,且在优化时可能会在这些技术间反复跳跃。欢迎转载,转载时请注明出处:OpenAI如何优化LLM的效果 | Breezedeus.com,多谢。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号