微调所需算力的计算涉及多个因素,目前没有一个固定的通用公式。但以下是一些相关的要点和参考:
需要注意的是,不同的模型和具体的微调任务,其算力需求会有所不同。
本文的核心代码全部参考如下开源项目:[GitHub-datawhalechina/self-llm:《开源大模型食用指南》基于Linux环境快速部署开源大模型,更适合中国宝宝的部署教程](https://github.com/datawhalechina/self-llm/tree/master)[heading1]一、引言[content]大家好,我是大圣,一个致力于使用AI技术将自己打造为超级个体的程序员。作为一名程序员,我对大模型技术是非常向往的,但是因为是非科班出身,一直迟迟没有动手。在Llama3出来之后,我萌生了微调的想法,我的目的很简单,不是为了学习多么高深的知识,而是让自己先入门。入门最好的方式就是直接上手实操,这是也是之前的一系列教程中所强调的理念。由于市面上没有找到专门针对我们纯小白的教程,所以这篇教程就来啦!这篇教程的亮点教你如何购买算力,不再为本地电脑的配置不够而发愁手把手教你下载并部署Llama3模型,以前都是玩别人部署的,这次咱们玩自己的!)使用甄嬛数据集微调Llama3模型,并且针对微调后的模型进行实验了解微调的意义和概念但是这篇教程不会讲解微调的技术性原理以及文中会用到的Python代码。原因很简单,因为我是一位Java开发工程师,里面的代码我都是靠GPT4.0帮我读的另外这篇教程需要你充值50块钱,不过不是给我哦,是购买算力的预充值。我不想因为50块钱把你劝退,所以这里我要多说一句,免费的才是最贵的。看完我的教程,你绝对会认为这50块钱花的很值OK,都交代清楚,大家按照决定是否要继续享用,废话不多少,我们直接开始
12:29即使您确实为您的用例发现了一个好的提示,您可能会注意到模型响应的质量并不完全一致。为了缓解这些问题,我们可以做的一件事是调整模型。12:40那么调音是什么?好吧,您可能熟悉的一个版本是微调。在这种情况下,我们采用在通用数据集上预训练的模型。我们复制了这个模型。12:51然后,以这些学习到的权重为起点,我们在新的特定领域数据集上重新训练模型。这种技术对于许多不同的用例都非常有效。13:01但是当我们尝试微调LLM时,我们遇到了一些挑战。顾名思义,法学硕士是大型的。因此更新每个权重可能需要很长时间的训练工作。13:12将所有这些计算与现在必须为这个巨大模型提供服务的麻烦和成本相结合……因此,微调大型语言模型可能不是您的最佳选择。13:21但是有一种创新的调优方法称为参数有效调优。这是一个非常令人兴奋的研究领域,旨在通过仅训练一部分参数来减少微调LLM的挑战。13:34这些参数可能是现有模型参数的子集。或者它们可以是一组全新的参数。例如,也许您向模型添加了一些额外的层或额外的嵌入13:45到提示。如果您想了解更多关于参数有效调整和一些不同方法的信息,本课程的阅读列表中包含一篇摘要论文。13:53但如果您只想着手构建,那么让我们转到Generative AI Studio,看看如何开始调优工作。从Generative AI Studio的语言部分,14:02选择调整。为了创建一个调整模型,我们提供了一个名称。然后指向训练数据的本地或Cloud Storage位置。参数有效调整非常适合您拥有“适度”数量的场景14:14训练数据,例如数百或数千个训练示例。您的训练数据应以文本到文本格式构建为受监督的训练数据集。数据中的每条记录或行都将包含输入文本,换句话说,提示,
我们选择了适用于一系列用例的默认超参数。唯一需要的参数是训练文件。也就是说,调整用于微调的超参数通常可以产生产生更高质量输出的模型。特别是,您可能需要配置以下内容:model:要微调的基本模型的名称。您可以选择“ada”、“babbage”、“curie”或“davinci”之一。要了解有关这些模型的更多信息,请参阅[模型](https://ywh1bkansf.feishu.cn/wiki/R70MwasSpik2tgkCr7dc9eTmn0o)文档。n_epochs-默认为4。训练模型的时期数。一个纪元指的是训练数据集的一个完整周期。batch_size-默认为训练集中示例数量的0.2%,上限为256。批量大小是用于训练单个正向和反向传递的训练示例数。总的来说,我们发现更大的批次大小往往更适用于更大的数据集。learning_rate_multiplier-默认为0.05、0.1或0.2,具体取决于final batch_size。微调学习率是用于预训练的原始学习率乘以该乘数。我们建议使用0.02到0.2范围内的值进行试验,以查看产生最佳结果的值。根据经验,我们发现较大的学习率通常在较大的批量大小下表现更好。compute_classification_metrics-默认为假。如果为True,为了对分类任务进行微调,在每个epoch结束时在验证集上计算特定于分类的指标(准确性、F-1分数等)。要配置这些额外的超参数,请通过OpenAI CLI上的命令行标志传递它们,例如: