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

备案网站名称与实际网站名称不一致淘宝网站开发用到哪些技术

备案网站名称与实际网站名称不一致,淘宝网站开发用到哪些技术,青岛网站建设方案服务,如何自助建网站1. 引言 微调 (Fine-tuning) 是将预训练大模型 (LLM) 应用于下游任务的常用方法。然而#xff0c;直接微调大模型的所有参数通常需要大量的计算资源和内存。LoRA (Low-Rank Adaptation) 是一种高效的微调方法#xff0c;它通过引入少量可训练参数#xff0c;固定预训练模型…1. 引言 微调 (Fine-tuning) 是将预训练大模型 (LLM) 应用于下游任务的常用方法。然而直接微调大模型的所有参数通常需要大量的计算资源和内存。LoRA (Low-Rank Adaptation) 是一种高效的微调方法它通过引入少量可训练参数固定预训练模型的权重从而在保持性能的同时大大减少了计算开销。 本文将深入分析 LoRA 的原理并结合 Llama 源码解读其实现逻辑最后探讨 LoRA 的优势。 2. LoRA 原理 LoRA 的核心思想是预训练模型中已经包含了大量的低秩 (low-rank) 特征微调时只需要对这些低秩特征进行微调即可。 具体来说LoRA 假设权重更新矩阵 ΔW 也是低秩的。对于一个预训练的权重矩阵 W ∈ R^(d×k)LoRA 将其更新表示为 W W ΔW W BA其中 W 是预训练的权重矩阵。ΔW 是权重更新矩阵。B ∈ R^(d×r) 和 A ∈ R^(r×k) 是两个低秩矩阵r 远小于 d 和 kr 被称为 LoRA 的秩 (rank)。 在训练过程中W 被冻结只有 A 和 B 是可训练的。 直观理解 可以将 W 看作一个编码器将输入 x 编码成一个高维表示 Wx。LoRA 认为在微调过程中我们不需要完全改变这个编码器只需要通过 BA 对其进行一个低秩的调整即可。 3. Llama 中 LoRA 的实现 虽然 Llama 官方代码没有直接集成 LoRA但我们可以使用一些流行的库 (例如 peft by Hugging Face) 来实现 Llama 的 LoRA 微调。peft 库提供了 LoraConfig 和 get_peft_model 等工具可以方便地将 LoRA 应用于各种 Transformer 模型。 3.1 使用 peft 库实现 Llama 的 LoRA 微调 以下是一个使用 peft 库实现 Llama 的 LoRA 微调的简化示例 from transformers import AutoModelForCausalLM, AutoTokenizer from peft import get_peft_model, LoraConfig, TaskType# 加载预训练的 Llama 模型和分词器 model_name meta-llama/Llama-2-7b-hf # 假设使用 Llama 2 7B tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained(model_name)# LoRA 配置 config LoraConfig(task_typeTaskType.CAUSAL_LM,inference_modeFalse,r8, # LoRA 的秩lora_alpha32, # LoRA 的缩放因子lora_dropout0.1, # Dropout 比例target_modules[q_proj, v_proj], # 需要应用 LoRA 的模块 )# 获取支持 LoRA 的模型 model get_peft_model(model, config)# 打印可训练参数的比例 model.print_trainable_parameters()# ... (加载数据进行训练) ...代码解释 加载预训练模型使用 transformers 库加载预训练的 Llama 模型和分词器。LoRA 配置创建一个 LoraConfig 对象指定 LoRA 的配置参数 task_type任务类型这里是因果语言模型 (Causal Language Modeling)。rLoRA 的秩。lora_alphaLoRA 的缩放因子用于控制 LoRA 模块的权重。lora_dropoutDropout 比例。target_modules: 指定需要应用 LoRA 的模块, 通常是注意力层中的 q_proj, v_proj, 还可以是k_proj, o_proj, gate_proj, up_proj, down_proj等。不同的模型需要根据实际情况配置。 获取支持 LoRA 的模型使用 get_peft_model 函数将原始的 Llama 模型转换为支持 LoRA 的模型。打印可训练参数使用 model.print_trainable_parameters() 可以查看模型中可训练参数的比例通常 LoRA 的可训练参数比例非常小。 3.2 peft 库中 LoRA 的实现细节 (部分) peft 库中 LoraModel 类的部分代码 (为了清晰起见已进行简化) class LoraModel(torch.nn.Module):# ...def _find_and_replace(self, model):# ... (遍历模型的每一层) ...if isinstance(module, nn.Linear) and name in self.config.target_modules:new_module Linear(module.in_features,module.out_features,biasmodule.bias is not None,rself.config.r,lora_alphaself.config.lora_alpha,lora_dropoutself.config.lora_dropout,)# ... (将原模块的权重赋值给新模块) ...# ...class Linear(nn.Linear):def __init__(self,in_features: int,out_features: int,r: int 0,lora_alpha: int 1,lora_dropout: float 0.0,**kwargs,):super().__init__(in_features, out_features, **kwargs)# LoRA 参数self.r rself.lora_alpha lora_alpha# 初始化 A 和 Bif r 0:self.lora_A nn.Parameter(torch.randn(r, in_features))self.lora_B nn.Parameter(torch.zeros(out_features, r)) # B 初始化为全 0self.scaling self.lora_alpha / self.rdef forward(self, x: torch.Tensor):result F.linear(x, self.weight, biasself.bias) # W xif self.r 0:result (self.lora_B self.lora_A x.transpose(-2, -1) # (B A) x).transpose(-2, -1) * self.scalingreturn result代码解释 _find_and_replace 函数遍历模型的每一层找到需要应用 LoRA 的线性层 (例如q_proj, v_proj)并将其替换为 Linear 层。Linear 类继承自 nn.Linear并添加了 LoRA 的参数 lora_A 和 lora_B。 lora_A 初始化为随机值。lora_B 初始化为全 0这是为了保证在训练开始时LoRA 部分的输出为 0不影响预训练模型的原始行为。scaling 是一个缩放因子用于控制 LoRA 模块的权重。 forward 函数 F.linear(x, self.weight, biasself.bias) 计算原始的线性变换 W x。(self.lora_B self.lora_A x.transpose(-2, -1)).transpose(-2, -1) * self.scaling 计算 LoRA 部分的输出 (B A) x并乘以缩放因子。将两者相加得到最终的输出。 4. LoRA 的优势 高效的参数利用LoRA 只需微调少量的参数 (A 和 B)而冻结了预训练模型的大部分参数大大减少了训练时的内存占用和计算开销。快速的训练速度由于可训练参数较少LoRA 的训练速度通常比全量微调快得多。防止过拟合LoRA 的低秩约束起到了一定的正则化作用有助于防止过拟合。性能相当在许多任务上LoRA 可以达到与全量微调相当的性能。易于部署训练完成后可以将 W 和 BA 相加得到新的权重矩阵 W然后像使用原始的预训练模型一样进行部署无需额外的计算开销。
http://www.dnsts.com.cn/news/164028.html

