搜索排行网站seo工作
2026/5/20 13:59:10 网站建设 项目流程
搜索排行,网站seo工作,wordpress去顶部文字,如何帮客户做网站前序#xff1a; 概念与流程#xff1a;预训练 → 继续预训练#xff08;领域自适应#xff09; → 指令微调#xff08;SFT#xff09; → 偏好对齐#xff08;DPO/ORPO/KTO#xff09; → 强化学习对齐#xff08;PPO#xff09;。可复用的代码模板#xff1a;Hug…前序概念与流程预训练 → 继续预训练领域自适应 → 指令微调SFT → 偏好对齐DPO/ORPO/KTO → 强化学习对齐PPO。可复用的代码模板Hugging Face/TRL/PEFT、ms-swift 命令行。LoRA/QLoRA 的落地做法rank、target_modules、合并权重。数据格式与 chat 模板的关键坑位Qwen 的 chat_template。说明代码示例默认以 Qwen/Qwen2.5-7B(-Instruct) 为例。如果你已有 Qwen3 的 HuggingFace 权重直接把 MODEL_ID 换成对应 id 即可。GPU 建议SFT/QLoRA 单卡 24–48GB 足够batch 小一点 累积梯度PPO/DPO 视模型大小和数据量一般多卡更舒适。环境建议transformers4.41, trl0.8, peft0.11, bitsandbytes0.43, datasets, accelerate, deepspeed可选。一、训练全流程总览预训练Pretraining目标大规模无监督自回归next-token prediction学习通用语言能力。数据网页、代码、书籍多语种清洗、去重、毒性过滤。继续预训练Continued/Domain Adaptive Pretraining用你的领域语料金融/法务/医疗/企业内部知识对基础模型再训练数万步提升领域覆盖与术语分布。指令微调SFT用指令-回答/对话样本教模型“按指令办事”。常配合 LoRA/QLoRA 降显存。偏好对齐AlignmentDPO/ORPO/KTO/SimPO用偏好对preferred vs rejected做直接对比优化。RLHFPPO/RLAIF/GRPO用奖励模型/规则/AI 反馈作为奖励信号做策略优化。安全与工具能力安全基座拒答/去有害、工具使用函数调用、检索增强RAG。评测与蒸馏任务集评测MMLU、C-Eval、GSM8K、AlignBench 等蒸馏成小模型部署。二、环境安装通用# 基础依赖pip install -U transformers4.41 datasets2.19 accelerate0.33 peft0.11 \ trl0.8 bitsandbytes0.43 evaluate scikit-learn# 可选deepspeed/flash-attn需要匹配 CUDA 环境pip install -U deepspeed# pip install flash-attn --no-build-isolation # 仅在你确认环境匹配时装三、继续预训练领域自适应 Pretraining适合你已有一批纯文本/代码语料想让基础模型更懂你的领域。数据准备举例data/train.txt 与 data/val.txt每行一段原始文本已清洗去重。代码Hugging Face Trainerimport os, torchfrom datasets import load_datasetfrom transformers import (AutoTokenizer, AutoModelForCausalLM, Trainer, TrainingArguments, default_data_collator)MODEL_ID Qwen/Qwen2.5-7B # 若你有 Qwen3 base换成对应 idBLOCK_SIZE 4096# 1) 数据集ds load_dataset(text, data_files{train: data/train.txt, validation: data/val.txt})# 2) 分词tokenizer AutoTokenizer.from_pretrained(MODEL_ID, use_fastTrue, trust_remote_codeTrue)if tokenizer.pad_token is None: tokenizer.pad_token tokenizer.eos_tokentokenizer.padding_side rightdef tokenize_fn(batch): return tokenizer(batch[text])tokenized ds.map(tokenize_fn, batchedTrue, remove_columns[text])def group_texts(examples): # 拼接后按 BLOCK_SIZE 切块提高吞吐 concatenated {k: sum(examples[k], []) for k in examples.keys()} total_length (len(concatenated[input_ids]) // BLOCK_SIZE) * BLOCK_SIZE result { k: [t[i:iBLOCK_SIZE] for i in range(0, total_length, BLOCK_SIZE)] for k, t in concatenated.items() } result[labels] result[input_ids].copy() return resultlm_dataset tokenized.map(group_texts, batchedTrue)# 3) 模型model AutoModelForCausalLM.from_pretrained( MODEL_ID, torch_dtypetorch.bfloat16, trust_remote_codeTrue, device_mapauto,)model.gradient_checkpointing_enable()model.config.use_cache False # 训练时关闭缓存# 4) 训练器args TrainingArguments( output_diroutputs/qwen-continued-pretrain, per_device_train_batch_size1, gradient_accumulation_steps16, learning_rate1e-4, num_train_epochs1, lr_scheduler_typecosine, warmup_ratio0.03, logging_steps10, save_steps1000, save_total_limit2, bf16True, weight_decay0.1, report_tonone, dataloader_num_workers4, # deepspeedds_zero2.json, # 可选大模型建议开启)trainer Trainer( modelmodel, argsargs, train_datasetlm_dataset[train], eval_datasetlm_dataset[validation], data_collatordefault_data_collator,)trainer.train()trainer.save_model(outputs/qwen-continued-pretrain/ckpt)tokenizer.save_pretrained(outputs/qwen-continued-pretrain/ckpt)要点继续预训练用“base”模型非 Instruct更合适。启用 packinggroup_texts能显著提高吞吐。大模型建议配合 DeepSpeed ZeRO-2/3、多卡和梯度检查点。四、指令微调 SFTLoRA/QLoRA数据格式推荐 messages 格式方便套 chat_templatetrain.jsonl每行一个样本{messages: [ {role:system,content:你是 helpful 的中文助理}, {role:user,content:用 3 点说明 LoRA 的优势}, {role:assistant,content:1) 显存友好 ... 2) 速度快 ... 3) 易于迁移 ...}]}代码TRL PEFTQLoRAimport torchfrom datasets import load_datasetfrom transformers import (AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig)from peft import LoraConfig, prepare_model_for_kbit_trainingfrom trl import SFTTrainer, SFTConfigMODEL_ID Qwen/Qwen2.5-7B-Instruct # 若有 Qwen3-Instruct替换即可DATA_PATH data/train.jsonl# 1) 量化配置QLoRAbnb_config BitsAndBytesConfig( load_in_4bitTrue, bnb_4bit_quant_typenf4, bnb_4bit_compute_dtypetorch.bfloat16, bnb_4bit_use_double_quantTrue,)# 2) tokenizertokenizer AutoTokenizer.from_pretrained(MODEL_ID, use_fastTrue, trust_remote_codeTrue)if tokenizer.pad_token is None: tokenizer.pad_token tokenizer.eos_tokentokenizer.padding_side right# 3) 模型4bit 量化model AutoModelForCausalLM.from_pretrained( MODEL_ID, trust_remote_codeTrue, quantization_configbnb_config, device_mapauto,)model prepare_model_for_kbit_training(model)model.config.use_cache False# 4) LoRA 配置Qwen/LLaMA 系常见 target_modulespeft_config LoraConfig( r16, lora_alpha32, lora_dropout0.05, target_modules[q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj], task_typeCAUSAL_LM, biasnone,)# 5) 数据集 应用 chat_templateraw load_dataset(json, data_files{train: DATA_PATH})def to_text(example): # 将 messages 用 Qwen 的 chat_template 拼接成可训练文本 prompt tokenizer.apply_chat_template( example[messages], tokenizeFalse, add_generation_promptFalse # 训练时不加生成提示 ) return {text: prompt}dataset raw[train].map(to_text)# 6) 训练参数args SFTConfig( output_diroutputs/qwen-sft-lora, num_train_epochs2, per_device_train_batch_size2, gradient_accumulation_steps8, learning_rate2e-4, lr_scheduler_typecosine, warmup_ratio0.03, logging_steps10, save_steps500, bf16True, max_seq_length4096, packingTrue, # 将多样本 pack 进长序列提高吞吐 dataset_text_fieldtext, report_tonone,)trainer SFTTrainer( modelmodel, tokenizertokenizer, train_datasetdataset, argsargs, peft_configpeft_config,)trainer.train()trainer.model.save_pretrained(outputs/qwen-sft-lora/adapter)tokenizer.save_pretrained(outputs/qwen-sft-lora/adapter)合并 LoRA推理部署更方便import torchfrom transformers import AutoModelForCausalLM, AutoTokenizerfrom peft import PeftModelBASE Qwen/Qwen2.5-7B-InstructADAPTER outputs/qwen-sft-lora/adapterOUT outputs/qwen-sft-mergedtokenizer AutoTokenizer.from_pretrained(BASE, trust_remote_codeTrue)base_model AutoModelForCausalLM.from_pretrained(BASE, torch_dtypetorch.bfloat16, device_mapauto, trust_remote_codeTrue)model PeftModel.from_pretrained(base_model, ADAPTER)model model.merge_and_unload() # 权重合并model.save_pretrained(OUT)tokenizer.save_pretrained(OUT)要点target_modules 对 Qwen/LLaMA 系列常见投影层足够实际以模型结构为准可做微调。QLoRA 推荐 r16/32learning_rate 2e-4~5e-5 视 batch/任务而定。数据用 messages chat_template 能避免标签错位、特殊 token 漏标等坑。五、用 ms-swift 快速上手SFT / DPO提示不同版本的 ms-swift CLI 参数略有差异建议先执行 swift -h 或 swift sft -h 查看你本地版本帮助。下面给出常见用法范式以 2.x 为例。安装pip install -U ms-swift[llm] modelscopeSFTLoRA/QLoRA# 假设 data/train.jsonl 是上文 messages 格式swift sft \ --model_id_or_path Qwen/Qwen2.5-7B-Instruct \ --train_file data/train.jsonl \ --dataset_format messages \ --chat_template qwen \ --use_lora true \ --lora_r 16 \ --lora_alpha 32 \ --lora_dropout 0.05 \ --lora_target_modules q_proj k_proj v_proj o_proj gate_proj up_proj down_proj \ --max_seq_len 4096 \ --packing true \ --bf16 true \ --per_device_train_batch_size 2 \ --gradient_accumulation_steps 8 \ --learning_rate 2e-4 \ --num_train_epochs 2 \ --output_dir outputs/qwen-sft-loraDPO偏好对齐使用 prompt/choice 对数据 dpo.jsonl每行{prompt:请写一段自我介绍,chosen:我是一个乐观...,rejected:我是个不靠谱...}swift dpo \ --model_id_or_path Qwen/Qwen2.5-7B-Instruct \ --train_file data/dpo.jsonl \ --dataset_format preference \ --prompt_field prompt --chosen_field chosen --rejected_field rejected \ --use_lora true \ --lora_r 16 \ --max_seq_len 4096 \ --bf16 true \ --output_dir outputs/qwen-dpo-lora合并 LoRA合并 LoRAswift export \ --ckpt_dir outputs/qwen-sft-lora \ --merge_lora true \ --out_dir outputs/qwen-sft-merged备注ms-swift 还支持 ORPO/KTO/GRPO/SimPO、全参/部分层微调、Deepspeed/FSDP一行命令即可切换策略。如果你的 ms-swift 本地帮助与上面不一致以本地 -h 为准。六、偏好对齐DPOHugging Face TRL 版适合有成对偏好数据prompt, chosen, rejected可在 SFT 基础上再优化。import torchfrom datasets import load_datasetfrom transformers import AutoTokenizer, AutoModelForCausalLMfrom peft import LoraConfigfrom trl import DPOTrainer, DPOConfigBASE Qwen/Qwen2.5-7B-Instruct # 或你上一步 SFT 合并后的权重DATA data/dpo.jsonltokenizer AutoTokenizer.from_pretrained(BASE, use_fastTrue, trust_remote_codeTrue)if tokenizer.pad_token is None: tokenizer.pad_token tokenizer.eos_tokends load_dataset(json, data_files{train: DATA})[train]# 数据字段需要是 prompt/chosen/rejected 字段的纯文本# 如果你存的是 messages需要先用 chat_template 生成 prompt 再映射peft_config LoraConfig( r16, lora_alpha32, lora_dropout0.05, biasnone, target_modules[q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj], task_typeCAUSAL_LM,)model AutoModelForCausalLM.from_pretrained( BASE, torch_dtypetorch.bfloat16, trust_remote_codeTrue, device_mapauto)model.config.use_cache Falseconfig DPOConfig( output_diroutputs/qwen-dpo-lora, per_device_train_batch_size1, gradient_accumulation_steps16, learning_rate5e-6, # DPO 通常更小 LR num_train_epochs1, max_length1024, max_prompt_length768, beta0.1, # 温度超参 logging_steps10, save_steps500, bf16True, report_tonone,)trainer DPOTrainer( modelmodel, argsconfig, tokenizertokenizer, train_datasetds, peft_configpeft_config, # ref_modelNone # 省略则默认克隆一个参考模型显存吃紧时可考虑传入 8bit/4bit 的 ref)trainer.train()trainer.model.save_pretrained(outputs/qwen-dpo-lora/adapter)tokenizer.save_pretrained(outputs/qwen-dpo-lora/adapter)要点DPO 对 LR 更敏感建议 5e-6~2e-5。数据质量很关键prompt 明确、chosen/rejected 差异清晰。七、强化学习对齐PPOTRLPPO 需要一个“奖励函数”。真实场景常用专门的 Reward Model例如对 helpfulness/harmlessness 的打分。这里给一个可跑通的演示版用情感模型正面高分代替。你可以替换为自己的 RM。import torch, randomfrom datasets import Datasetfrom transformers import AutoTokenizer, AutoModelForSequenceClassificationfrom trl import PPOTrainer, PPOConfig, AutoModelForCausalLMWithValueHead, set_seedMODEL_ID Qwen/Qwen2.5-7B-InstructREWARD_MODEL lvwerra/distilbert-imdb # 演示用换成你的中文 Reward Model 更合理set_seed(42)# 1) 模型与分词器tokenizer AutoTokenizer.from_pretrained(MODEL_ID, use_fastTrue, trust_remote_codeTrue)if tokenizer.pad_token is None: tokenizer.pad_token tokenizer.eos_tokenpolicy AutoModelForCausalLMWithValueHead.from_pretrained( MODEL_ID, torch_dtypetorch.bfloat16, device_mapauto, trust_remote_codeTrue)policy.config.use_cache False# 2) 奖励模型分类打分示例rm_tokenizer AutoTokenizer.from_pretrained(REWARD_MODEL, use_fastTrue)reward_model AutoModelForSequenceClassification.from_pretrained( REWARD_MODEL, torch_dtypetorch.bfloat16, device_mapauto)def compute_reward(texts): # 返回一个 list[float] 作为奖励这里用情感正面概率当奖励 with torch.no_grad(): inputs rm_tokenizer(texts, paddingTrue, truncationTrue, return_tensorspt).to(reward_model.device) logits reward_model(**inputs).logits if logits.shape[-1] 2: probs torch.softmax(logits, dim-1)[:, 1] # positive prob return probs.detach().float().cpu().tolist() else: # 若是回归 RM直接取值 return logits.squeeze(-1).detach().float().cpu().tolist()# 3) 构造 PPO 数据集prompt 列prompts [ 写一段鼓励同事的中文短文。, 给出 3 条积极向上的生活建议。, 请用友善的语气回答如何学习新技术更有效, 写一段对用户的正面反馈。]ppo_ds Dataset.from_dict({prompt: prompts})# 4) PPO 配置config PPOConfig( model_nameMODEL_ID, learning_rate1e-6, # PPO 通常更小 LR batch_size4, mini_batch_size2, gradient_accumulation_steps4, target_kl0.1, ppo_epochs4, log_withNone,)trainer PPOTrainer( configconfig, modelpolicy, tokenizertokenizer, datasetppo_ds,)# 5) 训练循环示例小步数演示gen_kwargs dict(max_new_tokens128, top_p0.9, temperature0.7, do_sampleTrue)for epoch in range(2): for batch in trainer.dataloader: queries batch[prompt] # a) 生成回复 query_tensors [tokenizer(q, return_tensorspt).to(policy.device)[input_ids][0] for q in queries] responses [] response_tensors [] for q_t in query_tensors: r_t trainer.generate(q_t.unsqueeze(0), **gen_kwargs) response_tensors.append(r_t[0]) responses.append(tokenizer.decode(r_t[0], skip_special_tokensTrue)) # b) 计算奖励对 promptresponse 文本 texts [] for q, r in zip(queries, responses): texts.append(q \n r) rewards compute_reward(texts) rewards [torch.tensor(reward).to(policy.device) for reward in rewards] # c) PPO 更新 stats trainer.step(query_tensors, response_tensors, rewards) trainer.log_stats(stats, batch, rewards)# 保存policy.save_pretrained(outputs/qwen-ppo)tokenizer.save_pretrained(outputs/qwen-ppo)要点真实对齐要用与你任务匹配的 Reward Model如中文对齐 RM、规则奖励或 RLAIF。控制 KLtarget_kl避免模型崩坏LR、采样温度、奖励量纲都很关键。PPO 显存较吃建议小 batch 累积必要时 LoRA 化 PPO进阶用法。八、评测、部署与常见坑评测综合MMLU中英、C-Eval中文学科、GSM8K数学、BBH、AlignBench对齐。指标准确率、长度、拒答率安全、幻觉率可人工/自动评测结合。部署vLLM 高吞吐推理支持 LoRA 热插拔、KV Cache、连续批处理。量化AWQ/GPTQ离线bitsandbytes在线 8/4bit。常见坑Chat 模板messages → apply_chat_template 必须一致训练/推理同模板。标签错位SFT 时确保只有 assistant 段落有 labelprompt 部分 label 应该是 -100用模板正确构造可避免。Max length 截断训练/生成的 max_length 与模型 rope/rope_scaling 要一致。LoRA 目标层不同架构名称可能略有不同先 print(model) 或参考官方配置。数据清洗去重、去噪、脱敏不良样本少量也会严重拖后腿。九、结尾你是更偏好用 ms-swift 一键训练还是 Hugging Face/TRL 写代码流你的 GPU 配置型号/显存/卡数和大概数据规模是怎样的我可以按你的资源把 batch、累积、rank、是否 QLoRA 等超参调到更稳妥。如果你有现成的样本我可以帮你把数据转换成 messages 或 DPO 所需的 prompt/chosen/rejected 格式并给出针对你任务的奖励函数设计建议。普通人如何抓住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扫描下方二维码即可加上后会一个个给大家发

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询