久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

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 庫(kù)但對(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庫(kù)一把梭加載模型、寫個(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è)流程圖再?gòu)睦锩孢x出必須親手做一遍的核心節(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)?,F(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
返回資訊列表
91精品久久久久五月天精品 | 九九九国产精品| 黄色工厂这里只有精品| www.狠狠操| 青娱乐久久艹| 久久久性少妇| 中文字幕国产| 成人十八禁日韩欧美一二三| 风流老熟女一区二区三区l| 激情图片亚洲色图| 黄色片A级一区二区三区| 狠狠亚洲| 亚洲四虎熟女精品| 久久国产乱子伦精品免费女,网站| 精品久久久久av影院| 日韩精品第3页| 久久精品国产亚洲AV嘿嘿| 男同专区一区二区三区在线| www.高清无码诱惑一区.com| 台湾佬激情综合| 国产精品午夜福利亚洲综合网| 蜜桃传媒视频第一区入口在线看| 91老妇女| 丝袜AV一区二区三区| 激情四射五月天| 欧美高清第一页| 干b在线性社区| 亚洲天堂人妻熟妇视频| 国产又色又粗又黄又爽| 欧美综合网站999| 五月婷视频| 立川理惠无码一区二区| 国产内射爽爽大片| a'v在线资源| 91狠狠综合久久| 大香蕉日亚洲日本亚大 | AV中文在线可看| 91啦人妻| 亚洲码在线中文在线观看| 精品欧美日韩在线观看| 亚洲精品天天影视综合网| 狠狠干综合| 一区二区娱乐网站| 亚洲第一成人影院色播| 26uuu成人影片| 色欧美综合| 黄片视频观看| 97K超碰在线| juliaann欧美丝袜办公室| 国产熟妇一区二区| 亚洲日韩XXX| 一区二区激情国产熟女| 99精品成人免费看| 在线看免费无码AV天堂的| 成人性爱美曰韩| 中文字幕久久婷婷丁香五月天 | 深夜操逼网| 超碰97欧美在线| 亚洲精品一二三四区| 成视频在线观看免费看| 久久天天摸| 日日干日日操五月天伦理视频| 五月丁香网站| 熟女一区二区三区| 国产偷人妻精品一区二区在线| 偷拍 精品 另类 四区| 久久亚洲婷婷| 久久一二三四不卡| 欧美亚洲清纯| 国产亚洲精品激情| 婷婷视频在线免费观看| 国产天天骚| 夜夜狠狠躁日日躁色视频| 9九九九九视频在线观看| 东京日日夜夜| 九t超碰| 91色狼| 日韩精品一区二区高清| 九九香蕉网| 伊人丝袜美腿高跟在线观看高清| 亚洲日本大香蕉1| 蜜臀99久| 国产激情av女片自拍| 一区二区三区黄片免费观看| 日本色色的视频| 男女打扑克高清网站| 国产欧美第五页| 丝袜美腿制服人妻二区中文字幕| 人人色97| 大香蕉2017| 超碰日韩人妻| 中文字幕精品一区二区精品| 久久久专区| 国产99999久久精品| 99色骚| 久久男人的天堂| 欧美大片91| 欧美日韩性爱操大逼| 亚洲天堂性爱| 日韩肏逼视频| 色网在线视频观看免费| 天堂麻豆天美| 人人操人人插 - 百度 - 百度| 成人福利视频网| 亚洲欧美精品久| 资源新线在线天堂| 亚洲αv一区二区三区| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 男人的天堂激情| 激情五月天网| 亚洲猛交| 99久久久无码精品国产人| 强免费黄色网址| 亚洲AV不卡在线观看尤物| 美女诱惑一区| 激情婷婷| 欧美综合777| 国产美女自拍AV| 欧美视频在线视频免费va| 好好的日:com久久九九| 天天操人人操狠狠插| 久久久久久性爱视频| 天天拍夜夜| 日本岛国黄色网址| 国产路线专区| 日韩三四五区| 婷婷超| 久久久久久久 九九九九九九九 | 不卡视频一区蜜桃视频 | 试看福利| 乱伦图av| 亚洲脚交| 二对二中文字幕。| 人人看人人爰人人操| 日本午夜福利影院| 日韩内| 精品亚洲黄色片 国产精品导航一区二区 | 中文字幕免费在线观看| 999国产精品999| 黄站在线免费观看| 九九色精品| 91 丝袜在线观看| 色区久久| 毛片久久| 九九视品黄色| 亚洲国产成人7777| 日本中文字幕一区| 精品婷婷| 国产精品黑人一区二区三区| 91天天c| 欧美大香蕉同搞| 夜夜爽夜夜摸夜夜操免费视频| 狠狠激情综合狠狠操中文字幕| 97国产精品在线观看| 久久综合五月天| 91综合色噜噜| 91岛国动作片| 日日AV加勒比| 亚洲图片激情综合另类| 久久蜜桃一区二区| 大香蕉综合在线| 91丝袜| 蜜臀99999| 韩国一级做A片免费的| av中亚| 欲香欲色天天天综合和网| 日韩性爱电影一区| 女人天堂av在线播放| 欧美成人色| 狠狠色丁香| 国产网红精品| 精品无码久久久久久久杏吧| 人妻蜜桃臀| 男人天堂.AB| 翔田千里av一区二区三区| 国产精品成久久久久午夜午夜| 国产精品suv一区| 丁香五月社区| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 久久久久久久强迫| 亚洲国产成人7777| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 91爱看| www.狠狠| 超碰九色| 一本道综合色图| 亚洲va有码在线天堂| 久热一区二区| 亚洲有薄码区久久在线一区| 美女丝袜激情小说| 色香蕉影院| 免费公开人人操| 日本人妻中文字幕精品| 日本成a人v网站在线观看| 久久是精品| 精品免费1| 91精品91久久久中77777| 老司机老司机午夜影院| 成人a级高清视频在线观看| 9久久久久| 欧美日韩妖精91com| 欧美91精彩| 欧美在线l亚洲| 一区二区三区男女操逼黄色小电影| 校园春色制服丝袜中文字亚洲| 欧美日韩久久精品爱爱| 啊啊啊轻点在线观看| 欧洲精品人妻| 青青草久久| 天天欧美欧美亚洲网| 熟女字幕| a级成人毛片免费视频高清| 亚洲精品一区二区精品| 欧美三级中文字幕hd| 又粗又长又爽在线观看| 91丨豆花丨熟女| 欧美自拍偷拍综合图片| 亚洲天堂7777| 国产尹人在线视频免费| 久久女人一区二区三区| A V少妇特黄三级| 欧美淫穴| 欧洲精品在线播放| 欧美亚洲手机在线| 男人天堂2017| 午夜视频久久久久一区| 人看人人摸人人操| 久热久一区二区三区| 动漫片子网站3黄| 一区中文字幕二区日韩| 国产精品国产| 在线中文字幕| 极品尤物女神在线观看| JuliaAnn丝袜熟女系列| 日韩成人大片在线观看| 超碰成人国产| 亚州精品一区二区三区香中文字幕在线| 婷婷五月天成人| 日本成熟少妇A∨网站| 日韩小电影| 国产辣妈在线视频福利| 天天日B夜夜干B时时操B| 中文字幕亚韩| 高潮内射在线| 91女优在线观看 | 日韩精品区二区三区不卡| 91精品无码人妻系列| 99久久婷婷国产综合精品草原| 欧美躁死她一区二区| 日韩内射视频| 男人的天堂VA| 草草影院最新网址| 1956日韩精品| 久久9精品网站| 草草草草视频| 91动漫操逼视频| 最新欧洲欧美日本激情网站| 精品一区二区三区四区外站| 久久丝袜| 欧美一区二区三区日韩| 九九在线精品| 18禁止看精品中文字幕| 91黑人无码激情在线| 殴美,日韩国产伦精品| 99国产精品免费| 夜夜操夜夜高潮夜夜爽国产精品区| 91精片| 亚洲蜜乳av| 国产剧情一区在线观看| 久9爱经典视频 | 九九久久精品| 日本新免费二区三区| 五十路熟女人妻一区二区在线观看| 在线观看成人性爱免费小视频| 热99re69精品8在线播放| 五月婷婷丁香六月丁香| 天天透伊人| 加勒比无码毛片| 亚洲激情综合另类男同| 欧美精品久久96人妻无码| 亚洲黄色| 久久天天摸| 91亚洲网站| www网站黄| 婷婷另类小说| 国产美女自拍AV| 日本天堂网| 91美女视频| 久久毛卡| 精品小视频在线| 亚洲精品一区二区精品| AV丝袜少妇| 2020久久免费视频| 日韩精品熟妇| 国产精品黄色三级av| 亚洲伊人久久精品狠狠在线| 国产无码精品久久久久久| 天天做天天爱天天爽| 天天综合,91入口| 一牛影视成人片免费| 六月丁操逼| 黄人人操人人操| 欧州激情视频在线一区二区| 最新国内自拍av免费| 少妇天堂网络| 黄色区免费观看中文字幕| 1204av韩国| 操逼国产免费| 九九久久久| 日韩乱码Av| 久久精品熟妇丰满人妻99| 五月天激情小说网| 激情小说日韩无码| 岛国不卡超碰护士AV在线播放| 日本三级A片网站com| 最新精品久久蜜桃| 午夜国产成人福利视频| 91天堂| 国产 日韩 欧美 人妻 熟女 中文| 欧美偷拍| 偷拍在线观看视频| 久久久婷婷婷| 视频一区二区三区精品| 久久久久久久久久久久九| 8050午夜少妇无码| 永久免费av无码网站国产app | 久久性生大片免费观看性| 精品视频123区小说区| 91久久免费视频互動交流| 亚州久久9| 亚欧Av| 亚洲有码视频二区| 久久女同性恋一二区| 欧美日韩国内不卡| 澳门黄片一香蕉视频| 亚洲色丰满少妇高潮| 高清在线偷拍自拍视频| 天美麻豆黄色录像| 大香蕉宗合网在线| 国产成人精品无码久久| 人妻丝袜美腿中文字幕| 校园春色欧美| 爱射综合| 久久久久9| 操b在线观看| 久九九九九九九九热| 亚洲97P| 日本三级大片| 国产操逼逼网| 操婢日韩| 熟女视频久久| 一个人免费视频观看在线WWW | 亚洲国产97| 目产99999久久999| 操逼视频国产无套| 久久久九九九九| 日本羞羞的视频在线播放 | 国产品精品自在在线午夜免费| 日韩精品.久久精品.AV女优.天美传媒| 欧美日韩国产色五月综合在线| 999国产精品999| 一区二区三区麻豆| 天天做天天爱天天爽AV| 日韩性爱播放| 26uuu久久| 激情婷婷丁香| 久久人人妻| 亚洲啪啪视频一区二区| 天天视频网站黄| 传媒在线观看一区二区三区| 91色艳| 国产尤物AV尤物在线观看不卡| 国产97亚洲| 伊人精品视频| 97色论| 青青草黑寡妇男人天堂| 五月婷婷激情网| 成人免费在线网站| 黄色视频60分钟| 啪啪自拍九九综合| 99色在线| 另类成人首页一区| 日韩AV一区二区三区三州三州| 亚洲精品视频在线| 婷婷五月天色| 五月丁香网站| 婷婷色婷婷| 爱爱60秒免费视频| 久操大香蕉| 午夜影美女日鸡鸡天天视频国产| 翔田千里Av在线| 少妇精品久久| www国产无码| 神马午夜久久| 成人性爱免费播放| 欧美在线播放| 另类图片欧美激情综合| 另类亚洲一区二区三区| 亚洲色系另类精品国产| 综合欧美日韩在线观看| 毛片电影一区二区三区| 国产女人高潮视频| 午夜精品久久久久| 久久久96精品| 日本操逼无码| 成人网站 免费观看| 欧美在线观看综合国产| 97人肏| 久久亚码| 蜜汁欧美| 九月激情婷婷| 色99在线| 日韩丝袜高跟制服在线观看| 超碰免费欧美7| 丝袜加勒比| 五月天婷婷在线看| 五月婷婷久久综合| 欧美色图天堂网m| 少妇高潮一区二区三区在线| 一本色道综合久久欧美日韩精品| 国产又黄又粗的视频| 狠狠操狠狠插| 日本高清一本二本免费不卡| 久综合国内精品自在自线| 亚洲精品日日夜夜52| 亚洲综合在线高清| 欧美伊人电影| 92午夜免费福利视频| 天天影视网综合少妇| 91中出在线| 操婢日韩| 日韩懂色网| 欧美美女视频| 日韩精品碰碰| 久视频在线观看| 精品人妻高清麻豆av| 日本成a人v网站在线观看| 国产网站在线播放| 人妻在线臀日韩| 大色网久久| 超碰人妻天天干| 六月婷婷一区二区三区| 无码一区免费在线不卡| 六月激情婷婷| 91精品国产91久久久久久久久久久久| 天天日B夜夜干B时时操B| 欧美精品偷拍| 亚州熟女乱伦| 亚洲综合99999| 日本成人A片网站| 最新亚洲风情电影| 一本一道vs波多野结衣| 日日躁夜夜躁狠狠躁超爽| 欧美 亚洲 偷拍自拍| 亚洲天天精品| 天天添天天干电影| 熟妇色99| 97欧美色资源| 婷婷久久综合| 肉动漫无遮挡h在线观看| 欧色综合| 超碰人人在线| 日本一级特级毛片视频| 天天综合网合集91| 国产精品久久久三级无码| 精品人妻一区二区蜜桃视频 | 1区2区3区中文字幕日韩| 91处女在线观看| 亚洲人人夜夜澡人人爽| 婷婷色色网| 午夜性生活av免费在线看| 夜夜騷av、一區二區| 操逼操网| 翔田千里A片一区二区| 亚洲欧美综合网站| 中文字幕啊啊啊在线观看视频| 日本成人A片网站| 久久久久久久| 日韩欧美中文字亚洲慕| 精品国产网站| 久久精品免费| 伊人色综合网| 人妻少妇被猛烈进入中| 中文字幕丰满人妻日本| 青青草一本道福利视频| 中文字幕在线观看AV| 青娱乐久久艹| 亚洲阿v天堂在线| 台湾佬中文娱乐网久久久久久久久久com | 久久婷婷色| 久久精品国产免费观看99| 亚洲超碰在线| 九九热三级片| 亚洲蜜臀懂色| 长久操视频| 久久精品国产亚洲AV先锋| 丰满人妻一区二区三区大胸懂色| 色九月综合| 亚州AV无码国产精品| 成人免费看吃奶视频网站| 欧美天天干| 精品久久久久久AV无码| 嗯~啊~轻一点 视频| 97亚洲综合电影| 性色av蜜臀av色欲aV| 亚洲区 欧美区| 一区二区乱码福利| 国产亚洲日本精品在线| 按摩中文字幕| 国产天天看| 黄色高清久久无码依人| 精品96久久| 日韩欧美水蜜桃人妻| 伊人少妇久久久| 997色在线| 亚洲图片91| 中文字幕日韩专区精品系列 | 欧美日韩在线小说 | 夜夜爽夜夜爽| 美国日韩黄片| 色欲日韩欧美在线一区| 午夜婷婷| 97午夜剧场日韩| 久干网| 精品1区2区3区| 不卡中文字幕aⅴ在线| 97摸视频| 极品白嫩福利在线| 天美传媒在线一区| 丝袜综合网| 日韩精品在线观看观看| 精品国产乱码久久久久久影片| 亚洲高清视频在线观看| 91亚洲黄色网| 国产成人自拍视频视频| 一级久久久久久久久久久| 九九毛片这里只有精品| 97精品视频在线播放| 国产精品人妻无码久久久互動交流 | a片久久久久久久久久久久| 九九伊人网| 蜜臀色乳| 97在线视频免费观看| AAA久久| 亚洲欧美日产国产91毛片| 国产精品白丝www| 大香网站| 强奸熟女一区二区三区 | 欧美亚洲尤物久久| 人妻 制服 日韩 中文 在线| 神马久久久久久久| 蜜桃视频精品一区二区| 精品少妇人妻一区二区三区| 国产精品久久久久中文字幕| 高树玛利亚无码流出| 九九无码| 18一区二区三区| 色欧洲| 超碰97男人| 日本人妻中文字幕| 国内操逼视频二区| 亚欧国产无码精品在线| 熟女熟妇伦久久影院毛片一区二区| 福利在线观看一区二区| 99re6在线视频精品免费完整版安卓版| 午夜男女爽爽爽影院视频| 超碰碰激情97+久| 国产亚洲精品美女久久久| 中亚黄色三级大片| 婷婷天堂站| 欧美综合色图片| 91欧美长吊| 一类无码操逼视频| 91n处女在线观看| 大香蕉伊人网WWWn0n| 看大黄色大片原件| 日本在线15p| 青青青国产| 亚洲国产成人精品无码专区| 超碰综合97在线| 啊啊啊操一区| 中文字幕日韩人妻视频一区二区三区| 欧美黑人日韩少妇色情| 一区二区三区 丝袜 高跟 美腿| 欧洲性爱无码区| 内射中国少妇高清视频免费视频 | 亚洲91射| 中文字幕老熟妇黄色视频| 国产综合网站在线播放 | 97在线免费看| 国产自偷自拍一区| 99色网| 日韩在线观看AV| 久久人爽| 久插综合| 美国美女AV在线| 插欧洲美女欧美精品| 免费视频在线一区二区不卡| 欧美日韩国产精品久久色婷婷| 中文字幕片| 狠狠色综合网| 国产激情在线观看| 久久久久久日韩| 99老司机精品视频在线观看| 92一区二区| 久久久久久久久999| 亚洲天堂一区二区| 亚洲另类色综合网站| 九一精品牛牛一区二区| 91丝袜激情在线| 中文字幕AV片| 精品亚洲俞拍视频一区| 亚洲情色在线| 欧美色图人妻| 精品久操| 超碰色老头| 欧美人黑A片无码免视费| 欧美 亚洲 第一页| 中文乱码字字幕在线第5页| 国语对白露脸XXXXXX| 国产亚洲精品A在线观看下载| AV一区观看| 色婷婷激一区二区三区| 亚洲aV无码成人在线观看| 日本综合久久| 欧美情色贴图| 性91| 精品高清一区二区三区三州| 成年人一级黄色毛片大全在线观看| 天堂亚洲精品| 欧美日韩婷婷中文| 校园春色第一页| 久久五十路熟女人妻| 玖玖97综合| 密臀国产在线| 国产熟女免费观看久久| 97色色色综合网站| 亚洲天堂精品日韩电影| 99热最新| 99精品无码| 大色综合网| 大乔未久88一区| 国产大陆天天艹| 美女的肌被草喷水视频| 黄色视频高清无码网站| 欧亚洲精品有视频| 大香蕉综合网| AV天天在线观看| 变态综合色| 91久久婷婷| 久久黄黄黄| 亚洲乱熟女一区二区三区大香蕉| 97欧美色综合| 国产九九九九九九九九| 色综合1991| 熟女突然公开看18禁影片 | 久久久久国产精品久久久| 一区二区三区视频在线观看免费| 日韩二区三四区五区六区在线看| 在线一道啪| 91久久国外网| 国产成人无码久久精品| 91四海无码日韩欧美| 婷色五月| 亚洲无992tv| 99综合自拍| 中国国产精品一区视频| 天天干夜夜肏| 色婷婷丁香| 操逼操逼操| 国产精品高潮久久AV| 色欲蜜臀AV| 性高潮久久久久久久久久久| 67914亚洲精品| 丁香婷婷五月| 91色堂| 91在线无码精品秘 软件| 男人的天堂com| 91亚洲精品青草| 伊人丁香五月婷婷| 一本色道久久综合亚洲二区三区| www.色婷婷| 91大神精品长腿在线观看网站| 久久久久久久久久久久黄色 | 黄页大片在线观看| 少妇一级婬片免费放一级a性色.| 亚州九九九精品视频| 任你草| 天天激情综合站| 国产精品白丝AV| 有码人妻系列| 99久久精品国产高潮| 一区二区三区国产在线播放| 色综合99999| 激情综合网激情五月天| 日韩无码精品综合久久| 久久亚洲一区二区色婷婷| 欧美中文字幕男人天堂久久精品 | 亚洲成人精品久久久| 屁屁影院一区二区三区国产| 97香蕉网| 午夜视频久久久| 亚洲日韩青青草色月| 爱我干综合| 99久久久无码精品国产人| 蜜桃臀av一区二区| 伊人玖玖网| 98一区二区精品| 成人三级片无码| 人妻一区二区三区视频 | 精品v日韩欧美国产| 天天射夜夜操| 亚洲欧美97√| 久久精品99| 欧洲一区二区三区免费| 久久香蕉国产传媒一区剧情天美| 入口操逼网站| 交换娇妻呻吟声不停中文字幕| 超碰色97| 欧美三四五区| 国产AB视频| 日日做夜狠狠爱欧美黑人| 欧美日韩国产中文超碰| 久久伊人五月天| 国产小黄片在线免费观看| 亚洲乱码精品一区二区| 欧美性夜| 97天天| 日韩有码中文字幕女同性恋| 熟女高潮精品一区二区| 99re6国产精品99re| 中 文字幕一区二区三四 五 区日 日 骚| 精品妇女一区二区三区| 五月天激情小说| 色综合久久888| 偷窥自拍A片| 国产一区在线免费播放| 亚洲va有码在线天堂| 黄色视频60分钟| 国产久久免费精品视频| 亚洲一卡二卡在线免费| 美女操逼A A| 五月婷婷丁香六月丁香| 777琪琪午夜免费A片| 亚洲电影中字一区二区| 国内精品久久人妻性色av| a男人的天堂久久一级A毛片| 中日韩一区二区三区欧美| 日本成a人v网站在线观看| 9久在线视频只有精品| 亚洲欧美高清无码| 午夜福利无毒不卡| 亚洲精品xxx| 亚洲欧美一区二区三区一猛片| 日韩黄色一区二区三区| 日本3级一区二区免费| 99操视频| 偷窥自拍亚洲色图| 色诱avtt| 日韩欧美蜜桃精品久久中文字幕久久| 亚洲综合色在线| 成人青青草原伊人| 日韩视频中文字幕| 国产日韩区| 懂色AV蜜臀无码精品APP| 岛国精品视频在线观看| 欧美毛片在线网| 色婷婷蜜臀av| 天天天操天天天爱| 欧美色图20p| 天天躁日日躁成人字幕aⅴ| 凹凸视频在线观看伊人| 超碰在线91| 久视频在线观看| 香蕉免费一区二区三区不读 | 狠狠色婷婷| 蜜臀精品1区2区| av久日| 91天天综合日韩欧美| 国产亚洲日韩欧| 亚洲欧美经典一区二区 | 久久久不卡| 亚洲密乳AV| 九月婷婷| 欧美亚洲美少妇一区二区| 97ai亚洲| 人人 操人人 操人人| 久久激情网| 性老妇一区二区三区| 欧美综合中文| 欧美午夜视频免费观看| 五月激情视频| 婷婷五月天无码| 精品久| 亚洲国产高清福利视频| 麻豆久久久久久久久丝袜| 欧美伦乱| 中文字幕日韩人妻视频| 午夜天堂精品久久久久91| 97丝袜亚洲在线播放| 亚洲男人天堂网| 欧美成人性爱视频大全| 亚洲黄日韩无码专区| 亚洲 日本 不卡| 国产精品免费日韩| 啊啊啊好湿久久| 欧美色图20P| 岛国片国产成人亚洲播放| 久久人妻97久久久久久久| 蜜臀Av一区二区三区| 欧美黄色大片在线观看 | 亚洲妇色| 91亚洲网| 9久精品| 搡老熟女国产1000部| 国产精品嫩草影院午夜两性| 久久色人体| 欧美色交| 天天色综合天天操| 欧亚揄拍偷拍精品视频| 国内精品a| 欧中日成人免费影视| 综合 亚洲 欧美| 色婷婷综合网| 97久操| 色狠狠色| 欧美丝袜亚洲| 色婷婷九月| 欧洲一区二区| 一区二区三区视频在线观看免费| 大香蕉综合在线| 亚洲天堂中文字| 欧美变态激情网| 午夜超爽| 精品成人女人久久| 成人激情无码在线视频| 色香伊人| 美女操逼福利视频| 欧美丝袜美女电影一二三四区| 污污汅18禁网站在线永久免费观看| 久久、1234| 精品久久无码午夜福利| 久久中文色图| 亚洲啪AⅤ永久无码| 99热在线不卡| 约操熟妇| 天堂av最新电影网| 中文字幕jul-617人妻熟女| 婷婷九月丁香| 青青草日韩无码| 九九九九9999| 日韩中文字幕熟妇人妻 | 18一区二区三区| 在线亚洲 欧美 日本专区 | 精品亚洲黄色片 国产精品导航一区二区 | 青青操视频在线| 国产精品熟女丝袜一区二区| 一本色道久久综合精品婷婷| 日韩另类色图| 香港澳门日本三级网站| 手机久操欧美综合色码| 亚欧日韩成人| 亚洲少妇视频| 色五月69夫妻| 无色无码| 国产精品第一页国产大屁股视频免费区| 内射白嫩美女| 国产Aα| 日韩有码中文字幕女同性恋| 蜜桃久久久久久| 草草影院日本第一页| 亚洲麻豆18发?| 天天干天天拍| 人人干黄色| 东京热伊久| 67194无码不卡| 综合免费无码中文| 欧美九九九九九| 另类 综合 日韩 欧美 亚洲| 亚洲操人| 国产成人拍国产亚洲精品| 美女让帅哥通她小鸡鸡| 日韩免费人妻色情网站| 亚洲精品人妻在线| 淫淫综合网| 青青草成人视频在线观看二区 | 精品人妻一区二区三区不卡断| 午夜久久一区二区无码中出| 强奸乱伦中文字幕AV| 久久久蜜桃臀无码视频| 99热大香蕉伊在线| 一区二区三区国产精产| 日本精品高清一二区一本到| 国产色图乱伦| 四虎精品亚洲| 九九九久久久久| 亚洲欧美大香蕉| 国产 无码 一区二区| 超碰成人人人爽人人爽| 久久久天美| 亚洲视频一二区| 欧美乱色| 亚洲AV成人无码一区二区三区在线观看 | 一起草视频在线| 韩日自拍| 久热久操| 美女淫穴| 一区久久久二区| 综合久久99| 日韩性爱视频免费在线 | 国产精品高潮久久AV| 超碰亚洲欧美日韩无| 五月激情视频| 久草免费在线一区二区| 日韩黄片视频试看| 富女玩鸭子一级毛片| 夜夜欢天天干| 男女啊啊啊| 九九九国产精品| 国产丝袜高跟美女av免费观看| 久久有码| 九九九久久久久| 欧美超碰96| 精品久一区免费| 亚洲精品久久久久久久久豆丁网| 一起草av| 在线 制服丝袜中出 人妻| 亚洲欧美经典一区二区| 国产激情在线| 丝袜熟女一区二区三区| 嗯啊抽插大香蕉网页| 日韩免费在线视频观看| 99久国产精品午夜性色福利| 五月天婷婷在线看| 我要去看2个日本美女.com曹逼| 97天天日| 26uuu久久| 亚洲黄片免费在线播放| 日韩免费一级性爱视频| 三级日韩一区二区三区| 内射小黄片| 国产乱色国产精品免费视| 成 人片 黄色大片| 国产Aα| 国产亚洲色婷婷久久99精品91葵花宝典| 操逼无码一区| 亚洲熟女中文字幕在线| 色狠狠综合| 日本狠狠干| 97视频在线观看播放与子乱对白在线……| 久久久人体| 国产精品制服丝袜中文字幕日韩一区二区三区| 国产suv精品一区二区四| 自拍盗摄一区| 国产美女激情| WWW美腿丝袜香蕉中文| 欧美日韩不卡传媒| 91精品国产一区三一| 久久精品国产精品一区| 亚洲伊人a线观看视频| 老司机射| 骚逼高潮久久精品| 91在线限制级| 久久久成人精品| 欧美日韩亚洲少妇寂寞影院正在播放| 中文字幕成人乱码熟女精品国50 | 天天日天天色| 麻豆久久久久久久久丝袜 | 91视频综合网| 女同女同恋久久级三级| 果冻国产精品麻豆成人av| 人妻少妇久久久| 亚洲永久AV无码精品秋霞| 碰人碰碰人人开房人肉| 日本男人天堂| 欧美1区二区三区公司| 91精品无码人妻系列| 天天欧美色| 午夜福利在线合集| 97狠狠| 国产亚洲女v在线观看| 国内毛片无码一级毛片| 日韩精品高清资源在线| 中文字幕精品亚洲熟女| 91天天看| 日本午夜精品理论片A级APP发布| 超碰 97国产熟女| 色拍偷亚洲| 热99这里有精品综合久久| 欧美一级在线观看成人| 极品美女福利在线观看| 99re6久热只有精品6在线直播| 在线亚洲丝袜视频网站| 97爱综合| 国产91久久九九免费精品无码| 老女人日韩美91| 国产91丝袜 在线播放| 欧美日韩*字幕一区| 亚洲激情综合| 91超碰在线播放| 日韩免费av片高清无码| 久热这里| 中文字幕无码不卡啪啪| 亚洲黄片免费在线播放| 99爱精品| 视频在线观看青青99国产| 日韩无码精品综合久久| 情色AV电影| 超碰97人妻自拍| 免费看A片毛毛片在线播| 蜜桃久久久久久久| 高清视频一区| 911粉嫩人妻| www被窝色com| 亚洲精品国产无码高清| 欧亚乱色熟一区二区三四区| 欧美日韩制服| 久久艹逼视频| 美女骚尻视频| 激情综合二| 九九九九九九九九九五码| 国产在线视频午夜精华在| 激情深爱五月天| 国产精品久久久午夜夜伦鲁鲁| 自拍偷拍 高清无码| 黄网站黄视频网站进入口| 大学生美女口爆| 人妻久久久久久久久久久久久久久| com 首页 18岁 禁区 女优 免费 精选 同城| 粉嫩av久久一区二区三区| 久视频在线观看| 精品人妻一区二区三区日产乱码| 99热综合| 国产精品9999| 超碰人人妻| 天天亚洲| 精品四五区| 思思热一热婷婷热一热| 黄色一级视| 亚洲天堂一区二区| 久久人人爽人人爽人人片Ⅴ| 国产风韵犹存熟妇三区| 亚洲码专区| 2017天天操天天日| 亚洲无码99| 91亚洲电影| 91丝袜美女| 精品久久无码午夜福利 | 国产综合网站在线播放| 任我爽在线视频免费观看 | 超碰九九| 91oumei| av网站在线看| 啊啊啊啊啊在线视频| 99在线免费公开视频| 成熟熟女国产精品一区二区| 麻花传媒免费网站在线观看| 91人妻久久久久久久久久久久久| 色色色天美视频| 啊啊啊啊嗯嗯在线久久久| 天天日少妇逼AV| 久久永久无码人妻视频| 台湾大香蕉99热| 亚洲最新中文字幕免费| 我爱操| 麻豆蜜桃视频在线观看| 久久精品国产亚洲妲己影视| 91国精产品| www.yw尤物| aaa亚无码专区| 亚av顶级裸体一区二区三区四区五区 | 国产家庭乱伦性爱视频| 精品一区二区久久| 天天综合色| 翔田千里AⅤHD无码| 欧美淫乱视频| 精彩视频日韩| 亚洲精品影视老司机| 九九精品网| 超碰97玖玖爱| 国产97色在线| 波多野结衣之双飞调教在线播放| 精品人妻一区春色| 欧美操人| 欧美性爱免费短视频| 亚洲猛交| 伊人国产视频| 五月婷婷深深爱| 国产免a费看黄片在线| 亚洲无码一区成人免费午夜| 口爆欧美91| 成人看片网站| 国产野战露脸在线播放| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 欧美亚洲丝袜人妻制服99| 亚瑟国产精品久久无码| 伊人九九| 极品色电影院| 婷婷三区| 欧美做爰无码A片视频| 操逼逼一区视频| 狠狠爱夜夜| 国产精品久久久久久久久久二区三区| 91 国产丝袜在线放观看| 久草草一二三四区久久| 67914亚洲精品| 黄色性爱网网| 一级成人性爱| 少妇高潮九九九九| 久久中久文96| 久久伊人青青草| 精品人人| 色五月综合网| 围产精品一区二区三区视频播放| 午夜成人爽爽爽爽A片李冰冰| 久久久免费视频18| 夜夜福利| 丝袜综合色图| 极品五月天噜噜| 狼人久草| 黄片www.| 久热香蕉精品在线视频| 午夜乱轮操逼视频免费看| 91美女在线观看| 91美| 精品一区二区2| 人妻素股| 激情人妻另类| 天天综合网1| 西西美女视频网| 96爱综合| 2019天天操天天爽天天拍| 狠狠狠一区二区三区| 920日本午夜免费| 久久人妻视频| 99激情视频| 五月婷色| 久久怡红院| 在线 制服丝袜中出 人妻| 99操逼| 五月综合色| 能看的AV| 精品一区二区啪啪啪| 一区二区偷拍拍视频| 天天日天天舔天天喷天天射| 天天拍天天操| 久久99热这里只频精品6学生| 97久久超碰| 日本三级大片| 青青草日韩无码| 91色碰| 国产传媒1234区| 亚洲欧洲日产国产综合网| 亚洲天堂情色| 久久九操在线观看| 亚洲图片欧美另类综合免费视频大大香| 97久久国产精品| 精品人妻久久久| 欧美色图亚洲激情| 国产视频人人网|