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

微网站和h5有什么区别网络营销推广的目的是什么

微网站和h5有什么区别,网络营销推广的目的是什么,建设跳转公积金网站,品牌运营具体做什么目录 引言 1、环境准备与依赖导入 2、QLoRA 配置 量化配置 3、模型加载 4、LoRA 配置 5、数据加载与预处理 数据加载 数据预处理 6、训练超参数配置 7、模型训练 8、总结 github代码仓库https://github.com/huangxiaoye6/LLM-tuning 引言 在自然语言处理领域&…

目录

引言

1、环境准备与依赖导入

2、QLoRA 配置

量化配置

3、模型加载

4、LoRA 配置

5、数据加载与预处理

数据加载

数据预处理

6、训练超参数配置

7、模型训练

8、总结


github代码仓库https://github.com/huangxiaoye6/LLM-tuning

引言

在自然语言处理领域,大语言模型的微调是提升模型性能、使其适应特定任务的关键步骤。然而,直接微调大型模型通常需要巨大的计算资源和内存。QLoRA(Quantized 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 torch

2、QLoRA 配置

量化配置

QLoRA 使用量化技术来减少模型的内存占用。我们通过BitsAndBytesConfig来配置量化参数。

_compute_dtype_map = {'fp32': torch.float32,'fp16': torch.float16,'bf16': torch.bfloat16
}# QLoRA 量化配置
q_config = BitsAndBytesConfig(load_in_4bit=True,bnb_4bit_quant_type='nf4',bnb_4bit_use_double_quant=True,bnb_4bit_compute_dtype=_compute_dtype_map['fp32'],)
  • load_in_4bit=True:将模型加载为 4 位量化模型,大大减少了内存占用。
  • bnb_4bit_quant_type='nf4':使用nf4(Normal Float 4-bit)量化类型,这是一种专门为低精度计算设计的量化方式。
  • bnb_4bit_use_double_quant=True:启用双重量化,进一步减少量化误差。
  • bnb_4bit_compute_dtype=_compute_dtype_map['fp32']:计算数据类型设置为fp32,以保证计算的精度。

3、模型加载

我们使用transformers库的AutoModelForCausalLMAutoTokenizer来加载 Qwen3-0.6B 模型和对应的分词器。

model_name="Qwen/Qwen3-0.6B"
model=AutoModelForCausalLM.from_pretrained(model_name,device_map='auto',torch_dtype="auto",quantization_config=q_config)
tokenizer=AutoTokenizer.from_pretrained(model_name)
  • device_map='auto':自动将模型分配到可用的设备(如 GPU)上。
  • torch_dtype="auto":自动选择合适的张量数据类型。
  • quantization_config=q_config:应用前面配置的量化参数。

接着,我们使用prepare_model_for_kbit_training函数对模型进行预处理,以适应低比特训练。

kbit_model = prepare_model_for_kbit_training(model)

4、LoRA 配置

LoRA(Low-Rank Adaptation)通过引入低秩矩阵来对模型进行微调,减少了可训练参数的数量。

lora_config = LoraConfig(r=4,  # LoRA矩阵的秩lora_alpha=32,  # LoRA alpha参数target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],  # 要应用LoRA的模块lora_dropout=0.05,  # Dropout概率bias="none",  # 是否训练偏置task_type="CAUSAL_LM",  # 任务类型
)
  • r=4:LoRA 矩阵的秩,表示低秩矩阵的维度。较小的秩可以减少可训练参数的数量。
  • lora_alpha=32:LoRA 的缩放因子,用于调整低秩矩阵的影响。
  • target_modules=["q_proj", "k_proj", "v_proj", "o_proj"]:指定要应用 LoRA 的模块,这些模块通常是注意力机制中的投影层。
  • lora_dropout=0.05:Dropout 概率,用于防止过拟合。
  • bias="none":不训练偏置参数,进一步减少可训练参数的数量。
  • task_type="CAUSAL_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_funtokenizer_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_data=dataset.map(process_fun,batched=True,remove_columns=dataset['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_length=512,truncation=True,padding="max_length",return_tensors="pt")labels = encoded["input_ids"].clone()# 定位"答:"的位置,标记需要预测的部分answer_start_token = tokenizer.encode("答:", add_special_tokens=False)[0]# 遍历批次中的每个样本for i in range(len(labels)):# 找到每个样本中"答:"的第一个token位置answer_positions = (labels[i] == answer_start_token).nonzero(as_tuple=True)[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,batched=True,remove_columns=process_data['train'].column_names
)

