大模型微调是在较小的、特定领域的数据集上继续大模型的训练过程,具有重要意义和多种方式:
意义:
方式:
此外,通俗来讲,大模型是输入大量语料,让计算机获得类似人类的“思考”能力,能进行文本生成、推理问答、对话、文档摘要等工作。大模型的训练、使用过程可类比上学参加工作:找学校(需要大量 GPU 进行训练)、确定教材(需要大量数据)、找老师(选择合适算法)、就业指导(即微调)、搬砖(推导)。在 LLM 中,Token 被视为模型处理和生成的文本单位,会对输入进行分词并数字化形成词汇表。
OpenAI 官方微调教程:https://github.com/openai/openai-cookbook/blob/main/examples/How_to_finetune_chat_models.ipynb
通俗来讲,大模型就是输入大量语料,来让计算机获得类似人类的“思考”能力,使之能够理解自然语言,能够进行『文本生成』、『推理问答』、『对话』、『文档摘要』等工作。既然是学习,那我们就可以用『上学参加工作』这件事来类比大模型的训练、使用过程: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||…|…|
参数规模的角度,大模型的微调分成两条技术路线:全量微调FFT(Full Fine Tuning):对全量的模型参数,进行全量的训练。PEFT(Parameter-Efficient Fine Tuning):只对部分模型参数进行训练。从成本和效果的角度综合考虑,PEFT是目前业界比较流行的微调方案。OpenAI官方微调教程:[https://github.com/openai/openai-cookbook/blob/main/examples/How_to_finetune_chat_models.ipynb](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_finetune_chat_models.ipynb)微调是在较小的、特定领域的数据集上继续LLM的训练过程。这可以通过调整模型本身的参数,而不是像提示工程和RAG那样仅仅更改提示,来大幅提高模型在特定任务中的性能。把微调想象成把通用工具打磨成精密仪器。微调有两大好处:提高模型在特定任务中的性能。微调意味着你可以输入更多的示例。您可以在数以百万计的代币上进行微调,而根据上下文的大小,少量学习提示仅限于数以万计的代币。经过微调的模型可能会失去一些通用性,但对于其特定任务而言,您应该期待它有更好的表现。提高模型效率。LLM应用程序的效率意味着更低的延迟和更低的成本。实现这一优势有两种方法。通过专门化模型,您可以使用更小的模型。此外,由于只对输入输出对进行训练,而不是对完整的提示及其任何提示工程技巧和提示进行训练,因此可以舍弃示例或指令。这可以进一步改善延迟和成本。
大模型微调的意义在于学习新的知识,因此我们需要使用一份叫做数据集的东西。数据集就是用来让大模型重新学习的知识数据集的获取以及简单的原理可以参考文档:[self-llm/LLaMA3/04-LLaMA3-8B-Instruct Lora微调。md at master · datawhalechina/self-llm](https://github.com/datawhalechina/self-llm/blob/master/LLaMA3/04-LLaMA3-8B-Instruct%20Lora%20%E5%BE%AE%E8%B0%83.md)数据集:json下载地址:[https://github.com/datawhalechina/self-llm/blob/master/dataset/huanhuan.json](https://github.com/datawhalechina/self-llm/blob/master/dataset/huanhuan.json)[huanhuan.json](https://bytedance.feishu.cn/space/api/box/stream/download/all/R73db8mk5o7bNix4semcdsMAnAe?allow_redirect=1)[heading3]进行微调[content]有了数据集,就可以使用代码进行微调了。1.首先我们把数据集上传到你的服务器1.编写微调代码代码如下:1.执行微调代码1.微调完成大概15分钟左右就可以微调完成