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

ARTICLE DETAIL

資訊詳情

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

TensorFlow實(shí)戰(zhàn)指南:從計(jì)算圖原理到生產(chǎn)部署的完整路徑

TensorFlow實(shí)戰(zhàn)指南:從計(jì)算圖原理到生產(chǎn)部署的完整路徑 1. 從零開始理解TensorFlow到底在做什么很多人第一次接觸TensorFlow腦子里冒出來(lái)的第一個(gè)問(wèn)題不是“怎么用”而是“這玩意兒到底是干嘛的”。我剛開始學(xué)的時(shí)候也一樣看到一堆tf.constant、tf.Variable、Session老版本之類的概念完全不知道這些東西在實(shí)際工作中對(duì)應(yīng)什么。所以這一章我不急著講代碼先把TensorFlow的定位和核心邏輯說(shuō)清楚。1.1 它本質(zhì)上是一個(gè)“計(jì)算圖執(zhí)行引擎”TensorFlow的核心思想其實(shí)可以用一句話概括先把計(jì)算過(guò)程描述成一張圖然后再把數(shù)據(jù)喂進(jìn)去執(zhí)行。這個(gè)“圖”就是所謂的計(jì)算圖Computational Graph。你可以把計(jì)算圖想象成一張工廠的流水線圖紙。圖紙上畫好了每個(gè)工位做什么、物料怎么流轉(zhuǎn)但圖紙本身不生產(chǎn)任何東西。只有當(dāng)你按下啟動(dòng)按鈕、把原材料送進(jìn)去流水線才開始運(yùn)轉(zhuǎn)。TensorFlow里的“圖紙”就是計(jì)算圖“原材料”就是張量Tensor“啟動(dòng)按鈕”就是會(huì)話或即時(shí)執(zhí)行模式。這種設(shè)計(jì)帶來(lái)的好處是計(jì)算圖可以被優(yōu)化、被分布式部署、被跨平臺(tái)執(zhí)行。比如你在本地定義好一張圖可以把它放到服務(wù)器集群上跑也可以轉(zhuǎn)成移動(dòng)端能用的格式。這是TensorFlow早期最大的賣點(diǎn)也是它能在工業(yè)界站穩(wěn)腳跟的根本原因。1.2 張量一切數(shù)據(jù)的基本單位TensorFlow里所有的數(shù)據(jù)都以**張量Tensor**的形式存在。張量這個(gè)詞聽起來(lái)很唬人但你可以把它簡(jiǎn)單理解為“多維數(shù)組”零階張量就是一個(gè)標(biāo)量比如5一階張量就是一個(gè)向量比如[1, 2, 3]二階張量就是一個(gè)矩陣比如[[1,2],[3,4]]更高階的就是三維、四維數(shù)組比如一張彩色圖片可以表示為[高度, 寬度, 3]的三階張量在TensorFlow中張量有**形狀shape和數(shù)據(jù)類型dtype**兩個(gè)關(guān)鍵屬性。形狀決定了數(shù)據(jù)的維度結(jié)構(gòu)數(shù)據(jù)類型決定了每個(gè)元素占多少內(nèi)存、能做什么運(yùn)算。這兩個(gè)屬性在調(diào)試時(shí)極其重要后面我會(huì)專門講怎么排查形狀不匹配的問(wèn)題。1.3 為什么它叫“TensorFlow”名字里的“Flow”指的是張量在計(jì)算圖中的流動(dòng)過(guò)程。數(shù)據(jù)從輸入節(jié)點(diǎn)流入經(jīng)過(guò)一系列運(yùn)算節(jié)點(diǎn)最終從輸出節(jié)點(diǎn)流出。整個(gè)過(guò)程中張量像水流一樣沿著圖的邊傳遞這就是“TensorFlow”這個(gè)名字的由來(lái)。理解了這一點(diǎn)你就能明白為什么TensorFlow的代碼總是圍繞“定義圖”和“執(zhí)行圖”這兩個(gè)階段展開。雖然現(xiàn)在TensorFlow 2.x默認(rèn)使用即時(shí)執(zhí)行Eager Execution看起來(lái)跟普通Python代碼沒(méi)什么區(qū)別但底層的計(jì)算圖機(jī)制依然存在只是在需要的時(shí)候比如用tf.function裝飾器才會(huì)被顯式構(gòu)建和優(yōu)化。1.4 適合誰(shuí)學(xué)、能解決什么問(wèn)題TensorFlow的應(yīng)用場(chǎng)景非常廣從圖像識(shí)別、自然語(yǔ)言處理到推薦系統(tǒng)、時(shí)間序列預(yù)測(cè)幾乎覆蓋了深度學(xué)習(xí)的全部領(lǐng)域。它特別適合以下幾類人想進(jìn)入工業(yè)界做AI工程的人TensorFlow在生產(chǎn)部署方面的生態(tài)非常成熟TF Serving、TF Lite、TF.js等工具鏈覆蓋了從服務(wù)器到移動(dòng)端到瀏覽器的全場(chǎng)景。需要做大規(guī)模分布式訓(xùn)練的人TensorFlow的分布式策略API可以讓你用很少的代碼把訓(xùn)練任務(wù)擴(kuò)展到多機(jī)多卡。做研究但需要快速驗(yàn)證想法的人Keras作為TensorFlow的高層API幾行代碼就能搭出一個(gè)可用的模型。當(dāng)然如果你只是想做學(xué)術(shù)研究、快速實(shí)驗(yàn)PyTorch可能更順手。這不是誰(shuí)好誰(shuí)壞的問(wèn)題而是工具定位不同。后面我會(huì)專門用一章來(lái)對(duì)比這兩個(gè)框架的流行趨勢(shì)和選型邏輯。2. 安裝TensorFlow時(shí)最容易踩的五個(gè)坑安裝TensorFlow看起來(lái)只是pip install tensorflow一行命令的事但實(shí)際操作中十個(gè)人里有六七個(gè)會(huì)在這一步卡住。我見過(guò)太多人在環(huán)境配置上耗掉一整天最后連第一行代碼都沒(méi)跑起來(lái)。這一章我把最常見的坑一個(gè)個(gè)拆開講每個(gè)坑都給出完整的排查思路和解決方案。2.1 Python版本與TensorFlow版本的對(duì)應(yīng)關(guān)系這是最基礎(chǔ)但也最容易被忽略的問(wèn)題。TensorFlow對(duì)Python版本有明確的兼容范圍裝錯(cuò)了版本輕則import報(bào)錯(cuò)重則pip直接拒絕安裝。截至2024年主流TensorFlow版本的Python兼容情況如下TensorFlow版本支持的Python版本備注2.16.x3.9 - 3.12默認(rèn)集成Keras 32.15.x3.9 - 3.11穩(wěn)定性好推薦生產(chǎn)使用2.14.x3.9 - 3.11最后一個(gè)支持Keras 2的版本之一2.13.x3.8 - 3.11老項(xiàng)目兼容首選2.12.x3.8 - 3.11部分舊教程基于此版本注意如果你用的是Python 3.12請(qǐng)務(wù)必選擇TensorFlow 2.16及以上版本否則pip會(huì)直接報(bào)“No matching distribution found”。我的建議是新手直接用Python 3.10或3.11這兩個(gè)版本兼容性最好幾乎所有主流的TensorFlow版本都支持第三方庫(kù)的適配也最完善。2.2 pip安裝時(shí)的網(wǎng)絡(luò)超時(shí)問(wèn)題pip install tensorflow下載的包體積不小CPU版本約200MBGPU版本更大如果網(wǎng)絡(luò)不穩(wěn)定很容易在下載中途超時(shí)。典型報(bào)錯(cuò)是ReadTimeoutError: HTTPSConnectionPool(hostpypi.org, port443): Read timed out.解決辦法是換用國(guó)內(nèi)鏡像源并適當(dāng)延長(zhǎng)超時(shí)時(shí)間pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple --timeout 120如果你需要安裝GPU版本把tensorflow換成tensorflow[and-cuda]TensorFlow 2.16的寫法或tensorflow-gpu老版本寫法。不過(guò)要注意從TensorFlow 2.11開始Windows平臺(tái)已經(jīng)不再支持GPU版本了Windows用戶只能用CPU版本或者走WSL2。2.3 GPU版本安裝后檢測(cè)不到顯卡這是GPU用戶最常遇到的問(wèn)題裝完了tensorflow[and-cuda]運(yùn)行tf.config.list_physical_devices(GPU)卻返回空列表。原因通常有三個(gè)第一個(gè)原因是CUDA和cuDNN版本不匹配。TensorFlow每個(gè)版本都對(duì)CUDA和cuDNN有明確的版本要求。比如TensorFlow 2.15需要CUDA 12.2和cuDNN 8.9你裝了CUDA 11.8就認(rèn)不出來(lái)。查版本對(duì)應(yīng)關(guān)系最靠譜的方法是去TensorFlow官網(wǎng)的“Tested build configurations”頁(yè)面看表格不要憑記憶。第二個(gè)原因是環(huán)境變量沒(méi)配好。Windows上需要把CUDA的bin目錄和cuDNN的bin目錄都加到PATH里。Linux上需要設(shè)置LD_LIBRARY_PATH。很多人只加了CUDA忘了加cuDNN結(jié)果就是找不到cudnn64_8.dll之類的文件。第三個(gè)原因是驅(qū)動(dòng)版本太老。NVIDIA顯卡驅(qū)動(dòng)有一個(gè)最低版本要求低于這個(gè)版本即使CUDA裝對(duì)了也用不了。用nvidia-smi命令可以查看當(dāng)前驅(qū)動(dòng)版本和支持的最高CUDA版本。排查的時(shí)候按這個(gè)順序來(lái)先確認(rèn)驅(qū)動(dòng)版本夠不夠再確認(rèn)CUDA和cuDNN版本對(duì)不對(duì)最后確認(rèn)環(huán)境變量有沒(méi)有配全。三步走完99%的GPU檢測(cè)問(wèn)題都能解決。2.4 虛擬環(huán)境里裝完了換終端就找不到這個(gè)坑的本質(zhì)是虛擬環(huán)境沒(méi)有激活。很多人在PyCharm或者VS Code里創(chuàng)建了虛擬環(huán)境在IDE的終端里裝好了TensorFlow一換到系統(tǒng)終端就報(bào)ModuleNotFoundError: No module named tensorflow。解決辦法很簡(jiǎn)單每次打開新終端先激活虛擬環(huán)境。Windows下venv\Scripts\activateLinux或macOS下source venv/bin/activate激活后命令行前面會(huì)出現(xiàn)(venv)字樣這時(shí)候再運(yùn)行Python就能找到TensorFlow了。如果你用的是conda環(huán)境對(duì)應(yīng)命令是conda activate 環(huán)境名。提示可以在IDE的設(shè)置里把默認(rèn)終端配置成自動(dòng)激活虛擬環(huán)境省去每次手動(dòng)激活的麻煩。2.5 安裝成功但import時(shí)報(bào)DLL錯(cuò)誤Windows用戶特別容易遇到這個(gè)ImportError: DLL load failed while importing _pywrap_tensorflow_internal這個(gè)錯(cuò)誤的根源通常是缺少Visual C Redistributable。TensorFlow的底層C擴(kuò)展依賴微軟的運(yùn)行庫(kù)新裝的系統(tǒng)或者精簡(jiǎn)版系統(tǒng)往往沒(méi)帶。去微軟官網(wǎng)下載最新的“Visual C Redistributable for Visual Studio 2015-2022”裝上重啟終端再試基本就能解決。如果裝完還是報(bào)錯(cuò)檢查一下是不是同時(shí)裝了多個(gè)TensorFlow版本導(dǎo)致沖突。用pip list | grep tensorflow看看有沒(méi)有重復(fù)的包有的話先全部卸載再重新裝一個(gè)干凈的。3. 用Keras快速搭出第一個(gè)能跑的模型環(huán)境配好之后下一步就是寫出第一個(gè)能跑通的模型。TensorFlow 2.x把Keras作為官方高層API搭模型的門檻已經(jīng)降得很低了。但“能跑”和“跑得好”之間還有不少細(xì)節(jié)這一章我按實(shí)際項(xiàng)目中的流程從數(shù)據(jù)準(zhǔn)備到模型訓(xùn)練到結(jié)果驗(yàn)證完整走一遍。3.1 數(shù)據(jù)管道的構(gòu)建為什么不用NumPy直接喂新手最常見的做法是把數(shù)據(jù)轉(zhuǎn)成NumPy數(shù)組然后直接傳給model.fit()。小數(shù)據(jù)集上這么做沒(méi)問(wèn)題但數(shù)據(jù)量一上來(lái)就會(huì)遇到內(nèi)存瓶頸。TensorFlow提供了tf.data.DatasetAPI來(lái)構(gòu)建高效的數(shù)據(jù)管道核心優(yōu)勢(shì)有三個(gè)惰性加載數(shù)據(jù)不會(huì)一次性全部讀進(jìn)內(nèi)存而是按需分批讀取并行預(yù)處理可以在CPU上并行做數(shù)據(jù)增強(qiáng)、歸一化等操作同時(shí)GPU在跑訓(xùn)練預(yù)取機(jī)制當(dāng)前批次在訓(xùn)練時(shí)下一批次已經(jīng)在準(zhǔn)備了減少GPU等待時(shí)間一個(gè)典型的數(shù)據(jù)管道構(gòu)建流程是這樣的import tensorflow as tf # 假設(shè)數(shù)據(jù)在磁盤上用image_dataset_from_directory快速構(gòu)建 train_ds tf.keras.utils.image_dataset_from_directory( data/train, image_size(224, 224), batch_size32, label_modecategorical ) # 加上預(yù)取和緩存提升吞吐 train_ds train_ds.cache().prefetch(buffer_sizetf.data.AUTOTUNE)cache()把數(shù)據(jù)緩存在內(nèi)存或本地文件里避免每個(gè)epoch重新讀盤。prefetch()讓數(shù)據(jù)準(zhǔn)備和模型計(jì)算重疊起來(lái)。這兩個(gè)操作加起來(lái)通常能讓訓(xùn)練速度提升30%以上而且代碼只多了一行。3.2 模型結(jié)構(gòu)設(shè)計(jì)從Sequential到Functional APIKeras提供了兩種主要的模型構(gòu)建方式Sequential和Functional API。Sequential適合層與層之間線性堆疊的場(chǎng)景寫法最簡(jiǎn)潔model tf.keras.Sequential([ tf.keras.layers.Rescaling(1./255, input_shape(224, 224, 3)), tf.keras.layers.Conv2D(32, 3, activationrelu), tf.keras.layers.MaxPooling2D(), tf.keras.layers.Conv2D(64, 3, activationrelu), tf.keras.layers.MaxPooling2D(), tf.keras.layers.Flatten(), tf.keras.layers.Dense(128, activationrelu), tf.keras.layers.Dense(10, activationsoftmax) ])但實(shí)際項(xiàng)目中模型往往不是一條直線走到底的。比如你想做多輸入圖片文本、多輸出分類回歸或者想加殘差連接Sequential就力不從心了。這時(shí)候需要用Functional APIinputs tf.keras.Input(shape(224, 224, 3)) x tf.keras.layers.Rescaling(1./255)(inputs) x tf.keras.layers.Conv2D(32, 3, activationrelu)(x) x tf.keras.layers.MaxPooling2D()(x) # ... 更多層 outputs tf.keras.layers.Dense(10, activationsoftmax)(x) model tf.keras.Model(inputsinputs, outputsoutputs)Functional API的本質(zhì)是“把層當(dāng)作函數(shù)來(lái)調(diào)用”輸入張量進(jìn)去輸出張量出來(lái)最后用Model把輸入和輸出串起來(lái)。這種寫法靈活度極高幾乎能表達(dá)任何你能想到的網(wǎng)絡(luò)結(jié)構(gòu)。我的經(jīng)驗(yàn)是原型階段用Sequential快速驗(yàn)證一旦結(jié)構(gòu)復(fù)雜起來(lái)立刻切到Functional API。不要等到Sequential寫不下去了才改那時(shí)候重構(gòu)成本更高。3.3 編譯與訓(xùn)練優(yōu)化器、損失函數(shù)、指標(biāo)怎么選模型結(jié)構(gòu)定義好之后用compile()方法配置訓(xùn)練過(guò)程model.compile( optimizertf.keras.optimizers.Adam(learning_rate1e-3), losscategorical_crossentropy, metrics[accuracy] )這三個(gè)參數(shù)的選擇有講究?jī)?yōu)化器方面Adam是默認(rèn)首選它對(duì)學(xué)習(xí)率不敏感大多數(shù)場(chǎng)景下都能work。如果訓(xùn)練不穩(wěn)定可以試試AdamW帶權(quán)重衰減的Adam或者SGDMomentum。學(xué)習(xí)率從1e-3開始試效果不好再調(diào)。損失函數(shù)取決于任務(wù)類型。多分類用categorical_crossentropy標(biāo)簽是one-hot或sparse_categorical_crossentropy標(biāo)簽是整數(shù)。二分類用binary_crossentropy?;貧w用mse或huber。指標(biāo)是給人看的不影響訓(xùn)練過(guò)程。分類任務(wù)通常看accuracy但類別不平衡時(shí)accuracy會(huì)誤導(dǎo)人這時(shí)候應(yīng)該看AUC或F1Score。訓(xùn)練用fit()方法history model.fit( train_ds, validation_dataval_ds, epochs20, callbacks[ tf.keras.callbacks.EarlyStopping(patience3, restore_best_weightsTrue), tf.keras.callbacks.ModelCheckpoint(best_model.keras, save_best_onlyTrue) ] )EarlyStopping在驗(yàn)證集指標(biāo)不再提升時(shí)自動(dòng)停止訓(xùn)練避免過(guò)擬合。ModelCheckpoint保存驗(yàn)證集上表現(xiàn)最好的模型權(quán)重。這兩個(gè)回調(diào)幾乎是我每個(gè)項(xiàng)目都會(huì)加的標(biāo)配。3.4 訓(xùn)練過(guò)程中的形狀不匹配問(wèn)題排查形狀不匹配是TensorFlow報(bào)錯(cuò)里出現(xiàn)頻率最高的一類。典型報(bào)錯(cuò)長(zhǎng)這樣ValueError: Input 0 of layer dense is incompatible with the layer: expected axis -1 of input shape to have value 128, but received input with shape (None, 64)這個(gè)報(bào)錯(cuò)的意思是Dense層期望輸入的最后一位是128但實(shí)際收到的是64。排查思路是從報(bào)錯(cuò)的那一層往前推看前一層的輸出形狀到底是多少。常見原因有幾個(gè)卷積層到全連接層之間忘了加Flatten()導(dǎo)致傳進(jìn)去的是四維張量而不是二維池化層算錯(cuò)了輸出尺寸比如輸入是7x7用了3x3的池化窗口加步長(zhǎng)2輸出就變成3x3而不是預(yù)期的2x2多輸入模型里把不同形狀的張量拼錯(cuò)了位置排查的時(shí)候可以在模型定義里逐層打印形狀for layer in model.layers: print(layer.name, layer.output_shape)或者在構(gòu)建模型時(shí)用model.summary()看每一層的輸入輸出形狀。養(yǎng)成定義完模型先跑一遍summary()的習(xí)慣能省掉大量調(diào)試時(shí)間。4. TensorFlow與PyTorch的選型邏輯2024年的真實(shí)格局“TensorFlow和PyTorch選哪個(gè)”這個(gè)問(wèn)題從2019年問(wèn)到2024年答案一直在變。我不想給你一個(gè)非此即彼的結(jié)論而是把兩個(gè)框架在2024年的真實(shí)格局拆開講讓你根據(jù)自己的場(chǎng)景做判斷。4.1 學(xué)術(shù)界與工業(yè)界的分化趨勢(shì)先看一組我觀察到的趨勢(shì)基于論文投稿、開源項(xiàng)目、招聘需求三個(gè)維度的綜合判斷維度TensorFlowPyTorch學(xué)術(shù)論文實(shí)現(xiàn)占比逐年下降占比超過(guò)80%工業(yè)部署生態(tài)成熟TF Serving/TFLite追趕中TorchServe/TorchScript移動(dòng)端TFLite非常成熟PyTorch Mobile活躍度一般瀏覽器端TF.js生態(tài)完整支持有限教學(xué)入門Keras上手極快代碼更Pythonic分布式訓(xùn)練tf.distribute成熟DDP簡(jiǎn)潔高效學(xué)術(shù)界的趨勢(shì)很明顯新論文的官方實(shí)現(xiàn)越來(lái)越多用PyTorch。原因不復(fù)雜——PyTorch的動(dòng)態(tài)圖機(jī)制寫起來(lái)更直觀調(diào)試更方便跟Python原生控制流結(jié)合得更好。研究者不需要考慮部署問(wèn)題他們只需要快速驗(yàn)證想法。工業(yè)界的格局則不同。TensorFlow在部署工具鏈上的積累非常深尤其是移動(dòng)端和邊緣設(shè)備。TFLite可以把模型壓縮到幾MB在手機(jī)上跑實(shí)時(shí)推理這套流程已經(jīng)非常成熟。很多公司的線上服務(wù)是用TF Serving搭的遷移成本很高。4.2 動(dòng)態(tài)圖與靜態(tài)圖的本質(zhì)差異兩個(gè)框架最根本的區(qū)別在于計(jì)算圖的構(gòu)建方式。PyTorch是動(dòng)態(tài)圖每次前向傳播時(shí)實(shí)時(shí)構(gòu)建計(jì)算圖代碼怎么寫就怎么執(zhí)行。這意味著你可以用普通的Pythonif、for、print來(lái)調(diào)試跟寫普通Python程序沒(méi)區(qū)別。TensorFlow 2.x默認(rèn)也是動(dòng)態(tài)圖Eager Execution但在需要用tf.function裝飾器時(shí)會(huì)把Python函數(shù)編譯成靜態(tài)圖。靜態(tài)圖的好處是執(zhí)行效率高、可以跨平臺(tái)部署代價(jià)是調(diào)試?yán)щy——圖里面的print不會(huì)按預(yù)期輸出if語(yǔ)句的行為也跟普通Python不同。我的實(shí)際體驗(yàn)是日常開發(fā)和調(diào)試用動(dòng)態(tài)圖最終部署前用tf.function把關(guān)鍵函數(shù)編譯成圖。這樣既保留了開發(fā)效率又拿到了部署時(shí)的性能優(yōu)勢(shì)。tf.function def train_step(x, y): with tf.GradientTape() as tape: predictions model(x, trainingTrue) loss loss_fn(y, predictions) gradients tape.gradient(loss, model.trainable_variables) optimizer.apply_gradients(zip(gradients, model.trainable_variables)) return loss這個(gè)train_step函數(shù)第一次調(diào)用時(shí)會(huì)被追蹤trace成圖后續(xù)調(diào)用直接執(zhí)行圖速度比純Eager模式快不少。4.3 什么場(chǎng)景下TensorFlow仍然是更優(yōu)解雖然PyTorch在學(xué)術(shù)界的聲量更大但以下幾種場(chǎng)景我仍然會(huì)優(yōu)先選TensorFlow第一需要部署到移動(dòng)端或嵌入式設(shè)備。TFLite的工具鏈成熟度目前還是領(lǐng)先的模型量化、剪枝、轉(zhuǎn)換的流程都有官方支持踩坑成本低。第二需要瀏覽器端推理。TF.js可以直接在瀏覽器里跑模型不需要后端服務(wù)。這個(gè)能力在演示、教育、隱私敏感場(chǎng)景下很有價(jià)值。第三團(tuán)隊(duì)已經(jīng)有TensorFlow技術(shù)積累。遷移框架的成本很高如果現(xiàn)有系統(tǒng)跑得好好的沒(méi)必要為了追新而重構(gòu)。第四需要用到TPU。TensorFlow對(duì)TPU的支持是原生的PyTorch雖然也支持但生態(tài)相對(duì)薄弱。4.4 我的實(shí)際選型建議如果你問(wèn)我個(gè)人怎么選我的答案是兩個(gè)都學(xué)但先精通一個(gè)。先精通哪個(gè)取決于你的目標(biāo)。想進(jìn)大廠做AI工程、做部署先把TensorFlow的部署鏈路走通。想做研究、發(fā)論文、快速實(shí)驗(yàn)先把PyTorch用熟。但不管先學(xué)哪個(gè)另一個(gè)的基本用法都要會(huì)——實(shí)際工作中經(jīng)常需要讀別人的代碼、復(fù)現(xiàn)別人的模型兩個(gè)框架都懂才能游刃有余。從學(xué)習(xí)路徑上看我的建議是先學(xué)TensorFlow的Keras部分建立深度學(xué)習(xí)整體認(rèn)知再學(xué)PyTorch理解底層機(jī)制最后回到TensorFlow的tf.function和分布式策略深入工程化能力。這個(gè)路徑走下來(lái)兩個(gè)框架的核心能力都能掌握。5. 訓(xùn)練效率優(yōu)化從能跑到跑得快的實(shí)戰(zhàn)技巧模型能跑通只是第一步實(shí)際項(xiàng)目中更常見的問(wèn)題是“跑得太慢”。一個(gè)epoch要幾個(gè)小時(shí)調(diào)一次參等一天這種效率根本沒(méi)法迭代。這一章我分享幾個(gè)在實(shí)際項(xiàng)目中驗(yàn)證過(guò)的優(yōu)化手段每個(gè)都附帶具體的代碼和效果對(duì)比。5.1 輸入管道的性能瓶頸定位優(yōu)化之前先要找到瓶頸在哪。TensorFlow提供了tf.data的性能分析工具options tf.data.Options() options.autotune.enabled True dataset dataset.with_options(options)更直接的方法是用TensorBoard的Profilertf.profiler.experimental.start(logdir) model.fit(train_ds, epochs1) tf.profiler.experimental.stop()然后在TensorBoard里看“Profile”標(biāo)簽頁(yè)它會(huì)告訴你時(shí)間花在數(shù)據(jù)讀取上還是模型計(jì)算上。如果數(shù)據(jù)讀取占了大部分時(shí)間說(shuō)明輸入管道是瓶頸需要優(yōu)化tf.data如果模型計(jì)算占大頭說(shuō)明該優(yōu)化模型結(jié)構(gòu)或換更強(qiáng)的GPU。5.2 混合精度訓(xùn)練幾乎免費(fèi)的加速混合精度訓(xùn)練是性價(jià)比最高的優(yōu)化手段之一。它的原理是前向傳播和反向傳播用16位浮點(diǎn)數(shù)float16計(jì)算權(quán)重更新用32位浮點(diǎn)數(shù)float32保持精度。這樣既能利用現(xiàn)代GPU的Tensor Core加速又不會(huì)損失模型精度。開啟方式非常簡(jiǎn)單policy tf.keras.mixed_precision.Policy(mixed_float16) tf.keras.mixed_precision.set_global_policy(policy)然后在模型編譯時(shí)把優(yōu)化器包一層optimizer tf.keras.optimizers.Adam(learning_rate1e-3) optimizer tf.keras.mixed_precision.LossScaleOptimizer(optimizer)實(shí)測(cè)下來(lái)在支持Tensor Core的GPU上比如V100、A100、RTX 30/40系列訓(xùn)練速度能提升1.5到2倍而模型精度幾乎不受影響。這個(gè)投入產(chǎn)出比非常高我建議所有GPU訓(xùn)練場(chǎng)景都默認(rèn)開啟。5.3 數(shù)據(jù)預(yù)取與并行策略的組合拳tf.data的優(yōu)化手段可以組合使用效果是疊加的train_ds ( tf.data.Dataset.from_tensor_slices((x_train, y_train)) .shuffle(buffer_size10000) .batch(64) .map(preprocess_fn, num_parallel_callstf.data.AUTOTUNE) .cache() .prefetch(buffer_sizetf.data.AUTOTUNE) )這里每個(gè)操作都有明確目的shuffle打亂數(shù)據(jù)順序防止模型學(xué)到順序相關(guān)的偏見batch把數(shù)據(jù)分批批次大小影響內(nèi)存占用和梯度穩(wěn)定性map做預(yù)處理num_parallel_calls讓多個(gè)CPU核心并行處理cache把處理好的數(shù)據(jù)緩存起來(lái)第二個(gè)epoch開始直接讀緩存prefetch讓數(shù)據(jù)準(zhǔn)備和模型計(jì)算重疊注意cache()放在map()之后還是之前效果差別很大。放在map()之后緩存的是預(yù)處理后的數(shù)據(jù)省去了每個(gè)epoch重復(fù)預(yù)處理的時(shí)間放在map()之前緩存的是原始數(shù)據(jù)預(yù)處理還是要重做。數(shù)據(jù)量不大時(shí)放map()之后更好。5.4 分布式訓(xùn)練策略的選擇當(dāng)單卡放不下模型或者訓(xùn)練太慢時(shí)就需要上分布式。TensorFlow提供了tf.distribute.StrategyAPI最常用的兩種策略是MirroredStrategy單機(jī)多卡每個(gè)GPU持有一份完整的模型副本梯度通過(guò)AllReduce同步。適合模型能單卡放下、但想加速訓(xùn)練的場(chǎng)景。strategy tf.distribute.MirroredStrategy() with strategy.scope(): model build_model() model.compile(optimizeradam, losscategorical_crossentropy)MultiWorkerMirroredStrategy多機(jī)多卡原理類似但跨機(jī)器通信。配置稍復(fù)雜需要設(shè)置TF_CONFIG環(huán)境變量指定各節(jié)點(diǎn)角色。選擇策略的原則很簡(jiǎn)單能單卡跑就單卡跑單卡太慢就MirroredStrategy單機(jī)裝不下就MultiWorker。不要一上來(lái)就搞多機(jī)通信開銷和調(diào)試成本會(huì)吃掉大部分收益。6. 模型保存、加載與生產(chǎn)部署的完整鏈路訓(xùn)練出一個(gè)好模型只是完成了工作的一半另一半是把它保存下來(lái)、加載到生產(chǎn)環(huán)境、穩(wěn)定地提供服務(wù)。這一章我把從訓(xùn)練完成到線上服務(wù)的完整鏈路走一遍重點(diǎn)講那些文檔里不會(huì)寫的實(shí)操細(xì)節(jié)。6.1 SavedModel格式與Keras格式的選擇TensorFlow支持多種模型保存格式最常用的兩種是Keras格式.keras或.h5保存模型結(jié)構(gòu)、權(quán)重、優(yōu)化器狀態(tài)、訓(xùn)練配置。適合在Python環(huán)境里繼續(xù)訓(xùn)練或推理。model.save(my_model.keras) loaded_model tf.keras.models.load_model(my_model.keras)SavedModel格式TensorFlow的標(biāo)準(zhǔn)部署格式包含計(jì)算圖和權(quán)重可以被TF Serving、TF Lite、TF.js等工具直接加載。適合跨平臺(tái)部署。model.save(saved_model_dir, save_formattf)選擇原則還在開發(fā)階段用Keras格式準(zhǔn)備部署時(shí)轉(zhuǎn)成SavedModel。SavedModel不依賴Python環(huán)境可以用C、Java、Go等語(yǔ)言加載這是它最大的優(yōu)勢(shì)。6.2 自定義層的保存陷阱如果你的模型里用了自定義層保存和加載時(shí)會(huì)遇到一個(gè)經(jīng)典問(wèn)題加載時(shí)找不到自定義層的定義。報(bào)錯(cuò)通常是ValueError: Unknown layer: MyCustomLayer解決辦法有兩個(gè)。一是在加載時(shí)通過(guò)custom_objects參數(shù)傳入loaded_model tf.keras.models.load_model( my_model.keras, custom_objects{MyCustomLayer: MyCustomLayer} )二是給自定義層加上tf.keras.utils.register_keras_serializable()裝飾器這樣Keras會(huì)自動(dòng)記錄它的位置加載時(shí)不需要手動(dòng)指定。tf.keras.utils.register_keras_serializable() class MyCustomLayer(tf.keras.layers.Layer): # ...我強(qiáng)烈推薦第二種方式一次配置后續(xù)所有保存加載都不需要額外處理。6.3 用TF Serving搭建推理服務(wù)TF Serving是TensorFlow官方的模型服務(wù)工具專門為生產(chǎn)環(huán)境設(shè)計(jì)。它的核心優(yōu)勢(shì)是支持模型熱更新、支持gRPC和REST兩種接口、支持批量推理、性能經(jīng)過(guò)大規(guī)模驗(yàn)證?;臼褂昧鞒淌前裇avedModel放到一個(gè)目錄下目錄結(jié)構(gòu)要符合TF Serving的要求models/ my_model/ 1/ saved_model.pb variables/其中1是版本號(hào)TF Serving會(huì)自動(dòng)加載最新版本也支持同時(shí)加載多個(gè)版本做A/B測(cè)試。用Docker啟動(dòng)TF Servingdocker run -p 8501:8501 \ --mount typebind,source/path/to/models/my_model,target/models/my_model \ -e MODEL_NAMEmy_model \ tensorflow/serving發(fā)REST請(qǐng)求做推理curl -X POST http://localhost:8501/v1/models/my_model:predict \ -d {instances: [[1.0, 2.0, 3.0, 4.0]]}TF Serving會(huì)自動(dòng)處理批處理、并發(fā)、模型版本管理這些事情你只需要關(guān)注業(yè)務(wù)邏輯。6.4 模型量化與TFLite轉(zhuǎn)換如果要把模型部署到移動(dòng)端或嵌入式設(shè)備TFLite是首選方案。轉(zhuǎn)換過(guò)程本身不復(fù)雜converter tf.lite.TFLiteConverter.from_saved_model(saved_model_dir) tflite_model converter.convert() with open(model.tflite, wb) as f: f.write(tflite_model)但直接轉(zhuǎn)換出來(lái)的模型可能還是太大這時(shí)候需要做量化。量化是把float32的權(quán)重轉(zhuǎn)成int8模型體積能縮小到原來(lái)的1/4推理速度也能提升2到4倍。代價(jià)是精度會(huì)有輕微下降通常在1%以內(nèi)。converter.optimizations [tf.lite.Optimize.DEFAULT] # 如果需要完全整數(shù)量化還需要提供代表性數(shù)據(jù)集 converter.representative_dataset representative_data_gen converter.target_spec.supported_ops [tf.lite.OpsSet.TFLITE_BUILTINS_INT8] converter.inference_input_type tf.int8 converter.inference_output_type tf.int8提示量化后的模型一定要在真實(shí)數(shù)據(jù)上驗(yàn)證精度。我遇到過(guò)量化后精度掉5%的情況原因是某些層的權(quán)重分布太集中int8表示不了。這種時(shí)候可以只量化部分層或者換用float16量化。7. 那些文檔里不會(huì)寫的調(diào)試經(jīng)驗(yàn)最后一章我想聊幾個(gè)在實(shí)際項(xiàng)目中反復(fù)遇到的問(wèn)題以及我總結(jié)出來(lái)的排查思路。這些東西在官方文檔里找不到但每一個(gè)都能幫你省下幾個(gè)小時(shí)甚至幾天的時(shí)間。7.1 Loss變成NaN的排查順序訓(xùn)練過(guò)程中l(wèi)oss突然變成NaN這是最讓人頭疼的問(wèn)題之一。我的排查順序是這樣的第一步檢查學(xué)習(xí)率是不是太大。學(xué)習(xí)率過(guò)大導(dǎo)致梯度爆炸是NaN最常見的原因。把學(xué)習(xí)率降一個(gè)數(shù)量級(jí)試試比如從1e-3降到1e-4。第二步檢查數(shù)據(jù)里有沒(méi)有異常值。輸入數(shù)據(jù)里如果有inf或nan經(jīng)過(guò)幾層計(jì)算就會(huì)污染整個(gè)網(wǎng)絡(luò)。用np.isfinite(x).all()檢查一下輸入數(shù)據(jù)。第三步檢查損失函數(shù)里有沒(méi)有l(wèi)og(0)。交叉熵?fù)p失在預(yù)測(cè)值為0時(shí)會(huì)算出inf。解決辦法是給預(yù)測(cè)值加一個(gè)極小值或者用tf.keras.losses里已經(jīng)處理過(guò)這個(gè)問(wèn)題的內(nèi)置損失函數(shù)。第四步檢查有沒(méi)有除零操作。自定義層里如果有除法分母可能為0。加一個(gè)tf.maximum(denominator, 1e-7)保護(hù)一下。第五步開啟梯度裁剪。在優(yōu)化器里加clipnorm或clipvalue參數(shù)把梯度限制在一個(gè)合理范圍內(nèi)optimizer tf.keras.optimizers.Adam(learning_rate1e-3, clipnorm1.0)按這個(gè)順序排查大部分NaN問(wèn)題都能定位到原因。7.2 GPU內(nèi)存不夠用的四種解法ResourceExhaustedError: OOM when allocating tensor這個(gè)報(bào)錯(cuò)做深度學(xué)習(xí)的沒(méi)人沒(méi)見過(guò)。解決辦法按優(yōu)先級(jí)排列方案一減小batch size。這是最直接有效的辦法。batch size減半內(nèi)存占用基本也減半。缺點(diǎn)是訓(xùn)練可能變慢、梯度噪聲變大。方案二開啟內(nèi)存增長(zhǎng)。默認(rèn)情況下TensorFlow會(huì)一次性占滿所有GPU內(nèi)存開啟內(nèi)存增長(zhǎng)后按需分配gpus tf.config.list_physical_devices(GPU) for gpu in gpus: tf.config.experimental.set_memory_growth(gpu, True)方案三用梯度累積模擬大batch。如果小batch導(dǎo)致訓(xùn)練不穩(wěn)定可以累積幾個(gè)小batch的梯度再更新一次效果等價(jià)于大batchtf.function def train_step(accum_steps, dataset_iter): total_loss 0.0 for _ in range(accum_steps): x, y next(dataset_iter) with tf.GradientTape() as tape: loss loss_fn(y, model(x, trainingTrue)) / accum_steps grads tape.gradient(loss, model.trainable_variables) optimizer.apply_gradients(zip(grads, model.trainable_variables)) total_loss loss return total_loss方案四混合精度訓(xùn)練。float16占用的內(nèi)存是float32的一半開啟混合精度后顯存占用能明顯下降同時(shí)還能加速。7.3 訓(xùn)練集表現(xiàn)好但驗(yàn)證集差的系統(tǒng)性排查過(guò)擬合是深度學(xué)習(xí)里最普遍的問(wèn)題但“過(guò)擬合”只是一個(gè)籠統(tǒng)的描述具體原因可能有很多種。我通常按這個(gè)清單逐項(xiàng)排查現(xiàn)象可能原因?qū)Σ哂?xùn)練loss持續(xù)下降驗(yàn)證loss先降后升經(jīng)典過(guò)擬合加Dropout、L2正則、EarlyStopping訓(xùn)練loss和驗(yàn)證loss都高欠擬合增加模型容量、延長(zhǎng)訓(xùn)練、調(diào)學(xué)習(xí)率訓(xùn)練loss低驗(yàn)證loss一直高數(shù)據(jù)分布不一致檢查訓(xùn)練集和驗(yàn)證集是否同分布訓(xùn)練準(zhǔn)確率高驗(yàn)證準(zhǔn)確率隨機(jī)數(shù)據(jù)泄露或標(biāo)簽錯(cuò)誤檢查數(shù)據(jù)預(yù)處理流程驗(yàn)證指標(biāo)波動(dòng)大驗(yàn)證集太小增大驗(yàn)證集或做交叉驗(yàn)證這個(gè)表格我放在工位上遇到問(wèn)題就對(duì)著看一遍基本能覆蓋80%的情況。7.4 模型推理速度慢的優(yōu)化清單訓(xùn)練完了要上線發(fā)現(xiàn)推理速度達(dá)不到要求。這時(shí)候可以從這幾個(gè)方向優(yōu)化模型剪枝去掉不重要的權(quán)重減小模型體積知識(shí)蒸餾用大模型教小模型小模型推理更快算子融合把多個(gè)連續(xù)操作合并成一個(gè)減少內(nèi)存訪問(wèn)批處理一次處理多個(gè)請(qǐng)求提高GPU利用率TFLite轉(zhuǎn)換用移動(dòng)端優(yōu)化過(guò)的運(yùn)行時(shí)TensorRTNVIDIA的推理加速庫(kù)對(duì)TensorFlow模型有專門優(yōu)化這些手段可以組合使用具體選哪些取決于你的延遲要求和精度容忍度。我的經(jīng)驗(yàn)是先做量化再做剪枝最后考慮知識(shí)蒸餾。量化的投入產(chǎn)出比最高剪枝次之知識(shí)蒸餾需要重新訓(xùn)練所以成本最高。7.5 一個(gè)真實(shí)的調(diào)試案例最后分享一個(gè)我最近遇到的真實(shí)問(wèn)題。有個(gè)圖像分類模型訓(xùn)練的時(shí)候一切正常準(zhǔn)確率能到95%。但部署到線上之后同樣的圖片推理結(jié)果完全不對(duì)。排查過(guò)程是這樣的先確認(rèn)線上和訓(xùn)練的預(yù)處理是否一致發(fā)現(xiàn)線上用的是PIL讀圖訓(xùn)練用的是tf.io.read_file加tf.image.decode_jpeg。兩種方式的顏色通道順序不同——PIL默認(rèn)是RGBTensorFlow的decode_jpeg默認(rèn)也是RGB但PIL在某些模式下會(huì)返回BGR。把線上預(yù)處理改成跟訓(xùn)練完全一致后問(wèn)題解決。這個(gè)案例的教訓(xùn)是訓(xùn)練和推理的預(yù)處理必須嚴(yán)格一致包括顏色空間、歸一化參數(shù)、resize方法。任何一點(diǎn)差異都可能導(dǎo)致推理結(jié)果完全錯(cuò)誤。我現(xiàn)在養(yǎng)成的習(xí)慣是把預(yù)處理邏輯封裝成一個(gè)獨(dú)立的函數(shù)訓(xùn)練和推理都調(diào)用同一個(gè)函數(shù)從根源上杜絕不一致的可能。這個(gè)習(xí)慣看起來(lái)簡(jiǎn)單但幫我省掉了至少三次類似的排查。如果你也在做模型部署強(qiáng)烈建議從下一個(gè)項(xiàng)目開始就這么做。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
伊人国产成人av网站| 午夜性刺激视频免费观看| 麻豆精品三区视频| 久久久久久九九九九-美女久久久久久久-成人AV| 色香网| 人人操人人操人人操人人操人人操人人人11.CM| 韩日男人的天堂| 亚洲丝袜综合| 91精品人妻一区二区三区蜜桃臀| 欧美中文字幕日韩在线| 1204av韩国| 日韩中文字幕精品一区在线| 91AV天美在线视频| 六月婷婷综合| 狠狠操狠狠燥| 操人妻丝袜高跟| 欧美96精品在线| 亚洲色图超碰在线| 97人妻免费中文字幕| 天美传媒av一区二区| 婷婷日韩一区二区三区中文字幕在线| 欧美女同在线| 九九热在线精品视频| 一起草高清无码| 蜜桃臀久久| 老熟女91av| 国产黄色小视频网站| 欧美亚州色的图| 黄色小说亚洲| 色五月婷婷麻豆在| 91高跟美女在线播放| 我要看免费韩日黄片| 中文字幕一二区二三区人妻专区| 99热线麻豆 | 婷婷精品视频| 爱我干综合| 国产成人无码a| 美女毛片999| 婷婷丁香五月天亚洲天堂网| 久久精品28| 美女淫穴| 亚洲男人天堂2019| 盗摄女人妻在线| 精品一区二区国产日韩| 欧美丰满少妇交换91欧美精品| 岛国激情视频在线观看| 亚洲国产婷婷在线播放| 天天干嫩逼网| 农村少妇久久久久久久| 九九国产| 久久精品国产97欧美精品亚洲| 丰满少妇一区二区三区四区观看| 国产亚洲综合欧美一区| 色99在线| 欧美国产伊人久久久久| 26uuu性| 亚洲性爱成人| 国产欧美岛国精品一区| 天天躁日日躁XXXXYY| 99这里只有精品国产| 狠狠久久手机视频精品| 9色在线| 肥臀熟女福利视频一区二区| 日日骚精品视频| 无码一区二区三区四区五区六区七区八区九区十区视频 | yaouchengrenav| 成人性爱免费播放| 亚洲国产美女久久久久 | 夜间福利片1000无码| 亚洲导航深夜福利| 色欲三区| www久| 成年女人一区| 日本加靬比网站发布页| 免费的av网| 亚洲五区熟女| 亚洲不卡一| 超碰伊人在线| 欧美九一精品久久久熟妇| 97久久久网站| 深夜国产一区二区三区在线看| 大地资源在线观看中文第二页| 亚洲国产成人福利在线观看| 97舔舔| 97日视频| 免费福利视频中文字幕| 欧美在线视频99| 人人喜人人妻| 亚洲日韩久久精品一区| 国产一| 久久肏大逼| 一区二区三区免费岛国片| 亚洲国产成人精品无码专区| 欧美性区| 狼人狠干| 久久五月视频| 综合大香蕉美。| 干B网| 99re免费视频精品全部| 日韩av无码网站| 欧美v亚洲v日韩v最新在线二区| 大香网站| 国产免费久久精品99re韩国| 国产热av| 日B操| 国产精品久久99日日| 91久热| 99色婷婷中文字幕乱色| 国产欧美在线观看免费观看| 亚洲日本韩国极品一区二区| 天天综合官网| 激情婷婷丁香| 欧色性第一页| 久久亚州精品成人Av无| 在线观看A啊啊啊| 69久久久久久久久久久久久| 欧美日韩超碰在线| 蜜臀亚洲综合一二三四区| aaa亚无码专区| 欧插网站| 思思久热在线精品66| 久久人妻精品| 极品色综合| 久久亚洲欧美中文字幕国语| 亚洲男人天堂2016| 欧美色www亚洲国产阿娇要播| 五月综合色| 97国产伦理| 久久美女国产| 久久人体一区二区| 玖玖在线视频| 国产欧美在线观看免费观看| 一牛一区二区三区久久| 午夜男人av| 97精品国产精品免费观看| 岛国免费视频在线| 伊人伊人LD| 色黄污美女啪啪啪免费网站| 久久精品中文| 天天做日日爱夜夜爽| 欧美亚洲宗合色性图| 日韩黄色片子| 麻豆区久久久久亚| 亚州综合色| 岛国色情视频在线观看| 久久久精品一区二区| 最新中文字幕精品在线| 俞拍久久国应视频| 91红杏| 日韩精品一区二区日韩| 96国产精品| 97舔舔| 国产吹潮女在线观看| 亚洲熟女中文字幕在线| 国产97亚洲| 欧美日韩夜夜| 五月天黄色激情视频| 97资源站国产精品| 色婷婷综合网站| 97干在线视频| 亚洲日韩乱码中文无码蜜桃臀网站| 99re公开精品免费视频 | 狠狠婷婷亚洲中文综合久久| 亚洲男人天堂2016| 黑人精品一区二区在线播放| 91岛国动作片| 久热大香蕉| 日韩无码久久熟女一级片| 青娱乐国产精品| 欧美性夜| 天天干天天中出av| 无码自拍SM| 精品人妻一区二区三区在| 人人摸人人摸人人干| 亚洲资源吧| 欧亚乱色熟一区二区三四区| 亚洲精品三| 亚洲国产精品无码AV久久久| 亚洲无码日韩电影| 国产精品电影推荐| AV色天香在线| 五月香婷婷| 国产人妖视频一区在线观看| 久久精品久久久久久久久| 97资源站久久| 青青草色情网站视频| 99综合| 人人妻碰人人免费| 91美女在线观看| 99热官网| 国产强上视频在线观看| 欧美日韩啪啪电影| 91狠狠综| 伊人网高清| 中文精品少妇天堂| 蜜桃精品一区二区三区久在线| 欧美极品少妇交| 中文久久爆乳| 亚洲欧美经典一区二区| 亚洲一本色道中文无码aV天美| 一区二区亚州激情久婷婷欧美| A V少妇特黄三级| 全免费a敌肛交毛片免费| 无码高清少妇久久| 黄色网址在线免费观看| 日韩国产欧美伦理在线| 中文字幕一区二区三区字幕| 天天视频黄| 农村女一级毛卡片| 欧美精品成人一区二区在线观看| 92久久| 这里只有精品97| 毛片99-全集电影手机免费观看完整-B029AV| 97超级欧美| 亚熟在线| 999综合色| 色偷综合| 91久久精品美女高潮喷水| 美日韩一二三区| 亚洲天堂第一页| 日韩精品熟妇| 美美91成人国产精品欧美精品久久久久久久| 久久综合18p| 综合干干干av久久久综合网| 神马午夜久久久| 成人热久久精品| 天美精品一区二区三区四区在线观看| 国产一区二区三区,在线观看观看| 欧美成人一区二区| 加勒比综合a∨| 综合熟妇一区二区三区| 97视频播放| 九九九热精品| 超碰97.com| 97亚洲中文| 欧美激情激情xxxx欧美专区| 欧美精品成人在线播放| 久热九九| 91性生活久久久| 久久久精品一区二区| 大屁股熟女一区二区三区| 亚洲激情久久久伊人综合| 天天影视亚洲| 美女写真| 亚洲精品一区二区三区新线路| 国精综合一二三区影视| www.人人摸在线视频| 精品久久久久久中文字幕视频免费| 亚川综合视频| 五月丁香影视| 曰韩香蕉97| 蜜桃久久一区二区| 亚洲精品美女久久久久久久久| 无码又爽又硬又激情免费视频| 日韩久久超碰色| 在线观看啊啊啊啊啊| 日韩性爱啪啪视频| 免费一级视频特黄色大片| 青青草吊丝| 欧美啪啪天堂| 成人免费毛片| 久久久精品日本一道| 91激情综合| 精品黄色电影| 熟女六十路| 第四色亚洲色图| 女优大全 - 91n| 五月婷婷六月丁香网址| 国产农村妇女精品1区二区| 日韩无码服务区| 国产 亚洲 一二三四| 九九热视频在线观看| 任你干在线视频| 美女被啪到深处抽搐视频| a在线观看| 都市激情人妻一区二区青青操视频 | 久久9亚洲| 亚洲国产精品久久久久婷婷老年| 搞中出久久| 日产国产精品中文久久婷婷| 欧美色图20P| 黄片免费久久久久久久| 男生女生啊啊啊啊| 三级日韩一区二区三区| 久久天天摸| 午夜视频久久久| 在线看的av| 清纯唯美激情四射| 精品视频一二三中文| 国产99久久99热这里只有精品15| 狠狠搞 亚洲91| 青娱乐休闲视频在线观看| 日本久久精品| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 91天堂色男人的天堂| 天堂资源欧美| 久久超碰国产一区二区三区| 一道本久久棕合爱| 熟妇人妻精品一区二区| 乱人伦 国语对白:视频直接看| 欧美午夜熟妇黑人精品91| 女人喷水视频在线观看| 亚洲在线观看| 九月丁香| 亚洲毛片基地专区| 国产天天骚| 免费中文综合精品| 无码男人天堂| 欧美成人一级免费电影| 玖玖超碰熟| 久久久免费一级黄片| 青青草导航在线视频| 精品国产片亚洲一区| 91 综合网| 91狠| 自拍偷拍 日韩欧美| 啊啊啊啊啊操我视频| 欧美性爱日韩高清| 国模91| 五月婷婷激情| 亚洲āv网址在线观看| 天天天乱色综合全| 丝袜剧情| 91 丝袜在线播放| 91久久久视| 秋霞影音一区二区三区| 91啪啪| 日本97久久久精品| 殴美大黄片| 国语精品av| 精品一区二区三区最新| 欧美,日韩综合久久| 欧美,日韩,中文,另类| 久久久久久久久久久久久久久性生活视频| 日本国产欧美一区三区二区| 国产视频第2页| 欧美一级色| 91精品国产91久久青草 | 国产在线观看91精品一区| 青青欧美| 91爱综合| 中国一区二区亚洲人妻| 夜色91| 日韩美女,国产传媒,视频一区| 午夜国产成人福利视频| 国产操逼视频在线观看| 欧美在线天堂| 免看60秒涩涩视频| 久久伊人青青草| 国产女生在线| 久艾草在线精品视频在线观看| 中文欧丝袜诱惑| www.五月天| www亚洲免费| 国产强奸乱伦欧美| 欧美日韩亚洲天堂| 天堂综合| WWW.加勒比人妻一区不卡.com| 婷婷色婷婷| 国产高清无码一区三区二区| 国产精品久久久吖| 99rre在线精品99re8| 欧美 日韩 另类 亚洲| 午夜大香蕉| 亚洲一曲日韩精品| 国产成人99久久亚洲综合| 清纯唯美综合亚洲| com 首页 18岁 禁区 女优 免费 精选 同城| 欧美色三级片91| 婷婷中文字幕| 欧美色婷婷| 中文字幕狠狠玩| 国产欧美成人第一页在线观看| 日本精品999| 4虎在线观看| 人妻蜜桃臀| 久久久久国产精品人妻aⅴ天堂| 欧美天堂日韩三级国产传媒| 小少妇| 婷婷五月色| 美女黄频a美女大全免费皮| 6080YYY午夜理论片在线观看| 精品人妻一区二区三区在| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 无码人妻精品酒店| 日韩欧美加勒比| 熟妇人妻精品一区二区| 欧美熟妇色| 欧美熟妇色| 成人无码欧美一级A片狼牙直播| 伦理日韩国产久久| 欧美激情亚洲情色| 热热色国产一二区AV| 天天综合站| 久久久天美| 欧美男人的天堂| 999国产精品999久久久久久| 亚洲第一页色网| 久久精品国产精品| 欧美成人国产精品| 嗯嗯不要 视频| 麻豆亚洲AV成人无码久久精品| 国产蜜臀精品一区二区尤物| 欧美色青| 中国国产精品一区视频| 牛黄色久午久| 日本 成 人 小说 电影 一区二区| 国产女上位好爽在线| www四虎| 天天综合网入口~91| 欧美在线中M| 亚洲另类色综合网站| 人妻精品一区二区三区| 天天看夜夜看日日干| 精品亚洲国产成人av网站| 日韩国产成人自拍视频| 日本一级一级一级一级| 熟妇人妻一区二区三区| 国产网红精品| 少妇超碰在线| 玖玖超碰熟| 亚州男人天堂| 欧美另类精品xxxx| 久久一二区四| 九九九九一区| 亚洲欧洲日本精品中文a∨| 乱伦av.com| 性爱视频久久| 老司机午夜福利视频一区二区| 国产9l 大屁股| 亚洲av无码国产精品字幕| 国产一级作爱毛片| 亚洲限制级在线| 亚洲 欧美 日韩另类 麻豆| 欧洲久久一二线| 岛国黄色大片网站| 国产白领连续中出在线观看| 肥臀熟女一区二区三区视频| 国产最火爆久久国产网站网站| 日产操逼| 亚洲四虎熟女精品| 97er欧美性| 欧美亚洲天堂| 人人透人人操| 97就爱干| 综合久久久久久久综合网| 国产一区96在线| 熟女露脸激情自拍视频| 9国产超碰| 亚洲激情网一二三四区| 51一区二区三区| 秋霞久久亚洲精品成人| 被男人吃奶很爽的毛片| 99热最新网址| 大色网久久| 99性爱在线观看| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 乱伦一二三| 啪啪啪大香蕉| 青青草原伊人网| 屁屁影院一区二区三区国产| 亚洲Av噜噜一区二区三区妖精| 亚洲色人| 日韩人体偷拍| 国产午夜精品理论片a大结局| 激情综合亚洲| 亚洲欧美黄| 99热综合| 久久久久久久| 97久精品| 午夜福利国产欧美日韩夜夜| 婷婷激情一区二区三区俺也去| 少妇精品久久| 97国产色综合| 色欲天天综合久久久无码网中文| 国产亚洲 中文欧美久久| 久久女人| 91红杏| 三级日本一区二区三区| 上床不卡网站| 黄片com.| 国产又粗又长视频| 久操综合在线| 亚洲欧洲中文日韩女优乱码| 91精品国久久久久久无码| 夜夜操美女| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 成功精品影院| 成年男人的天堂| 韩日色费| 欧美综合传媒| 极品色社| 国产操逼视频在线观看| 国产精品午夜福利视频| 97干在线视频| 国产精品不卡av免费在线观看| 伊人成人情色综合| 亚洲无码久久久久久久| 九九九九九九九九九国产精品 | 私人尤物在线精品不卡| 人妻黑丝袜电影| 在线性黄高清免费视频| 亚洲图片欧美色| 91l欧美在线| 久久久精品国产亚洲AV无码| 亚洲天堂在线怕怕视频| 9997se| 天天添天天干电影| 热久久国产| 骚货操死你| av亚洲天堂资源网站| 99久久久无码国产精品性男| 中文字幕丰满人妻日本| 97国产伦理| 大稥蕉免费视频这里只有精品| 黑人白女精品一区| 久艹日日日| 任你干在线视频| 女人天堂AV五区在线| 成人性爱视频在线看| 蜜臀99久| 亚洲男人天堂视频| 日本97久久久精品| 欧美制服另类丝袜| 97超碰大| www.acm成人黄色毛片| AV色天香在线| 亚洲熟女中文字幕在线| 天天谢天天干| 肉动漫无遮挡h在线观看| 日日嗷| 日韩人妻精品中文字幕| 精品人妻二区三区| 综合久久婷婷| 免费伦费视频在线观看| 玖玖爱在线视频免费观看| 久久亚洲一区女同性恋中文字幕 | 亚洲 欧美 制服 另类 自拍| 91人妻熟女| 国产精品大屁股999| 欧美A√综合网| www.狠狠操| 精品国产久热在线观看| 欧美αv.com| 成人无遮挡毛片免费看| 粉嫩av平台| 91无遮挡| 日韩无码一区二区三区| 97Ai亚洲| 操碰97| 91美女精品| 久肏视频字幕| 日本ZZ高免费A级视频| 伊人午夜福利视频| 97视频新免费| 91网站在线播放| 久久机热| 蜜桃午夜视频一区二区| 日韩中文字幕精品一二三事国产精品| 激情四射五月天| 18禁久极品美女久久哦哟呀!| 亚洲乱码精品一区二区| 福利视频合集| 免费久久一级毛片大黄| 日韩熟女乱伦中出| 美国aaaaa一级黄片| 人干人人人操人人摸| 精品人妻一区二区视频| 日韩AV无码中文一区二区| 美国aaaaa一级黄片| 人妻乱仑一区二区三区| 天天躁日日躁AAAXX| 亚洲五月婷| 亚洲nv男人的天堂网| 亚洲男人天堂2019| 1人人看人人摸人人操| 亚洲国产综合图区中文字幕| 亚洲风情在线观看| 探花精品 一区二区| 亚洲国产美女久久久久| 国产强奸乱伦xd| 国产网站在线播放| 看一级黄色视频| 天天影视网综合少妇| 国产欧美一区二区| 97欧美日韩中文| 男人的天堂三级| 男人精品区| 成人免费视瓶| 久久AV无码网址| 欧美一级三级| 欧美一区二区成人一卡| 国产夫妻性生活视频| 欧美精品97| 永久免费av无码网站国产app| 成年女人黄网站| 色婷婷六月| 91美女在线视频| 9久9久| 欧美v日韩v亚洲v最新在线| 国产性爱在线视频一区二区| 婷婷五月天社区| 啊啊啊啊啊啊好湿好爽视频| 婷婷精品久久av影视| A级在线视频| 亚洲精品一区二区三区在线播放| 大香蕉免费中文| 成人在线永久| 99无码| 黄色欧美性爱视频| 超碰 另类 欧美 | 国产欧美亚洲精品a第2页| 又黄又爽在线观看视频| 日韩黄色小说| www.久久制服糖| 99视频只有精品| 亚州欧美总和| CCYY草草影院地址入口| 亚洲婷婷五月天| 色爽——AV| 18禁止看精品中文字幕| 中文字幕精品一区二区精品| 欧美亚洲综合999| 日韩簧片免费看| 成人 日韩欧美一区| 蜜臀无码一区二区| 91精品亚洲内射孕妇| 亚洲第一页色| 欧美色九九| 亚洲无码久久久久久久| 日本久久综合| 7777奇米影视久久| 蜜桃臀 后入 一区 二区 三区 在线| 精品视频一区二区| 欧美人妻一区| 蜜臀无码一区二区| 在线国产福利网址导航| 国产不卡中文字幕免费avi| 欧美色人| 少妇蜜汁| AAAA级日本片免费视频| 综合网欧美在线| 国产AV中文| 五月婷婷激情| 久久啊啊| 亚殴在线| 亚洲一区日韩精品中文字幕| 欧美黑人猛交春色影视大全| 美女诱惑一区| 97国产精品国| 天天上日日上日韩精品| 久久久9品一区二区三区| 91久久久久久久久18| 校园春色 男人天堂 | 五月丁香激情综合| 亚洲人综合19| 久久熟女人| 91在线免费精品视频| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 国产精品一区二区在钱播放| 色妺妺AⅤ| 黑丝少妇在线观看| 狠狠操狠狠操操| 第四色亚洲色图| 四虎国产精品永久地址入口| 精品美女人人干| 婷婷久久五月| 中文字幕97| 欧美一二在线| 日韩国产成人自拍视频| 亚洲男人天堂2017| 日韩三级网址| 超碰在线观看av不卡| 尤物视频偷拍免费| 精品色色| 国产最新小视频在线播放下载| 国产高清无码一区三区二区| 中文字幕欧洲有码| 97人妻色| 精品人妻一区| 加勒比aⅴ| 欧美午夜色妇色鬼| 亚欧韩av| 成人精品无码| 午夜久久久| 男人的天堂在线有码| 日本一区二区三区午夜观看| 国产高清在线自在拍69| 少妇一线天久久久久久| 天天色黄色影院天天操| 高颜值美女口爆高潮浪叫| 116美女午夜| 一级特级aaaa毛片免费观看| 日日骚中文字幕| 91性感网站| 亚洲五月天激情| 先锋激情∨在线视频播放| 精品丰满熟妇人妻一区| 欧亚第一综合网| 91久久久久久久| 亚洲一区日韩精品| 黄色交缠性感爆操91国产精品免费一区二区三区| 伊人影院中文字幕| av午夜影院在线播放| 中文字幕99999| 大屁股熟女一区二区三区| 美女露胸露尿口| 97摸视频| 国产一级137片内射麻豆| 青青青在线高清视频在线一二三四区 | 欧美A√综合网| 日韩三级一区| 曰韩av中文字幕专区| 日日操免费视频| 后入国产| 又黄又硬又粗又长国产视频| 亚洲无限观看| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 男生通女生屁股| 91/欧美| 精品人妻一区二区三区-国产| 伊人五月天| 九九探花视频在线观看| 日韩综合成人免费视频| 免费人成毛片乱码| 91人人| 天天夜夜rb| 自拍第一页| 99re热| 龙兴卡官方查询| 91欧美丨精品丨入口| 日本999精品视频| 亚洲熟妇图片| 九九热精品在线| 97色伦欧美| 性吧在线视频| 亚洲天堂人妻一区二区| 精品一区二区三区蜜桃臀赵总| 国产成人无码久久精品| 国产精品久久久久久久久AV大片| 成年人黄色小视频网站| 综合操逼| 操逼1区| 亚洲暴力强奸AV| 日本Xx性爱| 国产AV超爽| 国产伦精品一区二区三区在线观| 不卡啪啪视频| 色婷婷久久| 亚洲 综合 欧美| 欧美乱色| 看黑丝美女操逼青青网站| 久插综合| 欧美天堂亚洲电影院一区在线播放| 国产盗摄美女如厕大神作品在线观看| 蜜奶av| 超碰97在线色男人??| 久久精品无码熟妇一区二区三区视频导航 | 婷婷8月天青娱乐| 国产免费内射视频| 加勒比综合网| 八戒无码国产午夜福利| 九月丁香综合网| 99热欧美| 爆乳免费黄网站| 玖玖爱一区在线| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 久久综合九九| 小草精彩毛片| 都市激情人妻一区二区青青操视频 | 天天操人人操骚逼网站| 熟妇无码视频三区| 日韩人妻丝袜中文字幕| 亚欧性爱无码| 国产67194| 中文字幕制服欧美久久一区| 物业黑人 AV一区| 97超碰9| 亚洲国产91精品一区二区久久| 欧美另类综合久久| 麻豆久久视频在线地址| ai欧美亚洲小说| 97超级久久| 久久精品欧美一区二区三区不卡| 激情久久久| 九一屌逼| 人妻少妇无码| 强奸乱伦 亚洲一区| 蜜桃无码AV一区二区| 国产成人资源| 久久视频少妇美女| 大JI巴好深好爽又大又粗视频| 国产AV久久野战精品| 无码9区| 亚洲天堂美臀在线| 玖草在线视频| 日韩性爱高清免费视频| 久久亚洲天天做| 怡红院久久老司机| 亚洲伊人a线观看视频| 亚洲欧洲偷拍一区| 土豪酒店各种姿势玩弄极品幼稚| 美女黄网| 五月丁香激情综合网| 天堂在线一区二区| 亚洲色91| 综合色99| 国产丸一视频| 亚洲熟女精品| 亚洲美女精品| 易易A毛视频| 亚洲精品中文字幕一区在线视频| 97色色色综合网站| 国产精品久久久久婷婷二区次| 免费αⅴ在线观看| 大香蕉伊人在线成人AV在线观看| 九九操久久国产免费视频| 欧美αv.com| 久久天天躁日日躁狠狠躁| 91日韩| 五月丁香色色网| 蜜臀无码一区二区| 久久亚洲欧美中文字幕国语 | 亚洲av国产av综合av卡| 欧美日韩国产中文超碰| 懂色Av一区二区三区| 天天做日日爱夜夜爽| 亚洲熟久久| 超碰在线观看av不卡| 天堂精品小草| 亚洲精品国语在线播放| 麻豆天美国美国产| 超碰97人妻在线| 中文字幕啊啊啊在线观看视频| 九久久九九久视频| 九久9精品| 依人大香蕉| 超碰欧美COM| 国产高清成人传媒影视| 婷婷精品久久av影视| 国产懂色精品国产av| 国产高清在线自在拍69| 精品国产一级久久| 亚洲 欧美 日本 国内 首页| 一区在线国产播放| 蜜臀久久99精品久久久久久成人小说| 天堂8在线新版官网| 东北老熟女| 色婷婷激情| 淫荡网址| 91夜夜蜜桃臀1区2区3区| 无码人妻精品一区二区三区99不卡| 国产免费大片| 自拍偷拍亚洲熟女妇人精品| 亚洲综合69| 日本精品第一视频在'| 亚洲一区中文字幕| 91麻豆天美国产欧美| 91天天看| 99re8免费高清在线| 四虎影视永久在线免费| 超碰97资源网亚洲| 激情五月天色播| 熟妇综合一区二区三区| 欧美在线啊啊啊 | av72网| 不卡啪啪视频| av天堂电影网| 青草香蕉网| www欧美性爱| 啊啊啊免费| 麻豆人妻少妇在线免费观看| 亚洲精品人妻在线| 久久粉色| 99国产精品免费| 国产AV超爽| AAAA级日本片免费视频| 狠狠躁天天躁日日躁97| 国产精品色色| 超碰无码加勒比| 老熟女天天操| 青青草手机在线免费观看| 天天色综亚洲91污| 国产91精品在线免费| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 激情文学小说一区二区| 2020视频1区2区3区| 久久亚州精品成人Av无| 丝袜加勒比| 色婷婷综合久久久久中文一区二区| av网页一区二区三区| 蜜臀久久99精品久久久久久-DVD原版全| 欧美白嫩女HD| 日本 欧美 亚中文字幕| 国产精品久久久久亚洲av| 亚洲综合首页| 人人妻天天做天天爽| 三级片大波波| 色婷婷综合网站| 在线观看岛国有码| 欧美大波激情xxxx| 天天综合-91入口| 97精品视频在线播放| 北京美女一区二区| 久久女人视频| 五月丁香婷婷啪啪| 国产第25页在线观看| 蜜乳成人AV| av中亚| 91精品导航| 亚洲中文字幕一区| 久久爱超碰网| 2025亚洲男人天堂| 又黄又爽在线观看视频| 国产超碰人人操| 欧洲成人性爱视频| 17c在线成人免费A片观看| 日本不卡五区| 99re这里只有| 九九热精品视频六| 少妇蹲下买菜露大唇0| 天天内射| 亚州熟妇精品| 人妻在线大香蕉| 在线 亚洲 网爆 自拍| 91美女丝袜诱惑视频| 丰满人妻无码一区二区三区| AA级电影三区| 91色人妻| 国模私拍一区二区三区神乳| 国产亚洲色婷婷久久99精品91 - 百度| 变态综合色| 精品国产乱码久久久| 精品丰满熟妇人妻一区| 伊人久日| 日本布卡一区二三区| 久久久999国产| 欧美日韩妖精91com| 青青草在线视频播放器| 亚洲综合色图欧美| 亚洲资源一区| 亚洲欧美伦综合| 四虎精品一区二区| 久操97| 国产无码成人无码| 日婷婷| 日韩中文字幕人妻视频| 操逼片中文| 九九综合久久| 天天日天天舔天天喷天天射| 伊人AAA| 爱爱动态120秒| 欧美熟女激情| 久久亚码| 亚洲另类色综合网站| 91第一页| 国产91福利小视频在线观看| 国产精品一区av在线| 久久精品国产亚洲AV高级北京| 中国探花熟女| 98一区二区精品| 91熟女综合| 97视频在线免费| 欧美天堂在线| 久久久99免费| 欧美日本国产日韩激情视频| 女人被添高潮免费视频| 6080yy午夜理论三级一区二区三区无码| 九九热九九热| 久久99精品九九久久久婷婷| 五月天精品| 曰韩人妻中文字幕在线| 丝袜剧情| 天堂岛av| 激情终合网| 九九九不卡| 国产亚洲深夜激情| 国模少妇一区二区三区| 亚洲熟妇丝袜在线观看| 久久久久久久久久久久九| 日本幼女18+| 国内精品久久人妻性色av| 亚洲最大的综合性av| 射 色综合| 91美女視頻| 久久9久| 成人免费福利在线观看| av天天在线观看| 日本久久999| 一起草三级AV电影在线观看 | 校园春色中文字幕AV| 久久久偷拍| 久操网视频| 99re6久热只有精品6在线直播| 1000午夜黄色| 国产真实子伦对白| 美女自卫慰黄网站免费| 色诱中文字幕| 美女久久久久久久久久久| 91丨豆花丨熟女| 国产欧美伊人| 91综合天天看| 在线播放一级无码视频| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 国产自产自拍| 北条麻妃99精品青青久久| 校园春色美腿丝袜| 人人操人人操人人操人人操人人操人人人11.CM| 丁香六月激情综合| 欧美成人精品一区二区男人蜜臀| 操逼视频国产无套| 91 在线亚洲| 亚洲男人天堂网站| 91在线精品| 国产精品久久久久久久久久久久久久久久| 男人的天堂2018| 大香蕉520| 91精品操美女| 久久精品中文字幕无码l| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 日本性感人妻91| 午夜免费视频1000| 大香蕉视频啪啪啪啪| 久久精品国产亚洲AV无码电影| 成人A片男人的天堂| 校园春色综合网| 中亚精品极乱| 夜夜躁狠狠躁日日躁av| 99久久99九九99九九九| 中文字幕午夜精品久久久| 精品一区二区成人| 亚爽爽爽爽爽爽爽爽| 男女激烈网站最新| 欧洲精品在线播放| 黄色香蕉视频网站一区| 国精品一区二区三| 国产精品内射婷婷一级二| 野狼激情网| 欧美狠狠| 日本免费不卡二区| 激情五月天中文字幕色| 乱精品一区字幕二区| 日本精品一区二区不卡| 日日狠狠久久偷偷色综合免费| 久久蜜桃一区二区| 五月天综合在线| 超碰色97| 久久理论字幕视频| 中国操逼无码| 狠狠躁天天躁日日躁| 久久亚洲AV无码专区首页| 久草精品视频| 看黄片视频免费| 人妻少妇无码| 色五月激情网| 老司机午夜精品视频| 在线97在线| 丝袜剧情| 一本大道青青| 嗯啊免费视频| 国产日逼视频| 欧美日韩人妻少妇 一区二区三区| 欧美亚洲日本激情在线| 人人操人人操人妻人| 嗯嗯啊在线视频| 欧美真人抽搐一进一出gif| 清清草影| 亚洲日韩精品在线播放| 欧美97| 是还免费视频1727我| 久久久夜夜嗨免费视频| 天天日夜干| 国产肏屁眼视频| 亚洲 欧美 手机在线观看| 成人片在线播放| 亚洲黄网在哪免费看| 新怡红院| 粉嫩国产精品久久久| 日韩国产在线观看av| 欧美午夜熟妇黑人精品91| 久久大香蕉手机高清视频| 成全在线观看免费观看| 久久久无码精品人妻二区| 麻豆精品久久久久久久| 黄色人人| 欧美姓爱综合网| 中文字幕久久精品一区| 99视频自拍| 蜜乳AV免费观看| 超碰天天去日穴| 欧美日韩222| 亚洲中文一区二区三区视频| 日韩免费中文字幕视频| 91美女国产在线| 蜜奶av| 欧美色色色| 国产日韩欧美亚洲精品95 | 久久精品—区二区三区内射| 91嫩草欧美| www.婷婷五月天| 亚欧无码在线| 日韩成人私密一级精品av| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 激情婷婷综合久久| 久久精品一区一起草| 国产专区路线| 亚洲免费看片| 在线观看AV片| 一级做a爰片性色毛片久久| 久久久555| 综合九九| 天天干天天日天天射黄色片| 九九热精品| 日本高清_区二区三区| 亚洲一区日韩精品中文字幕| 久久午夜神马| 欧美激情一| 亚洲熟久久| 亚洲国成人情色好看电影| 伊人久久88国产女| 欧美成人一区二区三区在线播放| 日韩黄片影院| 九九九九精品| 黄页av| 欧美综合综合| 国产精品一区二区麻豆| 亚洲熟久久| 先锋音影AV| 日本啊啊啊啊啊视频| 国产精品情侣啪啪| 一本一道人妻久久一区二区三区| 成视频在线观看免费看| 成人a大片在线观看| 国产色综合亚洲色综合吹潮| 肉动漫无遮挡h在线观看| 97在线视频网站| 99热销国产这里有精品| 日韩欧美麻豆| 久九九九九九九九热| 蜜桃午夜视频一区二区| 一级免费精品| 在线电影亚洲色图| 99re6在线视频精品免费完整版安卓版| 午夜欧美神马久久久久| 成人色女网| 中 文字幕一区二区三四 五 区日 日 骚| 啊啊啊啊视频免费| 天天干天天日天天射黄色| 亚洲综合色男人网| 久久国产精品一级二级三级| 天美传媒av 在线| 国产黄a三级三级三级av在线看 | 亚洲熟妇白浆无码AV| 99最新日韩偷拍视频| 国产精品另类一区大香蕉| 99这里只有精品| 超碰97国产欧美| 精品免费一区| 亚洲国产成人精品999| 日韩免费在线视频观看|