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

网站建设费用计入管理费用的哪个科目百度seo公司有哪些

网站建设费用计入管理费用的哪个科目,百度seo公司有哪些,业务外包服务公司,为什么我的网站在百度搜不到自注意力层中的 LoRA 应用 Transformer 的自注意力机制是模型理解输入序列之间复杂关系的核心部分。自注意力层通常包含多个线性变换#xff0c;包括键#xff08;Key#xff09;、查询#xff08;Query#xff09; 和 值#xff08;Value#xff09; 三个权重矩阵的线…自注意力层中的 LoRA 应用 Transformer 的自注意力机制是模型理解输入序列之间复杂关系的核心部分。自注意力层通常包含多个线性变换包括键Key、查询Query 和 值Value 三个权重矩阵的线性映射这些权重矩阵需要被训练来适应不同的任务。 LoRA 在自注意力层中的步骤 冻结原始权重将自注意力层中的键、查询、值矩阵的权重参数冻结不进行训练。这些原始权重是通过预训练获得的用于保留模型在大规模数据上学习到的通用知识。 添加低秩适配矩阵对于键、查询、值矩阵的权重分别添加低秩适配矩阵 A A A 和 B B B。例如如果键矩阵 W k ∈ R d k × d model W_k \in \mathbb{R}^{d_k \times d_{\text{model}}} Wk​∈Rdk​×dmodel​则引入两个适配矩阵 A k ∈ R d k × r , B k ∈ R r × d model A_k \in \mathbb{R}^{d_k \times r}, \quad B_k \in \mathbb{R}^{r \times d_{\text{model}}} Ak​∈Rdk​×r,Bk​∈Rr×dmodel​ 其中 r r r 是低秩值通常比 d k d_k dk​ 和 d model d_{\text{model}} dmodel​ 小很多。 权重变换在执行前向传播时键、查询、值矩阵的线性变换将使用 W k ′ W k A k B k W_k W_k A_k B_k Wk′​Wk​Ak​Bk​,作为新的权重矩阵其中 W k W_k Wk​ 是冻结的原始权重 A k B k A_k B_k Ak​Bk​ 是任务特定的微调部分。 训练适配矩阵在特定任务的微调过程中仅更新新增的适配矩阵 A k A_k Ak​ 和 B k B_k Bk​ 的参数而不更新原始的键矩阵权重。这使得微调过程变得高效和轻量化。 前馈网络中的 LoRA 应用 Transformer 的前馈网络FFN 通常由两个线性层和一个非线性激活函数如 ReLU组成。在前馈网络中参数数量非常庞大因为它在每个位置上独立地对输入进行两次线性变换。 LoRA 在前馈网络中的步骤 冻结全连接层权重前馈网络中的两个全连接层的权重也被冻结。这些层用于对每个输入位置进行独立的变换其预训练参数保持不变用于保留预训练期间获得的通用知识。 添加适配矩阵对于每个全连接层添加低秩适配矩阵。例如假设前馈网络中的第一层权重矩阵为 W f f ∈ R d f f × d model W_{ff} \in \mathbb{R}^{d_{ff} \times d_{\text{model}}} Wff​∈Rdff​×dmodel​则 LoRA 在这个矩阵上引入两个适配矩阵 A f f ∈ R d f f × r , B f f ∈ R r × d model A_{ff} \in \mathbb{R}^{d_{ff} \times r}, \quad B_{ff} \in \mathbb{R}^{r \times d_{\text{model}}} Aff​∈Rdff​×r,Bff​∈Rr×dmodel​ 权重变换与前向传播在前向传播中使用权重矩阵 W f f ′ W f f A f f B f f W_{ff} W_{ff} A_{ff} B_{ff} Wff′​Wff​Aff​Bff​来代替原始的全连接层权重矩阵。这样前馈网络的线性变换就不仅包含原始的预训练权重还包含适配矩阵的贡献用于更好地适应特定任务。 训练适配矩阵在训练过程中仅更新适配矩阵 A f f A_{ff} Aff​ 和 B f f B_{ff} Bff​而冻结的原始权重 W f f W_{ff} Wff​ 不变这大大减少了训练中需要更新的参数数量。 LoRA 在 Transformer 中的整体优势 参数效率在自注意力层和前馈网络中引入低秩适配矩阵可以大大减少需要训练的参数数量同时保留模型在大规模数据上学到的知识。 任务适应性LoRA 的方法允许对每个特定任务引入单独的低秩适配矩阵而保持预训练模型的核心不变这使得同一个预训练模型可以高效地适应多种任务。 降低计算与存储开销由于适配矩阵的秩 rrr 通常远小于模型的维度LoRA 显著降低了训练和存储的开销使得大模型在计算资源受限的情况下能够得到有效应用。 代码实现LoRA微调Bert的过程 import torch import torch.nn as nn import torch.optim as optim from transformers import BertModel# 假设我们有一个预训练好的 Transformer 模型例如 BERT pretrained_model BertModel.from_pretrained(bert-base-uncased)# 定义 LoRA 适配层 class LoRAAdapter(nn.Module):def __init__(self, input_dim, low_rank_dim):super(LoRAAdapter, self).__init__()self.A nn.Linear(input_dim, low_rank_dim, biasFalse) # 低秩矩阵 Aself.B nn.Linear(low_rank_dim, input_dim, biasFalse) # 低秩矩阵 Bdef forward(self, x):return self.B(self.A(x)) # 输出 B(A(x))# 定义一个新的 BERT 模型包含 LoRA 适配器 class LoRABertModel(nn.Module):def __init__(self, pretrained_model, low_rank_dim):super(LoRABertModel, self).__init__()self.bert pretrained_modelself.low_rank_dim low_rank_dim# 为 BERT 的每一层添加 LoRA 适配器for layer in self.bert.encoder.layer:layer.attention.self.query_adapter LoRAAdapter(layer.attention.self.query.in_features, low_rank_dim)layer.attention.self.key_adapter LoRAAdapter(layer.attention.self.key.in_features, low_rank_dim)layer.attention.self.value_adapter LoRAAdapter(layer.attention.self.value.in_features, low_rank_dim)# 冻结原始 BERT 模型的所有参数for param in self.bert.parameters():param.requires_grad False# 只训练 LoRA 适配层for layer in self.bert.encoder.layer:for param in layer.attention.self.query_adapter.parameters():param.requires_grad Truefor param in layer.attention.self.key_adapter.parameters():param.requires_grad Truefor param in layer.attention.self.value_adapter.parameters():param.requires_grad Truedef forward(self, input_ids, attention_maskNone, token_type_idsNone):# 对每一层应用 LoRA 适配器for layer in self.bert.encoder.layer:# 使用适配后的 Query、Key、Value 进行注意力计算query layer.attention.self.query(input_ids) layer.attention.self.query_adapter(input_ids)key layer.attention.self.key(input_ids) layer.attention.self.key_adapter(input_ids)value layer.attention.self.value(input_ids) layer.attention.self.value_adapter(input_ids)# 注意力计算attn_output, _ layer.attention.self.attn(query, key, value)input_ids attn_outputreturn self.bert(input_ids, attention_maskattention_mask, token_type_idstoken_type_ids)# 创建包含 LoRA 适配器的 BERT 模型 low_rank_dim 16 lora_bert LoRABertModel(pretrained_model, low_rank_dim)# 定义损失函数和优化器 criterion nn.CrossEntropyLoss() optimizer optim.Adam(filter(lambda p: p.requires_grad, lora_bert.parameters()), lr1e-4)# 生成一些随机数据用于训练 data torch.randint(0, 30522, (8, 64)) # 随机输入数据批量大小为 8序列长度为 64 labels torch.randint(0, 2, (8, 64)) # 随机标签# 训练循环 num_epochs 5 for epoch in range(num_epochs):# 前向传播outputs lora_bert(data).last_hidden_statelogits outputs.view(-1, outputs.size(-1))labels labels.view(-1)# 计算损失loss criterion(logits, labels)# 反向传播和优化optimizer.zero_grad()loss.backward()optimizer.step()# 打印损失值print(fEpoch [{epoch1}/{num_epochs}], Loss: {loss.item():.4f})利用LoRA对LLAMA2进行微调的代码 import torch import torch.nn as nn import torch.optim as optim from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer from datasets import load_dataset# 1. 加载预训练的 LLaMA 2 7B 模型 model_name meta-llama/Llama-2-7b-hf tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained(model_name)# 2. 手动添加 LoRA 适配器 class LoRAAdapter(nn.Module):def __init__(self, input_dim, low_rank_dim):super(LoRAAdapter, self).__init__()self.A nn.Linear(input_dim, low_rank_dim, biasFalse) # 低秩矩阵 Aself.B nn.Linear(low_rank_dim, input_dim, biasFalse) # 低秩矩阵 Bdef forward(self, x):return self.B(self.A(x)) # 输出 B(A(x))# 添加 LoRA 适配器到模型的注意力层 low_rank_dim 16 for name, module in model.named_modules():if attn in name.lower() and hasattr(module, q_proj) and hasattr(module, k_proj) and hasattr(module, v_proj):# 为 Query, Key, Value 添加 LoRA 适配器input_dim module.q_proj.in_featuresmodule.q_proj_lora LoRAAdapter(input_dim, low_rank_dim)module.k_proj_lora LoRAAdapter(input_dim, low_rank_dim)module.v_proj_lora LoRAAdapter(input_dim, low_rank_dim)# 使用 hooks 修改前向传播逻辑def hook_fn_forward_q(module, input, output):return output module.q_proj_lora(input[0])def hook_fn_forward_k(module, input, output):return output module.k_proj_lora(input[0])def hook_fn_forward_v(module, input, output):return output module.v_proj_lora(input[0])module.q_proj.register_forward_hook(hook_fn_forward_q)module.k_proj.register_forward_hook(hook_fn_forward_k)module.v_proj.register_forward_hook(hook_fn_forward_v)# 3. 定义训练参数和优化器 training_args TrainingArguments(output_dir./llama2_7b_lora_finetuned,num_train_epochs3,per_device_train_batch_size4,gradient_accumulation_steps8,learning_rate1e-4,logging_dir./logs,logging_steps10,save_total_limit2,fp16True # 采用混合精度加速训练 )optimizer optim.AdamW(filter(lambda p: p.requires_grad, model.parameters()), lr1e-4)# 4. 加载训练数据集 train_dataset load_dataset(daily_dialog, splittrain)# 5. 定义 Trainer 对象 trainer Trainer(modelmodel,argstraining_args,train_datasettrain_dataset,tokenizertokenizer,optimizers(optimizer, None) )# 6. 开始训练 trainer.train()# 7. 验证和保存模型 trainer.evaluate() model.save_pretrained(./llama2_7b_lora_finetuned)
http://www.w-s-a.com/news/658009/

