尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
generative-ai-for-beginners 第 18 课:LLM 微调(Fine-Tuning)原理、决策框架与 OpenAI 实战全流程
generative-ai-for-beginners 第 18 课LLM 微调Fine-Tuning原理、决策框架与 OpenAI 实战全流程【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners本篇技术指南聚焦于生成式 AI 课程第 18 课「微调你的 LLM」。你将理解什么是语言模型微调、它在「提示工程 / RAG」之外的独特价值、何时应当启动微调的完整决策框架以及一套可复制的 OpenAI 微调实战流程从 JSONL 训练数据、文件上传、训练任务、事件追踪到模型 ID 提取与 Playground 对比验证。学完本篇你既能建立「是否微调」的工程判断力也能动手跑通一个真实微调任务。为什么需要微调从「改提示」到「重训模型」大型语言模型LLM本身是预训练pre-trained模型——它们在来自互联网等海量文本上完成训练。前序课程已经介绍了两类「不改动模型本身、只修改提示输入」来提升响应质量的技术提示工程Prompt Engineering通过指令显式引导或示例隐式引导来约束模型输出。检索增强生成RAG用检索到的数据对提示进行增强。其中一种流行的提示技巧是「少样本学习」few-shot learning——给模型若干示例指令或示例对来引导期望输出。但它有两个固有限制Token 上限限制模型上下文窗口有限能塞进提示的示例数量受限从而影响效果Token 成本限制每次请求都要附带示例会增加 token 开销并降低灵活性。微调fine-tuning正是针对这些痛点的第三种技术路线它不再修改提示而是用额外数据对模型本身进行再训练。在语言模型语境下我们用「面向特定任务或应用领域的精选示例集」来微调预训练模型产出一个定制模型custom model——它对特定任务/领域通常更准确、更相关。附带收益是微调后模型对少样本示例的依赖下降从而减少 token 使用与相关成本。说明上图是官方为该课绘制的学习路线插图覆盖七大环节——基础概念、为何微调Why Fine-Tune、流程与挑战数据收集/格式化/训练/评估/迭代/部署、数据准备、训练与评估、部署与使用、最佳实践。它可作为本文的总览导航。何时、为何应当微调一个可落地的决策框架本课程的「微调」特指监督式微调supervised fine-tuning——即通过加入不属于原始训练集的新数据来再训练模型。它与「无监督微调」不同后者是在原始数据上、用不同超参数重新训练。需要牢记微调是一项进阶技术需要一定专业水平才能拿到理想效果。如果操作不当它可能无法带来预期提升甚至降低模型在目标领域的表现。因此在学「怎么微调」之前先要回答「为什么」和「何时」开始。官方给出的自检清单如下使用场景Use Case你微调的用途是什么你希望改进当前预训练模型的哪个方面替代方案Alternatives你是否尝试过其他技术达到相同目标用它们建立对比基线。提示工程尝试 few-shot附相关提示/响应示例并评估响应质量。RAG尝试用检索到的查询结果增强提示并评估响应质量。成本Costs你识别出微调的成本了吗可微调性Tunability——目标预训练模型是否支持微调工作量Effort——准备训练数据、评估与迭代模型的人力成本。算力Compute——跑微调任务、部署微调模型所需的计算资源。数据Data——是否能获取足够数量、足够质量的示例来支撑微调效果。收益Benefits你确认了微调的收益吗质量Quality——微调模型是否胜过基线成本Cost——是否通过简化提示降低了 token 使用可扩展性Extensibility——能否把基座模型复用到新领域决策原则只有当收益大于成本时微调才是合理路线。理想情况下你应当先有基线提示工程/RAG再判断微调是否值得投入。微调一个预训练模型需要哪些要素官方将微调的「四要素」归纳为一个可供微调的预训练模型并非所有基座模型都支持微调需先确认一份用于微调的数据集精选的训练示例一个可运行微调任务的训练环境一个可部署微调模型的主机环境。对应到 OpenAI 平台的完整流程可拆解为四步准备训练数据并上传运行训练任务得到微调模型评估微调模型并迭代优化质量满意后部署微调模型用于推理。实战用仓库自带样例跑通一个 OpenAI 微调任务本仓库在 微调任务 Notebook 中提供了一个可参考的完整样例配套训练数据见 training-data.jsonl。它要训练一个聊天机器人「Elle」——用五行打油诗limerick回答元素周期表中某个元素的问题。这是一个刻意简化的「玩具样例」目的是快速演示流程而非真实生产数据集真实场景需要大得多的示例集质量与成本/时间之间的权衡。适用前提与重要提示该 Notebook 的示例输出是在gpt-3.5-turbo上生成的而gpt-3.5-turbo如今已同时退出推理与微调Azure OpenAI / OpenAI 均已弃用。若你现在要开启一个新微调任务请改用一个当前受支持的模型例如gpt-4o-mini或gpt-4.1-mini并以官方「可微调模型列表」为准。本文的流程与概念仍然适用。步骤一准备并上传训练数据针对gpt-3.5-turbo这类单轮single-turn聊天补全场景训练数据采用 JSONL 格式每行一条记录每条记录是一个 JSON 对象必须写在一行内不能像普通格式化 JSON 那样拆多行。样例中一条记录长这样来自 training-data.jsonl{ messages: [{role: system, content: Elle is a factual chatbot that answers questions about elements in the periodic table with a limerick}, {role: user, content: Tell me about Gallium}, {role: assistant, content: Gallium, oh gallium, so light - Melts in your hand, oh what a sight - At 86 degrees - Its liquid with ease - And in semiconductors, its out of sight}]} { messages: [{role: system, content: Elle is a factual chatbot that answers questions about elements in the periodic table with a limerick}, {role: user, content: Tell me about Hydrogen}, {role: assistant, content: Hydrogen, the first in the line - The lightest of all, so divine - Its in water, you see - And in stars, its the key - The universes most common sign}]}其中system定义助手人设Elle 用 limerick 回答元素问题user是问题assistant是期望输出格式。完整样例集共10 条元素示例Gallium、Hydrogen、Helium、Boron、Iron、Carbon、Cobalt、Titanium、Silver、Mercury。若期望多轮对话内容则应改用「多轮示例格式」其中包含一个weight参数用于标记哪些消息应或不应参与微调过程。本教程为简化起见采用单轮格式。上传前需满足两个前置条件来自 课程本地配置指南已安装openaiPython 包为获得最新特性使用版本 0.28.0已设置OPENAI_API_KEY环境变量为你的 API 密钥。随后用 Files API 上传本地 JSONL 文件from openai import OpenAI client OpenAI() ft_file client.files.create( fileopen(./training-data.jsonl, rb), purposefine-tune ) print(ft_file) print(Training File ID: ft_file.id)上传成功后会返回一个文件对象含id、filenametraining-data.jsonl、purposefine-tune、statusprocessed等字段记下其中的File ID供后续创建任务使用。步骤二创建并跟踪微调任务用fine_tuning.jobs.create创建任务传入训练文件 ID 与目标基座模型from openai import OpenAI client OpenAI() ft_filejob client.fine_tuning.jobs.create( training_fileft_file.id, modelgpt-3.5-turbo ) print(ft_filejob) print(Fine-tuning Job ID: ft_filejob.id)从返回的任务对象可观察到关键信息hyperparameters初始为全auton_epochs、batch_size、learning_rate_multiplier均由平台自动选择status初始为validating_files平台会先校验训练文件格式。client.fine_tuning.jobs提供一组常用操作便于管理与监控client.fine_tuning.jobs.list(limitn)—— 列出最近 n 个微调任务client.fine_tuning.jobs.retrieve(job_id)—— 获取某个任务的详情/状态client.fine_tuning.jobs.cancel(job_id)—— 取消一个任务client.fine_tuning.jobs.list_events(fine_tuning_job_idjob_id, limitb)—— 列出最多 n 条任务事件。轮询状态直到训练完成# 训练数据校验通过后跟踪任务状态 response client.fine_tuning.jobs.retrieve(ft_filejob.id) print(Job ID:, response.id) print(Status:, response.status) print(Trained Tokens:, response.trained_tokens)也可以以更细粒度方式通过「事件」跟踪进度反复刷新直到出现The job has successfully completed消息response client.fine_tuning.jobs.list_events(ft_filejob.id) events response.data events.reverse() for event in events: print(event.message)事件流会输出每一步的训练 loss如Step 85/100: training loss0.14…Step 100/100: training loss0.00、检查点创建信息如Checkpoint created at step 80 with Snapshot ID: ft:gpt-3.5-turbo-0125:...:ckpt-step-80最终以New fine-tuned model created: ft:gpt-3.5-turbo-0125:bitnbot::9OFWzNjz与The job has successfully completed收尾。在 OpenAI 控制台平台的Fine-tuning分区可可视化查看任务状态、历史运行、训练指标训练 token 数、epochs、batch size、LR multiplier、seed、checkpoints、训练 loss 曲线等。该截图同时展示了「上一次因 JSON 记录格式错误而失败、修正后第二次运行成功」的真实经历——这正说明了数据格式正确性是微调成败的关键之一。步骤三提取模型 ID 并验证微调效果任务完成后先从任务对象里取出微调模型的 IDresponse client.fine_tuning.jobs.retrieve(ft_filejob.id) fine_tuned_model_id response.fine_tuned_model print(Fine-tuned Model ID:, fine_tuned_model_id)随后有两种验证方式方式一在代码中直接调用。用微调后的模型 ID 发起补全请求from openai import OpenAI client OpenAI() completion client.responses.create( modelfine_tuned_model_id, input[ {role: system, content: You are Elle, a factual chatbot that answers questions about elements in the periodic table with a limerick}, {role: user, content: Tell me about Strontium}, ], storeFalse, ) print(completion.output_text)方式二在 Playground 中并排对比。在 Playground 的模型下拉框里选择新微调模型或直接在微调面板里点击「Playground」入口会进入一个对比视图comparitive view把基座模型与微调模型并排放置快速评估差异填入训练数据中使用的 system 上下文与测试问题两侧会自动填入相同的上下文与问题。运行对比后可以观察到微调模型按你示例中提供的格式limerick 结构渲染响应而基座模型只是泛泛地遵循 system 提示。同时对比视图还会给出每个模型的token 数与推理耗时。客观提醒与仓库说明一致这是一个用来演示流程的极简样例并不代表真实数据集或场景本例中两侧 token 数相同system 上下文与 user 提示一致而微调模型推理耗时反而更长自定义模型。在真实场景如面向客服的产品目录里要达到同等质量基座模型往往需要更复杂的提示工程从而增加 token 使用与潜在推理耗时——这正是微调「简化提示、降低成本」价值的体现。微调生态与工具选型除了仓库自带的 OpenAI 样例官方还梳理了多套可用于实际微调的提供商/工具它们覆盖不同技术栈与使用习惯OpenAI通过 Cookbook 的「如何微调聊天模型」示例用「食谱助手recipe assistant」这一特定领域做完整演练——准备训练数据、运行微调任务、用微调模型做推理。Azure OpenAI提供 GPT 系列微调教程涵盖创建并上传训练数据、运行微调任务、部署并使用新模型的完整链路支持门户 / Python SDK / 命令行 / REST。Hugging Face面向开源 LLM如CodeLlama 7B的微调使用transformers、TRLTransformer Reinforcement Learning与 Hugging Facedatasets库支持在 Hugging Face 上微调开放模型。AutoTrainAutoTrain AdvancedHugging Face 的 Python 库支持包括 LLM 微调在内的多种任务提供**无代码no-code**方案支持 Web GUI、CLI 以及基于 YAML 配置文件训练可部署在你自己的云、Hugging Face Spaces 或本地。Unsloth开源框架支持 LLM 微调与强化学习RL提供开箱即用的 notebook并支持文本转语音TTS、BERT 与多模态模型简化本地训练、评估与部署流程。选型建议若目标是托管闭源模型OpenAI / Azure OpenAI走平台 API JSONL 数据集路线若目标是开源/本地模型优先考虑 Hugging Face 生态TRL transformers或 AutoTrain / Unsloth 等降低门槛的工具。数据准备与训练评估的关键检查项结合该课插图指南与 RESOURCES 页的自我引导资料微调工程落地的核心检查点可以归纳为数据准备训练数据规模示例数量、示例格式依模型而定、数据表征广度 vs 质量、需求覆盖度质量。训练与评估上传训练数据 → 创建微调任务 → 监控任务状态 → 测试微调模型。部署与使用区域可用性约束条件、模型速率限制共享、在 Playground 中验证、集成到 SDK/应用。最佳实践拥有明确用例、先尝试其他替代方案、评估成本与收益、制定维护策略。其中「成本/数据准备/质量度量」三类官方参考资料尤其值得深入数据准备与分析格式校验、基本统计、token 估算以预估微调成本、连续微调continuous fine-tuning即把已微调模型作为新的基座继续微调、以及与函数调用function calling结合的微调可获得更准确、一致、格式统一且更省成本的输出。小结微调是继提示工程、RAG 之后的第三类「提升 LLM 输出质量」的技术其本质是用新数据重训模型本身以换取更强的任务/领域表现与潜在的 token 成本下降。落地时应遵循「先建基线提示工程/RAG→ 评估成本收益 → 再决定是否微调」的决策框架并严格把控数据格式正确性、训练质量评估与迭代、部署验证三个环节。本仓库的 微调任务 Notebook 与 样例数据集 提供了一个端到端、可参考的 OpenAI 微调实例配套延伸阅读见 RESOURCES。注意样例所基于的gpt-3.5-turbo已退出微调实际作业请改投当前受支持的模型并以官方可微调模型列表为准。【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

