当前位置: 首页 > news >正文

设计师必备的国际设计网站小学英语教师做应用相关网站

设计师必备的国际设计网站,小学英语教师做应用相关网站,jsp网站开发实现增删改查,汕头模板开发建站目录 引言 1、环境准备与依赖导入 2、QLoRA 配置 量化配置 3、模型加载 4、LoRA 配置 5、数据加载与预处理 数据加载 数据预处理 6、训练超参数配置 7、模型训练 8、总结 github代码仓库https://github.com/huangxiaoye6/LLM-tuning 引言 在自然语言处理领域大语言模型的微调是提升模型性能、使其适应特定任务的关键步骤。然而直接微调大型模型通常需要巨大的计算资源和内存。QLoRAQuantized Low-Rank Adaptation作为一种高效的微调方法通过量化和低秩适应技术显著减少了微调所需的内存和计算资源同时保持了良好的性能。本文将详细介绍如何使用 QLoRA 对 Qwen3-0.6B 模型进行微调并深入探讨相关算法和参数。 1、环境准备与依赖导入 首先我们需要导入必要的库这些库涵盖了模型加载、数据处理、训练等多个方面。 from peft import prepare_model_for_kbit_training,LoraConfig,get_peft_model,TaskType from transformers import AutoModelForCausalLM,AutoTokenizer,TrainingArguments,Trainer,default_data_collator,BitsAndBytesConfig from datasets import load_dataset import torch2、QLoRA 配置 量化配置 QLoRA 使用量化技术来减少模型的内存占用。我们通过BitsAndBytesConfig来配置量化参数。 _compute_dtype_map {fp32: torch.float32,fp16: torch.float16,bf16: torch.bfloat16 }# QLoRA 量化配置 q_config BitsAndBytesConfig(load_in_4bitTrue,bnb_4bit_quant_typenf4,bnb_4bit_use_double_quantTrue,bnb_4bit_compute_dtype_compute_dtype_map[fp32],)load_in_4bitTrue将模型加载为 4 位量化模型大大减少了内存占用。bnb_4bit_quant_typenf4使用nf4Normal Float 4-bit量化类型这是一种专门为低精度计算设计的量化方式。bnb_4bit_use_double_quantTrue启用双重量化进一步减少量化误差。bnb_4bit_compute_dtype_compute_dtype_map[fp32]计算数据类型设置为fp32以保证计算的精度。 3、模型加载 我们使用transformers库的AutoModelForCausalLM和AutoTokenizer来加载 Qwen3-0.6B 模型和对应的分词器。 model_nameQwen/Qwen3-0.6B modelAutoModelForCausalLM.from_pretrained(model_name,device_mapauto,torch_dtypeauto,quantization_configq_config) tokenizerAutoTokenizer.from_pretrained(model_name)device_mapauto自动将模型分配到可用的设备如 GPU上。torch_dtypeauto自动选择合适的张量数据类型。quantization_configq_config应用前面配置的量化参数。 接着我们使用prepare_model_for_kbit_training函数对模型进行预处理以适应低比特训练。 kbit_model prepare_model_for_kbit_training(model)4、LoRA 配置 LoRALow-Rank Adaptation通过引入低秩矩阵来对模型进行微调减少了可训练参数的数量。 lora_config LoraConfig(r4, # LoRA矩阵的秩lora_alpha32, # LoRA alpha参数target_modules[q_proj, k_proj, v_proj, o_proj], # 要应用LoRA的模块lora_dropout0.05, # Dropout概率biasnone, # 是否训练偏置task_typeCAUSAL_LM, # 任务类型 )r4LoRA 矩阵的秩表示低秩矩阵的维度。较小的秩可以减少可训练参数的数量。lora_alpha32LoRA 的缩放因子用于调整低秩矩阵的影响。target_modules[q_proj, k_proj, v_proj, o_proj]指定要应用 LoRA 的模块这些模块通常是注意力机制中的投影层。lora_dropout0.05Dropout 概率用于防止过拟合。biasnone不训练偏置参数进一步减少可训练参数的数量。task_typeCAUSAL_LM任务类型为因果语言模型。 然后我们使用get_peft_model函数将 LoRA 配置应用到模型上。 qlora_model get_peft_model(kbit_model, lora_config)我们可以打印出可训练参数的信息了解模型的训练规模。 qlora_model.print_trainable_parameters()5、数据加载与预处理 数据加载 我们使用datasets库的load_dataset函数加载 JSON 格式的数据集。 dataset load_dataset(json, data_files{train: ../数据集/data/train.json,validation: ../数据集/data/eval.json })数据预处理 我们定义了两个函数process_fun和tokenizer_fun来对数据进行预处理。 def process_fun(example):question[]answer[]for i in example[conversations]:for j in i:if j[from]human:question.append(j[value])elif j[from]gpt:answer.append(j[value])return {question:question,answer:answer}process_datadataset.map(process_fun,batchedTrue,remove_columnsdataset[train].column_names)process_fun函数用于从对话数据中提取问题和答案。 def tokenizer_fun(examples):# 构建完整的指令格式问{问题}\n答{答案}instructions []for q, a in zip(examples[question], examples[answer]):instruction f问{q}\n答{a}instructions.append(instruction)encoded tokenizer(instructions,max_length512,truncationTrue,paddingmax_length,return_tensorspt)labels encoded[input_ids].clone()# 定位答的位置标记需要预测的部分answer_start_token tokenizer.encode(答, add_special_tokensFalse)[0]# 遍历批次中的每个样本for i in range(len(labels)):# 找到每个样本中答的第一个token位置answer_positions (labels[i] answer_start_token).nonzero(as_tupleTrue)[0]if len(answer_positions) 0:# 只取第一个答的位置first_answer_pos answer_positions[0]# 将答之前的token标记为-100忽略计算损失labels[i, :first_answer_pos] -100return {input_ids: encoded[input_ids],attention_mask: encoded[attention_mask],labels: labels}tokenized_dataset process_data.map(tokenizer_fun,batchedTrue,remove_columnsprocess_data[train].column_names )tokenizer_fun函数用于将文本数据转换为模型可以接受的输入格式并标记出需要预测的部分。 6、训练超参数配置 我们使用TrainingArguments来配置训练的超参数。 # 定义训练参数 training_args TrainingArguments(output_dir./Qlora_train_qwen_0.6B_model,logging_steps100,logging_dir./runs,eval_strategyepoch,num_train_epochs3,per_device_train_batch_size8,per_device_eval_batch_size8,learning_rate2e-5,weight_decay0.01,save_strategyepoch,load_best_model_at_endTrue,metric_for_best_modeleval_loss,gradient_accumulation_steps4, # 如果GPU内存有限 )output_dir训练结果的保存目录。logging_steps每多少步记录一次日志。logging_dir日志文件的保存目录。eval_strategyepoch在每个 epoch 结束时进行评估。num_train_epochs3训练的轮数。per_device_train_batch_size8每个设备上的训练批次大小。per_device_eval_batch_size8每个设备上的评估批次大小。learning_rate2e-5学习率控制模型参数更新的步长。weight_decay0.01权重衰减用于防止过拟合。save_strategyepoch在每个 epoch 结束时保存模型。load_best_model_at_endTrue训练结束后加载评估指标最好的模型。metric_for_best_modeleval_loss以评估损失作为选择最佳模型的指标。gradient_accumulation_steps4梯度累积步数用于在 GPU 内存有限的情况下模拟更大的批次大小。 7、模型训练 最后我们使用Trainer类来进行模型训练。 trainerTrainer(modelqlora_model,argstraining_args,eval_datasettokenized_dataset[validation],train_datasettokenized_dataset[train],data_collatordefault_data_collator, )trainer.train()8、总结 本文详细介绍了如何使用 QLoRA 对 Qwen3-0.6B 模型进行微调包括环境准备、模型加载、数据预处理、超参数配置和模型训练等步骤。通过 QLoRA 的量化和低秩适应技术我们可以在有限的计算资源下高效地微调大型语言模型。同时我们深入探讨了相关算法和参数的作用希望能帮助读者更好地理解和应用 QLoRA 技术。
http://www.w-s-a.com/news/782296/