相关文章:

  • 网站建设与制作总结沈阳百度广告
  • 网站管理系统 手机会员制网站搭建wordpress
  • 做物品租赁网站清新wordpress主题
  • 优秀专题网站家居企业网站建设市场
  • 中山市有什么网站推广wordpress轻应用主机
  • 洗头竖鞋带名片改良授权做网站不贵整个世界
  • 设计电子商务网站建设方案微信如何开发自己的小程序
  • 建设网站公司哪里好相关的热搜问题解决方案做网站要看什么书
  • 网站建设重要性黄岐建网站
  • 做网站电销《电子商务网站建设》精品课
  • 地方商城网站海外网站推广方法
  • 乐山 网站建设安阳给商家做网站推广
  • 网站空间一般多大邢台网站建设有哪些
  • h5网站开发工具有哪些wordpress清空post表
  • 公司开网站干嘛怎么制作一个免费的网站模板
  • 群晖wordpress搭建网站网站建设及管理
  • 中山企业网站建设公司抖音代运营合作模式
  • 南通营销网站开发做网站页面多少钱
  • 桂林生活网官方网站云主机和云电脑的区别
  • 内部网络网站怎么做vue做单页面网站
  • 如何建立网站教程wordpress粘帖图片
  • 广东网站备案要多久网站开发 pdf 文字版
  • 学校网站方案帮别人做钓鱼网站吗
  • 如何加强网站建设和信息宣传wordpress 搜索提示
  • 灰色网站怎么做php yaf 网站开发框架
  • 浙江建设网站首页提供做网站公司有哪些
  • 建公司网站报价公司seo是什么级别
  • 可信赖的武进网站建设中山网站建设方案
  • 网站设计方面有什么公司运动鞋网站建设目的
  • 学校门户网站流程建设方案找人做网站 多少钱