建设银行网站登录,邯郸最新工程项目公示,网站动态添加广告怎么做的,服务器搭建网站用什么系统1. 什么是指令微调#xff08;Instruction Tuning#xff09;
指令微调别名监督微调#xff08;Supervised Fine-tuning#xff09;、多任务提示训练#xff08;Multitask Prompted Training#xff09;#xff0c;指使用自然语言形式的指令数据对预训练LLM进行参数微调…1. 什么是指令微调Instruction Tuning指令微调别名监督微调Supervised Fine-tuning、多任务提示训练Multitask Prompted Training指使用自然语言形式的指令数据对预训练LLM进行参数微调激活模型的指令遵循能力Instruction Following提升模型在Zero-Shot场景下解决未见任务的能力sft会引入pretrain阶段未见过的special token学习新的语义来增强模型的跨任务泛化能力和领域适配能力。sft首先要收集或构建指令化的实例然后通过有监督的方式对LLM参数进行微调。接下来我们从指令构建和sft训练两方面展开。1.1 指令数据的构建指令格式化数据每一条都要是task-type类型的通常包括任务描述也称指令、任务输入、任务输出和可选示例这几部分。指令数据有以下几个来源•现有NLP任务数据集为输入输出对添加任务描述比如“请翻译成英文”。但使用上多样性受限与真实需求匹配度低。代表性的数据集有FLAN v2, P3, Super-Natural Instructions。•日常对话数据用用户真实查询作为指令人工标注答案作为输出高质量但标注成本高。代表性的有含多轮对话的ShareGPT, Dolly, OpenAssistant。•合成数据已有高质量指令作为上下文学习示例输入LLMLLM半自动化生成指令-输出对。低成本可扩展性高但是需要过滤低质量数据。经典数据有Self-Instruct, WizardLM, Alpaca。实际应用中大多是使用半自动化的合成数据这里介绍2个经典的指令合成技术•Self-Instruct流程为人工初始化任务池 → 大模型生成新指令 → 过滤重复/低质模型难以生成回复的指令、过长过短指令、输入输出重复指令数据。最终用175条高质多样种子数据输入GPT3生成52K指令即Alpaca数据集。•Evol-InstructWizardLM基于初始指令数据集如Alpaca使用GPT3.5-Turbo进行深度演化添加约束、深化推理步骤等提升指令复杂度和广度演化扩展指令主题覆盖范围最后进行质量优化移除ChatGPT认为差异小的指令移除LLM难以响应的指令移除仅包含标点符号和连词的指令或回复。那么自己如何构建高质量指令数据呢sft数据的核心是数据多样性和质量数量相对不重要。一个高质量指令数据集特点指令多样性指令类型、句式、表达风格、回复准确安全、复杂性分层包含不同难度样本从简单问答到多步推理。一些指令数据优化策略如下•指令格式设计通常是“任务描述 输入-输出对 可选示例”的形式结合Zero-Shot和Few-Shot数据的混合提示形式及引入CoT的效果更好。但是模型的生成速度和生成的token数量呈正相关增加CoT或prompt过长都会增加模型耗时这里需要做下权衡。•指令数量与质量平衡一定数量的高质量指令即可激活LLM的对话能力指令过多模型性能提升会缓慢。指令清洗必不可少的就是去重经典的指令去重方法包括MinHash、LSH局部敏感哈希或SimHash近似去重这些方法对海量数据很高效使用时可以直接调用py的datasketch库。除了清洗和去重还会采用聚类分析来确保指令多样性使用模型评分如使用GPT-4评估来对生成回复的质量自动化初筛并最终结合人工评审来确保最高标准。•多样性增强prompt、answer的多样性很重要。可以使用主题重写或指令筛选增强多样性。指令构建后的数据组织策略也很重要•平衡数据分布混合多源数据样本比例混合策略。同时设置最大容量防大数据集主导采样。•多阶段指令数据微调在不同阶段逐渐增加指令难度和复杂性。•预训练数据融合OPT-IML加入5%预训练数据提升分类/生成任务。MiniCPM在预训练与sft间添加退火阶段混合两类数据结果优于先预训练再sft两阶段策略。1.2 指令微调的训练策略sft的很多技术和pretrain类似比如优化器设置、高效训练技巧等这里介绍一些不同点首先是目标函数pretrain建模的是词元级语言losssft是序列到序列的losssft中同质化严重的prompt不做loss计算会加入loss mask机制避免重复计算前缀仅对模型输出部分计算损失。训练参数上pretrain训练数据量极大batchsize也是千级别的学习率相对较高⁻⁴⁻⁵sft训练数据量在1-10w左右最多不建议超过100wepoch 13个学习率极低⁻⁶⁻⁵比如Alpaca的lr2e⁻⁵ 余弦衰减。另外pretrain不适用于多轮对话训练。sft阶段做模型知识注入会影响模型的通用能力非要知识注入应该continue pretrain。炼丹技巧。小模型大学习率大模型小学习率起始训练适当做 warmup几种主流的 lr_scheduler 都试一下gradient_accumulation_steps 是个比较重要的参数16 / 32 / 64 / 128 等数字都尝试下按需开 dropout不开没啥大事开了反倒容易训炸。模型欠拟合需要检查的调整参数比如多训练1个epoch调整学习率如果任务较难看是否需要换更大参数的模型检查训练数据是否准确重写prompt增加背景知识降低任务难度。过拟合不建议再调参数解决最主要的解决方法是优化训练数据删减对应task_type的数据或扩充task_type数据多样性。阶梯形loss很多文章分析公认的结论是模型过拟合的体现。灾难性遗忘在原任务训练好的网络上再训练完新任务后在原任务上表现崩溃式降低。幻觉问题广义幻觉指模型回答错误无解仅仅可以通过sft/rlhf让模型知道什么时候拒绝恢复但没训练过的case依旧胡说八道。狭义幻觉指模型本身具备某个知识但alignment后开始回答错误。可以通过魔改网络、loss、推理方式、训练方式等技巧缓解。1.3 参数高效微调PEFT全参微调需要较多的算力资源开销参数高效微调Parameter-efficient Fine-tuning也叫轻量化微调旨在减少需要训练的模型参数量同时保证微调后的模型性能和全参微调相当。最经典的PEFT就是低秩适配微调LoRALow-Rank Adaptation了。研究发现LLM在特定任务适配时参数通常是过参数化Over-parameterized的即模型参数中大部分是冗余的。LoRA通过低秩分解将模型参数分解为两个低秩矩阵的乘积实现参数的稀疏化。具体来说LoRA冻结原权重矩阵 W_0 添加低秩分解矩阵 。前向计算 训练后合并 。全量微调显存为 为参数量。LoRA显存为 对LLaMA7B进行LoRA微调显存从108GB → 14GB。LoRA因其显存效率和无损合并特性成为开源社区LLaMA、BLOOM的主流选择。一些经典的LoRA变种•AdaLoRA动态调整不同矩阵的低秩参数通过微调过程中的loss衡量不同参数矩阵对训练的重要性重要性高的矩阵分配高秩。•QLoRA原权重4比特量化 LoRA权重16比特训练保持微调效果同时节省显存 2P→0.5P 65B模型可在单卡A600048GB运行。# LoRALinear层实现PyTorchclass LoRALinear(nn.Linear): def __init__(self, in_features, out_features, r8, dropout0.05): super().__init__(in_features, out_features) self.A nn.Linear(in_features, r, biasFalse) # 低秩矩阵A self.B nn.Linear(r, out_features, biasFalse) # 低秩矩阵B self.dropout nn.Dropout(dropout) nn.init.normal_(self.A.weight, std0.02) nn.init.zeros_(self.B.weight) def forward(self, x): return F.linear(x, self.weight, self.bias) self.B(self.A(self.dropout(x)))其他PEFT方法在预训练语言模型时广泛使用但在LLM中的应用较少。• 适配器微调Adapter Tuning在Transformer层间串行插入瓶颈网络压缩→非线性→恢复维度适用于资源受限场景。• 前缀微调Prefix Tuning在注意力层的Key/Value前concat可训练前缀向量虚拟词元适用于生成任务。• 提示微调Prompt Tuning在输入嵌入层添加连续提示向量P-tuning用LSTM学习提示表示适用于轻量化适配场景。2. 一些实战总结现在有很多现成的支持sft和po的框架其中Hugging Face是目前最主流的可以使用TransformersPEFTaccelerate库或者TRL库专为sft和po设计社区支持最好但是需要编写代码并自行处理数据格式以下给出了代码示例。还有一体化的高级框架如LLaMA-Factory支持Web UI和命令行两种方式初学者友好抽象程度高不适合深度定制。另外还有面向企业级和生产环境的DeepSpeed由微软开发的深度学习库并不是专门的SFT框架但其ZeRO技术可以无缝集成到其他框架中。实战中需要使用一些工具比如Weights Biases (WB)、MLflow或TensorBoard进行实验追踪。记录一些实验中的超参数学习率、批次大小等、训练和验证损失曲线、硬件利用率GPU内存、使用率、评估指标例如使用LLM-Evaluation-Harness的评分、甚至模型预测样例。确保每次实验都可复现、可比较。from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArgumentsfrom peft import LoraConfig, get_peft_modelfrom trl import SFTTrainermodel_name meta-llama/Llama-2-7b-hfmodel AutoModelForCausalLM.from_pretrained(model_name)tokenizer AutoTokenizer.from_pretrained(model_name)# 设置PEFT配置peft_config LoraConfig( r16, lora_alpha32, target_modules[q_proj, v_proj], lora_dropout0.05, task_typeCAUSAL_LM,)training_args TrainingArguments( output_dir./results, per_device_train_batch_size4, gradient_accumulation_steps4, learning_rate2e-4, fp16True,)trainer SFTTrainer( modelmodel, argstraining_args, train_datasetdataset, peft_configpeft_config, formatting_funcformatting_func, # 需要自己编写一个函数来格式化数据)trainer.train()2.1 商业化广告场景应用在ks商业化场景中常见的2种LLM范式分别是LLM生成式和LLM微调范式。LLM生成式建模思路基本为根据下游任务设计prompt进行tokenizer和embedding后输入到一个Transformer-based encoder-decoder或者decoder-only模型最后生成任务的结果比如OneRec架构最后生成量化后的item序列后再做Beam Search选出最终推荐结果。量化的好处是离散化输入原始的user和item文本为语义索引可以大幅缩减prompt的长度增加输入行为描述。这种生成式建模范式通常需要从头开始训练一个模型比较花费心思。最简单好上手的就是LLM微调范式典型的一套预训练-SFT-PO的流程当然预训练模型是直接使用现成的LLM比如Qwen系列。通常也需要先将user及item一些行为、视频dense embedding RQVAE量化编码为语义id以id文本prompt的方式输入给LLM在下游任务sft比如预测用户下一个转化的itemId tokenitem下一个转化的userId token。在原预测结果list基础上做向量匹配落地上可以加一路召回。另一种比较简单是直接使用LLM做CoT推理推理结果处理为BGE embedding或者量化id特征入模先用大参数模型推理再sft蒸馏小模型节省资源可以落地到精排模型预估。2.2 经典面试题除了Early Stopping和减少参数量从损失函数和训练策略的角度可以采取哪些技术缓解sft过拟合ds答的挺好的/DOGE1. 损失函数角度•标签平滑Label Smoothing 将原本one-hot的硬标签替换为“软标签”。例如将正确类别的概率从1.0改为0.9并将0.1的概率均匀分配给其他类别。这防止模型对训练标签过于自信鼓励其学习更泛化的特征在分类式SFT如选择最佳回复中特别有效。•知识蒸馏Knowledge Distillation: 使用一个更大、更强但可能更慢的teacher model来为训练数据生成软标签概率分布然后用这些软标签来训练student model。student model学习的是teacher model提炼出的、更平滑、更泛化的知识而不仅仅是原始硬标签从而减轻过拟合。2. 训练策略角度•加权采样Weighted Sampling或课程学习Curriculum Learning 不是均匀地采样所有数据而是优先学习更简单、更核心的样本再逐步引入复杂和困难的样本。或者为不同质量的样本赋予不同权重高质量样本权重更高。这让模型先稳固基础再学习细节提高了学习效率并降低了拟合噪声的风险。•对抗训练Adversarial Training或最大化间隔Max-Margin 在损失函数中引入一项旨在让正确回复的得分比错误回复的得分高出一个明显的margin。这鼓励模型学习更鲁棒的特征表示而不仅仅是勉强拟合数据。•参数高效微调PEFT技术 LoRA等技术本身也是一种极强的正则化。通过冻结原模型参数只训练少量低秩矩阵极大降低了可训练参数量从而从根本上降低了过拟合的能力同时还能保持甚至提升模型性能。普通人如何抓住AI大模型的风口领取方式在文末为什么要学习大模型目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 大模型作为其中的重要组成部分 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 为各行各业带来了革命性的改变和机遇 。目前开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景其中应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过30%。随着AI大模型技术的迅速发展相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业人工智能大潮已来不加入就可能被淘汰。如果你是技术人尤其是互联网从业者现在就开始学习AI大模型技术真的是给你的人生一个重要建议最后只要你真心想学习AI大模型技术这份精心整理的学习资料我愿意无偿分享给你但是想学技术去乱搞的人别来找我在当前这个人工智能高速发展的时代AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料能够帮助更多有志于AI领域的朋友入门并深入学习。真诚无偿分享vx扫描下方二维码即可加上后会一个个给大家发大模型全套学习资料展示自我们与MoPaaS魔泊云合作以来我们不断打磨课程体系与技术内容在细节上精益求精同时在技术层面也新增了许多前沿且实用的内容力求为大家带来更系统、更实战、更落地的大模型学习体验。希望这份系统、实用的大模型学习路径能够帮助你从零入门进阶到实战真正掌握AI时代的核心技能01教学内容从零到精通完整闭环【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块内容比传统教材更贴近企业实战大量真实项目案例带你亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事02适学人群应届毕业生无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界。业务赋能突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型。vx扫描下方二维码即可本教程比较珍贵仅限大家自行学习不要传播更严禁商用03入门到进阶学习路线图大模型学习路线图整体分为5个大的阶段04视频和书籍PDF合集从0到掌握主流大模型技术视频教程涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向新手必备的大模型学习PDF书单来了全是硬核知识帮你少走弯路不吹牛真有用05行业报告白皮书合集收集70报告与白皮书了解行业最新动态0690份面试题/经验AI大模型岗位面试经验总结谁学技术不是为了赚$呢找个好的岗位很重要07 deepseek部署包技巧大全由于篇幅有限只展示部分资料并且还在持续更新中…真诚无偿分享vx扫描下方二维码即可加上后会一个个给大家发