江苏丹阳建设公司网站jsp做网站

张小明 2026/1/19 21:17:58
江苏丹阳建设公司网站,jsp做网站,火车票网站建设多少钱,反恶意镜像网站【LLM实操系列06】模型微调#xff1a;用100条数据打造专属AI 开始微调之前#xff0c;建议先完成第02篇#xff08;环境配置#xff09;和第03篇#xff08;模型基础#xff09;的学习。 硬件方面#xff0c;你需要至少8GB GPU显存#xff08;使用QLoRA可降至6GB…【LLM实操系列06】模型微调用100条数据打造专属AI开始微调之前建议先完成第02篇环境配置和第03篇模型基础的学习。硬件方面你需要至少8GB GPU显存使用QLoRA可降至6GB。理论方面了解Transformer基本架构会有帮助第01篇有介绍。5分钟理解微调什么时候需要微调defneed_finetuning():判断是否需要微调if特定领域术语多andPrompt优化无效:return需要微调elif需要特定输出格式andFew-shot效果差:return需要微调elif隐私数据不能用API:return需要微调else:return继续优化Prompt微调 vs 其他方案选择指南方案成本效果适用场景参考章节Prompt工程低一般通用任务第04篇RAG中好知识问答第05篇微调高最好专属任务本篇从头训练极高-不推荐-LoRA高效微调神器原理只训练少量参数# 传统微调训练所有参数7B 70亿参数# LoRA微调只训练0.1%参数7M参数# LoRA数学原理# W_new W_original ΔW# ΔW A × B (A和B是小矩阵)15分钟跑通LoRA# pip install transformers peft datasets accelerate bitsandbytesfromtransformersimport(AutoModelForCausalLM,AutoTokenizer,TrainingArguments,Trainer)frompeftimportLoraConfig,get_peft_model,TaskTypeimporttorch# 1. 加载基座模型以Qwen为例model_nameQwen/Qwen2.5-1.5B# 小模型适合测试modelAutoModelForCausalLM.from_pretrained(model_name,torch_dtypetorch.float16,device_mapauto)tokenizerAutoTokenizer.from_pretrained(model_name)# 2. 配置LoRAlora_configLoraConfig(task_typeTaskType.CAUSAL_LM,r8,# LoRA秩越大效果越好但越慢lora_alpha16,# LoRA缩放参数lora_dropout0.1,# Dropout比例target_modules[q_proj,v_proj],# 要微调的层)# 3. 创建PEFT模型modelget_peft_model(model,lora_config)model.print_trainable_parameters()# 输出: trainable params: 4,194,304 || all params: 1,544,454,144 || trainable%: 0.27# 4. 准备数据defprepare_data():准备训练数据# 格式instruction-output对data[{instruction:翻译成英文你好世界,output:Hello World},{instruction:生成SQL查询年龄大于18的用户,output:SELECT * FROM users WHERE age 18}]returndatadefformat_prompt(example):格式化训练样本promptf|im_start|user{example[instruction]}|im_end| |im_start|assistant{example[output]}|im_end|return{text:prompt}# 5. 训练training_argsTrainingArguments(output_dir./lora_model,num_train_epochs3,per_device_train_batch_size4,gradient_accumulation_steps4,warmup_steps100,logging_steps10,save_strategyepoch,learning_rate1e-4,fp16True,)trainerTrainer(modelmodel,argstraining_args,train_datasettrain_dataset,tokenizertokenizer,)trainer.train()QLoRA4bit量化微调显存对比# 模型大小对比configs{全精度:{7B模型:28GB显存,可行性:A100},LoRA:{7B模型:16GB显存,可行性:3090/4090},QLoRA:{7B模型:6GB显存,可行性:2080Ti},# ← 推荐}QLoRA实现fromtransformersimportBitsAndBytesConfig# QLoRA配置4bit量化bnb_configBitsAndBytesConfig(load_in_4bitTrue,bnb_4bit_compute_dtypetorch.float16,bnb_4bit_quant_typenf4,bnb_4bit_use_double_quantTrue,)# 加载4bit模型modelAutoModelForCausalLM.from_pretrained(model_name,quantization_configbnb_config,device_mapauto)# 准备训练frompeftimportprepare_model_for_kbit_training modelprepare_model_for_kbit_training(model)# 应用LoRAmodelget_peft_model(model,lora_config)# 现在可以在6GB显存上微调7B模型数据准备最佳实践1. 数据格式# 方式1指令微调格式instruction_data{instruction:任务描述,input:输入内容可选,output:期望输出}# 方式2对话格式conversation_data{conversations:[{from:human,value:用户问题},{from:assistant,value:助手回答}]}# 方式3纯文本续写text_data{text:这是一段完整的文本...}2. 数据处理工具classDataProcessor:数据预处理工具def__init__(self,tokenizer,max_length512):self.tokenizertokenizer self.max_lengthmax_lengthdefprocess_dataset(self,raw_data):处理数据集processed[]foriteminraw_data:# 构建对话textself.format_conversation(item)# 分词tokensself.tokenizer(text,max_lengthself.max_length,truncationTrue,paddingmax_length,return_tensorspt)processed.append({input_ids:tokens[input_ids][0],attention_mask:tokens[attention_mask][0],labels:tokens[input_ids][0]# 自回归训练})returnprocesseddefformat_conversation(self,item):格式化为模型输入# Qwen格式returnf|im_start|system You are a helpful assistant.|im_end| |im_start|user{item[instruction]}|im_end| |im_start|assistant{item[output]}|im_end|defvalidate_data(self,dataset):数据质量检查issues[]foridx,iteminenumerate(dataset):# 检查长度iflen(item[text])self.max_length*4:# 估算issues.append(f样本{idx}过长)# 检查格式ifnotitem.get(instruction):issues.append(f样本{idx}缺少instruction)returnissues3. 数据增强defaugment_data(original_data):数据增强技巧augmented[]foriteminoriginal_data:# 1. 原始样本augmented.append(item)# 2. 改写instructionrephrased{instruction:f请{item[instruction]},output:item[output]}augmented.append(rephrased)# 3. 添加思维链cot_version{instruction:item[instruction],output:f让我思考一下。{item[output]}}augmented.append(cot_version)returnaugmented训练监控与评估实时监控fromtransformersimportTrainerCallbackimportwandbclassTrainingMonitor(TrainerCallback):训练监控回调defon_log(self,args,state,control,logsNone,**kwargs):iflogs:# 打印关键指标print(fStep{state.global_step}: Loss{logs.get(loss,0):.4f})# 上传到wandb可选ifwandb.run:wandb.log(logs)defon_epoch_end(self,args,state,control,**kwargs):# 每个epoch结束后评估print(fEpoch{state.epoch}completed)评估指标defevaluate_model(model,test_data):模型评估fromrougeimportRougefrombert_scoreimportscore predictions[]references[]foritemintest_data:# 生成预测input_textitem[instruction]predmodel.generate(input_text,max_length100)predictions.append(pred)references.append(item[output])# ROUGE分数rougeRouge()rouge_scoresrouge.get_scores(predictions,references,avgTrue)# BERTScoreP,R,F1score(predictions,references,langzh)return{rouge:rouge_scores,bertscore:{P:P.mean(),R:R.mean(),F1:F1.mean()}}部署微调模型1. 合并LoRA权重frompeftimportPeftModel# 加载基座模型base_modelAutoModelForCausalLM.from_pretrained(model_name)# 加载LoRA权重modelPeftModel.from_pretrained(base_model,./lora_model)# 合并权重merged_modelmodel.merge_and_unload()# 保存完整模型merged_model.save_pretrained(./final_model)tokenizer.save_pretrained(./final_model)2. 量化部署# GGUF格式用于llama.cpp/OllamafromtransformersimportAutoModelForCausalLMimporttorch# 转换为GGUFmodelAutoModelForCausalLM.from_pretrained(./final_model)model.save_pretrained(./gguf_model,safe_serializationTrue)# 使用llama.cpp量化# python convert.py ./final_model --outfile model.gguf# ./quantize model.gguf model_q4_k_m.gguf q4_k_m3. API服务fromfastapiimportFastAPIfrompydanticimportBaseModel appFastAPI()# 加载模型modelAutoModelForCausalLM.from_pretrained(./final_model)tokenizerAutoTokenizer.from_pretrained(./final_model)classQuery(BaseModel):text:strmax_length:int100app.post(/generate)asyncdefgenerate(query:Query):inputstokenizer(query.text,return_tensorspt)outputsmodel.generate(**inputs,max_lengthquery.max_length)responsetokenizer.decode(outputs[0],skip_special_tokensTrue)return{response:response}成本与效果对比方法数据量训练时间显存效果提升Prompt000基准Few-shot5-100010%LoRA100-1K1-4小时16GB30%QLoRA100-1K2-6小时6GB25%全量微调10K1-7天80GB35%调试技巧# 常见问题快速诊断defdiagnose_training_issues():checks{Loss不下降:[检查学习率试试1e-4到5e-5,增加训练轮数,检查数据格式],显存爆炸:[减小batch_size,使用gradient_accumulation_steps,启用gradient_checkpointing],效果不好:[增加LoRA rank (r8→16),增加训练数据,调整lora_alpha],推理错误:[检查tokenizer配置,确认special tokens,验证prompt模板]}returnchecks
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设的功能有哪些怎么建国外网站

