Navigate to WaytoAGI Wiki →
Home/Question List/Question Detail

微调是什么意思

Answer

微调(Fine-tuning)是一种迁移学习技术,常用于深度学习中。其基本思路是:先有一个在大量数据上预训练过的模型,该模型已学会一些基本模式和结构(如自然语言处理中学会基本语法和单词语义,图像识别中学会基本形状和纹理)。然后,在特定任务数据上继续训练这个模型,使其适应新的任务。

以下是两个例子帮助理解:

  1. 情感分类:先使用大量语料库预训练模型,使其学会基本语法和单词语义。再收集标注过的电影评论(一部分积极,一部分消极),在这些评论上继续训练模型,使其学会判断评论情感。
  2. 图像分类:先使用大量图片(如 ImageNet 数据集)预训练模型,使其学会识别图片中的基本形状和纹理。再收集标注过的图片(一部分是猫,一部分是狗),在这些图片上继续训练模型,使其学会区分猫和狗。

微调在 LLM 应用中,是在已经训练好的模型基础上进一步调整,让模型的输出更符合预期。Finetune、Fine-tuning 是常用的英文写法。微调是在较小的、针对特定任务的标注数据集上进一步训练已经预训练过的 LLM 的过程,可调整部分模型参数以优化其在特定任务或任务集上的性能。

微调可让您从 API 提供的模型中获得更多收益,如比即时设计更高质量的结果、能够训练比提示中更多的例子、由于更短的提示而节省 Token、更低的延迟请求。GPT-3 已在大量文本上预训练,微调通过训练比提示中更多的示例来改进小样本学习,让您在大量任务中取得更好的结果。对模型进行微调后,您将不再需要在提示中提供示例,这样可以节省成本并实现更低延迟的请求。

微调涉及以下步骤:

  1. 准备和上传训练数据。
  2. 训练新的微调模型。
  3. 使用您的微调模型。

微调目前仅适用于以下基础模型:davinci、curie、babbage 和 ada。这些是原始模型,在训练后没有任何说明(例如 text-davinci-003)。您还可以继续微调微调模型以添加其他数据,而无需从头开始。建议使用 OpenAI 命令行界面(CLI),安装时需注意相关要求。

Content generated by AI large model, please carefully verify (powered by aily)

References

什么是Fine-tuning

"Fine-tuning",也叫做微调,是一种迁移学习技术,常用于深度学习中。这种方法的基本思路是:首先,我们有一个预训练的模型,这个模型已经在大量的数据上训练过,已经学会了一些基本的模式和结构(比如在自然语言处理任务中,预训练模型可能已经学会了基本的语法和单词的语义)。然后,我们再在特定的任务数据上继续训练这个模型,使其适应新的任务,这就是所谓的"fine-tuning"。下面是两个例子,希望能帮助你更好地理解这个概念:例子1:情感分类假设我们正在构建一个模型,用于判断电影评论是积极的还是消极的。我们可以先使用大量的语料库(比如维基百科)预训练一个模型,使其学会基本的语法和单词的语义。然后,我们收集一些标注过的电影评论,其中一部分评论是积极的,一部分评论是消极的。我们再在这些评论上继续训练模型,使其学会判断评论的情感。这就是一个fine-tuning的过程。例子2:图像分类假设我们正在构建一个模型,用于识别猫和狗的图片。我们可以先使用大量的图片(比如ImageNet数据集)预训练一个模型,使其学会识别图片中的基本形状和纹理。然后,我们收集一些标注过的图片,其中一部分图片是猫,一部分图片是狗。我们再在这些图片上继续训练模型,使其学会区分猫和狗。这也是一个fine-tuning的过程。这两个例子都展示了fine-tuning的基本步骤:首先在大量的数据上预训练一个模型,然后在特定的任务数据上继续训练模型。这种方法的优点是可以利用预训练模型学到的知识,提高模型在特定任务上的性能。

3. 如何让 LLM 应用性能登峰造极