相关文章:

  • 高端网站设计青海省教育厅门户网站学籍查询
  • 长春网站优化公司网站制作400哪家好
  • 县级门户网站建设的报告开发游戏的软件有哪些
  • 做电子商务的网站wordpress带会员中心
  • 网站域名不变网站可以从做吗网站建设步骤 文档
  • 网站建设中 gif互联网新项目在哪里找
  • 做外包网站猎头公司英文
  • 房屋结构自建设计 网站海淀教育互动平台
  • 网络营销比赛 营销型网站策划热门搜索关键词
  • 网站建设图片代码网络设计师工资
  • 福建网站开发适合交换友情链接的是
  • 企业门户网站建站内乡微网站开发
  • 在线做logo印章网站一般到哪个网站找数据库
  • 哪些网站做免费送东西的广告6郑州人流医院哪家好
  • 高端做网站哪家好sem技术培训
  • 网站做等保是按照什么定级别的做网站的资源哪里找
  • 免费建站网页无需登陆潍坊高端模板建站
  • 北京php网站建设软通动力外包值得去吗
  • 优酷 做视频网站还能成功吗光谷做网站推广哪家好
  • 培训学校网站建设方案网站开发方案设计
  • 网站开发分支结构外贸网站做推广
  • 海南省城乡建设厅网站首页济南网站建设百家号
  • wordpress 图片命名吗北京seo优化哪家公司好
  • 国税网站页面申报撤销怎么做网站空间如何买
  • 简单的购物网站模板跨境建站平台
  • 网站主机多大html网站地图生成
  • 可信赖的邵阳网站建设德清做网站
  • 上传文件网站根目录wordpress博客管理
  • 网站seo优缺点网站建设公司咨
  • 网站设计需要会什么建设网站的目的以及意义