拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Generative AI for Beginners 第 18 课实战:深入理解与落地大语言模型微调(Fine-Tuning)

Generative AI for Beginners 第 18 课实战深入理解与落地大语言模型微调Fine-Tuning【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners大语言模型LLM虽已在海量互联网文本上完成预训练但要让它在特定领域、特定输出格式下稳定生成高质量内容仅靠提示工程与检索增强生成往往力不从心。本课对应本仓库18-fine-tuning目录引入与修改输入截然不同的第三条路径——微调fine-tuning即用额外数据对模型本身进行再训练。读完本文你将掌握微调的核心原理与监督式微调的工作机制、一套何时该微调、何时不该微调的决策框架并能跟随仓库内的 OpenAI 微调 Notebook 实战流程完成从数据准备、任务提交、进度跟踪到部署推理的全过程。图片说明本课官方手绘示意导图从微调的核心概念与动机出发一路覆盖微调任务的执行流程与最佳实践适合通读全课前后对照使用。为什么前两种改输入的手段有天花板要判断微调的价值先要理解它要解决的问题。构造一个高质量回复有两类常见手段但它们都作用在提示词输入这一层提示工程Prompt Engineering通过在提示中补充指令显式指导或少量示例隐式指导来引导模型。这种给几个示例的做法通常被称为少样本学习few-shot learning但它存在两个硬约束Token 窗口限制模型可接收的 token 数量有上限你能塞进提示的示例条数因此受限效果随之打折Token 成本每次调用都携带大量示例会显著抬高 token 开销也限制了提示设计的灵活性。检索增强生成RAG先检索自有数据再把检索结果拼进提示。它在需要实时引用外部知识库时非常有效但同样受制于提示词的长度与经济性。什么是 LLM 微调重新训练模型本身微调是机器学习系统中一项常见做法拿一个预训练模型用新数据对它再训练从而提升其在特定任务上的表现。放到语言模型语境下就是用针对某一任务或应用领域精心整理curated的示例集去微调预训练模型产出一个自定义模型custom model——它在该任务或领域上通常更准确、更贴合。相比每次在提示里塞示例微调有两个关键收益不受推理时提示词长度约束微调允许你把远超 token 窗口上限的示例交给模型学习训练结束后推理阶段不再需要重复提供示例附带降低 token 成本因为提示得以简化、所需的 few-shot 示例数量减少调用时的 token 用量与相关费用随之下降。在讲微调时本课明确指的是监督式微调supervised fine-tuning再训练依靠的新增数据并不属于原始训练集。这与非监督式微调在同一份原始数据上换一组超参数重训有本质区别——前者是注入新知识、新行为后者只是改变学习策略。微调前先回答四个问题Use Case / Alternatives / Costs / Benefits微调是高级技术需要一定专业水准才能拿到理想结果做错了不仅没有提升还可能让模型在你目标领域上变差。因此动how之前必须先想清楚why和when。原课给出了一份自检清单用例Use Case你的微调场景是什么当前预训练模型哪方面表现想被改进替代方案Alternatives你试过其它技术、并以此建立了基线baseline吗提示工程先试 few-shot 提示并评估回复质量检索增强生成先试把检索结果拼入提示并评估回复质量。成本Costs是否盘算过微调的投入可调性——该预训练模型是否开放微调能力精力——准备训练数据、评估与调优模型的人力投入算力——运行微调任务以及部署微调后模型的资源成本数据——是否拿得到足够量、足够质量的示例来支撑微调效果。收益Benefits是否确认了微调的回报质量——微调模型是否真的超过了基线成本——是否通过简化提示降低了 token 用量可扩展性——能否把基础模型复用到新的业务领域。只有当收益 成本时微调才值得启动。微调一份预训练模型所需的四大要素决定动手后你需要具备一个可微调的预训练模型注意并非所有基础模型都支持微调需以厂商最新列表为准一份用于微调的数据集监督式微调下即问题 期望回答的示例集一个训练环境用于运行微调任务一个托管/部署环境用于上线微调后的模型。实战用仓库里的 OpenAI Notebook 走完微调全流程仓库在 18-fine-tuning/python/openai/oai-assignment.ipynb 提供了一份基于 OpenAI 官方微调指南的可复现 Notebook把一个基础模型微调成用打油诗回答化学元素问题的助手Elle。全流程可归纳为四步准备并上传训练数据 → 创建微调任务得到微调模型 → 评估迭代 → 满意后部署推理。运行代码前需先安装openaiPython 包建议不低于 0.28.0 以获得最新接口并配置好OPENAI_API_KEY环境变量具体环境配置可参考课程总览中的 00-course-setup/02-setup-local.md。Step 1准备 JSONL 训练数据针对单轮对话chat completion场景OpenAI 推荐使用messages数组格式每条 JSON 记录必须写在同一行。仓库内的 training-data.jsonl 共提供 10 条示例其中两条示意如下{ 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}]}要点需要多轮对话场景时改用多轮消息格式并可通过weight参数标哪些消息应参与或不参与微调真实业务下 10 条远不够需在回复质量与微调耗时/成本间权衡也可直接复用本领域已有的开源数据集并做格式重排Notebook 的示例输出显示提交的原始文件约 4021 字节上传后状态即变为processed。Step 2上传文件并创建微调任务先通过 Files API 上传训练文件purpose必须为fine-tunefrom openai import OpenAI client OpenAI() ft_file client.files.create( fileopen(./training-data.jsonl, rb), purposefine-tune ) print(Training File ID: ft_file.id)再提交微调任务ft_filejob client.fine_tuning.jobs.create( training_fileft_file.id, modelgpt-3.5-turbo ) print(Fine-tuning Job ID: ft_filejob.id)Notebook 输出中可以看到任务默认采用hyperparametersHyperparameters(n_epochsauto, batch_sizeauto, learning_rate_multiplierauto)即轮数、批大小、学习率倍率均为自动选择任务状态从validating_files校验训练文件格式开始流转。Step 3跟踪任务进度与训练指标提交后可用client.fine_tuning.jobs系列接口轮询状态client.fine_tuning.jobs.list(limitn)——列出最近 n 个微调任务client.fine_tuning.jobs.retrieve(job_id)——查询指定任务详情含status与trained_tokensclient.fine_tuning.jobs.cancel(job_id)——取消任务client.fine_tuning.jobs.list_events(fine_tuning_job_idjob_id, limitn)——列出任务事件逐条观察训练进度。response client.fine_tuning.jobs.retrieve(ft_filejob.id) print(Job ID:, response.id) print(Status:, response.status) print(Trained Tokens:, response.trained_tokens)事件流可以按训练步级监控 loss 收敛Notebook 中截取的真实输出形如Step 85/100: training loss0.14 Step 86/100: training loss0.00 ... Step 100/100: training loss0.00也就是说示例配置跑了 100 步训练损失收敛至接近 0任务结束时会收到The job has successfully completed事件。此外也可在 OpenAI / Azure AI Foundry 门户的Fine-tuning板块查看任务历史、状态、消息面板与训练指标面板实现可视化追踪。Notebook 中还有一段值得借鉴的排错记录第一次运行失败正是因为 JSON 文件里部分记录格式有误修正格式后第二次运行即成功——这说明数据格式正确性是微调任务能否跑通的首要前提。Step 4评估微调模型并用于推理任务完成后先从任务详情里取出微调模型的标识response 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)以 Notebook 实际输出为例返回形如ft:gpt-3.5-turbo-0125:bitnbot::9OFWzNjz的模型 ID随后即可用该 ID 发起推理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)模型对没有出现在训练集里的元素如 Strontium依然能按 打油诗 的既定格式作答——这正是微调学到输出行为的直接证据。Notebook 的对照实验还揭示了另一个现象基础模型foundation model往往只会照系统提示的普通语气作答而微调模型会严格复现训练示例中的格式两者 token 数相当微调模型因是自定义模型推理耗时略长。更多微调教程生态In Action除了这份 OpenAI 演示本课原始文档还整理了一批可跟练的第三方教程使用它们需先在对应服务商开通账号并取得模型与数据集访问权仓库内也提供 18-fine-tuning/RESOURCES.md 汇总更多自导学习材料提供方教程主题说明OpenAICookbook《How to fine-tune chat models》以菜谱助手为领域演示准备训练数据 → 运行微调任务 → 用微调模型推理的完整链路针对gpt-3.5-turbo系列Azure OpenAIGPT-3.5 Turbo 微调教程在 Azure 上创建并上传训练数据、运行微调任务再部署与使用新模型Hugging Face《Fine-tuning LLMs with Hugging Face》面向开源 LLM如CodeLlama 7B组合使用transformers、Transformer Reinforcement Learning (TRL)与 Hugging Face 开放datasetsAutoTrain Advanced《Fine-tuning LLMs with AutoTrain》Hugging Face 出品的 Python 库无代码微调方案支持在自己的云、Hugging Face Spaces 或本地运行同时提供 Web GUI、CLI 与 yaml 配置文件三种训练方式Unsloth官方 LLM 微调指南开源框架支持 LLM 微调与强化学习RL提供开箱即用的 Notebook 简化本地训练、评估与部署也支持 TTS、BERT 与多模态模型课程作业Assignment从上述教程中选择其一完整跟练。仓库内这份 Notebook 只是为便于参考而复刻的版本正式实践时请直接采用官方原版材料以获取最新接口与最佳实践。需要注意的模型可用性变化本课教程示例曾以gpt-35-turbo/gpt-3.5-turbo作为微调目标模型。根据仓库英文原版 18-fine-tuning/README.md 中的显式提示该系列模型在 Azure OpenAI / Microsoft Foundry 上已停止推理与微调OpenAI 侧也已将其弃用。若你此刻要开启新的微调任务应改选当前受支持的模型例如gpt-4o-mini或gpt-4.1-mini具体以官方 Fine-tuning models 列表为准上述教程中蕴含的概念与步骤依然适用只需替换模型标识符。结语与自导学习建议微调是一条把模型能力内化的高杠杆路径但它的适用边界同样清晰先跑通提示工程与 RAG 建立基线确认瓶颈在模型本身的知识与行为而非上下文不足再评估数据、算力与人力成本最后才进入训练。仓库内对应的 翻译版中文之外的更多语言版本 与 本课自导学习资源页 收录了从 OpenAI / Azure OpenAI 官方微调概念与流程文档、持续微调以已微调模型为基座继续训练、微调与函数调用function calling结合到 Azure ML 基座模型微调训练模块、以及 Hugging Face 生态含面向小型语言模型的 Phinetuning / QLoRA、AutoTrain Advanced、TRL 教程等延伸材料可据此规划更系统的学习路径。开始你的第一次微调前记得回到本节开头那张手绘导图把为什么微调、何时微调、如何微调三个问题串起来再动手。【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门