相关文章:

  • 用.net做网站好 还是用php登陆国外的网站要这么做
  • 徐州网站备案免费网站或软件
  • 互联网网站界面设计 要素wordpress idc主题
  • 网站开发技术与应用试验报告4围场网站建设
  • 西湖区住房和城市建设局网站wordpress主题个性
  • 做关键字要改网站公司网站建立
  • 慕课联盟网站开发实战域名有没有被注册哪个网站最好
  • 网站建设存在问题整改报告2345网址导航怎么样
  • 网站建设谈判技巧新浪网页版登录
  • 深圳英文网站推广软文写作模板
  • 合肥营销型网站建设开发wordpress文章dux评论修改
  • 黄页广告网站江西论坛
  • 深圳网站运营外包公司先做网站还是先解析
  • 网站建设管理案例实训报告昆山广告制作公司
  • 镇江网站建设 的公司汕头个人建站模板
  • 有哪些专门做减肥内容的网站wordpress中title
  • 合肥建设网站哪家好wordpress登录的logo怎么换
  • 庆阳网站设计价格网站建设公司云南
  • 网站标ico怎么做天津网站设计服务公司
  • 如何看网站是否优化兰州网站推广公司
  • seo网站是什么购买网站外链
  • 一般做海报的图片跟哪个网站下载新西兰注册公司做网站
  • 苏州网站建设老板哈尔滨网站建设哪家好而且价格不贵
  • 学校门户网站群建设方案常用的网站制作
  • 网站做支付需要准备什么东西吗网站自建设需要买什么
  • 有哪些免费网站可以做店招招聘网站开发模板
  • 网站建设与管理专业网站排名优化公司
  • 网站flash导入页怎么做局域网asp网站
  • 崇明集团网站建设宁波网络推广专员
  • 网上购物网站开发server 2012 iis 添加网站