以下是关于调优大模型的一些方法:
开发:产品视角的大模型RAG应用[heading1]调优实践[content]基于以上的分析,我们先选取了实现成本最小的方式进行调优,结果如下:1、更换大模型:从ChatGLM2-6B替换成baichuan2-13b,发现针对我们的场景,后者的性能可以提升一倍左右。2、更换embedding模型:将embedding模型从LangChain Chatchat默认的m3e-base替换为bge-large-zh,发现后者优于前者3、测试不同Top k的值:比较Top 5、Top 10、Top 15的结果,发现Top 10时效果最优。4、对文档名称进行处理:由于原来的政策文件,在导出时文件名会进行简化,如too_long_发展行动方案。因此,人工对文件进行重命名,上传相同文件构建知识库,同时在构建知识库时勾选【开启中文标题加强】选项,发现重命名文件对结果的提升效果不明显,但勾选【开启中文标题加强】选项后,回答的无关信息减少,效果有所提升。目前来看,尽管效果有所提升,但仍未达到可用水平,后续我们也将尝试其他的调优策略。
开发:产品视角的大模型RAG应用[heading1]如何调优[heading3]5、Prompt阶段[content]匹配出与问句向量最相似的top k个chunk之后,会将匹配出的文本和问句,一起添加到配置好的prompt中,提交给LLM。在这个阶段,可能需要一定的prompt工程,选择最合适的prompt模板。根据论文《Lost in the Middle:How Language Models Use Long Contexts》,大模型对上下文中间位置的知识点提取较差,因此在prompt中,把query放到头部和尾部,同时根据相似度,把相似度大的文档放到context的两端,能提升回答效果。[heading3]6、LLM生成答案[content]prompt提交给LLM后,LLM将生成回答,返回给用户。此时最大的影响因素就是大语言模型本身的性能。选择大模型时,也需要在成本和收益之间找到最佳平衡点,有些场景可能不需要最好的大模型,就可以实现还不错的效果。有条件的还可以对模型进行微调,使模型能力更加匹配自身的场景。
通俗来讲,大模型就是输入大量语料,来让计算机获得类似人类的“思考”能力,使之能够理解自然语言,能够进行『文本生成』、『推理问答』、『对话』、『文档摘要』等工作。既然是学习,那我们就可以用『上学参加工作』这件事来类比大模型的训练、使用过程:1.找学校::训练LLM需要大量的计算,因此GPU更合适,因此只有购买得起大量GPU的贵族学校才有资本训练自己的大模型2.确定教材::大模型顾名思义就是大,需要的数据量特别多,几千亿序列(Token)的输入基本是标配3.找老师::即用什么样的算法讲述“书本”中的内容,让大模型能够更好理解Token之间的关系4.就业指导::学完书本中的知识后,为了让大模型能够更好胜任某一行业,需要进行微调(fine tuning)指导5.搬砖::就业指导完成后,下面就要正式干活了,比如进行一次翻译、问答等,在大模型里称之为推导(infer)在LLM中,Token([2])被视为模型处理和生成的文本单位。它们可以代表单个字符、单词、子单词,甚至更大的语言单位,具体取决于所使用的分词方法(Tokenization)。Token是原始文本数据与LLM可以使用的数字表示之间的桥梁。在将输入进行分词时,会对其进行数字化,形成一个词汇表(Vocabulary),比如:The cat sat on the mat,会被分割成“The”、“cat”、“sat”等的同时,会生成下面的词汇表:|Token|ID||-|-||The|345||cat|1256||sat|1726||…|…|