亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

AI工程從零手搓:從張量到微型語言模型的完整實(shí)踐

AI工程從零手搓:從張量到微型語言模型的完整實(shí)踐 今年我把大量業(yè)余時(shí)間投進(jìn)了一個(gè)叫ai-engineering-from-scratch的個(gè)人項(xiàng)目。簡(jiǎn)單說就是給自己立了條規(guī)矩凡是跟 AI 相關(guān)的環(huán)節(jié)能自己動(dòng)手實(shí)現(xiàn)的絕不直接調(diào)封裝好的接口。從手寫張量運(yùn)算開始到訓(xùn)練一個(gè)微型語言模型再到把模型量化部署成一個(gè)能用的服務(wù)整個(gè)過程走下來收獲最大的不是某個(gè)模型效果變好了而是終于弄明白了一個(gè)大語言模型從數(shù)據(jù)集到上線中間到底經(jīng)歷了什么出了問題時(shí)該往哪個(gè)方向查。這篇文章就圍繞這個(gè)項(xiàng)目把我踩過的坑、驗(yàn)證過確實(shí)有效的路線、以及現(xiàn)在還保留在收藏夾里的參考材料整理出來。不吹不黑直接上干貨。適合已經(jīng)會(huì)用 PyTorch、會(huì)調(diào) Transformers 庫但對(duì)底層實(shí)現(xiàn)還有點(diǎn)心里沒底的人也適合準(zhǔn)備進(jìn)入大模型應(yīng)用開發(fā)、想從底層建立手感的新手。看完你至少能少走我一半的彎路。1. 為什么我決定從零開始學(xué)AI工程先別急著調(diào)API1.1 框架用久了心里不踏實(shí)先說個(gè)真實(shí)感受。我最早做 NLP 項(xiàng)目時(shí)基本就是transformers庫一把梭加載模型、寫個(gè)訓(xùn)練循環(huán)、調(diào)參數(shù)、完事。模型跑不動(dòng)就換更大的顯卡效果不好就換更強(qiáng)的預(yù)訓(xùn)練權(quán)重。直到有一次模型在驗(yàn)證集上的損失怎么都降不下去我把學(xué)習(xí)率調(diào)低、把層數(shù)減少、把 dropout 拉滿全都沒用。當(dāng)時(shí)我能做的只有百度搜索關(guān)鍵詞然后挨個(gè)試網(wǎng)上流傳的玄學(xué)改法。那天之后我開始反思我不是在用 AI而是在調(diào)一個(gè)巨大的不透明的黑盒子。梯度怎么傳播的、學(xué)習(xí)率策略在內(nèi)部到底起了什么作用、顯存為什么爆、推理為什么慢這些問題我都答不上來。而這些問題恰恰是 AI 工程里最核心的問題。框架用久了AI 工程變成了一種配置工程這對(duì)工程師來說是非常危險(xiǎn)的。一旦遇到模型異常、數(shù)據(jù)泄漏、顯存瓶頸這類問題不懂底層就只能靠猜而靠猜的代價(jià)是極其昂貴的。所以我才決定做from scratch這件事。不是去重寫 PyTorch也不是去發(fā)明新一代算法而是把現(xiàn)代語言模型里最關(guān)鍵的模塊一個(gè)個(gè)抽出來用最樸素的方式實(shí)現(xiàn)一遍。注意力機(jī)制自己寫、分詞器自己寫、訓(xùn)練循環(huán)自己寫、量化腳本自己寫。寫完之后再回到框架里你會(huì)發(fā)現(xiàn)自己不是在使用框架而是在理解框架心態(tài)完全不一樣。1.2 從零手搓到底要學(xué)什么范圍怎么劃剛開始我也很迷茫因?yàn)锳I 工程這個(gè)范圍太大了。做 CV 的需要懂卷積、數(shù)據(jù)增強(qiáng)、分布式訓(xùn)練做推薦的需要懂特征工程、Embedding、在線學(xué)習(xí)做 NLP / LLM 的需要懂分詞、Transformer、微調(diào)、推理優(yōu)化。如果不能明確邊界這個(gè)項(xiàng)目很可能變成一個(gè)永遠(yuǎn)完不成的大坑。我的做法是先把全鏈路畫成一個(gè)流程圖再從里面選出必須親手做一遍的核心節(jié)點(diǎn)。我這里所謂的流程圖并不是畫給別人看的那種而是寫給自己確認(rèn)用的清單。我的清單大致是數(shù)據(jù)處理分詞器、批次構(gòu)建、數(shù)據(jù)采樣模型構(gòu)建Embedding、多頭注意力、前饋網(wǎng)絡(luò)、層歸一化訓(xùn)練系統(tǒng)損失函數(shù)、反向傳播、優(yōu)化器、學(xué)習(xí)率調(diào)度推理系統(tǒng)自回歸生成、KV Cache、采樣策略部署優(yōu)化量化、批處理、服務(wù)化接口模型進(jìn)階在基礎(chǔ)模型之上嘗試先思考、再回答的推理行為每個(gè)節(jié)點(diǎn)只追求能跑通、能解釋、能量化效果不做過度擴(kuò)展。比如我不會(huì)去手寫 CUDA kernel因?yàn)槟且呀?jīng)超出一般的 AI 工程范圍屬于系統(tǒng)底層優(yōu)化跟當(dāng)前目標(biāo)不對(duì)齊。先把上層的每一個(gè)工程環(huán)節(jié)摸透等將來遇到 perf 瓶頸時(shí)再下沉也不遲。這個(gè)范圍劃完之后我給自己定了三個(gè)里程碑第一用 NumPy 手寫一個(gè)能訓(xùn)練 MNIST 的迷你神經(jīng)網(wǎng)絡(luò)第二用 PyTorch 從零實(shí)現(xiàn)一個(gè)小型 GPT在幾十 MB 的數(shù)據(jù)上訓(xùn)練出能生成文本的模型第三對(duì)第二個(gè)模型做量化壓縮和推理加速部署成一個(gè) HTTP 服務(wù)。后面所有的工作都圍繞這三個(gè)里程碑展開。2. 我的學(xué)習(xí)路線把黑盒拆成白盒的六個(gè)階段2.1 六個(gè)階段一層層揭開隔層我給自己制定了遞進(jìn)式路線不是上來就寫 Transformer而是按照造一臺(tái)機(jī)器的順序去推進(jìn)。如果你也想照這條路走我建議你嚴(yán)格按順序來不要貪快。第一個(gè)階段是 Python 編程與數(shù)據(jù)操作。重點(diǎn)不是語法而是對(duì)數(shù)據(jù)到底長(zhǎng)什么樣有直覺。列表、字典、字符串處理、文件讀寫配合collections.Counter做詞頻統(tǒng)計(jì)這樣后面寫分詞器時(shí)不會(huì)發(fā)怵。第二個(gè)階段是手寫張量與自動(dòng)求導(dǎo)。現(xiàn)階段不建議直接上 PyTorch而是先用 NumPy 自己實(shí)現(xiàn)一個(gè)極簡(jiǎn)的張量類只支持標(biāo)量、向量、矩陣的加法乘法以及對(duì)某個(gè)參數(shù)的梯度記錄。這個(gè)階段的核心任務(wù)是理解反向傳播到底在做什么而不是把所有細(xì)節(jié)都搞完。我做了一個(gè)非常粗糙的自動(dòng)求導(dǎo)只有幾十行代碼但它讓我第一次看懂了鏈?zhǔn)椒▌t在程序里如何落地。第三個(gè)階段是手寫 MLP 和簡(jiǎn)單 CNN。用自己寫的自動(dòng)求導(dǎo)工具去訓(xùn)練一個(gè)識(shí)別手寫數(shù)字的模型把梯度下降、過擬合、正則化這些基礎(chǔ)概念體驗(yàn)一遍。很多人跳過這個(gè)階段直接學(xué)大模型但我強(qiáng)烈不建議。因?yàn)榇竽P鸵惨蕾囃瑯拥臄?shù)學(xué)機(jī)制如果連一個(gè)隱藏層的 MLP 都調(diào)不明白后面遇到 Transformer 的異常會(huì)更難定位。第四個(gè)階段是學(xué)習(xí)和實(shí)現(xiàn)注意力機(jī)制。注意力是任何現(xiàn)代語言模型的靈魂它做的事本質(zhì)上就是根據(jù)相關(guān)性從其他位置上取信息。先手寫單頭注意力再擴(kuò)展成多頭最后加上因果掩碼。第五個(gè)階段是把注意力堆成 Transformer實(shí)現(xiàn)一個(gè)微型 GPT。從 token 化文本開始訓(xùn)練一個(gè)幾百萬參數(shù)的小模型讓它生成看起來像模像樣的句子。第六個(gè)階段是推理優(yōu)化與部署。把訓(xùn)練好的權(quán)重量化成半精度或整數(shù)精度加上 KV Cache寫一個(gè)流式生成接口再封裝成一個(gè)所有人都能通過 HTTP 調(diào)用的服務(wù)。每個(gè)階段我都有對(duì)應(yīng)的完成標(biāo)準(zhǔn)。比如第四階段的完成標(biāo)準(zhǔn)不是理解了注意力公式而是寫出一個(gè)能跑、能反向傳播的多頭注意力模塊并在小數(shù)據(jù)集上訓(xùn)練收斂。這樣就不會(huì)陷入漫無目的的看論文狀態(tài)。2.2 參考書怎么用讀一遍不如改一遍在我動(dòng)手的過程中最常被問到的一句話是你到底用什么學(xué)的我的答案很直接《Build a Large Language Model From Scratch》這本書給了我很重要的路線參考。這本書從數(shù)據(jù)準(zhǔn)備開始一步步搭建類似 GPT 的結(jié)構(gòu)包含分詞、注意力、訓(xùn)練、微調(diào)等完整內(nèi)容。書里的代碼風(fēng)格非常樸素沒有花里胡哨的高級(jí)封裝很適合配合這個(gè)項(xiàng)目來理解每一個(gè)環(huán)節(jié)。但我還得提醒一點(diǎn)讀這本書千萬不要只停留在讀上。我第一次讀的時(shí)候以為看懂了結(jié)果合上書自己寫連masked_fill都寫錯(cuò)了位置。后來我換了個(gè)策略把書里的每段代碼都當(dāng)成參考實(shí)現(xiàn)然后關(guān)掉示例代碼自己重新實(shí)現(xiàn)一遍遇到卡殼再回去對(duì)照。這樣讀一遍書等于自己寫了三遍代碼效果完全不一樣。除了這本書我還會(huì)配合看一些原始論文和開源項(xiàng)目。書不會(huì)覆蓋所有細(xì)節(jié)比如混合精度訓(xùn)練、KV Cache 的顯存優(yōu)化、量化感知訓(xùn)練這些工程問題需要從零散的源碼和文章中補(bǔ)全。我的經(jīng)驗(yàn)是以書為主線建立骨架再以論文和源碼為枝葉填充細(xì)節(jié)最后用自己的代碼驗(yàn)證理解。3. 從零手搓一個(gè)微型語言模型的完整流程3.1 先解決詞的問題手寫 BPE 分詞器語言模型處理的是 token不是原始字符串。所以從零搭建模型第一步就是解決怎么把一段話切成 token。按空格切詞雖然簡(jiǎn)單但會(huì)得到一個(gè)巨大的詞表而且無法處理沒見過的新詞所以現(xiàn)代模型普遍使用字節(jié)對(duì)編碼BPE。BPE 的核心思想是先把文本看成 UTF-8 字節(jié)序列然后反復(fù)統(tǒng)計(jì)相鄰字節(jié)對(duì)的出現(xiàn)頻率把最高頻的對(duì)合并成一個(gè)新符號(hào)直到詞表達(dá)到目標(biāo)大小。手寫 BPE 時(shí)最關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)是一個(gè)計(jì)數(shù)用的字典。首先是統(tǒng)計(jì)相鄰字節(jié)對(duì)頻率def get_stats(ids): counts {} for pair in zip(ids, ids[1:]): counts[pair] counts.get(pair, 0) 1 return counts然后在每一輪迭代中找到頻次最高的 pair把它的兩個(gè) id 合并成一個(gè)新的 iddef merge(ids, pair, new_id): result [] i 0 while i len(ids): if i len(ids) - 1 and ids[i] pair[0] and ids[i1] pair[1]: result.append(new_id) i 2 else: result.append(ids[i]) i 1 return result這個(gè)過程初看很簡(jiǎn)單但真正實(shí)現(xiàn)時(shí)有一個(gè)坑隨著合并的進(jìn)行id 長(zhǎng)度會(huì)變化新的高頻 pair 必須基于上一輪合并后的序列重新統(tǒng)計(jì)。如果理解錯(cuò)了合并順序就會(huì)亂掉分詞結(jié)果會(huì)有問題。我當(dāng)時(shí)就是在這里猶豫了很久后來意識(shí)到每次合并后全局重新統(tǒng)計(jì)才是標(biāo)準(zhǔn)做法而不是在一個(gè)固定列表上連續(xù)改。3.2 核心模塊手寫多頭注意力的幾個(gè)細(xì)節(jié)注意力模塊是整個(gè)模型中最容易寫錯(cuò)、也最值得親手實(shí)現(xiàn)的部分。常見的公式非常簡(jiǎn)單Q 和 K 做點(diǎn)積、除以根號(hào) d、加上掩碼、Softmax、再乘 V。但工程實(shí)現(xiàn)時(shí)有幾個(gè)細(xì)節(jié)特別值得注意。第一個(gè)是因果掩碼。語言模型生成時(shí)只能看前面的 token不能偷看后面的內(nèi)容。實(shí)現(xiàn)方式是把未來位置的值設(shè)成負(fù)無窮經(jīng)過 Softmax 之后概率趨近于零。我在第一次實(shí)現(xiàn)時(shí)用的掩碼矩陣是對(duì)的但維度 broadcast 沒對(duì)齊結(jié)果訓(xùn)練損失直接亂跳。排查了很久才發(fā)現(xiàn)是掩碼形狀錯(cuò)誤。手動(dòng)實(shí)現(xiàn)時(shí)建議把每一步的張量形狀打印出來別嫌麻煩。第二個(gè)是縮放因子的作用。除以sqrt(d_k)不只是為了讓數(shù)值范圍更好看而是防止點(diǎn)積結(jié)果過大導(dǎo)致 Softmax 進(jìn)入飽和區(qū)梯度變得極小。如果不縮放模型在小數(shù)據(jù)集上也能跑但訓(xùn)練會(huì)明顯變慢損失曲線的尾巴還會(huì)抖動(dòng)。第三點(diǎn)是多頭注意力中頭的意義。多頭不是簡(jiǎn)單地疊加多個(gè)注意力結(jié)果而是讓每個(gè)頭學(xué)到不同的相關(guān)性模式。有的頭可能關(guān)注前一個(gè)詞有的頭可能關(guān)注句法成分。雖然我們?cè)诖a層面只是把 d_model 切成幾段分別計(jì)算但正是這種參數(shù)獨(dú)立性讓模型表達(dá)力變強(qiáng)了。手寫時(shí)我建議先按循環(huán)每個(gè)頭的方式寫一版跑通后再改成矩陣并行版這樣對(duì)分塊的印象會(huì)特別深刻。第四點(diǎn)是殘差連接和層歸一化的位置。Transformer 每一層結(jié)構(gòu)是注意力 - 殘差 - 層歸一化 - 前饋網(wǎng)絡(luò) - 殘差 - 層歸一化。殘差連接讓梯度有一條高速公路可以直達(dá)底層層歸一化穩(wěn)定每一層的激活分布。順序如果搞錯(cuò)了模型的訓(xùn)練穩(wěn)定性和最終效果都有明顯差距。3.3 訓(xùn)練循環(huán)里的關(guān)鍵決策學(xué)習(xí)率、批次和損失模型搭完了訓(xùn)練循環(huán)也不像想象中那么簡(jiǎn)單。我最初寫的訓(xùn)練循環(huán)只是取數(shù)據(jù)、算 loss、反向傳播、更新結(jié)果模型一直不收斂。后來我逐項(xiàng)排查發(fā)現(xiàn)真正影響訓(xùn)練效果的是幾個(gè)細(xì)節(jié)隨機(jī)種子是否固定、數(shù)據(jù)是否被隨機(jī)打亂、學(xué)習(xí)率調(diào)度是否合理、梯度有沒有做裁剪。學(xué)習(xí)率我很推薦使用 warmup cosine 的調(diào)度方式。一開始用一個(gè)很小的學(xué)習(xí)率熱身讓參數(shù)更新不會(huì)太激進(jìn)然后再逐步降到接近零讓模型在后期做好精細(xì)調(diào)整。我用的配置大致是warmup 步數(shù)約占總步數(shù)的 3% 到 5%峰值學(xué)習(xí)率在1e-3到3e-4之間具體看模型規(guī)模和 batch size。批次大小也很關(guān)鍵。我的顯卡資源有限單批放不了太多樣本就用梯度累積來模擬更大的批次。注意梯度累積不是直接改batch_size而是在多個(gè)小批次上累計(jì)梯度然后再做一次優(yōu)化器更新。梯度累積的步數(shù)需要根據(jù)顯存實(shí)測(cè)來定我試過累積 4 步效果最穩(wěn)。數(shù)據(jù)處理上我加了一條保護(hù)線驗(yàn)證集絕對(duì)不參與訓(xùn)練而且驗(yàn)證集的數(shù)據(jù)順序每次都要固定。有一次我偷懶直接在數(shù)據(jù)類里給訓(xùn)練集和驗(yàn)證集用了同一個(gè) shuffler結(jié)果驗(yàn)證損失一直往下掉訓(xùn)練損失卻不降后來才發(fā)現(xiàn)是驗(yàn)證集里混進(jìn)了訓(xùn)練樣本數(shù)據(jù)泄漏的坑差點(diǎn)沒把我逼瘋。訓(xùn)練過程中我習(xí)慣每 20 個(gè) step 打印一次 loss 和當(dāng)前學(xué)習(xí)率每 200 個(gè) step 在驗(yàn)證集上算一次困惑度。損失曲線的形態(tài)非常有信息量如果訓(xùn)練 loss 下降但驗(yàn)證 loss 上升那是過擬合如果訓(xùn)練 loss 不降那多半是學(xué)習(xí)率太高、數(shù)據(jù)有泄漏或者模型結(jié)構(gòu)寫錯(cuò)了。3.4 采樣策略怎么讓模型說得像人話模型訓(xùn)練完之后生成階段同樣有很多坑。語言模型是逐步生成 token 的每次預(yù)測(cè)下一個(gè) token 的概率分布然后從分布中采樣。如果每次都選概率最大的 token就是貪心解碼雖然穩(wěn)定但容易重復(fù)、死板。如果每次都純隨機(jī)采樣句子會(huì)變得前言不搭后語。我實(shí)測(cè)下來配合使用temperature、top-k 和 top-p效果最好。Temperature 控制分布的尖銳程度溫度小于 1 的時(shí)候概率集中到高概率 token 上生成的文本更保守溫度大于 1 的時(shí)候分布更平緩文本更大膽。Top-k 是只從概率最高的 k 個(gè) token 中采樣避免給那些幾乎不可能的 token 太多機(jī)會(huì)。Top-p 則是動(dòng)態(tài)選擇累計(jì)概率超過閾值的 token 集合比 top-k 更靈活。我常用的一個(gè)組合是temperature0.8, top_k40, top_p0.9。這個(gè)組合在我訓(xùn)練的幾百萬參數(shù)小模型上生成結(jié)果既有一定的多樣性也不會(huì)很快陷入重復(fù)循環(huán)。如果你發(fā)現(xiàn)模型總是重復(fù)同樣的句子可以適當(dāng)把 temperature 調(diào)高一點(diǎn)或者增大 top-p 閾值如果發(fā)現(xiàn)上下文不連貫則降低 temperature 會(huì)更有效。4. 從生成到推理小模型也能學(xué)會(huì)思考鏈4.1 推理模型與傳統(tǒng)模型到底差在哪里當(dāng)我把基礎(chǔ)語言模型跑通之后我注意到行業(yè)里的討論熱點(diǎn)開始轉(zhuǎn)向另一個(gè)方向讓模型在回答之前先做一段內(nèi)部推理再給出最終答案。傳統(tǒng)語言模型是輸入問題立刻輸出答案而推理模型的生成結(jié)果是先輸出一系列思考過程再輸出最終結(jié)論。這個(gè)過程類似于人在紙上打草稿草稿越長(zhǎng)越有機(jī)會(huì)通過逐步演算推導(dǎo)出正確答案。從工程角度看兩者最主要的差別不在模型結(jié)構(gòu)而在訓(xùn)練方式。一個(gè)普通模型在訓(xùn)練時(shí)看到的是問題 - 答案的配對(duì)而一個(gè)具備推理能力的模型在訓(xùn)練時(shí)會(huì)看到問題 - 思考過程 - 答案的完整鏈路。思考過程被當(dāng)作可學(xué)習(xí)的文本參與訓(xùn)練模型因此學(xué)會(huì)了在回答前主動(dòng)進(jìn)行推理。另一個(gè)關(guān)鍵點(diǎn)是強(qiáng)化學(xué)習(xí)在這種訓(xùn)練中的應(yīng)用。為了讓模型學(xué)會(huì)找到更好的思考路徑社區(qū)里出現(xiàn)了很多從零構(gòu)建推理模型的項(xiàng)目。核心做法是讓模型對(duì)同一個(gè)問題生成多條不同的推理路徑和答案然后根據(jù)答案是否正確以及推理路徑是否合理給予不同強(qiáng)度的更新信號(hào)。做得好的路徑會(huì)得到正向強(qiáng)化做得差的路徑會(huì)被抑制。這個(gè)過程不依賴人工標(biāo)注的標(biāo)準(zhǔn)推理文本而是通過模型自身的探索來進(jìn)化成本低很多效果卻可能很好。我個(gè)人的立場(chǎng)是如果你想搞懂 modern LLM 的完整能力邊界從生成到推理這一步非常值得復(fù)現(xiàn)。它也是從會(huì)做 Next Token Prediction向會(huì)解決問題進(jìn)階的關(guān)鍵一步。4.2 我在小模型上復(fù)現(xiàn)推理能力的實(shí)操嘗試?yán)碚撉逦笪覜Q定在自己的小模型上進(jìn)行嘗試。我先準(zhǔn)備了一批帶思考鏈的訓(xùn)練數(shù)據(jù)。數(shù)據(jù)來源不是去爬什么高不可攀的內(nèi)容而是自己寫規(guī)則生成對(duì)于數(shù)學(xué)加減法、字符串反轉(zhuǎn)、簡(jiǎn)單邏輯題先生成問題再人工寫一段分步驟的思考文本最后給出答案。數(shù)據(jù)量控制在幾萬條以內(nèi)一方面是因?yàn)槲宜懔τ邢蘖硪环矫嬉沧阋则?yàn)證小模型是否能學(xué)到推理行為。訓(xùn)練時(shí)我用的是監(jiān)督微調(diào)在已經(jīng)訓(xùn)練好的基礎(chǔ)模型之上用這批帶思考鏈的數(shù)據(jù)繼續(xù)訓(xùn)練。關(guān)鍵技巧是思考過程的特殊 token 分隔。我在文本中插入[THINK]和[ANSWER]兩個(gè)特殊標(biāo)記讓模型明確知道哪里是思考區(qū)、哪里是答案區(qū)。推理時(shí)生成到[ANSWER]之前的部分就是模型的思考過程。實(shí)測(cè)結(jié)果很有意思。一個(gè)參數(shù)量不到兩百萬的小模型經(jīng)過幾千步有思考鏈數(shù)據(jù)的微調(diào)之后面對(duì)簡(jiǎn)單加法問題時(shí)確實(shí)會(huì)先輸出類似先把十位和個(gè)位分別相加然后處理進(jìn)位這類的過程文本再給出最終答案。雖然思考過程經(jīng)常有廢話但正確率比起微調(diào)前有明顯提升。不過也有明顯的局限性模型在陌生題型上基本不具備泛化推理能力它只是記住了遇到問題要先輸出一段過程的模式。這說明 from scratch 復(fù)現(xiàn)推理模型不是簡(jiǎn)單加數(shù)據(jù)就行可能還需要引入更多的強(qiáng)化學(xué)習(xí)策略。但作為工程入門走一遍這個(gè)流程已經(jīng)讓我很清楚地理解了思考鏈的本質(zhì)它不神秘只是把未顯式建模的中間計(jì)算過程變成可訓(xùn)練的文本序列。做這一步時(shí)還有一個(gè)非常重要的提醒數(shù)據(jù)合規(guī)和版權(quán)問題永遠(yuǎn)不能繞開。不要從不明渠道下載所謂的全套數(shù)據(jù)或者盜版資源自己寫規(guī)則生成、使用合規(guī)的開源數(shù)據(jù)才是能長(zhǎng)期復(fù)用的做法。模型能力可以慢慢提升合規(guī)底線是絕對(duì)不能突破的。5. 工程化落地模型能跑只是第一步5.1 量化、KV Cache 與推理加速在本地把模型訓(xùn)練出來之后真正讓人頭疼的是怎么讓它跑得更快、占用資源更少。我一開始直接用 PyTorch 逐 token 生成文本結(jié)果慢得離譜。后來才發(fā)現(xiàn)我連最基礎(chǔ)的 KV Cache 都沒有加。KV Cache 的核心思想非常樸素生成下一個(gè) token 時(shí)前面所有 token 的 Key 和 Value 矩陣其實(shí)已經(jīng)算過了沒必要重新計(jì)算。把這些結(jié)果緩存起來每次生成只需要算新 token 的相關(guān)部分推理速度能提升一個(gè)量級(jí)。我的小模型加上 KV Cache 之后生成 200 token 的耗時(shí)直接降為原來的三分之一。除了 KV Cache量化是另一個(gè)大頭。訓(xùn)練好的模型參數(shù)默認(rèn)是 32 位浮點(diǎn)數(shù)占內(nèi)存大、計(jì)算慢。把權(quán)重轉(zhuǎn)成 16 位、8 位甚至 4 位整數(shù)就能非常顯著地壓縮模型體積。我做的是一種比較簡(jiǎn)單的訓(xùn)練后量化方法先統(tǒng)計(jì)每一層權(quán)重的數(shù)值范圍然后把浮點(diǎn)數(shù)映射到整數(shù)范圍推理時(shí)再反量化回浮點(diǎn)數(shù)。對(duì)于我的小模型從 FP32 壓到 INT8 后模型體積減小了接近四倍生成結(jié)果的質(zhì)量幾乎沒有肉眼可見的下降。量化過程里最容易踩的坑是校準(zhǔn)。直接拿模型權(quán)重的 min/max 做映射有時(shí)候會(huì)被離群點(diǎn)帶偏導(dǎo)致量化后某些層輸出異常。我當(dāng)時(shí)用一批驗(yàn)證集數(shù)據(jù)觀察每層的激活分布選擇合理的截?cái)喾秶笤倭炕Ч⒖谭€(wěn)定了很多。簡(jiǎn)單說量化不是簡(jiǎn)單的數(shù)學(xué)映射它需要數(shù)據(jù)來輔助確定映射參數(shù)。5.2 微調(diào)階段的數(shù)據(jù)配比與防災(zāi)難性遺忘工程化之后我開始嘗試在自己的基礎(chǔ)模型上做微調(diào)。初始階段最容易犯的錯(cuò)誤是用單一任務(wù)的數(shù)據(jù)把整個(gè)模型反復(fù)訓(xùn)練結(jié)果只要訓(xùn)練步數(shù)稍微多一點(diǎn)模型原有的通用能力就被大幅破壞了。這個(gè)現(xiàn)象有一個(gè)專門術(shù)語叫災(zāi)難性遺忘我一開始天真地以為只要學(xué)習(xí)率夠小就沒事后來發(fā)現(xiàn)遠(yuǎn)遠(yuǎn)不夠。解決災(zāi)難性遺忘我驗(yàn)證有效的方法有三個(gè)。第一是混入通用數(shù)據(jù)微調(diào)數(shù)據(jù)中至少保留 30% 到 50% 的基礎(chǔ)語料讓模型一邊學(xué)習(xí)新任務(wù)一邊維持舊知識(shí)。第二是降低微調(diào)階段的學(xué)習(xí)率比預(yù)訓(xùn)練階段低一個(gè)數(shù)量級(jí)。第三是使用 LoRA 這類參數(shù)高效微調(diào)方法只訓(xùn)練一小部分附加參數(shù)原有參數(shù)盡量不動(dòng)。LoRA 的原理是把要更新的權(quán)重矩陣分解成兩個(gè)低秩矩陣訓(xùn)練時(shí)只更新這兩個(gè)小矩陣推理時(shí)再合并回原權(quán)重。這樣不僅顯存占用大幅降低而且對(duì)原有參數(shù)的擾動(dòng)很小。我在實(shí)驗(yàn)中發(fā)現(xiàn)LoRA 加上混合數(shù)據(jù)能把新任務(wù)的表現(xiàn)提升不少同時(shí)依然能流暢生成普通文本效果比全量微調(diào)穩(wěn)定得多。數(shù)據(jù)配比這件事沒有萬能公式但有一個(gè)通用的排查方法每次微調(diào)完成后在上一個(gè)版本模型的測(cè)試集上做一次回歸評(píng)測(cè)如果得分明顯下降就說明數(shù)據(jù)配比或?qū)W習(xí)率可能有問題。我前前后后調(diào)整了三次配比最終確定了一個(gè)能兼顧兩邊的比例這個(gè)經(jīng)驗(yàn)值只對(duì)我的場(chǎng)景有效但添加回歸驗(yàn)證集這個(gè)方法對(duì)任何人都有用。5.3 從單機(jī)實(shí)驗(yàn)到服務(wù)化部署模型調(diào)好之后要把模型給別人用就得做服務(wù)化部署。我沒有引入過于復(fù)雜的架構(gòu)而是用了一個(gè)非常簡(jiǎn)單的思路把模型加載到一個(gè)常駐進(jìn)程里通過 HTTP 接口接收文本請(qǐng)求生成結(jié)果后返回。這樣做的好處是模型只在啟動(dòng)時(shí)加載一次不用每次請(qǐng)求都重新初始化。這里有一個(gè)非常容易踩的坑服務(wù)進(jìn)程必須設(shè)置超時(shí)機(jī)制。我的模型雖然只有幾百萬參數(shù)但在無 GPU 的環(huán)境下生成一段長(zhǎng)文本仍然可能耗時(shí)幾秒。如果客戶端超時(shí)時(shí)間設(shè)得太短就會(huì)頻繁報(bào)錯(cuò)。解決辦法有兩個(gè)一是用流式返回模型每生成一個(gè) token 就推給客戶端一部分二是把生成請(qǐng)求丟到任務(wù)隊(duì)列里異步處理客戶端去輪詢結(jié)果。我實(shí)際項(xiàng)目中先用了流式返回交互體驗(yàn)好很多。另外多進(jìn)程服務(wù)一定要小心模型副本占用的顯存或內(nèi)存。如果使用gunicorn這類多進(jìn)程服務(wù)器每個(gè) worker 都會(huì)加載一份模型副本。我試過默認(rèn)配置結(jié)果服務(wù)啟動(dòng)后內(nèi)存直接翻了幾倍。解決辦法是根據(jù)實(shí)際內(nèi)存限制 worker 數(shù)量或者改用多線程。這個(gè)細(xì)節(jié)不親自部署一次是很難從文檔里學(xué)到的。6. 我踩過的坑問題排查與避坑速查表6.1 訓(xùn)練不收斂三個(gè)最常見的元兇我的模型第一次訓(xùn)練時(shí)loss 一路降不下去我很確定自己代碼沒有語法錯(cuò)誤就把鍋甩給了數(shù)據(jù)量太小。后來我系統(tǒng)排查了一遍發(fā)現(xiàn)根本原因和學(xué)習(xí)率有關(guān)我用了條很低的學(xué)習(xí)率導(dǎo)致模型幾乎在原地踏步。把學(xué)習(xí)率從1e-4提到1e-3之后loss 立刻開始下降。檢查學(xué)習(xí)率絕對(duì)是排查不收斂的第一動(dòng)作。第二個(gè)常見元兇是數(shù)據(jù)順序沒有打亂。如果每個(gè) epoch 內(nèi)樣本順序完全不變模型會(huì)學(xué)到順序上的偽特征訓(xùn)練 loss 也能降但驗(yàn)證 loss 非常不穩(wěn)定。打亂數(shù)據(jù)之后問題基本就消失了。第三個(gè)元兇是初始化。使用 PyTorch 默認(rèn)初始化的 Transformer在小模型上訓(xùn)練時(shí)有時(shí)會(huì)遇到嚴(yán)重的梯度異常。我后來把每個(gè)線性層的權(quán)重標(biāo)準(zhǔn)差按照隱藏層維度的倒數(shù)來縮放也就是非常流行的 small initialization 技巧訓(xùn)練穩(wěn)定性明顯提升。不要小看這幾行初始化代碼它對(duì)整個(gè)訓(xùn)練過程影響巨大。還有一個(gè)容易被忽略的元兇損失函數(shù)和標(biāo)簽的對(duì)齊。我在實(shí)現(xiàn)交叉熵?fù)p失時(shí)一開始把 labels 設(shè)置成了形狀不匹配的 tensorPyTorch 沒有直接報(bào)錯(cuò)而是靜默廣播了導(dǎo)致模型學(xué)到了一個(gè)非常奇怪的分布。發(fā)現(xiàn)這個(gè)問題后我在訓(xùn)練循環(huán)里加了一個(gè)assert檢查張量形狀遇到形狀不一致的情況立刻中斷。6.2 顯存爆炸與訓(xùn)練速度過慢的排查思路當(dāng)我把模型從幾百萬參數(shù)擴(kuò)到一兩千萬參數(shù)時(shí)顯存瞬間告急。第一個(gè)原因是注意力矩陣的平方復(fù)雜度序列長(zhǎng)度為 512 時(shí)注意力矩陣是 512 乘以 512顯存開銷隨序列長(zhǎng)度平方增長(zhǎng)。解決辦法是把最長(zhǎng)序列控制在 256或者改用梯度累積減少單批顯存峰值。第二個(gè)原因是優(yōu)化器狀態(tài)比想象中更占內(nèi)存。Adam 優(yōu)化器本身要保存每個(gè)參數(shù)的動(dòng)量變量和方差變量再加上模型參數(shù)和梯度實(shí)際顯存占用接近參數(shù)的 7 到 12 倍。所以不要看到模型只有幾百萬參數(shù)就覺得內(nèi)存肯定夠用?;旌暇扔?xùn)練是很好的緩解手段但要注意梯度縮放和 loss scaling否則很容易出現(xiàn)溢出導(dǎo)致 loss 變成 NaN。我在排查顯存問題時(shí)寫了一個(gè)簡(jiǎn)單腳本利用 PyTorch 的顯存統(tǒng)計(jì)工具在訓(xùn)練循環(huán)前后打印reserved和allocated內(nèi)存很快就定位出哪個(gè)模塊占用了大頭。這種可視化統(tǒng)計(jì)方法比肉眼猜測(cè)高效得多。如果你也遇到 OOM建議先用這個(gè)思路搞清楚內(nèi)存分配在哪里再?zèng)Q定是減小序列長(zhǎng)度、減小 batch還是換一種注意力實(shí)現(xiàn)。6.3 常見問題速查表問題現(xiàn)象可能原因排查方向解決方案訓(xùn)練 loss 不降學(xué)習(xí)率過低或過高打印每個(gè) step 的 loss 和學(xué)習(xí)率使用 warmup cosine 調(diào)度調(diào)峰值學(xué)習(xí)率訓(xùn)練 loss 下降但驗(yàn)證 loss 不降數(shù)據(jù)泄漏或過擬合檢查驗(yàn)證集來源觀察訓(xùn)練/驗(yàn)證差距重建驗(yàn)證集混入通用數(shù)據(jù)驗(yàn)證 loss 劇烈震蕩數(shù)據(jù)順序未打亂 / batch 太小檢查數(shù)據(jù)加載器是否 shuffle開啟 shuffle或增大批次推理速度極慢沒有 KV Cache打印每 token 生成耗時(shí)實(shí)現(xiàn) KV Cache復(fù)用歷史 Key/Value模型生成總是重復(fù)采樣策略太保守觀察生成文本的重復(fù)率調(diào)高 temperature禁用重復(fù) n-gram量化后效果暴跌校準(zhǔn)數(shù)據(jù)不足 / 離群點(diǎn)影響對(duì)比量化前后每層輸出分布用驗(yàn)證集做校準(zhǔn)設(shè)置合理的截?cái)喾秶?wù)啟動(dòng)后內(nèi)存翻倍多進(jìn)程加載多份模型副本查看進(jìn)程內(nèi)存占用限制 worker 數(shù)或改用線程這些坑都是我實(shí)際踩過的。第 4 條 KV Cache 的坑尤其隱蔽因?yàn)槟P托〉臅r(shí)候速度差異不明顯一旦把序列長(zhǎng)度拉長(zhǎng)差距立刻顯現(xiàn)出來。第 6 條量化校準(zhǔn)則直接關(guān)系到模型能不能在低資源環(huán)境下部署值得多花時(shí)間仔細(xì)調(diào)。最后再分享一個(gè)我現(xiàn)在仍然在用的習(xí)慣每跑一次實(shí)驗(yàn)之前先把隨機(jī)種子固定好然后把數(shù)據(jù)處理流程寫成可復(fù)現(xiàn)的腳本任何一步出錯(cuò)都能從緩存重放。這個(gè)習(xí)慣在 ai-engineering-from-scratch 項(xiàng)目的后半段幫了我大忙因?yàn)楦膭?dòng)一旦多了你根本無法判斷效果變化到底來自數(shù)據(jù)、模型版本還是訓(xùn)練參數(shù)。固定種子、緩存數(shù)據(jù)、記錄每次實(shí)驗(yàn)的配置這三件事堅(jiān)持做下來整個(gè)項(xiàng)目才真正算得上工程而不是一次性的代碼練習(xí)。如果你也打算從零開始走一遍 AI 工程我建議你從寫一個(gè)最簡(jiǎn)單的手寫數(shù)字分類器起步再一步步走到語言模型和部署。這條路不易但走完之后的底氣是任何框架封裝都給不了的。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲和欧美裸体美女双飞视频| 九九热在线精品视频| 亚洲情色电影网| 欧美牲| 狠狠色婷婷7777久| 92性色国产午夜福利在线661| 欧美 牲| 亚洲aV性爱| 成人五级久久| 久久精品人妻一区| 欧美96交| 婷婷香网站| aaaa少妇高潮大片| 亚洲国产精品无石码久久| 嗯嗯嗯嗯啊啊啊好紧好大| 91丨九色丨国产丨人妻在线| 色在线69堂| 综合久| 熟妇乱伦一区二区| 色五月av| 婷婷九月国产| 五十路人妻在线| 这里只有精品视频在线| 久久九九视频九九视频| 十八禁黄色| 人妻在线臀日韩| 91精品少妇搡搡搡| n1038 一二三区| 久久无码一区二区二三区性色| 色丁香五月婷婷| 色香综合天天影视综合| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 91精品91久久久中77777| 国产精品亚洲高清在线| 天操天操夜操夜月操月年年操| 可乐操亚洲蜜911| 999岛国大片| 久久久久亚洲一区女同性恋中文字幕| 啊啊啊啊好爽好舒服一区二区易域| 久久国内| 性感美女91影视| 久草视频分类在线| 蜜臀久久99精品久久久久久成人小说| 一个人免费HD91视频| 国产极品馒头逼| 亚州综合AⅤ| 午夜性生活av免费在线看| 屌色在线97视频| 亚洲情色综合| 亚洲欧美国产中文字幕| 国产尤物AV尤物在线观看不卡| 91N综合在线| 日本在线视频导航| 久操免费在线| 97天天弄| 9色在线| 操国产高清| 五月天激情视频| 国产精品99精品视频网站| 蜜臀久久精品久久久久视频| 99啪| 综合网亚| 大香蕉综合| 日韩精品亚洲专区在线影视| 国产内射爽爽大片| 老熟女网站| 久久久久久人体| 久草老司机| 双插在线| 99热国产精品| 久久久性少妇| 亚洲综合图色在线| 日韩人妻精品| 国产精品不卡一区二区三区av| 骚货| 性影在线视频| 色97欧美| 色婷婷久久综合超碰| A 在线网址| 少妇精品久久久八区九区| 操逼操网| 四虎国产精品永久地址入口| 日本顶级天天操狠狠操夜夜操中文字幕| 伊人精品久久网站| 怡红院网站在线视频| 五月婷婷综合网| 富女玩鸭子一级毛片| 美骚妇av高清在线| 国产97色在线| 影音先锋视频在线| 天啪| 日韩精品大香蕉伊人在线| 人人爱人人操人人性| 欧美激情内射| 久草这里只有精品 | 亚洲色图第一页| 欧美国产操逼| 九九九九九九九九九五码| 亚洲少妇综合在线播放| 在线观看无码三级少妇| 神马九九| 欧美亚洲激情| 欧美AB在线| 粘花网06av视频| 免费精品AB| 色婷婷在线视频| 日韩熟女操逼| 青青操国产夫妻| 久久久久密| 女人被男人桶爽视频网站| 女上位精品在线| 熟女人妇一区二区三区| 天天综合站| 日本网色| 精品久久久久瑟瑟| 久久久久久中文| 99久在线精品99re8| 欧美性性性| 日韩中文字幕在线视频观看| 欧美精品第3页| 久婷婷一区| 精品美女少妇一区二区| 国产曰批免费观看久久久| 久久99视频| 亚洲色图 综合| 日韩一级片在线看| 67914亚洲精品| 国产精品视频自拍在线| 中文日本免费高清| 被男人吃奶很爽的毛片| 日本精品无码三级网站| 99精品久久久久久| 国产精品盗摄 偷窥盗摄| 色婷婷基地| 风月影院男女十八禁| 色y情视频免费看| 丰满欧美少妇| 国产精品扒开腿做爽爽爽视频| 国产精品视频精品一二| 成人久久久精品| 国产日韩色综合| 亚洲熟妇丝袜在线观看| 亚洲精品97| 青青操网| 欧美一区二区三区大综合| 亚洲 欧美 第一页| 人妻加勒比东京热| 激情文学88| 激情五月天综合网| 另类亚洲一区二区三区| 豆1无夜无码| 国产一级做a爰大片免费久久| 日日噜噜夜夜久久亚洲一区二区| 亚洲欧美日韩综合在线尤物| 99操逼| 亚洲AV无码成人精品久久| 精品一区二区久久| 六月丁香网| 日韩无限资源| 大香蕉色网| 日韩性爱视频在线免费观看| 久久久久久少妇| 亚洲欧美日韩精品久久久一区二区| 久久久久国产| 乱老女人一区二区视频| 欧美 亚洲 第一页| 欲色啪| 丁香五月综合| 尤物网址| 欧美热图99| 日韩av女优在线免费一区| 欧美亚洲自拍另类人妻| 加勒比少妇AV婷婷六月天超碰超碰| 亚洲国产成人精品无码专区| 伊人性在线视频| 婷婷五月影院| 一区二区精品日韩欧美在线观看| 96精品久久久| 97欧美超碰| 中文字幕91综合| 国产成人综合在线播放| 亚洲区 欧美区| 欧美 亚洲 制服 精品| 成人激情无码在线视频| 麻豆综合一区av| yazhououmeizongya| 亚洲天堂人妻熟妇视频| 国产精品欧美日韩久久| 日韩97P| 精品无码久久久久| 校园春色综合色| 在线观看国产黄色| 上海一级黄片| 黄片视频观看| 国产精品一区在线播放| 秋霞福利网| 丁香色色网| 97在线视频观看网站| 极品人妻少妇综合| 天堂综合| 91高跟美女在线播放| 婷婷99| 天天干天天燥| 乱性AV| 蜜臀久久99精品久久久久电影| 丝袜内射| 日韩素人无码一区二区三区三州| 日本三级日本三级99| 一类无码操逼视频| 97欧美精品| 久久超碰av在线| 午夜福利在线视频1000| 国产熟妇一区二区| 亚洲情色一区综合| 97视频网站在线观看| 717影院理论午夜伦八戒| 久久性生大片免费观看性| 蜜臀在线看片| 啊啊啊不要啊啊受不了了视频在线| 情色AV电影| 操逼日韩无码| 欧美一级色| 国产精品老师| 色丁香五月婷婷| 日本色色的视频| 久久精品国产亚洲AV嘿嘿| 激情小说图片亚洲首页| 欧美成熟性爱精品| 久久久久99999| 精品中文日韩字幕视频| 色爱欲亚洲| 精品久久在线区一区| 97爱免费插| 六九九九| 中文字幕 一区二区 亚洲无码| 丁香五月激情五月| 99热亚洲天堂| 一区二区三区国产精产| 91精品免费| 嗯嗯啊啊的视频| 久久久久大香青草精品综合| 人妻熟女一区二区| 97精品一区二区视频| 无码动漫av中文字幕| 高清国产精品福利网站| 黄色大片免费在线| 亚洲午夜福利视频| 久久精品人体| 成人久久精品| 欧美亚洲特P| 久久中出| 性做久久久久久免费观看软件| 蜜臀操逼黄色视频操的好爽| 中文字幕五区| 日本男人插女人的逼黄色| 91激情综合| 青青草五月份天| 欧美翘臀视频网站一区二区三区| 午夜超爽| 天天流夜夜操| 九九人妻| 777AV电影| 无套内射性感少妇视频| 操我啊啊啊啊啊| 亚洲综合九| 天天综合网亚洲综合网| 国产精品96| 美中日韩无码| 精品视频专区| 男人天堂毛片| 国模少妇一区二区三区| 蜜色网色哟哟| 久久久草草精品| 国产福利合集| 亚洲欧美日韩综合在线尤物 | 99在线免费观看| 久久五月份| 综合av影片| 人妻娇喘 激情视频| 欧美性爱18观看| 五月激情视频| 国产性爱欧美性爱在线| 黄片免费视频2019| 中文字幕艹艹| 韩国三级色呦呦| 九九综合久久| 啊啊啊轻点在线观看| 乱操乱伦AV| 久久综合五月天| 欧美91精彩| 国产深夜福利| 男人的天堂在线有码| 天堂精品| 在线综合色| 久久99手机免费视频| 蜜桃av色偷偷av老熟女| 日韩成人综合网| 91路www| 国产精品免费1区2区视频| 超碰碰碰碰| 国产蜜臀在线| 激情接吻视频久久久久久| 啊啊啊好舒服好爽啊啊啊视频| 少妇人妻在线| 欧美大香蕉卡久久| 欧美性爱无码一区二区三区| 白丝被操91| 国产一区免费午夜视频| 激情啪啪拍91| 久久久免费懂色| 日本成人在线不卡一区二区三区| 天天色播| 欧美在线第五页| 丁香五六月啪啪| 国产熟女乱论| 久久中出在线| 麻豆久久精品亚洲精品88| 日韩欧美国产高清视频| 秋霞福利网| 97在线视频观看| 99精品在线观看| 99re只有精品| 日日日日做夜夜夜夜无码| 99色综合| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 人妻少妇久久中文字幕一区二区 麻豆 | 日韩精品一区二区人人人| 国产精品久久妻无码网站| 九九热免费国产视频婷婷伊人| 丝袜美腿操av| 破苞ⅩXXX性无码动漫无码| 免看60秒涩涩视频| 亚洲第一在线视频| 中欧人妻丝袜中文字幕| 久久精品天美| 秋霞成人做爱| 人妻天天爽夜夜爽2| 91狠狠综合久久| 97欧美日韩综合| 日韩AV电影网站| 国产久久免费精品视频| 午夜福利 成人 91| 久久a久久| 伊人丁香五月婷婷| 99热欧美| 免费看污网址| 夜夜欧美 | 久久草在线综合视频| 婷婷五月天激情四射| 麻豆性爱视频在线播放| 久草免费在线一区二区| 91色婷婷综合久久中文字幕二区| 国产人妻精品久久久一区二区三区 | 91蜜臀在线久久久久| 国产精品无码在线| 日韩三级伦理中文字幕| 天天综合站| 69视频福利导航| 亚洲精品丝袜-不卡成人免费……| 嗯嗯嗯嗯啊啊啊好紧好大| 日本不卡中文| 亚洲精品蜜桃久久久久久久| 殴美,日韩国产伦精品| 强奸乱伦Av网| 国产福利在线视频网站| A 在线网址| 国产多人在线观看视频| 91欧洲国产成人久久精品网站| 天天综合网~91综合网| 性感美女91影视| 97鸡把在线视频| 99re在线视频这里只有精品| 久久久久久久久久久久黄色| 五月丁香啪| 强奸a片网| 韩国三级理论在线| 一区二区三区机械有限公司| 日韩AV一区二区三区四四| 亚洲色图久久成人| 色天欧美| 78操B| 大逼色网站| 99精品无码| a啊啊啊啊啊啊啊啊一区二区| 国产91专区| rivers-china.com| 久久久少妇| 精品国产91av一区二区三区| 精品人体无圣光凹凸| 蜜乳AV一区二区三区四| 欧美综合97www| 碰人碰碰人人开房人肉| www.亚洲成人一区| 国产偷拍自拍在线视频| 亚洲国产一区二区三区在线| 久操影视| 性爱综合一区二区| 激情小说成人日本无码一| 人妻aa| 久久ww| 日本一天色道久久久精品视频| 97天天插| 国产亚州高清国产拍精| 黑人中出21连凳花野真衣| 久操视频在线| 狠狠色色| 清纯唯美第一页| 无码黑人精品一区二区三区三| 欧美综合站| 国产日产欧产美韩系列麻豆免费| 99热这里只有精品地址| 深夜国产福利| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 日本精品九九九| 91 丝袜在线播放| 岛国成人av在线播放网址| 一区二区三区国产精产| 日本东京热加勒比久久| 婷婷五月天无码 | 国产性感骚丝袜在线| 97超碰精品图片| 亚洲蜜桃V妇女| 91少妇香蕉久久精品| 日本日逼高清| 997色在线| 久久九色| 欧美综合网| 久久久艹艹艹| 久久成年片色大黄全免费网站| 91视频国品一二三区| 97久久超碰| 国产精品久久久久久久久久久久| 久久久五月天| 亚洲麻豆av一区二区| 97在线免费看| 欧美人与性动交a美精品| 亚洲se电影| 天天干2区3区| 中文字幕成人| 国产熟妇 码视频户外直播| 超碰538| 色欲天天综合网| 亚洲一区二区三区在线激情| 伊人在线大香蕉视频久久| 激情久久久| 日日操免费视频| 久久久久幕乱码| 激激五月| 天天综合网站| 黑人精品成人一区二区三区| 国产无码久久高清| 干少妇视频| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 精品日韩人妻视频| 91美女視頻| 18一区二区三区| 网页导航五月天免费一二三区| 欧美熟妇色| 久久久男人的天堂| 日本精品免费一区二区三区四区| 国产欧美日韩在线观看麻豆传媒公司| 精品欧美А∨无码黑人大荫蒂| 9丨久久九九九| 久草线上视频免费看| 日韩丝袜人妻AV| 69精品人人人人| 久热婷婷| 英伦大奶子熟妇吊带| 加勒比av官网在线| 国产精品乱人伊人网| 另类小说五月天| 97人妻色| 一区二区三区日韩欧美 | 欧美性爱一区二区三区四区| 国产刺激视频| 日韩精品永久在线观看| 婷婷色导航| 久久久爆乳翘臀一线天伦理视频| 国产精品毛片| 国产黄a三级三级三级av在线看| 亚洲无线码欧洲精品区别| 综合久久97| 午夜精品久久久久久久男人的天堂 | 大香蕉黄色一级片免费看| 久操网无码在线| 久久av成人无码免费| 国产成人一级av88| AA丁香综合激情| 日韩美女久久一区二区三区| 91N综合在线| 99热国产精品| 岛国黄色短视频| 欧美精品日韩一区二区| 又黄又爽在线观看视频| 啊啊啊好大好湿| 91色伦| 人人扣人人操| 亚洲av青草久久一区二区| 日韩美女高潮喷水视频| 久啪| 偷拍盗拍亚洲色图图片 | 超碰人人妻| 超碰97久久观看| 久久久久久久9| 五月婷婷丁香中文字幕| 99综合网| 久久久噜噜噜久久人妻| 中文字幕美女91| 99热这里只有精品9| 中文字幕人乱码中文字的预防方法 | 亚洲亚洲亚洲天堂天堂| CCYY草草影院地址入口| 69人妻精品一区二区绯色| 中国的操老妇女| 亚洲日韩视频二区| 五月天综合网| 在线免费观看高清无码视频| 婷婷亚洲综合| 国产中文字幕在线观看| 久久久久国产精品喷潮免费观看臀 | 午夜福利一区二区三区四区五区色婷婷| 天美麻豆一区二区三区| 99热66| 精品免费囯产一区二区三区| 中文无码一二三区| 超碰久超碰久| 夜夜爽爽爽| 欧美激情在线观看视频| 91超级碰碰碰| 91精品人妻一区二区三区蜜桃| 女色视频社区| 国产精品嫩草久久久久| 成人熟女区| 日韩欧美亚洲一区二区三区影院| 国内精品99999| 亚洲五月婷婷| 久久一二三四五六七八九区区| 亚洲 欧美 精品专区 极品| 日韩精品中文字幕二区| 国产精品白丝在线播放| 亚洲色9| 樱花蜜乳av| 曰本特级特黄特色黄色A级网站高清在线免费看 | 丝袜狠狠草尤物 91| 免费操逼视频下载| 久久在线观看免费视频| 久射吧| 1区2区3区中文字幕日韩| 亚洲免费成人精品电影| 精品高潮| 97久久超碰日韩精品| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚洲 欧美 制服 另类 自拍| 久久超碰97| 亚州精品人妻一二三区| 美骚妇av高清在线| 国产亚洲 中文欧美久久| 亚洲。日韩。欧美| 亚洲中文字幕三级在线| 欧美综合娱乐久久| 亚洲av综合色区图片亚洲| 国产h小视频在线观看免费| 亚洲凸凹超碰成人| 欧洲综合视频| 狠狠中文字幕| 精品人妻视频入口| 午夜亚洲WWW湿好大| 亚洲综合有码| 欧美黄业| 国产一区二区二区按摩精品啪视频| 久久久96精品| 日韩电影中文字幕| 欧美AB在线| 九七色图| 成人线上超碰| 国产一区二区三区白丝| 精品高清一区二区三区三州| 成人激情无码在线视频| 另类专区在线观看| 熟女视频久久| 久久曰曰| 久久久不能久久久久| 亚洲欧美另类小说| 九九精品无码专区免费| 亚洲欧洲网站免费观看| 色婷亚洲五月在线观看| 日韩人妻精品久久久久| 久久精品视频久久久| 日本久操视频| 蜜伊人色综合97| 色婷婷淫色网| 免费男人的天堂| 久久久久久久| 影音先锋中文字幕日本好一区二区| 精品性爱一区二区| 后入 亚洲 美女 射| 国产美女激情| 天天视频黄| 亚洲成人免费在线| 五月天玖玖资源站| 久九干| 五月天日日操夜夜操| 20cm女自慰在线日韩欧美| 91爆操视频| 99.色网| 香蕉精品二区二区| 亚洲日韩成人性爱视频| 97国产伦理| 国产白嫩漂亮KTV在线| 91最新综合| 美女性91| www色色色com| 91情色在线| 亚洲1区| 97色欧洲| 中文字幕jul-617人妻熟女| 九热大香蕉| 欧美成人A√在线一区二区| 国产馆极品诱惑| a男人的天堂久久一级A毛片| 精品人妻一区二区三区-国产精品| 婷婷激情丁香| 久久麻豆一区二区| 婷婷操视频| 91n免费处女| 俺去俺来也在线www| 嗯嗯啊啊的视频| 五月丁香综合啪啪| 亚洲综合首页| 日B操| 亚洲大色堂| 在线有码中文字幕| 青青操在线亚洲视频观看欧美在线| 色狠狠综合噜一二三区| 看免费一级在线播放毛片| 色九九九综合| 丝袜美腿诱惑亚洲欧美视频在线观看 | 日日日啊啊啊| 日韩国产中文字幕| 国产一区二区三区高清视频| AV天天综合| 懂色中文一区二区三区| 日韩欧美三级| 亚州色图欧美| 久草久热| 色综合天天| 久久久久97| 亚州五月| 无码男人天堂| 丰满搜索结果 -第18页- 久久高清无码| 69视频入口| 蜜桃香蕉久草精品在线| 麻豆福利视频导航| 99久久综合| 玖玖爱免费观看视频| 少妇一级无码精品| 亚洲黄色电影| 91网站18+| 国产一区二区三区久久精品太古里| 婷婷色婷婷| 丁香色五月 97干| 黄色视频60分钟| 97视频免费播放| 好湿好紧视频| 欧美偷拍| 日本不卡二区| 69精品| 麻豆精品.欧美精品.日韩精品.| 啊啊啊啊啊好大好舒服想要| 久久国色天香香蕉| 一二三四免费视频| 操逼免费视频无码国产| 中国一区二区亚洲人妻| 91高潮| 熟女乱伦A| 欧美久久婷| 九久久九九久视频| 欧美色图私拍91| 四虎影视国产精品| 大香蕉日韩| 欧美九九九九九| 一区二区三区看视频| 97亚洲中文| 婷婷激情五月综合| 尤物av网站| 亚洲欧美日韩国产丝袜自拍中文| 精品制服美女中文一区二区三区| 青草伊人网| TS人妖另类精品视频系列| 欧美性爱十八禁| 日韩人妻精品久久久久| 久久国语| 男人天堂欧美| 中文字幕在线日亚州9| 操狠狠| 亚洲青色欧美| 亚洲国产精品无石码久久 | 色婷婷电影| 91精品久久久久久77777| 97爱爱| 综合色99| 最新中文字幕av| 91性网| 免费A V在线播放| 国产一区二区三区久久精品太古里| 屁股久久久久久| 国产成人bd在线观看| 欧洲一区二区三区免费| 青娱乐淫乱1314| 五月婷在线| 蜜桃久久综合视频| 久久成人东京热人妻| 中国一级特黄大片护士| 欧美久久久15P| 美女视频尤物网在线看| 国产精品久久久九九九| 日本成熟少妇A∨网站| 人妻日日夜夜精品| 蜜臀无码视频在线观看| 久久黄黄| 国产乱伦视频污| 日本人体九九九九九九| 神马久久久久久久| 欧洲亚洲人妻无码中字久久三区四区| 欧美激情内射| 欧美天天拍| 秋霞一级鲁丝片A片| 91在线丝袜视频| 欧美特大黄一级片片免费| 久久女女| 亚洲综合888| 日本一区二区成人在线| 欧美色宗合| 日韩影片中文字幕一区二区三区| 久久久蜜桃臀无码视频| 亚洲精品aa久久伊人| 91青青| 999久久久九| 天堂中文日本在线观看| 97香蕉网| 欧洲亚洲人人爽爽视频| 97视频观看| 岛国在线一区二区三区| 丰满人妻一区二区三区| 久久一二三四五六七八九区区| 东京热免费视频| 中文字幕精品一区欧美| 日日摸天天爽夜夜欢| 60秒免费小视频| 精彩视频日韩| 五月丁香久久| av天堂手机版追回| 国产第12页| 视频不卡中文字幕| 久久久久久99999国产精品| 欧色综合| 亚洲情色五月天 | 亚洲无码电影久久久| 97国产精品一区二区传媒公司| 亚洲国产青青| 性色高清在线| 亚洲。日韩。欧美| 国产老熟女| 少妇毛片久久| 日韩丨制服丨中文|在线| 亚洲国产一区二区三区在线| 天天干一区二区| 日韩美女久久一区二区三区| 色欲天天综合网| www.色99| 中文字幕少妇色 | 中文字幕高清20页视频| 久久99久久99精品免视看婷婷| 亚洲aV性爱| 久久免费精彩视频| 天天看综合网| 99热精品青草在线 | 立川理惠加勒比无码| 激情五月天丁香社区| 亚洲欧洲另类| 欧美熟妇操操视频| 欧美少妇性乱| 1024精品在线| 色网在线视频观看免费| 久久久久亚洲精品| 99xav| 大香蕉一人| 欧美Aⅴ| 偷窥自拍A片| 国产性感在线观看| 中文字幕欧美精品亚洲日韩蜜臀| 日韩精品人妻一区二区| 国产日韩精品suv| 国产精品宅男免费| 亚洲情色一区综合| 中文字幕一二三| 国产 v乱码一区二| 亚洲综合码| 久久无码精品| 人妻系列无码专区中文有码| 97色冈| 亚洲国产日韩精品久久久| 强奸乱伦动态污图免费| 看黑丝美女操逼青青网站| 欧美激情内射| 日本精品第一视频在'| 狠狠躁日日躁夜夜躁A| 日韩性爱一级片| 五月丁香大香蕉| 中文字幕av片| 成人麻豆av电影网站| 亚洲国产精品乱码在线观看| 成人三级片一区二区三区视频| 性爱乱伦一区| 99日免费视频中文字幕| 在线亚洲 欧美 日本专区| www.色五月| 亚洲欧洲第二视频在线观看色图| 97无码视频在线播放| 日本超碰在线国产一区| 高清无码久操视频| 青青草视频久久久久| 我要去看2个日本美女.com曹逼| 中文一区二区婷婷视频| 五码视频在线观看| 97欧美色资源| 操逼网站地址| 永久电影三级在线观看| 日韩超碰精品综合| 欧美日韩一区二区三区四区蜜桃| 欧美综合传媒| 香一区二区三区| 日韩性爱视频在线免费观看 | 国内毛片无遮挡国产| 国产精品69久久久久孕妇欧美| 久久久久久午夜男人的天堂| 96精品久久| 91骚妇| 人妻啊啊人妻啊啊| 色欲无码人妻日韩欧美精品| 五月天激情网图片| 性暴力欧美猛交在线直播| 天天综合网亚洲综合网| 人人色97| 五月丁香综合啪啪| 色婷婷九月天天综合| 九九热九九| 人妻精品一区一区三区蜜桃91| 伊人青青一区成人视频在线观看区| 国产小u女在线观看| 久久 国产 无码| 东京热双插| 精品无码少妇| 欧美精品,四区。五区| 欧美另类色图片| 人妻AV在线| 精品国产片亚洲一区| 懂色中文一区二区三区| 十八禁啪啪视频| 亚洲无码太久| 亚洲性高潮| 性色av一区二区| 成人AV素股で擦久久| 91狠狠色丁香婷婷综合久久精品| 91精品成人| 91第一页| 欧美日韩国产精品久久色婷婷| 国产精品露脸在线观看| 激情亚洲天堂| 欧美日韩大香蕉| 九九无码久久精品视频| 校园春色亚洲| 激情丁香五月婷婷| 久久精品国产亚洲av水密被窝| 国产女人成人精品视频| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 国产不卡免费在线视频| 国产免费一区| 日本午夜精品理论片A级APP发布| 欧美亚洲厕所精品偷拍91 | 国产专区路线| 国产野战露脸在线播放| 国产精品视频在线播放 | 久久草大香蕉| 岛国免费黄色网址| 亚州熟妇精品| 丁香五月天激情网站| 亚洲熟女诱惑| 欧美激情超碰777| 思思热国产在线视频| 亚洲AV色图一区| 久久久工口| 中国女人内射6XXXXX| 高清孕妇孕交 交| 亚洲色图欧美色图制服丝袜| 欧美久久人人网| 999综合网| 色网1| 伊色综合天堂色97| 亚洲日韩美女中文字幕乱| JuliaAnn丝袜熟女系列| 中文字幕综合人妻| 国产在线不卡导航| 人人摸人人添人人操| 91综合网| 老熟女91视频| 天天综合网亚洲综合网| 日本男人插女人的逼黄色| 久久久久性熟视频| 国产成人综合网| 亚洲啪啪视频一区二区| 日本三级久| 91成人在线免费视频| 日本一区二区三区午夜观看| 天天综合91| 久久免费9| 操熟女91| 欧美大片91| 亚洲图片第一页| 日韩天天综合| 亚洲脚交| 久久成人网站| 91高清日| 69久久| 精品久久久一本一道| 四虎884| 中文字幕第95页| 日本不卡免费二区| 久久久久熟女| 嗯嗯啊啊操我| 亚洲影院成人| 奇米狠999| 91在线无码精品秘 软件| 亚洲码专区| 99热综合在线| 熟妇人妻一区二区| 成人一区二区三区四区| 激情文学小说一区二区| 中韩中文字幕在线观看| 久久专区| 97精品国产| 日本免费专区| 67914亚洲精品| 欧美黑人XXXⅩ高潮交| 亭亭丁香激情| 青青草字幕AV| 久久日韩肥臀| 中国农村熟妇毛片视频| 国产A v无码专区| 99色色网| oumeizonghese,www| 一本色道熟妇| 欧美91视频| 91色艳| 青青草原伊人网| 为用户提供免费看黄网址在线观看| 国产三级多多影院2022国产AA一级毛片无码 | 十八禁视频一区二区| 久久综合久色欧美综合狠狠| 超碰色大香蕉| 自怕偷自怕亚洲精品| av婷婷色网| 天躁夜夜躁2021| 亚洲欧美一区二区三区一猛片| 中文字幕免费观看| 最近二区三区视频大全| 久久久国产成人一区二区三区在线| 亚洲九区| Julia Annxxxxx| 国产不卡免费在线视频| 欧美少妇性乱| 黄片视频,下载| 国产伊人自拍| 日本大香蕉综合网红本杳社区| 黄色大片视频在线免费看| 性爱av在线免费观看| 97免费视频网| 精品国产无码中文| 人妻免费观看| 草草影院最新网址| 强奸熟女一区二区三区| 性爱免费视频成人| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 欧美色图99| 精品v日韩欧美国产| 好爽要喷了| 精品成人av一区二区三区在线| 亚洲在线观看| 少妇滛荡视频| 大香蕉狠狠爱| 九九九九日本| a天堂视频| 久久久精精精| 91 亚洲 欧洲| 天天视频网站黄| 99精品在线| 农村妇女一级二级三级视频| 亚洲天堂一区| 丝袜视频一区二区在线播放国产中文| 香蕉久久AⅤ...| 欧美激情在线观看视频| 国产四虎在线| 中文字幕亚韩| 美女被啪到深处抽搐视频| 免费啊啊啊| 丰满人妻一区二区三区在线| 欧美日韩日产免费网站看| 97人人爱人人乐| 欧美激情片一区二区| 免费AV播放| 超碰成人最新最好看| 无码人妻一区二区三区免费九色| 久久久99999久网站| 日日夜夜狠狠| 亚洲综合一区二区| 日本 色 导航| 婷婷婷婷婷婷久久久久| 91欧美网| 欧美色91| 怡红院亚洲怡春院av| 另类亚洲图色| 四虎影视在线| 美女露胸露奶头| 91丨九色丨大屁股| 超碰在线国产| 狠狠综合网| 99精品在线播放| 日韩一区二区三区四区五区 | 999狠狠综合| 亚洲性综合9| 天天操女人| 影音综合网| 久久久久密臀一区二区| 欧美亚洲第1页| 五月婷婷hd| 狠狠色一区二区中文字幕| 农村妇女精品一区二区| 曰韩少妇无码| 97超碰总站| 国产搭汕a级片| 风月影院十八禁| 操啊国产| 国产91会所女技师在线观看| 午夜男女爽爽爽影院视频| AV麻豆免费一区| 久久亚洲欧美中文字幕国语| 麻豆啪啪啪视频| 另类天堂| 久久久久9999妇女| 激情五月天校园春色网| 熟妇人妻一二三区免费| 美国日韩黄片| 人人看人人摸人人色| 日日爽夜夜爽| 欧美人妻色| 亚洲影视综合| 郑州宾馆老熟女露脸啪啪| 99精品视频在线观看| 精品女人999| 国产97/欧美| 无码不卡八戒| 97在线视频观看| 熟女一区二区三区| 欧美色就是色| 欧美黄色大香蕉一区二区| 久久久久久久久九九久孕交| 天天操熟妇| 日韩精品色呦呦| 香蕉99秘 精品一区丁香| 91操人| 国产aⅴ无码片毛片一级网站| 久久精品国产精品亚洲艾通辽熟妇| 国桃视频产巨乳精品一区二区在线| 伊人麻豆传媒| www.五月天| 狠狠躁久久躁| 你想操日本小逼吗| 99久久无色码| 97天堂| 男人下部插入女人下部 | 人妻丰满熟妇一区二区三| 精品久久久中文字幕不| 久久 精品| 亚洲精品99| 少妇综合网| 大香蕉伊人网WWWn0n| 久久伊人最新网址视频| 天天综合网~69| 国产福利精品98视频| 97人肏| 国产又黄又粗的视频| 日han少妇无码| 久久久久久久国产视频| 亚州色图片在线色| 九九色婷婷| 欧美懂色综合网| 日韩钢筋无码高清啾啾啾| 99re热有精品视频国产| 97超碰人操| www.99在线| 一本色道无码DVD中文字幕| 99国产天美| 亚洲一区二区AV| 麻豆久久视频在线地址| 日韩色香| 欧美专利1区2区3区4区5区免费| 大香蕉欧美| 嗯嗯,好大,好爽,好骚| 国产无套粉嫩白浆在| 亚洲影视综合| 亚州熟妇精品| 欧美久久草熟女| 免费av大片| 欧美日韩国产成人高清| 啊啊啊好大好湿| 欧美色棕合| 上海一级黄片| 五月丁香六月综合缴清无码| 久久人妻一区二区三区高清| 欧美少妇大量自拍视频在线观看| 亚洲一区二区三区AV无码| 精品免费一区| 亚洲在线综合| 久操影视| 国产1727欧美| 日日黄色三级网站| 97欧美色综合| 亚州高清av| 色爱欲亚洲| av操操不卡| 人妻久热在线| 高凊专区人人操| 屌逼传媒| www.婷婷| 日韩偷拍色图| 最新欧美色网| 96精品在线| 视频二区美腿丝袜制服人妻欧美| 色婷视频| 亚洲天堂热| 日韩精品区二区三区不卡| 亚洲人妻av| 蜜臀少妇一区二区| 可以免费观看的AV| 日韩av女优在线免费一区| 国产做?爰片久久毛片?片美国| 久久成年精品| 啊啊啊啊啊好大好舒服想要| 日韩国产品视频中文字| 啊啊啊好湿久久| 啊啊啊啊二区好大| 日本中文字幕一区| 凹凸 69堂 在线播放| 欧美96精品在线| 八戒午夜福利理论片| 国产女人和拘做爰视频| 亚洲精品国产精品乱码不99| 久操热线| 五月天综合网| 99999这里都精品|