免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線(xiàn)實(shí)戰(zhàn)洞察。

DeepSpeed多卡ChatGLM微調(diào)實(shí)戰(zhàn):從顯存優(yōu)化到LoRA選型

DeepSpeed多卡ChatGLM微調(diào)實(shí)戰(zhàn):從顯存優(yōu)化到LoRA選型 簡(jiǎn)介面向需要上手大模型微調(diào)的開(kāi)發(fā)者與研究者這份資源以DeepSpeed多卡訓(xùn)練為主線(xiàn)完整覆蓋ChatGLM微調(diào)實(shí)戰(zhàn)流程并提供可直接運(yùn)行的模塊化源碼與流程教程。項(xiàng)目包含詳細(xì)的環(huán)境搭建、數(shù)據(jù)準(zhǔn)備與格式化、LoRA/P-tuning/Freeze等多類(lèi)微調(diào)方案同時(shí)講解ds_config.json等關(guān)鍵配置參數(shù)、訓(xùn)練啟動(dòng)腳本寫(xiě)法和常見(jiàn)踩坑點(diǎn)有助于讀者跨越單卡顯存限制快速搭建多卡并行訓(xùn)練環(huán)境。壓縮包共17個(gè)文件以Python訓(xùn)練腳本11個(gè)、Shell啟動(dòng)腳本3個(gè)、JSON配置文件2個(gè)和Markdown說(shuō)明文檔1個(gè)為主大小僅118KB目錄劃分明確便于按模塊對(duì)照學(xué)習(xí)。已有267人瀏覽學(xué)習(xí)。借助源碼中的模型加載、數(shù)據(jù)加載、訓(xùn)練循環(huán)、推理腳本和評(píng)估測(cè)試等模塊讀者不僅能復(fù)現(xiàn)ChatGLM多卡微調(diào)還能理解DeepSpeed的內(nèi)存優(yōu)化與梯度累積機(jī)制是一份可直接落地的優(yōu)質(zhì)實(shí)戰(zhàn)教程。1. 多卡ChatGLM微調(diào)為什么大家都卡在DeepSpeed這一關(guān)把ChatGLM-6B塞進(jìn)一張A100-80G里做推理是輕松的但一旦開(kāi)始全量微調(diào)Adam優(yōu)化器的狀態(tài)一上來(lái)顯存立刻不夠用。很多人對(duì)“多卡微調(diào)”的第一反應(yīng)是插4張卡等于4倍顯存真正跑起來(lái)才發(fā)現(xiàn)權(quán)重、梯度、優(yōu)化器狀態(tài)這堆東西不切開(kāi)4張卡也只是各自抱著同一份副本在空轉(zhuǎn)。DeepSpeed就是為解決這個(gè)問(wèn)題出現(xiàn)的它把模型狀態(tài)切到各卡上讓基于DeepSpeed的多卡ChatGLM微調(diào)從“跑得動(dòng)”變成“跑得起”。這篇實(shí)戰(zhàn)筆記按環(huán)境搭建、LoRA與全量選型、deepspeed_config.json參數(shù)、多卡啟動(dòng)和踩坑排查的順序給出一套可以直接復(fù)制到你自己機(jī)器上的完整流程。適合手里有2到8張GPU、想把ChatGLM微調(diào)成垂直場(chǎng)景模型的算法工程師和獨(dú)立開(kāi)發(fā)者。2. 微調(diào)前的選型全量微調(diào)和LoRA微調(diào)先算一筆賬2.1 全量微調(diào)為什么在多卡上這么貴全量微調(diào)意味著模型每一層參數(shù)都在更新訓(xùn)練過(guò)程中需要同時(shí)存放五樣?xùn)|西權(quán)重本身、梯度、優(yōu)化器的一階動(dòng)量、二階動(dòng)量以及混合精度下的FP32主權(quán)重。工程上常用一個(gè)近似數(shù)來(lái)算賬每1B參數(shù)大約要占16GB的模型狀態(tài)。ChatGLM-6B換算下來(lái)光是參數(shù)、梯度和優(yōu)化器狀態(tài)就要接近96GB。一張A100-80G單卡裝不下即便勉強(qiáng)裝下batch只能設(shè)為1訓(xùn)練效率低到?jīng)]法看。多卡場(chǎng)景里最直接的做法是Data Parallel也就是每張卡復(fù)制一份完整模型各自算梯度再做一次allreduce合并。4張卡就是4份96GB顯存不僅沒(méi)省反而因?yàn)橥ㄐ砰_(kāi)銷(xiāo)變得更慢。DeepSpeed在這里的核心價(jià)值是ZeRO它把原本每張卡都保存一份的優(yōu)化器狀態(tài)、梯度甚至參數(shù)切分到不同卡上通信只發(fā)生在真正需要同步的時(shí)刻。這也是“多卡微調(diào)為什么繞不開(kāi)DeepSpeed”的最直接原因?qū)τ谝粋€(gè)6B量級(jí)的模型光模型狀態(tài)就已經(jīng)超過(guò)單卡物理上限不用ZeRO只能靠堆顯存解決而堆顯存的性?xún)r(jià)比太低。這里還需要區(qū)分一個(gè)概念模型狀態(tài)和激活值。模型狀態(tài)指的是參數(shù)、梯度、優(yōu)化器狀態(tài)激活值是前向傳播過(guò)程中每一層輸出的中間張量。很多人以為開(kāi)了DeepSpeed就能解決所有顯存問(wèn)題結(jié)果發(fā)現(xiàn)batch一大照樣OOM這就是激活值在瓶頸上。后面第4章會(huì)給出一個(gè)完整的顯存估算方法先把模型狀態(tài)算明白再結(jié)合batch和序列長(zhǎng)度去反推激活值的余量。2.2 LoRA微調(diào)是什么意思參數(shù)少到什么程度剛接觸大模型微調(diào)的人常問(wèn)LoRA微調(diào)是什么意思。簡(jiǎn)單說(shuō)LoRA凍結(jié)原模型的全部權(quán)重在每一層通常是注意力層的線(xiàn)性映射旁邊掛一組低秩矩陣A和B只訓(xùn)練這兩個(gè)小矩陣。最終更新量等于alpha/r乘以AB的結(jié)果再疊加到原始權(quán)重上。由于原始權(quán)重完全不更新可訓(xùn)練參數(shù)量會(huì)從6B級(jí)別直接掉到百萬(wàn)級(jí)別。以ChatGLM-6B為例在query_key_value上掛LoRAr設(shè)為8可訓(xùn)練參數(shù)大約只有三百萬(wàn)到四百萬(wàn)比原始參數(shù)小了三個(gè)數(shù)量級(jí)。這會(huì)帶來(lái)兩個(gè)直接好處一是模型狀態(tài)顯存占用大幅下降因?yàn)樾枰4娴膮?shù)、梯度和優(yōu)化器狀態(tài)都只針對(duì)這小部分可訓(xùn)練參數(shù)二是訓(xùn)練過(guò)程不容易把基座的語(yǔ)言能力帶偏特別適合數(shù)據(jù)量不大、目標(biāo)明確的垂直微調(diào)場(chǎng)景。from peft import LoraConfig, get_peft_model lora_config LoraConfig( r8, # 低秩矩陣的秩常用 8/16/32 lora_alpha16, # 縮放系數(shù)實(shí)際更新量乘 alpha/r target_modules[query_key_value], # ChatGLM 注意力層線(xiàn)性映射的參數(shù)名 lora_dropout0.1, biasnone, ) model get_peft_model(model, lora_config) model.print_trainable_parameters()這里有幾個(gè)參數(shù)需要根據(jù)實(shí)際任務(wù)調(diào)r太小表達(dá)能力不夠r太大可訓(xùn)練參數(shù)變多顯存優(yōu)勢(shì)和微調(diào)“安全邊際”都會(huì)縮水。lora_alpha和r的比值決定LoRA更新的影響幅度一般alpha取r的1到2倍。target_modules要根據(jù)模型結(jié)構(gòu)改ChatGLM的注意力層里query、key、value是合并在一個(gè)名為query_key_value的線(xiàn)性層里的所以要寫(xiě)這個(gè)參數(shù)名如果微調(diào)ChatGLM2或ChatGLM3這個(gè)名稱(chēng)可能不同先打印模型結(jié)構(gòu)確認(rèn)再填。對(duì)比全量微調(diào)LoRA微調(diào)的選擇邏輯可以歸納為數(shù)據(jù)量小、任務(wù)垂直度高、希望快速迭代選LoRA數(shù)據(jù)量足夠大、顯卡資源充足、追求極限效果才考慮全量微調(diào)。對(duì)于多數(shù)真實(shí)項(xiàng)目LoRA都是第一版方案因?yàn)樗茉谝粋€(gè)晚上跑完而且效果差距往往沒(méi)有想象中大。對(duì)比項(xiàng)全量微調(diào)LoRA微調(diào)更新參數(shù)范圍全部參數(shù)低秩矩陣模型狀態(tài)顯存約16GB/B參數(shù)約0.1GB/B參數(shù)訓(xùn)練速度慢快3到5倍基座能力保持容易遺忘較好適用場(chǎng)景數(shù)據(jù)量大、資源足垂直微調(diào)、快速迭代2.3 ChatGLM的數(shù)據(jù)拼接和標(biāo)簽掩碼Prefix-LM結(jié)構(gòu)下的labelsChatGLM是Prefix-LM結(jié)構(gòu)左側(cè)的輸入可以做雙向注意力右側(cè)的生成部分只能看左側(cè)。這和GPT的Causal-LM不一樣訓(xùn)練數(shù)據(jù)不能直接當(dāng)普通CausalLM來(lái)拼接。社區(qū)里最常見(jiàn)的做法是把指令和回答拼成一條完整文本在回答開(kāi)始的位置之前把標(biāo)簽全部設(shè)為-100計(jì)算loss時(shí)這些位置被忽略。def pack_chat_input(tokenizer, source, answer, max_len2048): # 拼接格式和ChatGLM官方prompt模板保持一致 text 問(wèn) source \n答 answer tokenizer.eos_token ids tokenizer.encode(text, max_lengthmax_len, truncationTrue) # 計(jì)算prompt部分的長(zhǎng)度這部分不參與loss計(jì)算 prompt 問(wèn) source \n答 prompt_len len(tokenizer.encode(prompt)) labels [-100] * len(ids) # 先把所有位置設(shè)為-100 labels[prompt_len:] ids[prompt_len:] # 回答部分保留真實(shí)token return {input_ids: ids, labels: labels}這段代碼的核心邏輯是“回答token要學(xué)習(xí)指令token不學(xué)習(xí)”。-100是PyTorch CrossEntropyLoss約定俗成的ignore索引模型在算loss時(shí)會(huì)自動(dòng)跳過(guò)這些位置。注意這里的prompt_len用的是tokenizer.encode不是字符長(zhǎng)度因?yàn)橹形奈谋镜膖oken切分不是按字來(lái)的。訓(xùn)練循環(huán)里有一個(gè)特別容易翻車(chē)的細(xì)節(jié)用了DeepSpeed之后反向傳播和參數(shù)更新必須交給engine不能直接調(diào)model.backward()或optimizer.step()。原因在于ZeRO把模型狀態(tài)切到了多張卡上只有engine知道當(dāng)前rank上持有哪部分狀態(tài)。for step, batch in enumerate(dataloader): outputs engine( input_idsbatch[input_ids].cuda(), labelsbatch[labels].cuda(), ) engine.backward(outputs.loss) engine.step()這里的engine就是deepspeed.initialize返回的模型包裝對(duì)象。前向接口和原始模型基本一致但backward和step必須走engine。如果自己額外再調(diào)一次optimizer.step()輕則梯度更新錯(cuò)亂重則訓(xùn)練過(guò)程直接崩掉。3. 環(huán)境搭建與最小復(fù)現(xiàn)從安裝deepspeed到多卡啟動(dòng)3.1 安裝deepspeed包先過(guò)CUDA這一關(guān)搜索“安裝deepspeed包一直報(bào)錯(cuò)”你會(huì)發(fā)現(xiàn)十個(gè)里有八個(gè)是同一個(gè)原因pip在安裝時(shí)嘗試編譯CUDA拓展但系統(tǒng)里找不到CUDA工具鏈。報(bào)錯(cuò)信息里通常會(huì)有一大段gcc、nvcc相關(guān)的日志很多人看到就懵了其實(shí)解決辦法很簡(jiǎn)單先確認(rèn)PyTorch的CUDA版本再檢查nvcc能不能用。# 先確認(rèn)torch的CUDA版本再?zèng)Q定裝哪個(gè)deepspeed python -c import torch; print(torch.version.cuda) # 安裝前確認(rèn)nvcc可用 nvcc --version # 常規(guī)安裝方式 pip install deepspeed如果pip直接從源碼編譯導(dǎo)致報(bào)錯(cuò)可以先用預(yù)編譯的wheel包緩解。另一個(gè)常見(jiàn)做法是設(shè)置CUDA_HOME環(huán)境變量指向CUDA Toolkit的安裝目錄再執(zhí)行pip install deepspeed。安裝完成后用ds_report命令檢查deepspeed是否識(shí)別到當(dāng)前GPU、CUDA版本和NCCL版本。這個(gè)命令會(huì)打印一份環(huán)境診斷報(bào)告看到“OK”字樣說(shuō)明基礎(chǔ)環(huán)境沒(méi)有問(wèn)題。需要注意deepspeed會(huì)在第一次啟動(dòng)訓(xùn)練時(shí)做JIT編譯編譯一些CUDA算子到緩存目錄所以第一次啟動(dòng)多等一兩分鐘是正常的。如果多次啟動(dòng)都卡在同一處編譯多半是系統(tǒng)缺了gcc或者編譯依賴(lài)看日志里的具體報(bào)錯(cuò)再補(bǔ)裝對(duì)應(yīng)依賴(lài)。3.2 寫(xiě)一個(gè)最小訓(xùn)練腳本train_chatglm_lora.py環(huán)境就緒后先別急著上全量微調(diào)我一般用LoRA把整個(gè)鏈路先跑通。下面這個(gè)腳本是完整可運(yùn)行的最小版本把模型加載、LoRA包裝、DeepSpeed初始化和訓(xùn)練循環(huán)放在一起總共不到40行。import torch import deepspeed from transformers import AutoTokenizer, AutoModel from peft import LoraConfig, get_peft_model def train(): model_name THUDM/chatglm-6b tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) # bf16要求Ampere及以上架構(gòu)V100等舊卡請(qǐng)改成fp16 model AutoModel.from_pretrained( model_name, trust_remote_codeTrue, torch_dtypetorch.bfloat16, ) # 用LoRA凍結(jié)大部分參數(shù)只訓(xùn)練query_key_value上的低秩矩陣 model get_peft_model(model, LoraConfig( r8, lora_alpha16, target_modules[query_key_value], lora_dropout0.1, biasnone, )) # 梯度檢查點(diǎn)用計(jì)算換顯存多卡顯存緊張時(shí)建議打開(kāi) model.gradient_checkpointing_enable() engine, optimizer, _, lr_scheduler deepspeed.initialize( modelmodel, model_parameters[p for p in model.parameters() if p.requires_grad], configds_config.json, ) for step, batch in enumerate(dataloader): outputs engine( input_idsbatch[input_ids].cuda(), labelsbatch[labels].cuda(), ) engine.backward(outputs.loss) engine.step()這段代碼里有兩個(gè)地方最容易出錯(cuò)。一是AutoModel.from_pretrained必須帶trust_remote_codeTrue因?yàn)镃hatGLM的模型結(jié)構(gòu)通過(guò)遠(yuǎn)程代碼加載二是deepspeed.initialize的model_parameters參數(shù)只傳可訓(xùn)練參數(shù)LoRA模式下就是那幾個(gè)低秩矩陣不要傳model.parameters()的完整列表否則DeepSpeed會(huì)把凍結(jié)參數(shù)也納入優(yōu)化器管理白白浪費(fèi)顯存。dataloader需要配合第2.3節(jié)的pack_chat_input函數(shù)把每條樣本處理成input_ids和labels。注意collate時(shí)要?jiǎng)討B(tài)padding到batch內(nèi)最長(zhǎng)而不是固定到2048否則顯存大部分都被無(wú)效的padding token吃掉了。3.3 啟動(dòng)命令單機(jī)多卡和多機(jī)多卡的差異訓(xùn)練腳本寫(xiě)好后啟動(dòng)方式用deepspeed命令不是python命令。單機(jī)4卡的最簡(jiǎn)命令如下deepspeed --num_gpus 4 --master_port 29500 train_chatglm_lora.pymaster_port是分布式訓(xùn)練的控制通信端口默認(rèn)29500。如果同一臺(tái)機(jī)器上同時(shí)跑多個(gè)訓(xùn)練任務(wù)端口會(huì)沖突啟動(dòng)時(shí)會(huì)報(bào)端口被占用的錯(cuò)誤換一個(gè)比如29501就行。如果你用的是SLURM之類(lèi)的調(diào)度系統(tǒng)還要帶上deepspeed_multinode腳本一起用這里不展開(kāi)。多機(jī)多卡稍微復(fù)雜一點(diǎn)每臺(tái)機(jī)器上都要執(zhí)行啟動(dòng)命令區(qū)別只在node_rank和master_addr# 在第一個(gè)節(jié)點(diǎn)執(zhí)行 deepspeed --num_nodes 2 --num_gpus 8 --node_rank 0 \ --master_addr 192.168.1.10 --master_port 29500 train_chatglm_lora.py # 在第二個(gè)節(jié)點(diǎn)執(zhí)行 deepspeed --num_nodes 2 --num_gpus 8 --node_rank 1 \ --master_addr 192.168.1.10 --master_port 29500 train_chatglm_lora.py多機(jī)場(chǎng)景下master_addr必須填第一臺(tái)機(jī)器的IP而且兩臺(tái)機(jī)器要能互相訪(fǎng)問(wèn)。這里有個(gè)容易踩的坑如果機(jī)器之間只有以太網(wǎng)沒(méi)有InfiniBand通信速度會(huì)成為訓(xùn)練瓶頸需要顯式設(shè)置NCCL_SOCKET_IFNAME指向?qū)嶋H網(wǎng)卡接口名。判斷方法是在訓(xùn)練日志里看NCCL初始化時(shí)用了哪塊網(wǎng)卡如果是lo或docker0訓(xùn)練速度大概率不正常。4. deepspeed_config.json先設(shè)這幾個(gè)參數(shù)再談?dòng)?xùn)練收斂4.1 ZeRO Stage選1、2還是3zero123的區(qū)別第一次寫(xiě)deepspeed_config.json卡住最多的問(wèn)題就是deepspeed zero123的區(qū)別。簡(jiǎn)單說(shuō)Stage 1只切分優(yōu)化器狀態(tài)Stage 2在Stage 1基礎(chǔ)上連梯度也切分Stage 3更進(jìn)一步把模型參數(shù)本身也切分到各卡上。Stage越高顯存越省但卡間通信量越大訓(xùn)練速度越慢。ChatGLM-6B微調(diào)我的建議是優(yōu)先Stage 2。6B模型的參數(shù)量不算特別大Stage 2已經(jīng)能把優(yōu)化器狀態(tài)和梯度的重復(fù)存儲(chǔ)省掉顯存能被壓到接近“每卡只存一份完整權(quán)重部分狀態(tài)”的水平。Stage 3雖然有額外收益但通信開(kāi)銷(xiāo)會(huì)拖慢迭代速度在4卡或8卡規(guī)模下性?xún)r(jià)比不高。只有當(dāng)顯存實(shí)在不夠、batch小到?jīng)]法看的時(shí)候才考慮Stage 3或者把優(yōu)化器狀態(tài)offload到CPU。DeepSpeed初始化時(shí)會(huì)打印一份運(yùn)行配置摘要里面包括當(dāng)前用的是哪個(gè)Stage、每張卡預(yù)估的顯存使用量。啟動(dòng)日志不要直接跳過(guò)這些信息比任何第三方工具都準(zhǔn)。Stage 3還要注意一個(gè)問(wèn)題參數(shù)被切分后前向和反向過(guò)程中需要?jiǎng)討B(tài)收集參數(shù)所以eval和保存模型時(shí)要額外處理對(duì)新手來(lái)說(shuō)這是比顯存更麻煩的坑。4.2 我習(xí)慣先寫(xiě)好的幾個(gè)配置項(xiàng)下面這份ds_config.json是我做ChatGLM微調(diào)時(shí)最常使用的配置模板每一項(xiàng)都直接影響訓(xùn)練能否收斂。{ train_batch_size: 32, gradient_accumulation_steps: 4, gradient_clipping: 1.0, bf16: { enabled: true }, zero_optimization: { stage: 2, offload_optimizer: { device: cpu } }, scheduler: { type: WarmupDecayLR, params: { warmup_min_lr: 0, warmup_max_lr: 2e-5, warmup_num_steps: 200 } }, steps_per_print: 20 }第一眼要搞清楚的是train_batch_size、gradient_accumulation_steps和實(shí)際每卡batch三者的關(guān)系。train_batch_size是全局batch也就是所有卡累積多少條樣本做一次參數(shù)更新。實(shí)際每卡micro batch的計(jì)算公式是train_batch_size除以卡數(shù)再除以梯度累積步數(shù)。以這份配置為例4卡、累積4步、全局32那么每卡micro batch是2。很多人在這一步憑感覺(jué)填數(shù)字結(jié)果實(shí)際batch大小和預(yù)期完全不是一回事loss曲線(xiàn)自然不對(duì)。配置項(xiàng)取值建議作用train_batch_size16到64全局batch決定每次更新用多少樣本gradient_accumulation_steps2到8梯度累積步數(shù)等效增大batchgradient_clipping1.0防止梯度爆炸微調(diào)大模型必備bf16enabled: true半精度訓(xùn)練A100及以上建議開(kāi)offload_optimizerdevice: cpu優(yōu)化器狀態(tài)放內(nèi)存顯存緊張時(shí)開(kāi)warmup_max_lr1e-5到5e-5峰值學(xué)習(xí)率6B模型別超過(guò)5e-5bf16和fp16的區(qū)別也值得多提一句。bf16在A100、H100這些Ampere之后架構(gòu)的卡上效果更好指數(shù)位更多不容易出現(xiàn)loss溢出V100等舊架構(gòu)不支持bf16只能開(kāi)fp16這時(shí)要額外關(guān)注loss scale防止訓(xùn)練中期loss變成NaN。4.3 用顯存公式反推可用的batch和序列長(zhǎng)度顯存占用粗略分為兩塊模型狀態(tài)加激活值。模型狀態(tài)可以用第2.1節(jié)的16GB/B參數(shù)估算激活值則和micro batch大小、序列長(zhǎng)度、模型層數(shù)強(qiáng)相關(guān)。ChatGLM-6B在max_seq_len為2048時(shí)激活值隨batch增長(zhǎng)的斜率非常明顯很多人以為batch設(shè)2沒(méi)問(wèn)題結(jié)果跑到第100步就OOM。我建議的排查順序是先固定序列長(zhǎng)度把micro batch調(diào)到1跑一輪用nvidia-smi看顯存占用基線(xiàn)再逐步往上加。# 每秒刷新一次顯存情況觀察訓(xùn)練過(guò)程中的峰值占用 watch -n 1 nvidia-smi看重點(diǎn)不是顯存總量而是進(jìn)程占用那一欄。如果micro batch為1時(shí)已經(jīng)用了接近全部顯存說(shuō)明瓶頸在激活值這時(shí)候調(diào)低max_len或者關(guān)掉冗余輸入更有效。如果micro batch為1時(shí)顯存還有余量才把batch往上加。DeepSpeed在啟動(dòng)時(shí)也會(huì)給一個(gè)顯存預(yù)估可以和實(shí)際觀測(cè)對(duì)照幫助判斷配置是否生效。這里有一個(gè)容易誤判的地方打開(kāi)了offload_optimizer之后訓(xùn)練剛開(kāi)始時(shí)顯存會(huì)明顯下降但CPU內(nèi)存占用會(huì)漲上去。如果服務(wù)器內(nèi)存本身不多offload反而可能引發(fā)內(nèi)存交換訓(xùn)練速度驟降。觀察指標(biāo)時(shí)不能只看GPU顯存還要帶著看內(nèi)存占用。5. DeepSpeed多卡微調(diào)ChatGLM的四個(gè)典型踩坑現(xiàn)場(chǎng)5.1 NCCL超時(shí)卡在Waiting for the barrier現(xiàn)象啟動(dòng)多卡訓(xùn)練后日志卡在分布式初始化階段幾分鐘后拋NCCLTimeoutError或者某個(gè)rank直接掛掉。原因最常見(jiàn)的是master_addr或master_port配置不對(duì)多卡之間的控制通信建立不起來(lái)其次是機(jī)器上有多塊網(wǎng)卡NCCL選錯(cuò)了網(wǎng)卡導(dǎo)致通信走了一個(gè)慢速通道甚至在不通的網(wǎng)口上。還有一種情況是防火墻攔了分布式訓(xùn)練的端口單機(jī)多卡時(shí)不太會(huì)遇到多機(jī)多卡時(shí)概率很高。解決先確認(rèn)所有節(jié)點(diǎn)能互相ping通再檢查deepspeed啟動(dòng)命令里的master_addr和master_port是否一致。多機(jī)場(chǎng)景顯式指定通信網(wǎng)卡export NCCL_SOCKET_IFNAMEeth0 export NCCL_IB_DISABLE1NCCL_IB_DISABLE1是讓NCCL不走InfiniBand只走以太網(wǎng)。如果機(jī)器之間的IB網(wǎng)絡(luò)沒(méi)有正確配置與其讓它自動(dòng)探測(cè)失敗不如直接關(guān)掉。日志里能看到NCCL初始化時(shí)用的網(wǎng)卡名字如果發(fā)現(xiàn)選錯(cuò)了再用NCCL_SOCKET_IFNAME強(qiáng)制指定。5.2 訓(xùn)練中途OOM先分清是激活值還是模型狀態(tài)壓爆的現(xiàn)象訓(xùn)練能啟動(dòng)但跑到某個(gè)step突然報(bào)CUDA out of memory而且每次崩的位置不一樣。原因大多數(shù)時(shí)候是動(dòng)態(tài)padding沒(méi)有生效batch里某條樣本特別長(zhǎng)把激活值峰值瞬間拉高。另一個(gè)常見(jiàn)原因是micro batch算錯(cuò)了以為設(shè)置了梯度累積batch就小了實(shí)際上每卡的micro batch仍然是全局batch除以卡數(shù)沒(méi)有除以累積步數(shù)。解決先按第4.3節(jié)的方法把micro batch降到1試跑如果不再OOM說(shuō)明是batch和序列長(zhǎng)度的問(wèn)題如果batch為1仍然OOM說(shuō)明模型狀態(tài)部分還有優(yōu)化空間。此時(shí)從三個(gè)方向同時(shí)壓打開(kāi)gradient_checkpointing啟用梯度檢查點(diǎn)、把offload_optimizer設(shè)備設(shè)為cpu、以及確認(rèn)沒(méi)有把凍結(jié)參數(shù)傳進(jìn)優(yōu)化器。這三招用完ChatGLM-6B的LoRA微調(diào)在24GB顯存卡上都可以跑起來(lái)。注意開(kāi)了gradient_checkpointing之后前向速度會(huì)變慢這是正常的它本質(zhì)上是犧牲計(jì)算換顯存。5.3 loss不降或亂跳學(xué)習(xí)率、warmup和數(shù)據(jù)順序一起背鍋現(xiàn)象訓(xùn)練了上千步loss要么原地不動(dòng)要么忽高忽低看起來(lái)完全沒(méi)有收斂特征。原因把之前訓(xùn)練小模型的經(jīng)驗(yàn)搬到大模型上學(xué)習(xí)率用1e-4甚至更高對(duì)6B模型來(lái)說(shuō)步長(zhǎng)太大loss自然亂跳。另一個(gè)是warmup步數(shù)太少或沒(méi)設(shè)置調(diào)度器一上來(lái)就給滿(mǎn)學(xué)習(xí)率。還有一個(gè)容易被忽略的點(diǎn)dataloader沒(méi)有shuffle模型反復(fù)看到同一條指令loss曲線(xiàn)會(huì)出現(xiàn)周期性波動(dòng)。解決把warmup_max_lr降到2e-5warmup_num_steps設(shè)為總步數(shù)的5%到10%。檢查dataloader是否設(shè)置了shuffleTrue。如果用的是fp16而不是bf16還要觀察訓(xùn)練日志里的loss scale出現(xiàn)NaN或不正常跳變說(shuō)明fp16的精度控制出了問(wèn)題建議升級(jí)到支持bf16的顯卡或者調(diào)整fp16配置。這里要特別說(shuō)一個(gè)誤區(qū)不要因?yàn)閘oss在下降就認(rèn)定訓(xùn)練正常。大模型微調(diào)初期loss下降可以很快但真正的考驗(yàn)是第6章的驗(yàn)證環(huán)節(jié)生成質(zhì)量和loss下降并不完全掛鉤。5.4 微調(diào)完導(dǎo)出eval時(shí)模型像沒(méi)訓(xùn)練過(guò)現(xiàn)象訓(xùn)練日志里loss已經(jīng)降得很低但eval時(shí)模型回答和原版幾乎一樣甚至更差。原因最常見(jiàn)的是保存模型時(shí)只保存了DeepSpeed的引擎權(quán)重沒(méi)有保存LoRA adapter。DeepSpeed的save_checkpoint保存的是引擎狀態(tài)直接拿去推理完全用不上。另一個(gè)原因是沒(méi)有merge LoRA權(quán)重推理時(shí)忘了加載adapter。解決訓(xùn)練結(jié)束后用PeFT的save_pretrained保存LoRA權(quán)重推理時(shí)先加載adapter再合并# 訓(xùn)練結(jié)束保存LoRA權(quán)重 engine.module.save_pretrained(lora_adapter) # 推理時(shí)加載并合并 from transformers import AutoModel model AutoModel.from_pretrained(THUDM/chatglm-6b, trust_remote_codeTrue) model.load_adapter(lora_adapter) model model.merge_and_unload()注意推理時(shí)加載基座模型的精度要和訓(xùn)練時(shí)一致否則merge可能出現(xiàn)數(shù)值不匹配的問(wèn)題生成結(jié)果看起來(lái)就像沒(méi)訓(xùn)練過(guò)。eval時(shí)使用訓(xùn)練時(shí)的prompt模板也很關(guān)鍵微調(diào)時(shí)用的格式是“問(wèn)xxx\n答”eval時(shí)如果換成其他格式模型生成質(zhì)量會(huì)受到影響。6. 從loss下降走向業(yè)務(wù)能用驗(yàn)證流程和一個(gè)顯存技巧6.1 用固定prompt集驗(yàn)證效果別只看loss訓(xùn)練loss下降只是“模型記住了訓(xùn)練數(shù)據(jù)”的必要條件不是充分條件。我的做法是準(zhǔn)備一組固定業(yè)務(wù)問(wèn)題訓(xùn)練過(guò)程中每隔幾百步用生成模式跑一遍觀察回答質(zhì)量的變化趨勢(shì)。這一步能比loss曲線(xiàn)更早暴露出模型是否過(guò)擬合、是否丟失了對(duì)話(huà)能力。生成測(cè)試代碼可以?huà)煸谟?xùn)練循環(huán)里def eval_generate(engine, tokenizer, questions, max_new_tokens128): engine.module.eval() with torch.no_grad(): for q in questions: prompt 問(wèn) q \n答 inputs tokenizer(prompt, return_tensorspt).to(engine.device) out engine.module.generate( **inputs, max_new_tokensmax_new_tokens, do_sampleFalse, ) print(tokenizer.decode(out[0], skip_special_tokensTrue)) engine.module.train()固定prompt集的規(guī)模不用大10條左右就夠了但要覆蓋正常提問(wèn)、邊界提問(wèn)和易混淆提問(wèn)三類(lèi)。do_sample設(shè)為False保證可對(duì)比如果模型訓(xùn)練中關(guān)了dropout這一步的生成結(jié)果是完全確定的。每500步跑一次保存生成結(jié)果到日志文件后面就可以回看不同訓(xùn)練階段的質(zhì)量變化。另外把一部分?jǐn)?shù)據(jù)留作held-out集驗(yàn)證集loss比訓(xùn)練loss更早上升就是過(guò)擬合信號(hào)。6.2 把顯存再壓一檔動(dòng)態(tài)padding和梯度檢查點(diǎn)組合第5.2節(jié)提到動(dòng)態(tài)padding能解決一部分OOM問(wèn)題這里給出一個(gè)可用的collate實(shí)現(xiàn)。核心思路是把batch內(nèi)的樣本padding到同一長(zhǎng)度同時(shí)用-100掩蓋無(wú)效的標(biāo)簽位置。def collate_batch(batch): max_len max(len(x[input_ids]) for x in batch) input_ids [] labels [] for x in batch: pad_len max_len - len(x[input_ids]) input_ids.append(x[input_ids] [0] * pad_len) labels.append(x[labels] [-100] * pad_len) return { input_ids: torch.tensor(input_ids), labels: torch.tensor(labels), }這里把padding token的id直接寫(xiě)成了0是因?yàn)镃hatGLM的pad_token_id就是0。如果換了其他模型記得用tokenizer.pad_token_id獲取不要寫(xiě)死。梯度檢查點(diǎn)配合動(dòng)態(tài)padding是當(dāng)前單卡24GB或4卡121GB這種中低配環(huán)境里把ChatGLM-6B LoRA微調(diào)跑起來(lái)的關(guān)鍵組合。我自己在做這類(lèi)多卡微調(diào)項(xiàng)目時(shí)養(yǎng)成了一個(gè)習(xí)慣每次改完配置先跑一個(gè)100步的smoke test只驗(yàn)證三件事——loss下降方向?qū)Σ粚?duì)、顯存占用是否有大幅波動(dòng)、保存下來(lái)的checkpoint能不能重新加載。三關(guān)全過(guò)再放長(zhǎng)訓(xùn)練。這個(gè)習(xí)慣幫我在多機(jī)多卡場(chǎng)景下避開(kāi)了大量看似玄學(xué)的翻車(chē)很多問(wèn)題其實(shí)早在小規(guī)模測(cè)試階段就會(huì)暴露。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
色一情一乱一乱一区91Av| 男人的天堂五月丁香| 六月婷婷色综合| 丁香五月婷婷丫| 久草丁香婷婷1024| 色综合色综合色综合色综合| 日本a片网址| 777影视理论片大全在线观看| 这里只有精品视频在线| 欧美婷婷精品激情| 五月婷婷和六月| 97自拍99| 五月婷婷香蕉| 中文幕无线码中文字蜜桃| 5月丁香六月婷婷| 天堂综合久久| 无毒黄色网址| 黄色视频网站在线播放| 亚洲综合五月天| 久草热视频在线观看| 婷婷不卡基地| 色噜噜丁香| 人妻激情在线| 五月婷在线| 色五月 激情婷婷 综合五月天| 亚洲久艹| 39视频第二区| 九九99偷拍视频| 久久久精品人妻| http://www.sd-xiangsu.com/| 成人片在线播放| 五月丁香婷久久| 天天骑天天操| 岛国AV网| 天天骑天天操| 丁香色婷婷| 丁香六月情| 丁香色啪综合| 久久99免费视屏| 97久操| 丁香激情五月| 婷婷五月天成人| 99免费视频在线观看爱| 综合网五月天123| 色婷婷丁香五月天| 五月丁香婷婷无码中文| 久久久久久xxxxx| 色五月婷婷操逼| 丁香婷婷激情四射五月| 综合 蜜月 婷婷| 深夜婷婷 丁香| 丁香婷婷激情综合五月激情| 免费无码毛片一区二区A片| 日韩草草草草草草草草草草草草| 成人噜噜网| 狠干综合| 日本免费91| 日韩有码一区| 婷婷 丁香 久久| 久久久91精品| 色五月中文字幕| 热久久婷婷| 成人五月天。COM| site:pnnrt.com| www色婷婷| 亚洲成人在线综合| 狠狠搞狠狠操| 国产真实乱了老女人视频| 五月亭亭开心网| 五月激情六月宗合| 成人国产欧美大片一区| www.wuyuetian啪啪| 亚洲综合五月天| 99国产精品久久久久久久久久久 | 五月天婷婷基地综合网| 99婷婷| 四虎成人精品永久免费AV九九| 久久久.COM| 色情丁香五月婷婷精品| 激情综合播播| 黄色AAAAA| A久久| 9九色首页| 91日本在线观看| 五月天综合| 福利视频在线播放| 色色色五月婷| 天天综合网、天天综合色 | 色播五月丁香婷婷| 成人开心五月天| 婷婷五月天网| 久久五月视频| 丝雨一区二区| 人五月天婷婷喷水| 色婷婷啪啪| 国产综合丁香五月天| 免费啪啪啪网站| 免费看无码视频A级| 美女xx不卡| 五月丁香亭亭操逼| 五月丁香激情六月| 五月丁香六月激情综合| 欧美成人日韩| 婷婷五月深深爱| 婷婷丁香宗合888| www.99热| 热九九精品| 久久婷婷亚洲五月天| 综合在线色婷婷| 色婷婷操逼| 91操色| www,99热| 国产午夜精品一区二区三区嫩草| 97色热| 婷婷综合五月天激情| 五月天播播综合| 五月天婷婷自拍图片在线观看| 久久久久久久久久久久久久久久一道本| 丁香五月婷婷老师网站| 色综合天天网| 人人看人人草人人摸| 天天狠狠干| 亚洲激情AV| 日本一级淫| av在线免费网站 | 9l久久久视频| 69婷婷丁香午夜| 久久人妻伊人| 久久九九激情五月天 | 婷婷五月天成人| 无码 色| 久久99视频| 99久久玖玖| 这里只有九九精品| 五月色综合| 99久久精彩视频| 九九狠狠干| 怡红院视频| 国产欧美日韩综合精品一区二区| 激情五月天啪啪视频| 五月天偷拍| 五月婷婷啪啪啪啪| 婷婷娱乐丁香综合网| 色爱亚洲| 综合天天综合| 中文字幕在线日亚州9| www.久久99精品| 五月丁香六月婷婷中合网| 我爱大香蕉| 激情四射亚洲| 99热99热99热99热| 日本eVa一区=区视频| 婷婷丁香97| 欧美草久久五月天91| 九九这里都是精品| 99热手机在线精品| 日韩成人电影AV| 九九久久网| 激情五月丁香五月色| 成人超碰AV| 色综合天天综合成人网| 亚洲精99| 精品99*| 97久久香草精品视频| 日日操夜夜撸| 丁香五月天激情小说| 中文字幕日产A片在线看| 五月丁香久人妻中文| 嫩草视频在线观看| 精a品a视a频| 99在线精品观看99| 久操大| 九九99免费视频| 五月天综合久久丁香91| 狠狠干在线| 人妻在线网站| 天天干狠狠| www.久久爱| 综合久久97| 婷婷午夜精品久久久| 操九色| 成人在线视频网| 久色| 深爱激情网综合| 亚洲最大视频网站| 九九九色综合| 色婷婷丁香五月天激情综合网| 五月激情综合网婷婷| 五月天色裸体视频| AV在线观看网站| 综合色色网| 精品人妻久久久| 日韩三级视频一区二区| 国产成人网| 思思久久精品视频| 热九九九九| 国产亚洲99久久精品| 欧美成人无码一区二区三区| 91oumei| 91人妻人人做人碰人人爽九色| 2015好吊操| Blackedraw视频一区二区| 夜夜撸日日骑| 色婷婷成人在线| 97自拍视频网| CHINESE熟女老女人HD视频| 99热这里只有精品1998| 色狠狠色| 久久99久久99久久99| 中文字幕综合| 2023天天日夜夜爽| 亚洲欧洲中文日韩久久AV乱码| 色婷婷综合网| 99久久极情精品一区| 色七七九九| www.超碰在线| 99ri在线观看视频| 婷婷干五月综合在线播放| wWW九九在线播放| 99热这里有精品| 亚洲激情综合| 十月丁香九月婷婷综合| 伊人五月久久| 九九国产精视频| 五月婷狠狠| 丝袜大香蕉| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 欧美情色一区| 五月天成人在线视频网站| 婷婷精品综合| 五月丁香六月婷婷综合网| 国产精品人妻在线网址| 九九美女视频| 丁香婷婷综合影院| 色99久草在线| 激情综合网之激情五月| 精品久久久999| 久久桃花网色婷婷| 人妻体体内射精一区二区| 4438激情网| 日日爱699| 五月熟妇婷婷久久| 99热精品少| 天堂资源欧日浪女在线播放| 免费看成人747474九号视频在线观看| 日韩av在线电影| 新激情婷婷| 五月丁香六月激情欧美综合| 91在线日| 亚洲av网站| 亚洲精品婷婷| 亚洲成人超碰| 男女99免费视频| 99这里| 日操五月婷| 中文精品久久久久人妻不| 久久综合影院| 120分钟婬片免费看| 色播五月综合网| 亚洲视频另类| 日韩黄色电影| 性一交一乱一交A片久久四色| 97碰在线免费观看| 欧美大香蕉视频| 99碰| 久久五月天激情美女| 久久久91| 丁香六月婷婷缴情欧美| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 色婷丨日丨天丨综合久久| 丁香五月在线人妻| 就爱啪啪婷婷| 亚洲bt丁香五月天婷婷激情小说| 深爱女色婷婷丁香五月亚洲图区| 狠狠香蕉| 色色色激情| 五月天婷婷av| 婷婷在线操| 内射激情在线| 色综合久久五月天| 丁香五月天堂| 人与禽A片啪啪| 99燥99日| 97干在线看| 人妻激情视频| 亚洲性爱干干| 91人人爽久久涩噜噜噜| 五月丁香激情综合网| 五月丁香| 涩丁香| 97婷婷五月激情六月丁香伊人| 影音先锋91男人资源在线播放| 天天综合91入口| 丁香六月婷| 黄色三级日本| 亚洲丁香五月在线观看| 变态另类9| 中文AV网| 综合久久综合五月天婷婷| 婷婷五月天免费99| 久草 天堂| 五月婷婷五月丁香综合| 五月婷婷婷丁香播| 精品一区二区三区免费毛片爱| 国产操B| se99热久久一本| 99re在线视频精品,这里只有精品18,| 激情亚洲色图片丁香综合| 这里只有精彩视| 91色操| 色综合色色| 国产乱轮一区二区三区| 日韩色色色色色| 无码婷婷五月天| 婷婷五月天无码| 色丁香五月婷婷| 国产欧美精品AAAAAA片| 九九热99视频在线| 五月激情综合深爱| 丁香五月大香蕉| 蜜臀av 粉嫩av 懂色av| WWW色五月天| 天堂草在线看www| 婷婷五月天精品| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 中文字幕综合网| 岛国在线观看91| 九九热99免费视频| 婷婷五月色情天| 五月婷丁香| 99日视频在线| 26uuu亚洲精品国产| 99久久婷婷| 卡视频1区2区| 激情99在线视频| 色色色热| 日本怕怕视频| 超碰99在线观看| 爱狠射| 婷婷五月天,影院| 丁香色六月婷婷| 亚洲成人精品三区| 亚洲噜色| 日韩青青| 日日干干天天干| www.久久久.com| 激情五月深爱五月| 欧美婷婷日本| 国模狼狼| 久久久五月婷婷| 99精品视频网| 99色久| 99r这里| AA片在线观看视频在线播放 | 丁香五月六月综合激情| 亚洲综合激情五月久久| 亚洲中文字幕在线观看| 久操大香蕉| 丁香六月婷婷激情| 国内精品免费一区二区2009| 99热只有精品在线播放| 97久久超碰| 四虎成人精品永久免费AV九九| 另类小说五月天激情| 丁香五月激情啪| 99久久国产综合精品五月天喷水\| 久久女婷| 婷婷久久五月| 亚洲激情亚洲激情| 精品一二三区久久AAA片| 精品乱码视频| 激情五月综合网| 五月花综合网| 在线成人va| 天天干夜夜b| 亚洲妇女熟BBW| 亚洲婷婷五月草久| www.第四色99| 五月婷激情| 色欲婷婷五月天丁香| 色5月丁香婷婷| 亚洲无aV在线中文字幕| 国产精品大香蕉| 91日韩在线| www.色综合| 五月天婷婷自拍图片在线观看| 婷婷操逼| 婷婷五月深爱五月| 精品在线网站| 精品无码久久久久久久久| 色爱99| wwwav大香蕉| 丁香五月天激情网| 婷婷涩五月| 婷婷久久色| 激情婷婷五月女| 亚洲亚洲人成综合网络| 五月丁香天堂网| 夜夜爱伊人| 这里只有精品视频99| 五月丁香六月欧美综合| 大香蕉网 久久| 九九视频在线| 精品无码av丁香五月激情| 国产乱子轮XXX农村| 久久五月丁香综合17C| 韩国97天堂| 操日视频| 天天射综合网天天插| 亚洲正能量欧美| 久久性爱视频| 婷婷五月免费观看| 成人精品人妻| 丁香五月婷婷综合激情哟哟哟| 精品爆操| 激情五月丁香激情综合网 | 人人干av| 精品五月天| 玖玖综合色| 久久久av久av久片一区二区| 性视频久久| 五月丁六月香av| Caop在线| 日韩乱轮AV| 9l视频自拍9l九色9l成人| 婷婷五月天视| 99久久www| 少妇人妻人伦A片| 亚洲va综合va国产va中文| 思思99精品视频| 人操人| 日日撸夜夜操| 99热综合色图| 激情五月天影院| 丁香 婷婷五月| 亚洲成人网站在线| 五月丁香激情综合网官网| 99九九久久| 婷婷五月av| 天干干夜夜操| 婷婷五月丁香基地在线视频官网| 99精品女人天堂| 日本人妻伦在线中文字幕| 五月天婷婷基地| 天天爽人人爽| 婷婷五月天国产手机在线视频观看| 大香蕉久久婷婷| 在线超碰免费| 三级av在线| 色播五月网| 婷婷五月天视频免费在线观看| 久久96热| 五月丁香六月合| 国产精品久久99| 99久久玖玖| 永久天堂日本| AV片在线观看| 色欲AVV| 极品少妇XXXX精品少妇偷拍| 少妇激情五月天| 欧美日比视频| www.日本91| 色色射| 17.c黄色| 五月丁香激情婷婷| 激情五月婷婷六月丁香| 九九热只有精品| 一级A片天天操夜夜操| 五月情四婷婷| 久久久月丁香| 色亚洲色宗合| 99热久草| 99色色色色| 五月婷婷综合热| av色婷婷| 久久免费9| 色婷婷成人做爰A片免费看网站 | 无码99| 天天精品视频免费观看| 婷婷五月成人| 色婷天天| 婷婷五月天堂| 中文人妻AV久久人妻18| 久久综合99综合| 99免费超碰在线| 大色鬼综合| 91.www综合| 九九丁香社区欧美激情| 狠狠久综合| 久久精品91视频| 超碰97干| 开心激情色婷婷五月天| 五月天色网站| 丁香五月婷婷综合精品素人| 大香蕉久| 97精品人人A片免费看| 免费无码毛片一区二区A片| 黄网在线免费观| 亚洲AV无码成人电影| 五月婷婷之综合激情在线| 婷婷五月天性爱视频| www.99热这里精品 | 色色色婷婷| 久久丁香五月天| 久久久激情| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 日韩黄色影院| 色色婷婷丁香五月天| 色琪琪一综合久久激情五月视频| 久热这里有精品视频| 啪啪激情网站| 91丨九色丨丰满人妖| 婷婷六月色| 五月婷婷色在线| 婷婷五月18永久免费网站| www.99久| 99性爱精品| 九色视频91| 欧美综合在线五月天色婷婷| 玖玖99免费视频| 九九色中文| 六月丁香五月亭亭| 99综合| 久热只有精品| 色色综合热| 91视频综合网| 婷婷综合网伊人| 五月天色婷婷网| 免费观看的婷婷五月视频在线| 丁香五月首页| 婷婷丁香色女人| 日韩99视频| 国产99精品免费视频| 激情综合网五月天| 五月婷六月综合在线观看| 色婷婷五月天天天干天天操天天爽| 99精彩视频| 777影视理论片大全在线观看| 九九re视频在线视频| 亚洲激情综合色站| 天天肏天天肏天天肏| 性生生活大片又黄又| 久99久精品视频| 精品综合五月| 亚洲色婷婷| 亚洲AV无码成人精品区电影网| 日本的α片xxxwww| 色播婷婷五月天| 9999综合99综合人| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 色色色色网| 婷色五月天| 九九久久五月天| 婷婷日日夜夜| 久久精品一区二区三区四区| 五月丁香久人妻中文| 狠狠综合网| 天天天天操| 亚洲六月色婷婷| 五月丁香龟婷婷| 日本精品99网站| 婷五月天丁香婷五月| 色色色欧美色色| 色色色综合网| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | WWW色综合| 久久99视频| 五月婷婷在线免费观看 | 久久怡红院| 热九九精品| 亚洲AV免费在线| 久久多色| 97在线精品| 欧美丁香五月97色| 97操操操| 亚洲激情综合网| 九色PORNY自拍成人精彩视频| 中文字幕丰满孑伦无码专区| 非洲一级AV| 99re热免费观看视频精品| AA片在线观看视频在线播放| AV激情五月| 六月丁香五月婷婷| 天天操天天爽天天爱| 午夜大香蕉| 久色成人| 婷色综合| 热99在线精品| 99在线观看| 色五月激情网| 亚洲激情淫网| 2018夜夜草| 日韩欧美骚货| 夜夜爱爱亚洲| 久久久97| 丁六月激情| 亚洲精品一二三| 五月婷婷中文网| 精品综合网在线| 久久婷婷五月免费视频| 五月丁香福利| 99re热视频这里只精品| 综合色天天| www.婷婷五月天.com| 五月婷婷丁香| 五月婷婷开心深| 婷色五月| 色婷婷色五月天| 99热精品10| www.色五月| 欧美日韓成人亚洲精品另类| 婷婷桃色网| 亚洲不卡欧洲| 五月天色综合服务平台| 成人啪啪色婷婷久| 成人av免费观看| 亚洲色综合性| 婷婷性爱影院| 99视频免费播放| 97色啪| 婷婷五月激情热播| 免费观看2018www黄色操逼网站| 婷婷六月激情| 丁香婷婷五月六月天| 亚洲中文字幕在线观看| 99九九热视频| 激情五月婷婷中文字幕| 天天射天天干天插色综合| 五月激情小说| 五月天婷婷综合| 五月丁香怕啪啪| 极品五月天| 丁香五月Av| 九九爱这里只有精品| 成人在线免费网址| 精品一区二区三区免费毛片爱| 久久少妇视频| 狠狠五月丁香色婷| 日本熟妇精品99| 亚洲xx在线| 26uuu成人网| 五月丁香中文| 深爱五月天天| 激情文学 综合 色| 婷婷欧美激情综合| 婷婷酒色网| 国产日韩欧美性生活| 91pornav在线| 五月婷婷 婷婷五月 一区二区 久久久 | 9久久精品| 久久aaaaa| 国产成人精品一区二三区熟女在线| 免费看欧美成人A片无码| 色五月天成人在线| 五月婷婷丁香成人网| 久久影视婷婷五月| 丁香五月激情综合| 天天干电影| 在线观看亚洲视频影院| 夜夜操,天天撸| 五月天久久婷婷婷| 激情综合久久| 九九久久五月天综合伊人| 婷婷综合五月天| 玖玖精品视频| 久久五月天黄色五月天色网址| 77777亚洲午夜久久| 激情五月天。| 国产av一区二区三区| 六月婷婷激情图片| 亚洲视频操| 色狠狠色综合| 丁香色情五月天| 久操97| 99热这里都是精品| 狠狠狠狠狠狠| 欧美日本国产欧美日本韩国99| 五月天婷婷三级黄| 激情桃色网| 91亚洲免费片| 婷婷狠狠综合网入口| 国产精品18久久久| 这里只有精品久久| 激情五月综合网| 99色综合网| 影音先锋91| 婷婷色五月开心五月| 香蕉乱插| 色碰碰| 婷婷激情性爱| 五月天丁香网| 色八月婷婷| 丁香五月婷婷婷婷欧美综合| www.婷婷网| 琪琪理论片| 我爱宗和色| www.26uuu.com亚洲电影| 婷婷五月天第四色| 五月丁香六月欧美综合网站| 五月丁香婷婷免费视频| 综合视频久久| 九九这里都是精品| 久久久婷| 丁香六月婷婷综合| 依人大香蕉| 成人av免费观看| 久操热线| 激情五月天电影| 九九99精品| 男女啪啪做爰高潮无遮挡| 国产精品美女| 久久99大| 婷婷娌伦网| www一起操| 91九色国产在线| 99热天堂| 色人五月婷婷| 久久精品这里只有精品免费首页| 天天综合色| www.射伊蕉婷婷| WWW五月| 狠狠色婷婷777| 中文字幕av在线| 色婷婷成人做爰A片免费看网站| 色婷婷狠狠禁18久久| 大香蕉五月| 日韩a热| 久久黄色片| 99久精品视频| 四川BBB搡BBB搡多人乱亂| 激情五月天色色色| 伊人网欧美在线男人天堂五月丁香| 丁香五月宝贝激情网| 99久久五月天| 99久热| 五月丁香五月天现场视频| 亚洲综合另类| 五月婷婷影视| 亚洲综人色综网| 激情五月视频在线婷婷| 亚洲综合激情五月久久| 五月婷婷精品视频| 伊人五月婷婷| 中国激情网| 久青草影院| 啪啪东京热| 少妇久久诱惑视频| 99综合网| 激情亭亭五月| 91精品国产综合久久密臀 | 1024成人免费看| 99re熱| 97操碰在线视频| 激情内射人妻1区2区3区| 久9热视频在线观看| 婷婷五月伦理| 五月综合激情| 婷婷久久久| 日本色五月| 伊久大香蕉| 激情五月深爱五月| 五月伊人网| 伊人久久大香| 五月婷婷丁香啪啪| 亚洲色欲AAAAAA| 91热爆在线| 婷婷六月天天| 99爱在线精品视频免费观看| 中文字幕在线aⅴ免费观看| 中文字幕成人| 丁香激情网| 国产亚洲精品久久久久久郑州 | 热的国产99热| 91超级碰碰| 激情婷婷久久| 欧美日韩成人一区二区| 婷婷99丁香| 五月开心深深爱激情综合 | 99色在线观看免费| 日韩啪| AV网在线| 色狠狠激情五月| 99久久6| 激情婷婷丁香五月| 激情婷婷狠狠干| 夫妇交换刺激做爰| www.91有码.com| 国产成人精品亚洲线观看| 激情丁香婷婷六月天| 激情综合五月| 天天玩天天摸| 欧美交换配乱吟粗大25P| 狠狠狠婷婷五月综合| 五月婷婷开心网| 国产熟女大叫受不了| 婷婷在线视频| 九九re精品视频在线观看| 91丨九色丨白浆| 色域五月婷婷丁香| 91精品综合久久久久久五月丁香| 久九色| 色99视频| 日日天天操| 婷婷五月天免费99| 久草热视频在线观看| 毛v一区二区视频| 九九干视频| 超碰在线国产| a网站免费观看| 五月婷婷亚洲综合网| 成人做爰黄A片免费看直播室男男| 五月天性色| 亚洲情欲久久| 亚州操操| 久久婷婷青草五月天| 久青草影院| 亚洲婷婷成人五月天| 五月激情久久| 色热久| 亭亭色网| 色一情一乱一乱一区91Av| 夜夜涩涩涩| 在线不卡视频| 深爱激情四射| 色爱爱综合网| 另类综合激情| 色综合色色| 九九无码AV| 色丁香六月| 五月丁香婷婷综合久久| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 色丁香久久| 久热只有这里精品| 婷婷五月香蕉| 人与禽A片啪啪| 色色色色网| 99精品一二三四视频| 激情五月婷婷| 九九这里有精品| AV伊人青草丁香六月| 亚洲av另类在线观看| 激情五月天综合网| 四五月婷婷| 99热销国产这里有精品| 女人高潮内射99精品| 少妇达人正片在线播放_ikun_福利吧| 成人在线日韩| 亚洲人人艹| 婷婷精品视频| 久热这里| 色婷婷色情| 色综合9| 免费观看全黄做爰的视频| 丁香五月天视频在线播放| 外国碰视频网站97| 综合 激情 婷婷| 人人操99| 五月天六月婷婷| 九九热这里有精品23| 丁香五月婷婷大香蕉| 国产SUV精品一区二区6| 99熟女视频| 99热中国| 久久久久综合激动五月天| 另类 在线| 九久久九精品视频| 综合色图区| 婷婷丁香花五月天| 伊人9999| 包操45分钟网站| 久久久精品AV| 婷婷丁香五月天大香蕉| 玖玖爱伊人网| www.99热这里精品| 国产精品久久久久久妇女6080| 久久99精品日本| 青柠影视免费高清电视剧| 久9久9久9久9久9久9| 亚洲激情97五月天| 99精品视频在线| 激情五月天色婷婷综合| 99欧美精品99日本精品| 国产成人亚洲综合A∨婷婷| 婷婷五月色播| 天天日夜夜帕| 亚洲99在线视频| 99热无码精品| 亚洲一个色| 性爱激情小说AV五月丁香花| 九九精品免费视频99| 亚洲第一第二网站| 51XX午夜影福利| 婷婷激情人妻| 婷婷久久免费| 久久久天天啊| 天天爽天天干| 久久久噜噜噜久久人妻| 五月天激情亚洲| 亚洲AV成人无码久久精品老人法拉利| 色天天久婷婷| 婷婷激情蜜桃玖玖丁香| 色播五月天天| 婷婷在线操| 亚洲婷婷月丁香五月| 色婷婷六月性| 五月色丁香综合| 婷婷五月天av网| 做爱夜夜干天天操| 久久狠狠高潮亚洲精品 天天摸夜夜摸夜夜狠狠摸 | 丁香五月婷婷性爱| 九九热这里有精品视频| 丁香五月婷婷亚洲色图| 五月婷婷六月丁| 婷婷丁香五月精品| 99热99免费| 99热在这里只有免费精品| 久久久er热| 99视频在线观看视频| 久久草婷婷丁香网站| 五月丁香六月婷婷在线播放| 五月天黄色激情小说| 99色最新在线视频网站| 亚洲成人婷婷| 激情综合在线观看| www.日日夜夜.com| 99视频内射三四| 色婷婷六月| 丁香婷婷综合激情五月色| 色婷婷在线视频| 色色色综合网| 综合网色| 久久97| 五月天色小说| 久久婷婷五| 综合久久9| 激情婷婷五六月天| 操91综合网| 亚洲av网址| 97人人操在线| 激情综合网,五月| 播五月丁香六月| 熟女激情网| 亚洲亚洲人成综合网络| 婷婷六月偷拍| 国产9色在线/日韩| 99久久国产宗和精品1上映| 伊人狠狠干| 婷婷欧美| 香蕉久久国产AV一区二区| 久热A片| 全高清无码视頻| 久久与婷婷| 天天噜噜| 五月花免费视频| 中文字幕在线日亚州9| 婷婷色色五月天| 婷婷五月天av| 99在线视频网址在线观看| 亚洲免费av在线| 噜噜综合网| 国产在线另类五月婷婷| 2025天天操| 五月丁香六月激情| 操91| 无码激情AAAAA片-区区| 超爽内射| 大香蕉综合| 天天cha成人综合网| 互月天综合| 天天插天天干| 五月天社区| 97luluse| 婷婷久久综合| 婷婷狠狠操| 五月开心播播网| 97超碰欧美中文字幕| 丁香六月视频| www.99在线| 久久99免费视频| 好好日激情五月天| WWW.99热| 五月天色站| 69er小视频| 五月丁香六月婷| 免费观看全黄做爰的视频| 欧美精品99| 亚洲视色| 超碰人妻公开在线| 中文网AV| WWW.99热| 日韩黄色电影| 五月天激情AV| 九九9久九9国产视频| 99精品在线观看| 永久免费视频| 亚洲av网址| 国色天香伊人狠狠色| 极品少妇高潮啪啪AV无码| 久久网日本| 天天爽天天| 月丁香久久久| 99日这里只有精品| 人妻熟人中文字幕一区二区| 99久热| 激情五月婷婷丁香| 色情网综合| 九九机热| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 欧美一级色| 欧美色九| 丁香五月激情综合婷综| 丁香五月婷老师| 中文字幕人妻一区二区| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 天天干天天爽| 亚州婷婷五月激情综合| 婷婷十月激情综合网| 久9久视频精品| 五月婷婷丁香av| 久久久久久久11111111111| 五月婷婷久久激情 | 99热99在线| 亚洲在线操| 九九九九国产| 久久网日本| 日本一级黄色电影| 五月婷婷综合网| 99国产精品久久久久久久久久久| 97超级碰碰碰| 五月丁香婷婷综合视频| 五月婷婷偷拍| 成人看片网站| 热的国产99热| 久久久GOGO无码啪啪艺术| 99热国内| 六月婷婷激情图片| 亚洲色婷婷| 日本人妻伦在线中文字幕 | 91碰碰视频| 色久九| 五月丁香影视| 婷婷五月天 偷拍| 99精品综合| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 粉嫩av懂色av蜜臀av熟妇| 婷婷操逼| 丰满老熟妇BBBBB搡BBB| 天天插轮理| 日本色啪| 五月综合视频| 久久女婷| 97在线观视频免费观看| 久久激情五月网| 視频福利乱色| 九九久久精品| 大香蕉久久伊人婷婷五月丁香| 疯狂做受XXXX高潮A片| 五月婷婷六月奇米网丁香| 日比网免费国产| 深爱激情久久| 婷婷六月天| 天天爽天天干| 99热第一页| 日韩人妻无码精品| 久热只有这里有精品| 26uuu精品一区二区| 五月天婷婷三级黄| 婷婷五月天小说网| 色婷婷婷av| 熟女强人妻一区二区三区四区无| 天天干天天操天天拍| 综合色久| 丁香五月天日韩无码| 91色五月| 丁香五月在线视频黑人| 91人人操| 嫩草AV久久伊人妇女超级A| 婷婷丁香五月高清| 激情五月婷婷| 丁香亚洲色综合| 丁香六月啪| 久色五月| 天天射影| 9久热在线精品| www.夜夜操.com| www.五月天社区| 日本99热| Y11111111111少妇电影院| 五月婷六月| 五月丁香六月婷婷在线| 26uuu视频欧美| 区啪精品| 亚洲妇女熟BBW| 庭庭久久内射| 丁香五月综合亚洲| 狠狠色色| 久久码久久无清| 亚洲欧洲中文日韩久久AV乱码| 五月丁香综合| 天天成人综合视频| 操操操操操操婷婷五月天| 九色porny在线观看激情四射| 九九五月天| 天天插插天天| AV天堂淫乩| 91九色视频| 婷婷色色亚洲| 天堂久久婷婷| 婷婷六月情| 夜夜做天天爽| 丁香五月婷婷色| www.ywav| 久久婷婷综合五月天| 综合五月天婷婷色| 丁香五月,开心五月,成人婷婷| 可以免费观看的AV| 色色激情五月| 全部老头和老太XXXXX| 开心五月婷婷伊人| 六月丁丁香| 激情五月婷婷综合| 天天做天天爱天天做| 91婷婷色五月| 激情五月婷婷视频一区二区三区| 国产成人精品一区二三区熟女在线| 成人丁香五月| 久久精品视频99| 五月婷婷综合在线| 婷婷五月天成人小说| 狠狠操在线视频| 玖玖色资源站| 五月亭亭六月色| 九月婷婷综合| AV网站免费在线| 成片免费播放| 久热伊人| 玖玖婷婷五月天| 九九热自拍| 91日日日| 色情五月婷| 综合五月丁香六月婷婷| 丁香五月播播| 射久久丁香五月| 99亚洲色| 婷婷丁香五月综合网上| 五月天激情亚洲| 天天色,天天日,天天做| www.狠狠操.com| 日操五月婷| 综合视频五月| 三级大香蕉网| 有哪些A片网站| 天天日日综合| 欧美色色色色色| 99热在线观看免费精品| 亚洲综合99| 婷婷婷久久久| 九九AV在线| 欧美日韩成人高清在线| 成人 视频免费观看网站| 狠狠综合| av大片在线| 婷婷五月天av小说| 大香蕉大香蕉在线影院| 九九香蕉网| 亚洲丁香五月综合| 人人视频色| 丁香 久久| 在线日韩视频| 亚洲成人无码专区| 99热色婷婷| 99热18| 婷婷成人综合五月| 亚洲激情另类| 色婷婷久久| 色五月婷婷777| 久一网站| 色婷婷导航| 成人免费va| 婷婷97碰碰| 99热这里只有精品8| 国产熟妇的荡欲午夜视频| 久久婷婷午夜| 99riAV成人在线视频| 殴美日韩成人| 天天爽夜夜爽夜夜爽精品| 日本在线wwww| 丁香六月激情毛片| 超碰人人干| 能看的av片| 人妻久久久久久| 免费精品99| 91久久久久| 欧美 日韩 成人 在线| 欧洲亚洲免费视频9| 婷婷久久亚洲| 人人摸人人搞| 日本97在线观看| 91黄址| 99热这里只有精品33| 狠狠高潮精品亚洲1| 99热热这里只精品996小说| 色一情一乱一乱一区91Av| 亚洲视频另类| 97久人人| 日本ww亚洲| 激情五月综合网| 中文av网| 日本久久极品| 热热久久精品视频| 婷婷操逼网| 中文在线成人| 久热这里只有精品6| 国产乱妇乱子在线播视频播放网站| 香蕉网婷婷| 六月综合婷婷开心伊人| 亚洲色五月| 丁香五月激情在线| 97人人草| www.97干视频| 开心五月丁香啪| 九月丁香婷婷| 9热在线视频| 激情五月丁香色婷婷| 香蕉国产2013| 99久热在线精品99re6热| 五月婷六月综合在线观看| 国产精品久久久海的味道| 中字幕视频在线永久在线观看免费 | 天天色亚洲| 婷婷爱五月| 五月涩涩网| 色婷婷久久| 999激情视频| 97色色在线视频| 一点色成人网| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 性爱在线播放av| 91精品综合久久久久久五月丁香| 天天日天天插| 伊九九三级区| 四虎成人精品永久免费AV九九| 2015WWW永久免费观看播放| 天天爽夜夜爽夜爽精品| 欧洲电影在线观看免费版英语版 | 久热久re| 99国产视频网| 欧美十二区| 亚洲狠狠操| 激情内射人妻1区2区3区| 丁香六月婷婷久久综合八月| 久热九九| av大香蕉| 天天爱天天爽| 99久久婷婷国产综合精品青桔| 欧美三级欧美一级| 9 1超碰九色| 五月丁香 啪啪| 久久99婷婷| 99这里只有精品视频| 九九这里只有精品在线视频| av久热| 男人的天堂999| 亚洲成av人影院| 久久99热这里只有| 超碰91在线|