tokenizer_fun函数用于将文本数据转换为模型可以接受的输入格式,并标记出需要预测的部分。

6、训练超参数配置

我们使用TrainingArguments来配置训练的超参数。

# 定义训练参数
training_args = TrainingArguments(output_dir="./Qlora_train_qwen_0.6B_model",logging_steps=100,logging_dir='./runs',eval_strategy='epoch',num_train_epochs=3,per_device_train_batch_size=8,per_device_eval_batch_size=8,learning_rate=2e-5,weight_decay=0.01,save_strategy='epoch',load_best_model_at_end=True,metric_for_best_model='eval_loss',gradient_accumulation_steps=4,  # 如果GPU内存有限
)
  • output_dir:训练结果的保存目录。
  • logging_steps:每多少步记录一次日志。
  • logging_dir:日志文件的保存目录。
  • eval_strategy='epoch':在每个 epoch 结束时进行评估。
  • num_train_epochs=3:训练的轮数。
  • per_device_train_batch_size=8:每个设备上的训练批次大小。
  • per_device_eval_batch_size=8:每个设备上的评估批次大小。
  • learning_rate=2e-5:学习率,控制模型参数更新的步长。
  • weight_decay=0.01:权重衰减,用于防止过拟合。
  • save_strategy='epoch':在每个 epoch 结束时保存模型。
  • load_best_model_at_end=True:训练结束后加载评估指标最好的模型。
  • metric_for_best_model='eval_loss':以评估损失作为选择最佳模型的指标。
  • gradient_accumulation_steps=4:梯度累积步数,用于在 GPU 内存有限的情况下模拟更大的批次大小。

7、模型训练

最后,我们使用Trainer类来进行模型训练。

trainer=Trainer(model=qlora_model,args=training_args,eval_dataset=tokenized_dataset["validation"],train_dataset=tokenized_dataset["train"],data_collator=default_data_collator,
)trainer.train()

8、总结

本文详细介绍了如何使用 QLoRA 对 Qwen3-0.6B 模型进行微调,包括环境准备、模型加载、数据预处理、超参数配置和模型训练等步骤。通过 QLoRA 的量化和低秩适应技术,我们可以在有限的计算资源下高效地微调大型语言模型。同时,我们深入探讨了相关算法和参数的作用,希望能帮助读者更好地理解和应用 QLoRA 技术。

http://www.yayakq.cn/news/420248/

相关文章:

  • 做网站的是什么职业网站建设业务员招聘
  • 做网站需要学php吗营销网站建设评估及分析
  • 为什么网站不建议做充值功能网站ping值
  • 网站有多少个怎么做透明的网站图片
  • 网站注册费网络公司制作网站
  • 诚客网站建设如何有效的推广宣传
  • 网站建设平台招商汨罗做网站
  • 广州网站备案方案广告网站推广销售
  • 机械行业网站怎么做seo模拟点击软件
  • php 多语言网站建设源码制作企业网站首页
  • 吴江住房城乡建设局网站山东德州网站建设哪家最专业
  • 衡水做网站推广找谁莱芜新闻直播
  • 网站开发app开发培训十大免费客户管理系统
  • 什么网站做外链优化好企业年金的作用及意义
  • 如何自己做网站模版网站收录大幅度下降
  • 重庆网站建设velpai做视频网站犯法吗
  • 网站建设的信息安全防范技术网页设计与制作教程课后题答案
  • 爱站网长尾关键词挖掘啥网站都能看的浏览器
  • 十大购物网站排行榜需要留电话号码的广告
  • 规划电子商务网站机械设备东莞网站建设
  • 网站建设如何敲图标代码烟台网站制作效果
  • 灰色 网站刷单做任务的网站
  • 网站301重定向怎么做国外客户推广网站
  • 仿做网站网站兰州装修公司哪家口碑最好
  • 网站设计英文深圳高端网站建设模版
  • 网站标题和描述优化如何优化标题关键词
  • 安徽省徽工建设集团网站建设电影网站怎么上传电影
  • 建站代理赚钱吗云南网站制作价格
  • 公司网站怎么做教程360借条平台是合法的吗
  • 建设公共网站的手续jsp网站购买空间