如何用 RAG-Anything 五步跑通多模态文档问答系统

如何用 RAG-Anything 五步跑通多模态文档问答系统

如何用 RAG-Anything 五步跑通多模态文档问答系统 【免费下载链接】RAG-Anything "RAG-Anything: All-in-One RAG Framework" 项目地址: https://gitcode.com/GitHub_Trending/ra/RAG-Anything 你被问到"三季度营收构成里各业务线占比多少"。相关内…

📅 2026/10/26 12:51:00
ML-For-Beginners NLP 入门:从图灵测试、Eliza 到写出第一个 Python 对话机器人

ML-For-Beginners NLP 入门:从图灵测试、Eliza 到写出第一个 Python 对话机器人

ML-For-Beginners NLP 入门:从图灵测试、Eliza 到写出第一个 Python 对话机器人 【免费下载链接】ML-For-Beginners 12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all 项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners …

📅 2026/9/11 21:17:38
Modbus-RTU转PROFINET智能网关实战:从GSD文件到数据联通的完整指南

Modbus-RTU转PROFINET智能网关实战:从GSD文件到数据联通的完整指南

简介:本资源为零点自动化Modbus-RTU转PROFINET智能网关配套GSD文件包,面向工业自动化系统集成工程师、PLC程序员及PROFINET网络调试人员,解决Modbus-RTU设备(如温控器、变频器、传感器)与西门子等主流PROFINET控制系统…