微调(Fine-tuning)是指在已经训练好的模型基础上,进一步调整,让你模型的输出能够更符合你的预期。Finetune,Fine-tuning是两种常用的英文写法,请大家注意(看到太多人写错读错了,作为强迫症实在忍不了)。微调是我们在一个较小的、针对特定任务的标注数据集上进一步训练已经预训练过的LLM的过程。通过这种方式,我们可以调整部分模型参数,以优化其在特定任务或任务集上的性能。在全面微调过程中,所有模型参数都会更新,这与预训练过程类似,只不过是在标注的、小得多的数据集上进行的。想象你有一个大学生朋友,经过了一学期轻松愉快的大学生活之后,2天后他即将迎来一次考试,幸好和蔼可亲的老师为同学们划了考试重点,因此他在剩下的两天时间内要尽力把这些考试重点学进脑子里去,提高他在该科的考试成绩。借助上面这个例子,可以简单理解为,微调就是一种让大模型(脑子)在特定任务(考试重点)上进一步训练(学习记忆),以加强性能(考试表现)的方式。这种方法和前面两种都不一样,涉及到对模型参数的调整,难度最大,成本最高。推荐阅读:

微调(Fine-tuning)

了解如何为您的应用程序定制模型。[heading2]介绍[content]通过提供以下内容,微调可让您从API提供的模型中获得更多收益:1.比即时设计更高质量的结果2.能够训练比提示中更多的例子3.由于更短的提示而节省了Token4.更低的延迟请求GPT-3已经在来自开放互联网的大量文本上进行了预训练。当给出仅包含几个示例的提示时,它通常可以凭直觉判断出您要执行的任务并生成合理的完成。这通常称为“小样本学习”。微调通过训练比提示中更多的示例来改进小样本学习,让您在大量任务中取得更好的结果。对模型进行微调后,您将不再需要在提示中提供示例。这样可以节省成本并实现更低延迟的请求。在高层次上,微调涉及以下步骤:1.准备和上传训练数据2.训练新的微调模型3.使用您的微调模型[heading2]哪些模型可以微调?[content]微调目前仅适用于以下基础模型:davinci、curie、babbage和ada。这些是原始模型,在训练后没有任何说明(例如text-davinci-003)。您还可以继续微调微调模型以添加其他数据,而无需从头开始。[heading2]安装[content]我们建议使用我们的OpenAI命令行界面(CLI)。要安装这个,运行(以下说明适用于0.9.4及更高版本。此外,OpenAI CLI需要python 3。)OPENAI_API_KEY通过将以下行添加到您的shell初始化脚本(例如.bashrc、zshrc等)或在微调命令之前的命令行中运行它来设置您的环境变量:

