化器實(shí)戰(zhàn):AdamWDL 分層學(xué)習(xí)率衰減的原理、源碼解析與使用方法)
人工智能大模型預(yù)訓(xùn)練微調(diào)LoRARLHF強(qiáng)化學(xué)習(xí)分布式訓(xùn)練【免費(fèi)下載鏈接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.項(xiàng)目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP點(diǎn)擊查看免費(fèi)下載AdamW 優(yōu)化器是 Transformer 類大模型訓(xùn)練的標(biāo)配優(yōu)化器而分層學(xué)習(xí)率衰減Layer-wise Learning Rate Decay則能進(jìn)一步提升深層模型與預(yù)訓(xùn)練模型的收斂質(zhì)量。本文以 docs/zh/source/paddlenlp.ops.optimizer.AdamwOptimizer.rst 對(duì)應(yīng)的 PaddleNLP 優(yōu)化器 API 為核心深入講解 PaddleNLP 在paddlenlp.ops.optimizer中實(shí)現(xiàn)的AdamWDLAdamW with Dynamic layer-wise lr與layerwise_lr_decay工具函數(shù)。讀完本文你將掌握 AdamW 與分層學(xué)習(xí)率衰減的數(shù)學(xué)原理、AdamWDL的全部參數(shù)語義與默認(rèn)值、其底層優(yōu)化算子執(zhí)行鏈路的源碼實(shí)現(xiàn)并能在自己的訓(xùn)練腳本中直接落地使用。一、背景為什么 Transformer 訓(xùn)練需要 AdamW 與分層學(xué)習(xí)率衰減Transformer 模型尤其是 BERT 系、GPT 系等深層預(yù)訓(xùn)練模型在訓(xùn)練時(shí)通常面臨兩個(gè)經(jīng)典問題權(quán)重衰減Weight Decay與 L2 正則的耦合問題標(biāo)準(zhǔn) SGD 下的 L2 正則與權(quán)重衰減等價(jià)但在 Adam 這類基于自適應(yīng)學(xué)習(xí)率的優(yōu)化器中L2 正則會(huì)被一階矩/二階矩估計(jì)放大導(dǎo)致權(quán)重衰減行為偏離預(yù)期。AdamW 將權(quán)重衰減與梯度自適應(yīng)更新解耦decoupled weight decay即衰減項(xiàng)直接作用于參數(shù)本身而非梯度從而得到更穩(wěn)定、更可控的正則化效果。不同層對(duì)學(xué)習(xí)率敏感度不同淺層如 embedding通常學(xué)習(xí)速度慢、需要更保守的學(xué)習(xí)率深層則相反。分層學(xué)習(xí)率衰減Layer-wise Learning Rate Decay通過按層指數(shù)衰減學(xué)習(xí)率讓淺層使用更小的學(xué)習(xí)率、深層使用更大的學(xué)習(xí)率從而提升收斂質(zhì)量。PaddleNLP 正是圍繞這兩個(gè)需求在 paddlenlp/ops/optimizer/adamwdl.py 中實(shí)現(xiàn)了AdamWDL優(yōu)化器它繼承自 Paddle 官方paddle.optimizer.AdamW在標(biāo)準(zhǔn) AdamW 的基礎(chǔ)上疊加每層動(dòng)態(tài)學(xué)習(xí)率能力默認(rèn)使用layerwise_lr_decay作為動(dòng)態(tài)學(xué)習(xí)率設(shè)置函數(shù)。說明docs/zh/source/paddlenlp.ops.optimizer.AdamwOptimizer.rst是一份由 Sphinxautomodule指令生成的 API 文檔頁其內(nèi)容來源于paddlenlp.ops.optimizer模塊對(duì)應(yīng)優(yōu)化器類的 docstring。當(dāng)前倉庫中該文檔對(duì)應(yīng)的實(shí)際實(shí)現(xiàn)即AdamWDL類位于 paddlenlp/ops/optimizer/adamwdl.py同系列 API 文檔還包括 paddlenlp.ops.optimizer.adamwdl.rst、paddlenlp.ops.optimizer.adamw.rst 等。二、模塊總覽paddlenlp.ops.optimizer 里有什么先看 paddlenlp/ops/optimizer/init.py 的導(dǎo)出內(nèi)容from .adamwdl import AdamWDL, layerwise_lr_decay from .ema import ExponentialMovingAverage from .lr import InverseSquareRootSchedule __all__ [layerwise_lr_decay, AdamWDL, ExponentialMovingAverage, InverseSquareRootSchedule]該目錄下共四個(gè)源文件文件導(dǎo)出內(nèi)容作用adamwdl.pyAdamWDL、layerwise_lr_decay帶分層學(xué)習(xí)率動(dòng)態(tài)設(shè)置的 AdamW 優(yōu)化器及其學(xué)習(xí)率衰減函數(shù)ema.pyExponentialMovingAverage指數(shù)滑動(dòng)平均EMAlr.pyInverseSquareRootSchedule反平方根學(xué)習(xí)率調(diào)度__init__.py上述全部統(tǒng)一導(dǎo)出入口使用方式非常簡(jiǎn)單from paddlenlp.ops.optimizer import AdamWDL, layerwise_lr_decay三、AdamWDL完整的參數(shù)語義與默認(rèn)值A(chǔ)damWDL的類 docstring見 paddlenlp/ops/optimizer/adamwdl.py#L46-L131完整定義了其數(shù)學(xué)形式與全部參數(shù)。其更新規(guī)則為t t 1 moment_1_out β1 * moment_1 (1 - β1) * grad moment_2_out β2 * moment_2 (1 - β2) * grad * grad learning_rate learning_rate * sqrt(1 - β2^t) / (1 - β1^t) param_out param - learning_rate * (moment_1 / (sqrt(moment_2) ε) λ * param)其中β1、β2分別為一階、二階矩估計(jì)的指數(shù)衰減率ε為數(shù)值穩(wěn)定小量λ為權(quán)重衰減系數(shù)。注意公式末尾的λ * param項(xiàng)即解耦權(quán)重衰減——它不進(jìn)入梯度而是直接作用在參數(shù)更新上。3.1 構(gòu)造參數(shù)全表AdamWDL.__init__的簽名與默認(rèn)值源碼 paddlenlp/ops/optimizer/adamwdl.py#L133-L150參數(shù)類型默認(rèn)值說明learning_ratefloat / LRScheduler0.001學(xué)習(xí)率可為浮點(diǎn)數(shù)或?qū)W習(xí)率調(diào)度器beta1float / Tensor0.9一階矩估計(jì)指數(shù)衰減率shape 為 [1] 的 float32 Tensor 亦可beta2float / Tensor0.999二階矩估計(jì)指數(shù)衰減率epsilonfloat / Tensor1e-08數(shù)值穩(wěn)定小量parameterslist / tupleNone待更新的參數(shù)動(dòng)轉(zhuǎn)靜模式下必填靜態(tài)模式下為 None 時(shí)更新全部參數(shù)weight_decayfloat / Tensor0.01權(quán)重衰減系數(shù)解耦形式apply_decay_param_funfunction / NoneNone回調(diào)函數(shù)僅對(duì)apply_decay_param_fun(Tensor.name) True的參數(shù)施加權(quán)重衰減grad_clipGradientClipBaseNone梯度裁剪策略如GradientClipByGlobalNorm、GradientClipByNorm、GradientClipByValueNone 表示不裁剪lazy_modeboolFalse惰性模式僅更新當(dāng)前 mini-batch 中有梯度的元素可顯著加速超大參數(shù)更新但語義與標(biāo)準(zhǔn) Adam 略有差異multi_precisionboolFalse是否在權(quán)重更新時(shí)使用多精度如 fp16 訓(xùn)練時(shí)維護(hù) fp32 master weightlayerwise_decayfloat1.0分層學(xué)習(xí)率衰減比率1.0 表示不衰減n_layersint12Transformer 編碼器總層數(shù)set_param_lr_funfunction / Nonelayerwise_lr_decay在 Adam 算子執(zhí)行前設(shè)置參數(shù)學(xué)習(xí)率的回調(diào)函數(shù)name_dictdictNone鍵為模型動(dòng)態(tài)名model.named_parameters()所得、值為靜態(tài)名結(jié)構(gòu)名的映射namestrNone優(yōu)化器名稱一般無需設(shè)置其中l(wèi)ayerwise_decay、n_layers、set_param_lr_fun、name_dict四個(gè)參數(shù)是AdamWDL區(qū)別于普通AdamW的核心用于實(shí)現(xiàn)逐層動(dòng)態(tài)學(xué)習(xí)率。3.2 參數(shù)校驗(yàn)邏輯構(gòu)造函數(shù)開頭對(duì)layerwise_decay做了嚴(yán)格類型校驗(yàn)源碼 paddlenlp/ops/optimizer/adamwdl.py#L151-L155if not isinstance(layerwise_decay, float) and not isinstance(layerwise_decay, paddle.framework.Variable): raise TypeError(coeff should be float or Tensor.) self.layerwise_decay layerwise_decay self.n_layers n_layers self.set_param_lr_fun partial(set_param_lr_fun, layerwise_decay, name_dict, n_layers)也就是說layerwise_decay必須是float或 PaddleVariableTensor否則直接拋出TypeError。同時(shí)set_param_lr_fun通過functools.partial預(yù)綁定layerwise_decay、name_dict、n_layers三個(gè)參數(shù)后續(xù)調(diào)用時(shí)只需傳入param即可。隨后super().__init__(...)將剩余參數(shù)透?jìng)鹘o父類paddle.optimizer.AdamW因此AdamWDL天然繼承 Paddle 官方 AdamW 的全部能力lazy_mode、multi_precision、grad_clip等。四、核心機(jī)制layerwise_lr_decay 分層學(xué)習(xí)率衰減4.1 數(shù)學(xué)原理分層學(xué)習(xí)率衰減即自頂向下指數(shù)衰減各層學(xué)習(xí)率。例如假設(shè)第 24 層使用學(xué)習(xí)率l分層衰減率為α則第m層的學(xué)習(xí)率為l * α^(24-m)該思想詳見 1906.08237 相關(guān)工作。淺層靠近 embedding學(xué)習(xí)率最小深層學(xué)習(xí)率最大。4.2 源碼實(shí)現(xiàn)layerwise_lr_decay的實(shí)現(xiàn)位于 paddlenlp/ops/optimizer/adamwdl.py#L23-L43def layerwise_lr_decay(decay_rate, name_dict, n_layers, param): ratio 1.0 static_name name_dict[param.name] if encoder.layers in static_name: idx static_name.find(encoder.layers.) layer int(static_name[idx:].split(.)[2]) ratio decay_rate ** (n_layers - layer) elif embedding in static_name: ratio decay_rate ** (n_layers 1) return ratio其邏輯可拆解為名稱映射通過name_dict將參數(shù)的動(dòng)態(tài)名param.name映射為靜態(tài)結(jié)構(gòu)名如encoder.layers.0.self_attn.q_proj.weight。編碼器層若靜態(tài)名包含encoder.layers.解析出層號(hào)layer計(jì)算ratio decay_rate ** (n_layers - layer)。即第 0 層學(xué)習(xí)率為基準(zhǔn)學(xué)習(xí)率的α^n_layers最后一層layer n_layers - 1為α^1頂層結(jié)構(gòu)如 pooler、head保持ratio 1.0。embedding 層若靜態(tài)名包含embedding學(xué)習(xí)率縮放到α^(n_layers1)是所有層中最小的符合embedding 學(xué)習(xí)最保守的實(shí)踐經(jīng)驗(yàn)。其他結(jié)構(gòu)ratio保持 1.0學(xué)習(xí)率不做縮放。最終返回的ratio會(huì)被乘到該參數(shù)當(dāng)前的learning_rate上再執(zhí)行 Adam 更新算子詳見下一節(jié)。從源碼結(jié)構(gòu)看layerwise_lr_decay面向的是靜態(tài)名中包含encoder.layers/embedding的 Transformer 編碼器類模型如 BERT 系對(duì)于不含這些關(guān)鍵字的模型所有參數(shù)保持 1.0等同于普通 AdamW不會(huì)產(chǎn)生錯(cuò)誤。若你的模型靜態(tài)名規(guī)則不同可以自定義set_param_lr_fun回調(diào)見第六節(jié)示例。五、源碼解析優(yōu)化算子執(zhí)行鏈路AdamWDL通過覆寫三個(gè)關(guān)鍵方法實(shí)現(xiàn)解耦權(quán)重衰減 動(dòng)態(tài)學(xué)習(xí)率的完整執(zhí)行鏈路。5.1 _append_optimize_op動(dòng)態(tài)學(xué)習(xí)率的注入點(diǎn)源碼 paddlenlp/ops/optimizer/adamwdl.py#L182-L194def _append_optimize_op(self, block, param_and_grad): if self.set_param_lr_fun is None: return super(AdamWDL, self)._append_optimize_op(block, param_and_grad) self._append_decoupled_weight_decay(block, param_and_grad) prev_lr param_and_grad[0].optimize_attr[learning_rate] ratio self.set_param_lr_fun(param_and_grad[0]) param_and_grad[0].optimize_attr[learning_rate] * ratio # execute Adam op res super(AdamWDL, self)._append_optimize_op(block, param_and_grad) param_and_grad[0].optimize_attr[learning_rate] prev_lr return res執(zhí)行順序非常清晰若set_param_lr_fun為 None退化為父類標(biāo)準(zhǔn) AdamW 邏輯先執(zhí)行解耦權(quán)重衰減_append_decoupled_weight_decay保存當(dāng)前學(xué)習(xí)率prev_lr調(diào)用set_param_lr_fun(param)得到該參數(shù)的縮放系數(shù)ratio將optimize_attr[learning_rate]臨時(shí)放大調(diào)用父類邏輯執(zhí)行 Adam 算子此時(shí)算子使用縮放后的學(xué)習(xí)率立即恢復(fù)prev_lr避免影響其他參數(shù)。這一臨時(shí)修改、用完即恢復(fù)的設(shè)計(jì)保證了每個(gè)參數(shù)都能攜帶各自的動(dòng)態(tài)學(xué)習(xí)率進(jìn)入 Adam 算子同時(shí)不會(huì)污染全局學(xué)習(xí)率狀態(tài)。5.2 _append_decoupled_weight_decay解耦權(quán)重衰減實(shí)現(xiàn)源碼 paddlenlp/ops/optimizer/adamwdl.py#L196-L243核心更新式為parameter parameter - parameter * coeff * lr關(guān)鍵實(shí)現(xiàn)細(xì)節(jié)參數(shù)過濾若_apply_decay_param_fun不為 None則只有_apply_decay_param_fun(param.name) True的參數(shù)才執(zhí)行衰減學(xué)習(xí)率獲取學(xué)習(xí)率為 float 時(shí)直接使用否則調(diào)用_create_param_lr為參數(shù)創(chuàng)建對(duì)應(yīng)的學(xué)習(xí)率張量該方法必須在optimizer._create_global_learning_rate()之后調(diào)用源碼注釋對(duì)此有明確說明衰減系數(shù)緩存decay_coeff 1.0 - learning_rate * self._coeff并以learning_rate為鍵緩存在self._lr_to_coeff字典中同一學(xué)習(xí)率的參數(shù)復(fù)用計(jì)算結(jié)果避免重復(fù)計(jì)算多精度支持當(dāng)multi_precisionTrue且參數(shù)為 fp16 時(shí)從self._master_weights中取出 fp32 的 master weight用decay_coeff縮放并paddle.assign寫回 master weight否則直接對(duì) fp16 參數(shù)本體做縮放設(shè)備守衛(wèi)通過paddle.static.device_guard(None)保證decay_coeff計(jì)算可兼容 pipeline 等場(chǎng)景的設(shè)備設(shè)置。5.3 _create_optimization_pass動(dòng)轉(zhuǎn)靜下的緩存清理源碼 paddlenlp/ops/optimizer/adamwdl.py#L245-L249def _create_optimization_pass(self, parameters_and_grads): optimize_ops super(AdamWDL, self)._create_optimization_pass(parameters_and_grads) # In dygraph mode, clear _lr_to_coeff after applied gradient self._lr_to_coeff dict() return optimize_ops由于動(dòng)轉(zhuǎn)靜dygraph模式下每步都會(huì)執(zhí)行apply_gradient_lr_to_coeff緩存必須每步清空否則緩存的decay_coeff會(huì)與更新的學(xué)習(xí)率不一致源碼注釋明確說明該動(dòng)機(jī)。此外AdamWDL還覆寫了_update_param_group以支持按參數(shù)組param group更新coeff以及__str__返回Weight Decay, params: ...形式的可讀描述。六、完整使用示例6.1 標(biāo)準(zhǔn)用法基于 name_dict 的分層衰減以下代碼來自類 docstring 的官方示例paddlenlp/ops/optimizer/adamwdl.py#L103-L130展示了對(duì)paddle.nn.Linear應(yīng)用帶分層衰減的AdamWDLimport paddle from paddlenlp.ops.optimizer import AdamWDL def simple_lr_setting(decay_rate, name_dict, n_layers, param): ratio 1.0 static_name name_dict[param.name] if weight in static_name: ratio decay_rate**0.5 param.optimize_attr[learning_rate] * ratio linear paddle.nn.Linear(10, 10) name_dict dict() for n, p in linear.named_parameters(): name_dict[p.name] n inp paddle.rand([10, 10], dtypefloat32) out linear(inp) loss paddle.mean(out) adamwdl AdamWDL( learning_rate1e-4, parameterslinear.parameters(), set_param_lr_funsimple_lr_setting, layerwise_decay0.8, name_dictname_dict) loss.backward() adamwdl.step() adamwdl.clear_grad()要點(diǎn)拆解name_dict通過model.named_parameters()構(gòu)建鍵為參數(shù)的動(dòng)態(tài)名param.name值為結(jié)構(gòu)名n自定義simple_lr_setting(decay_rate, name_dict, n_layers, param)與layerwise_lr_decay簽名一致內(nèi)部直接修改param.optimize_attr[learning_rate]即可AdamWDL會(huì)在_append_optimize_op中讀取并應(yīng)用對(duì) Transformer 編碼器模型直接使用默認(rèn)的layerwise_lr_decay并傳入正確的n_layers與name_dict即可無需自定義回調(diào)。6.2 典型訓(xùn)練循環(huán)骨架將AdamWDL接入自定義訓(xùn)練腳本的最小骨架import paddle from paddlenlp.ops.optimizer import AdamWDL model YourTransformerModel() # 例如 BERT 系模型 n_layers model.config.num_hidden_layers name_dict {p.name: n for n, p in model.named_parameters()} optimizer AdamWDL( learning_ratepaddle.optimizer.lr.LinearDecay(1e-4, int(1e4), 0.0), parametersmodel.parameters(), weight_decay0.01, grad_clippaddle.nn.ClipGradByGlobalNorm(1.0), layerwise_decay0.8, # 分層衰減率 n_layersn_layers, # 與實(shí)際層數(shù)保持一致 name_dictname_dict, multi_precisionTrue, # 開啟 fp16 多精度更新 ) for step, batch in enumerate(dataloader): loss model(batch) loss.backward() optimizer.step() optimizer.clear_grad()注意layerwise_decay1.0默認(rèn)值等價(jià)于關(guān)閉分層衰減此時(shí)AdamWDL退化為普通AdamW但代碼仍可正常運(yùn)行。七、優(yōu)化器狀態(tài)命名與 checkpoint 的關(guān)聯(lián)AdamWDL繼承自paddle.optimizer.AdamW在保存/加載優(yōu)化器狀態(tài)時(shí)會(huì)使用 Adam 系優(yōu)化器的標(biāo)準(zhǔn)狀態(tài)命名后綴。這一點(diǎn)在 PaddleNLP 的 checkpoint 轉(zhuǎn)換工具 paddlenlp/trainer/utils/ckpt_converter.py 中有直接體現(xiàn)——該文件第 39 行定義了OPTIMIZER_STATE_NAME_SUFFIX [.moment1, .moment2, .beta1_pow_acc, .beta2_pow_acc, .master_weight]即 Adam 系優(yōu)化器狀態(tài)由四類張量組成狀態(tài)后綴含義.moment1一階矩估計(jì)Adam 的 momentum.moment2二階矩估計(jì)Adam 的 variance.beta1_pow_accβ1 的冪次累積用于偏差校正.beta2_pow_accβ2 的冪次累積用于偏差校正.master_weight多精度multi_precision訓(xùn)練時(shí)維護(hù)的 fp32 master weightckpt_converter 在加載混合并行TP/PP/Shardingcheckpoint 時(shí)會(huì)按上述規(guī)則對(duì)優(yōu)化器狀態(tài)做重命名與拼接參見其rename_using_optimizer_state_order、rename_auto_parallel_state_dict等方法的注釋其中明確提到adamw_optimizer_param_suffix_name_mapping與adamw_optimizer_status_name_suffix_mappings兩套命名規(guī)則。這意味著若你使用AdamWDL或任一paddle.optimizer.AdamW系優(yōu)化器訓(xùn)練其優(yōu)化器狀態(tài)與 PaddleNLP 的 checkpoint 轉(zhuǎn)換/續(xù)訓(xùn)鏈路是天然兼容的無需額外適配。八、注意事項(xiàng)與最佳實(shí)踐n_layers必須與模型實(shí)際層數(shù)一致layerwise_lr_decay用decay_rate ** (n_layers - layer)計(jì)算每層縮放若n_layers傳錯(cuò)衰減幅度會(huì)整體偏移。建議從模型 config 的num_hidden_layers字段動(dòng)態(tài)獲取。name_dict依賴靜態(tài)名規(guī)則默認(rèn)衰減函數(shù)要求靜態(tài)名包含encoder.layers.與embedding關(guān)鍵字。若模型結(jié)構(gòu)命名不同例如靜態(tài)名中不含encoder請(qǐng)自定義set_param_lr_fun否則所有參數(shù) ratio 恒為 1.0。layerwise_decay的類型約束僅接受float或 PaddleVariable傳入其他類型如numpy標(biāo)量、int會(huì)拋出TypeError(coeff should be float or Tensor.)。權(quán)重衰減是解耦的weight_decay作用于參數(shù)本身param - param * coeff * lr而非梯度配合apply_decay_param_fun可精確控制哪些參數(shù)參與衰減例如常見的bias 與 LayerNorm 參數(shù)不做權(quán)重衰減策略。多精度訓(xùn)練建議fp16 訓(xùn)練時(shí)建議開啟multi_precisionTrue此時(shí)衰減與更新都在 fp32 master weight 上進(jìn)行數(shù)值穩(wěn)定性更好同時(shí)配合lazy_mode可在超大參數(shù)下加速更新。API 文檔定位本文對(duì)應(yīng)的 API 文檔頁 paddlenlp.ops.optimizer.AdamwOptimizer.rst 為automodule自動(dòng)生成頁同系列可繼續(xù)查閱 paddlenlp.ops.optimizer.adamwdl.rstAdamWDL 詳細(xì)文檔、paddlenlp.ops.optimizer.ema.rstEMA以及 paddlenlp/ops/optimizer/lr.pyInverseSquareRootSchedule反平方根學(xué)習(xí)率調(diào)度它們可組合出一套完整的 PaddleNLP 訓(xùn)練優(yōu)化組件。九、總結(jié)AdamWDL是 PaddleNLP 提供的AdamW 分層學(xué)習(xí)率衰減一體化優(yōu)化器它完整繼承paddle.optimizer.AdamW的解耦權(quán)重衰減、多精度、梯度裁剪等能力并通過layerwise_lr_decay默認(rèn)策略 可自定義的set_param_lr_fun回調(diào)在 Adam 算子執(zhí)行前按層注入動(dòng)態(tài)學(xué)習(xí)率。其實(shí)現(xiàn)中臨時(shí)縮放學(xué)習(xí)率、用完即恢復(fù)decay_coeff 按學(xué)習(xí)率緩存、動(dòng)轉(zhuǎn)靜每步清空等設(shè)計(jì)細(xì)節(jié)對(duì)理解 Paddle 優(yōu)化器擴(kuò)展機(jī)制亦有很強(qiáng)的參考價(jià)值。對(duì)于 BERT 系、GPT 系等深層 Transformer 的預(yù)訓(xùn)練與微調(diào)任務(wù)AdamWDL是一個(gè)開箱即用、參數(shù)語義清晰的選擇。贊分享人工智能大模型預(yù)訓(xùn)練微調(diào)LoRARLHF強(qiáng)化學(xué)習(xí)分布式訓(xùn)練【免費(fèi)下載鏈接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.項(xiàng)目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP點(diǎn)擊查看免費(fèi)下載相關(guān)推薦PaddleNLP 優(yōu)化器模塊解析AdamWDL 分層學(xué)習(xí)率衰減、EMA 與逆平方根調(diào)度器實(shí)戰(zhàn)指南PaddleNLP 優(yōu)化器模塊解析AdamWDL 分層學(xué)習(xí)率衰減、EMA 與逆平方根調(diào)度器實(shí)戰(zhàn)指南 paddlenlp.ops.optimizer 是 Pad人工智能大模型預(yù)訓(xùn)練微調(diào)LoRARLHF強(qiáng)化學(xué)習(xí)分布式訓(xùn)練模型推理服務(wù)推理引擎模型量化模型壓縮本地部署NLPPaddleNLP 中的 AdamWDL 優(yōu)化器基于層間學(xué)習(xí)率衰減的 Transformer 訓(xùn)練方案PaddleNLP 中的 AdamWDL 優(yōu)化器基于層間學(xué)習(xí)率衰減的 Transformer 訓(xùn)練方案 導(dǎo)讀 AdamWDLAdamW with Dynam人工智能大模型預(yù)訓(xùn)練微調(diào)LoRARLHF強(qiáng)化學(xué)習(xí)分布式訓(xùn)練模型推理服務(wù)推理引擎模型量化模型壓縮本地部署NLP如何使用 annotated_deep_learning_paper_implementations 配置 AdamW 權(quán)重衰減與 warmup 學(xué)習(xí)率調(diào)度如何使用 annotated_deep_learning_paper_implementations 配置 AdamW 權(quán)重衰減與 warmup 學(xué)習(xí)率調(diào)度 在人工智能深度學(xué)習(xí)大模型NLP計(jì)算機(jī)視覺強(qiáng)化學(xué)習(xí)LoRA創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考