📅 2026/10/7 19:14:23
MORE NEWS

更多资讯

📰

OpenClaw平台大模型微调技能全解析与应用实践

1. OpenClaw平台与大模型微调技能概述OpenClaw作为新兴的大模型开发平台,正在AI开发者社区快速走红。这个被戏称为"小龙虾"的开源工具链,以其轻量化的架构和灵活的插件系统,成为本地部署和微调大模型的热门选择。与需要复杂配置的传…

📰

工厂大脑:制造业数字化转型的智能中枢系统

1. 工厂大脑的本质与价值定位 去年在长三角某汽车零部件企业调研时,他们的生产副总给我看了一组数据:每天产生2.4TB的生产数据,但实际用于决策的不足0.3%。这正是制造业数字化转型中最典型的"数据沉睡"现象。工厂大脑(F…

📰

MBA学生AI工具测评:战略分析、财务建模与市场研究精选

1. 项目概述:MBA学生如何应对AI时代的工具选择挑战 2026年MBA学生正面临前所未有的技术变革浪潮。作为在商学院执教多年的教育工作者,我亲眼目睹了AI工具如何重塑商业分析、战略决策和运营管理的每个环节。这份工具测评榜单不是简单的软件推荐&#xff0…

📰

视觉VLA系统盲区成因与多模态融合解决方案

1. 视觉VLA技术中的"盲区墙"现象解析 最近在计算机视觉领域,一个被称为"视觉VLA看不到的那堵墙"的现象引发了广泛讨论。作为从业多年的计算机视觉工程师,我想从技术角度剖析这个现象的成因、影响以及可能的解决方案。 视觉VLA&…

📰

微积分核心技巧:积分计算与极限方法实战指南

1. 积分技巧、极限计算与广义积分应用概述微积分作为数学分析的核心工具,在实际应用中常常需要面对各种复杂函数的积分与极限问题。本章将系统性地梳理三类关键技能:积分计算技巧、极限求解方法以及广义积分的实际应用场景。这些内容不仅是数学专业学生的…

📰

Java开发者转型大模型的优势与实践路线

1. 为什么Java开发者转型大模型具有天然优势作为拥有十五年全栈开发经验的Java老兵,我深刻理解Java工程师在转型大模型领域时的独特优势。很多人认为大模型是Python的天下,但我要告诉你:Java开发者积累的工程化思维和架构能力,恰恰…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