Others are asking
微调
微调(Finetuning)是一种迁移学习技术,常用于深度学习中。其基本思路是先有一个在大量数据上预训练过的模型,该模型已学会一些基本模式和结构,然后在特定任务数据上继续训练,使其适应新任务。 例如在情感分类中,可先使用大量语料库预训练模型学会基本语法和单词语义,再用标注过的电影评论继续训练以判断情感。在图像分类中,先使用大量图片预训练模型学会识别基本形状和纹理,再用标注的猫和狗图片继续训练以区分二者。 创建微调模型时,假设已准备好训练数据,可使用 OpenAI CLI 开始微调工作。需确定从哪个基本模型(如 ada、babbage、curie 或 davinci)开始,并可使用后缀参数自定义微调模型名称。运行命令会上传文件、创建微调作业、流式传输事件直至作业完成。每个微调工作默认从 curie 模型开始,模型选择会影响性能和成本。作业开始后可能需几分钟或几小时完成,若事件流中断可恢复。此外,还可列出现有作业、检索作业状态或取消作业。 微调的超参数方面,选择了适用于一系列用例的默认超参数,唯一需要的参数是训练文件。但调整超参数通常可产生更高质量输出的模型,可能需配置的内容包括:要微调的基本模型名称(如“ada”“babbage”“curie”“davinci”);训练模型的时期数(n_epochs,默认为 4);批量大小(batch_size,默认为训练集中示例数量的 0.2%,上限为 256);微调学习率乘数(learning_rate_multiplier,默认为 0.05、0.1 或 0.2);是否计算分类指标(compute_classification_metrics,默认为假)。配置这些超参数可通过 OpenAI CLI 上的命令行标志传递。
2025-01-11
如何微调大模型
微调大模型主要包括以下几个方面: 1. 理解大模型:大模型是通过输入大量语料,让计算机获得类似人类的“思考”能力,能够进行文本生成、推理问答、对话、文档摘要等工作。可以用“上学参加工作”来类比大模型的训练和使用过程,包括找学校(需要大量 GPU 进行训练)、确定教材(需要大量数据)、找老师(选择合适算法)、就业指导(微调)和搬砖(推导)。 2. 准备数据集:数据集是让大模型重新学习的知识。例如,对于 Llama3 的微调,可以参考相关文档获取和了解数据集,如下载数据集。 3. 选择微调方式:从参数规模的角度,大模型的微调分成两条技术路线,全量微调 FFT(Full Fine Tuning)对全量的模型参数进行全量训练,PEFT(ParameterEfficient Fine Tuning)只对部分模型参数进行训练。从成本和效果综合考虑,PEFT 是目前业界较流行的微调方案。 4. 进行微调操作:有了数据集后,将其上传到服务器,编写微调代码并执行,大概 15 分钟左右可完成微调。 5. 参考资源:OpenAI 官方微调教程 。 微调的好处包括提高模型在特定任务中的性能和提高模型效率。经过微调的模型可能会失去一些通用性,但对于特定任务会有更好的表现,同时还能实现更低的延迟和成本。
2025-01-10
微调和增量训练的区别
微调和增量训练是在人工智能领域中用于改进模型性能的两种不同方法,它们有以下区别: 微调: 参数调整范围:分为全量微调(FFT)和参数高效微调(PEFT)。全量微调对全量的模型参数进行全量训练,PEFT 则只对部分模型参数进行训练。 数据使用:在较小的、特定领域的数据集上继续大语言模型(LLM)的训练过程,通过调整模型本身的参数来提高在特定任务中的性能。 效果和优势: 能大幅提高模型在特定任务中的性能,因为可以输入更多示例。 提高模型效率,可通过专门化模型使用更小的模型,且由于只对输入输出对进行训练,能舍弃示例或指令,进一步改善延迟和降低成本。 但经过微调的模型可能会失去一些通用性。 增量训练:文中未明确提及增量训练的相关内容。 总的来说,微调是一种针对特定任务和数据集对模型参数进行调整的有效方法,而增量训练的具体特点和与微调的详细对比在提供的内容中未充分阐述。
2025-01-07
训练以及部署微调模型
以下是关于训练以及部署微调模型的相关信息: 创建微调模型: 假设您已准备好训练数据。使用 OpenAI CLI 开始微调工作,需指定从哪个 BASE_MODEL(如 ada、babbage、curie 或 davinci)开始,可使用后缀参数自定义微调模型的名称。运行命令后会进行以下操作: 1. 使用文件 API 上传文件(或使用已上传的文件)。 2. 创建微调作业。 3. 流式传输事件直到作业完成,这通常需要几分钟,但如果队列中有很多作业或数据集很大,可能需要数小时。 每个微调工作都从默认为 curie 的基本模型开始,模型的选择会影响性能和成本。您的模型可以是 ada、babbage、curie 或 davinci,可访问定价页面了解微调费率的详细信息。 开始微调作业后,可能需要一些时间才能完成。工作可能排在其他工作之后,训练模型可能需要几分钟或几小时,具体取决于模型和数据集的大小。若事件流中断,可通过运行特定命令恢复。工作完成后,会显示微调模型的名称。此外,还可以列出现有作业、检索作业状态或取消作业。 GPT 助手的训练: 在有监督的微调阶段,收集少量但高质量的数据集,要求人工承包商收集提示和理想响应的数据,通常是几万个或类似数量。然后对这些数据进行语言建模,算法不变,只是训练集从互联网文档变为问答提示响应类型的数据。训练后得到有监督的微调模型(SFT 模型),可实际部署。 大型语言模型的微调: 一旦有了基础模型,进入计算成本相对较低的微调阶段。编写标签说明,明确助手的表现期望,雇佣人员创建文档,如收集 100,000 个高质量的理想问答对来微调基础模型,此过程可能只需一天。然后进行大量评估,部署模型并监控表现,收集不当行为实例并纠正,将正确答案加入训练数据,重复此过程。由于微调成本较低,可每周或每天进行迭代。 例如 Llama2 系列,Meta 发布时包括基础模型和助手模型。基础模型不能直接使用,助手模型可直接用于回答问题。若想自己微调,Meta 完成的昂贵的第一阶段结果可提供很大自由。
2025-01-06
全量微调与少量参数微调
在参数规模的角度,大模型的微调分为全量微调(FFT,Full Fine Tuning)和少量参数微调(PEFT,ParameterEfficient Fine Tuning)两条技术路线。 全量微调是对全量的模型参数进行全量的训练。少量参数微调则只对部分模型参数进行训练。从成本和效果的综合考虑,PEFT 是目前业界较流行的微调方案。 微调是在较小的、特定领域的数据集上继续 LLM 的训练过程,通过调整模型本身的参数,而非像提示工程和 RAG 那样仅更改提示,能大幅提高模型在特定任务中的性能。微调有两大好处:一是提高模型在特定任务中的性能,可输入更多示例,经过微调的模型可能会失去一些通用性,但对于特定任务会有更好表现;二是提高模型效率,实现更低的延迟和成本,可通过专门化模型使用更小的模型,且只对输入输出对进行训练,舍弃示例或指令进一步改善延迟和成本。 关于微调的具体实现,LoRA 微调脚本见:。 在微调的超参数方面,选择了适用于一系列用例的默认超参数,唯一需要的参数是训练文件。调整超参数通常可产生更高质量输出的模型,可能需要配置的内容包括:model(要微调的基本模型的名称,可选择“ada”“babbage”“curie”或“davinci”之一)、n_epochs(默认为 4,训练模型的时期数)、batch_size(默认为训练集中示例数量的 0.2%,上限为 256)、learning_rate_multiplier(默认为 0.05、0.1 或 0.2,具体取决于 final batch_size)、compute_classification_metrics(默认为假,若为 True,为对分类任务进行微调,在每个 epoch 结束时在验证集上计算特定于分类的指标)。要配置这些额外的超参数,可通过 OpenAI CLI 上的命令行标志传递。 OpenAI 官方微调教程:
2025-01-06
微调训练框架的选择
以下是关于微调训练框架选择的相关内容: 在 Stable Diffusion 中: 首先,config 文件夹中有两个配置文件 config_file.toml 和 sample_prompt.toml,分别存储着训练超参数与训练中的验证 prompt。 config_file.toml 文件主要包含了 model_arguments、optimizer_arguments、dataset_arguments、training_arguments、sample_prompt_arguments 以及 saving_arguments 六个维度的参数信息。 v2 和 v_parameterization:两者同时设置为 true 时,开启 Stable Diffusion V2 版本的训练。 pretrained_model_name_or_path:读取本地 Stable Diffusion 预训练模型用于微调训练。 optimizer_type:有七种优化器可以选择。不进行选择时默认启动 AdamW 优化器;显存不太充足时,可选择 AdamW8bit 优化器,但会有轻微性能损失;Lion 优化器是较新的版本,性能优异,但学习率需设置较小,比如为 AdamW 优化器下的 1/3。 learning_rate:单卡推荐设置 2e6,多卡推荐设置 1e7。 除了上述的训练环境参数传入,还需将配置好的 config_file.toml 和 sample_prompt.txt 参数传入训练脚本中。 当设置 1024 分辨率+FP16 精度+xformers 加速时,SD 模型进行 Batch Size=1 的微调训练需要约 17.1G 的显存,进行 Batch Size=4 的微调训练需要约 26.7G 的显存,所以最好配置一个 24G 以上的显卡。 微调训练完成后,模型权重会保存在之前设置的 output_dir 路径下。可以使用 Stable Diffusion WebUI 作为框架加载模型进行 AI 绘画,需将训练好的模型放入/models/Stablediffusion 文件夹下。 在 OpenAI 中: 使用 OpenAI CLI 开始微调工作,需指定从哪个 BASE_MODEL 开始(ada、babbage、curie 或 davinci),还可使用后缀参数自定义微调模型的名称。 运行命令后会上传文件、创建微调作业并流式传输事件直到作业完成。 每个微调工作都从一个默认为 curie 的基本模型开始,模型的选择会影响性能和成本。 开始微调作业后,可能需要几分钟或几小时才能完成,工作完成后会显示微调模型的名称。此外,还可以列出现有作业、检索作业状态或取消作业。
2025-01-06
RAG是什么意思
RAG 即检索增强生成(RetrievalAugmented Generation),是一种结合检索和生成能力的自然语言处理架构。 其旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。通过检索的模式,为大语言模型的生成提供帮助,使大模型生成的答案更符合要求。 大模型需要 RAG 进行检索优化,是因为大模型存在一些缺点,如: 1. 无法记住所有知识,尤其是长尾的。受限于训练数据和现有的学习方式,对长尾知识的接受能力不高。 2. 知识容易过时,且不好更新。微调模型的接受能力不高且慢,甚至有丢失原有知识的风险。 3. 输出难以解释和验证。最终输出的内容黑盒且不可控,可能受到幻觉等问题的干扰。 4. 容易泄露隐私训练数据。用用户个人信息训练模型,会让模型可以通过诱导泄露用户的隐私。 5. 规模大,训练和运行的成本都很大。 而 RAG 具有以下优点: 1. 数据库对数据的存储和更新稳定,不像模型会存在学不会的风险。 2. 数据库的数据更新敏捷,增删改查可解释,对原有的知识不会有影响。 3. 数据库的内容明确、结构化,加上模型本身的理解能力,一般而言数据库中的内容以及检索算法不出错,大模型的输出出错的可能就大大降低。 4. 知识库中存储用户数据,为用户隐私数据的管控带来很大的便利,而且可控、稳定、准确。 5. 数据库维护起来,可以降低大模型的训练成本,新知识存储在数据库即可,不用频繁更新模型。 RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt(提示词)中,提交给大模型,此时大模型的回答就会充分考虑到“包含答案的内容”。其最常见应用场景是知识问答系统。 LangChain 是一个用于构建高级语言模型应用程序的框架,它提供了一系列的工具和组件,使得开发人员能够更容易地使用大型语言模型(LLM)来创建各种应用程序。LangChain 和 RAG 的关系包括: 1. LangChain 作为框架,提供了实现 RAG 所必需的工具和组件,RAG 作为技术可在 LangChain 框架内得以实施和利用。 2. LangChain 允许开发者通过其模块化组件来构建 RAG 应用程序。 3. LangChain 通过提供现成的链和提示模板,简化了 RAG 应用程序的开发过程。 4. 利用 LangChain 实现 RAG 可以帮助开发者创建更高效、更准确的应用程序。 5. LangChain 通过其丰富的 API 和组件库,支持开发者构建复杂的 RAG 应用,如智能问答系统、内容推荐引擎等。
2025-01-10
AGI是什么意思
AGI 即 artificial general intelligence,意为通用人工智能。它指的是能够做任何人类可以做的事的人工智能。 在 AI 领域,AI 分为 ANI 和 AGI,ANI(artificial narrow intelligence,弱人工智能)只可做一件事,如智能音箱、网站搜索、自动驾驶、工厂与农场的应用等,而 AGI 则涵盖了广泛的认知技能和能力,包括推理、规划、解决问题、抽象思维、理解复杂思想、快速学习和从经验中学习等。 在 1990 年代末至 2000 年代,越来越多的人呼吁开发更普适的 AI 系统,名词“通用人工智能”(AGI)在 2000 年代初流行起来,以强调从“狭义 AI”到更广泛的智能概念的追求。我们使用 AGI 来指代符合 1994 年定义所捕捉到的智能广泛能力的系统,且包括了这些能力在或超过人类水平的附加要求。然而,目前并没有一个被广泛接受的 AGI 定义。
2025-01-10
AGI 是什么意思
AGI 是 artificial general intelligence 的缩写,意思是通用人工智能,即能够做任何人类可以做的事。目前 AI 分为 ANI 和 AGI,ANI(artificial narrow intelligence 弱人工智能)得到了巨大发展,可应用于智能音箱、网站搜索、自动驾驶、工厂与农场等领域,但 AGI 还未取得巨大进展。在生成式 AI 的发展中,也对 AGI 有所展望,期待其成为技术发展的下一个阶段。同时,Web3 和人工智能初创公司 AGII 获得了 1500 万美元融资,AGII 是一个 AI 驱动的平台,能为用户提供多种生成内容的功能。
2025-01-08
SOTA是什么意思?
SOTA 是“State Of The Art”的缩写,意思是“最先进的”“当前最佳水平”。 在 AI 领域中,例如在多模态的研究中,(c)类方法虽然是 SOTA,但很多想法都受到(d)类的代表作 ViLT 启发。ViLT 把 VE 彻底换成简单的 patch projection 模块,借鉴了 ViT 的思维,其出发点是对视觉数据处理方式的创新。 以往的许多研究通过使用各种方法对视频数据进行生成建模,包括循环网络、生成对抗网络、自回归变换器和扩散模型。但这些工作通常存在一些局限性,而 Sora 作为一个视觉数据的通用模型,可以生成持续时间、纵横比和分辨率各异的视频和图像,长达一分钟的高清视频。
2025-01-07
GPT是什么意思
GPT 是“生成式预训练变换器”(Generative Pretrained Transformer)的缩写,是一种大型语言模型(LLM),也是生成式人工智能的重要框架。 首个 GPT 由 OpenAI 于 2018 年推出。GPT 模型是基于 Transformer 模型的人工神经网络,在大型未标记文本数据集上进行预训练,并能够生成类似于人类自然语言的文本。 截至 2023 年,大多数 LLM 都具备这些特征,并广泛被称为 GPT。而所谓的生成式预训练,其实是机器学习领域一个由来已久的概念。 2018 年,OpenAI 发表了一篇名为《通过生成式预训练提高语言理解能力》的文章,首次介绍了基于转换器的生成式预训练模型(GPT)系统,即我们所说的“GPT1”。 ChatGPT 是一种基于 GPT 架构的人工智能模型,由 OpenAI 开发。它是一种自然语言处理(NLP)工具,能够理解和生成接近人类水平的文本。目前 ChatGPT 官网有 GPT3.5 和 GPT4 两个版本。
2025-01-07
API是什么意思
API 就像是一个信差,它接受一端的请求,告诉那边的系统您想要做的事情,然后把返回的信息发回给您。 以搜索“奥本海默”电影为例,在这个过程中,通过特定的网址(如 https://www.themoviedb.org/search?query=奥本海默 ),其中域名(www.themoviedb.org)指定了网站的位置,路径(/search)指定了特定页面的位置,而 query(奥本海默)则是查询参数。 在 GPT 中,它可以通过预先配置的 Action 里的 TMDB API 获取电影相关的专有信息。当您询问“奥本海默”这部电影讲了什么时,GPT 会识别您的意图,使用 Action 去 The Movie DB 寻找相关数据,处理并返回最终结果。 配置一个 Action 通常需要:Schema(相当于操作手册,告诉它可以去哪、干什么、需要准备什么)、Available actions(可用行动)、Authentication(认证)、Privacy policy(隐私政策)。但 Schema 的结构可能涉及前端工程师相关领域的知识。 如果您对 Action 很感兴趣,可以从系统学习 API 相关知识、寻找可用的 API 练习、发掘 GPT Action 更多潜力等方向继续深入。
2025-01-07