一、前言 在UI自动化测试的领域中,Selenium无疑是一颗璀璨的明星,它以其强大的浏览器自动化能力,长期以来一直是众多测试工程师的首选工具。它很经典,地位也毋庸置疑,但也是过去式了,现在我采用的自动化方…

张小明 2026/1/17 21:16:42 网站建设

学校网站开发与实现的解决思路百度指数批量查询工具

单芯片音频二分频新高度:全系列高通QCC平台智能分频方案解析 腾泰技术再次突破音频处理技术瓶颈,基于对高通QCC平台DSP核心的深度驾驭与算法创新,在全系列芯片上实现了单芯片高品质音频二分频硬件方案,为多扬声器音频设备带来集成…

张小明 2026/1/17 21:16:48 网站建设

网站介绍怎么写网站关键词优化的价格

高效窗口管理的终极方案:WindowResizer使用全攻略 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为窗口大小不合适而烦恼吗?WindowResizer是一款专业的…

张小明 2026/1/17 21:16:46 网站建设

杭州网站建设制作做直播网站收费吗

小米智能家居设备一键接入Home Assistant终极指南 【免费下载链接】hass-xiaomi-miot Automatic integrate all Xiaomi devices to HomeAssistant via miot-spec, support Wi-Fi, BLE, ZigBee devices. 小米米家智能家居设备接入Hass集成 项目地址: https://gitcode.com/gh_m…

张小明 2026/1/17 21:16:47 网站建设

如何通过查询网站注册时间网站导航栏下载

第一章:Open-AutoGLM沉思 架构分析Open-AutoGLM 是一个面向自动化自然语言理解任务的开源架构,其核心设计理念在于将大语言模型的能力与动态推理机制深度融合。该架构通过解耦感知、推理与执行三个关键模块,实现了对复杂语义场景的高效响应。…

张小明 2026/1/17 21:16:45 网站建设

学校建设门户网站的好处wordpress 菜单管理系统

让我们一起探索Decky Loader如何将你的Steam Deck打造成个性化游戏神器!这款开源插件加载器为掌机玩家开启了无限可能,从界面美化到功能扩展,一切都触手可及。 【免费下载链接】decky-loader A plugin loader for the Steam Deck. 项目地址…

张小明 2026/1/17 21:16:46 网站建设