欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

torch2trt深度評測:PyTorch模型高效轉換TensorRT的工程實踐

torch2trt深度評測:PyTorch模型高效轉換TensorRT的工程實踐 torch2trt 這名字在 NVIDIA 開發(fā)者社區(qū)里不算新鮮但大多數(shù)討論都停留在“能用”和“不能用”的層面很少有人把它當成一個需要深度評估的工程組件來看待。我這次不打算只跑個 demo 就下結論而是把 torch2trt 的源碼翻了一遍梳理了它的核心架構和轉換鏈路再結合幾輪真實工程驗證寫一份偏企業(yè)盡調性質的評測報告。這篇內(nèi)容適合正在做 PyTorch 模型推理加速、準備引入 TensorRT、或者被 ONNX 導出算子坑到想換方案的同學看完你基本能判斷這個工具能不能接進自己的項目流程。1. 為什么還要折騰 torch2trtTensorRT 工具鏈的選型對照1.1 先搞清楚 TensorRT 轉換生態(tài)里都有誰TensorRT 本質上是 NVIDIA 的深度學習推理優(yōu)化器和運行時它并不直接讀 PyTorch 的權重格式更不認識 torch.nn.Module。要把 PyTorch 模型跑在 TensorRT 上得先把它翻譯成 TensorRT 能理解的中間表示。目前主流的路子有這幾條一是 PyTorch 導出 ONNX再通過 trtexec 或者 onnx-tensorrt 把 ONNX 轉成 TensorRT engine二是用 NVIDIA 后來的 torch_tensorrt 工具把 TorchScript 或動態(tài)圖直接編譯到 TensorRT第三就是本文要講的主角 torch2trt它走的是“在 PyTorch 前向執(zhí)行時同步構建 TensorRT 網(wǎng)絡”的路線。這三條路線的差異不只是工具鏈長短的問題。ONNX 導出適合結構規(guī)整、算子常見的模型可一旦遇到自定義算子、控制流或者某些動態(tài) shapeONNX 的算子集映射就會出幺蛾子。torch_tensorrt 雖然官方支持度高但它要求模型能被 TorchScript 完整追蹤這同樣會卡住一部分帶非標準控制流的模型。torch2trt 的做法是直接把轉換器注冊到 PyTorch 算子上在模型 forward 的時候逐算子捕獲并構建 TensorRT 層相當于繞開了 ONNX 這個中間商讓不少在 ONNX 上碰壁的模型能跑通。我在實際項目里遇到過很典型的例子一個帶著 F.grid_sample 的檢測模型ONNX 導出后算子支持度很差trtexec 解析直接報不支持后來換成 torch2trt因為社區(qū)里已經(jīng)有人給 grid_sample 寫了 converter居然很順利就轉過去了。這種場景就是 torch2trt 存在價值的直觀體現(xiàn)。1.2 torch2trt 獨有的轉換思路要理解 torch2trt得先抓住一個核心設計它不是做一個“模型翻譯器”而是一個“圖捕獲器 層構建器”。在調用 torch2trt 的轉換函數(shù)時它會用 PyTorch 的 tracing 機制跑一遍模型的前向這一步不是真的為了計算而是為了捕獲計算圖中每個算子被調用的時刻。每當一個注冊過的算子被調用對應的 converter 就會被觸發(fā)此時 torch2trt 會在 TensorRT 的 network 里創(chuàng)建一個對應類型的層并把輸入 tensor 和輸出 tensor 的映射關系記錄下來。這個設計有一個很爽的副作用你不需要維護一份完整的模型結構描述也不需要手動遍歷 nn.Module 的嵌套關系。torch2trt 天然支持 nn.Sequential、nn.ModuleList、函數(shù)調用、循環(huán)里反復調用的同一子模塊因為它的單位是“算子調用”不是“模塊層級”。這也是它和很多“每層正名硬編碼”的轉換工具完全不同的地方。當然這種設計也有代價轉換結果高度依賴 tracing 過程中實際執(zhí)行到的分支。比如模型里有 if 分支雖然 PyTorch 的 tracing 會把當前走到的那條路徑記錄下來但如果分支條件依賴于輸入張量而非常量torch2trt 和其他 tracing 類工具一樣會漏掉另一個分支。這個局限我必須提前點名否則后面到真實業(yè)務模型你會踩坑。1.3 企業(yè)選型時該關注什么從選型角度看評估一個轉換工具不能只看“能不能轉”還要看轉換后的代碼是否可控、性能是否對齊、遇到不支持的算子是否好擴展。torch2trt 在這幾個維度上給出的答案比較明確。算子覆蓋率方面torch2trt 對 cv 領域常見算子覆蓋相對完整卷積、全連接、歸一化、激活、池化、上采樣、拼接、切片這大類都沒有問題transformer 里常見的 einsum、softmax、layer_norm 也有對應實現(xiàn)。如果碰到?jīng)]覆蓋的算子torch2trt 的擴展機制非常輕量寫一個函數(shù)用 tensorrt_converter 裝飾器注冊到對應 PyTorch 算子上即可這種擴展方式比維護一整個 ONNX 自定義算子節(jié)點要簡單得多。性能對齊方面torch2trt 構建的層直接映射到 TensorRT C API 的對應層并不是走某種模擬層再自動優(yōu)化所以理論上轉換出來的 engine 和手寫 TensorRT 網(wǎng)絡沒有本質區(qū)別。實際測試中只要沒有落到性能很差的回退實現(xiàn)模型的卷積層、BN 層融合、內(nèi)存復用等優(yōu)化都會被 TensorRT 正常執(zhí)行??删S護性方面要打個折扣。這個工具核心維護者幾乎是一個人在跟進更新節(jié)奏不算快新算子支持也有滯后。如果你項目里大量使用 torch 內(nèi)部新推出的算子可能就得做好自己寫 converter 的準備。但換個角度看它的核心架構非常穩(wěn)定從 2021 年到現(xiàn)在的版本裝飾器注冊機制和 ConversionContext 的核心數(shù)據(jù)結構沒怎么大改新版本 PyTorch 只要兼容 API基本就能繼續(xù)用。2. 環(huán)境準備驅動、CUDA、TensorRT、PyTorch 之間的版本賬2.1 版本對應關系先把賬算清楚安裝這步看起來簡單但版本不匹配能折騰你一個下午。torch2trt 本質上是一個 Python 包它通過 pybind11 調用 TensorRT 的 C API因此它和 TensorRT 版本之間的耦合度比普通 Python 庫要高不少。我建議先把驅動、CUDA、PyTorch、TensorRT 的版本對應關系列成一張表作為基線。這里給一個實測穩(wěn)定的組合Ubuntu 22.04 NVIDIA 驅動 535 系列 CUDA 12.2 PyTorch 2.1.x TensorRT 8.6.x torch2trt master 分支。如果用 CUDA 12.0 以下的老版本TensorRT 8.4 也夠但 PyTorch 最好對應 1.13 左右太新的 PyTorch 和舊 TensorRT 在 API 上偶有摩擦。組件建議版本我實測穩(wěn)定備選版本Ubuntu22.0420.04NVIDIA 驅動535.x525.x / 545.xCUDA12.211.8PyTorch2.1.x2.0.x / 1.13TensorRT8.6.x8.4.xtorch2trtmaster 分支最新 release先裝驅動再裝 CUDA Toolkit然后建 conda 環(huán)境裝 PyTorch最后單獨裝 TensorRT順序不要亂。在 conda 環(huán)境里直接 pip install tensorrt 會拉到 Python 版 TensorRT 包但 torch2trt 還需要 TensorRT 的 libnvinfer 動態(tài)庫和頭文件這兩者不完全是一回事所以我更推薦下載 NVIDIA 官方的 TensorRT tar 包解壓后把 lib 目錄加進 LD_LIBRARY_PATH。2.2 Ubuntu 驅動與 CUDA 的報錯坑熱詞里出現(xiàn)一堆驅動相關的報錯這里集中展開一下。很多同學裝好驅動后跑 nvidia-smi 直接報 “nvidia-smi has failed because it couldnt communicate with the nvidia driver”十有八九是新內(nèi)核和驅動版本不匹配。Ubuntu 自動更新內(nèi)核后NVIDIA 驅動模塊沒跟著重新編譯就會出現(xiàn)這種通信失敗。解決方法是重裝一遍與當前內(nèi)核匹配的驅動或者在更新內(nèi)核后執(zhí)行 dkms autoinstall。另一個高頻報錯是 “failed to load module glxserver_nvidia (module does not exist)”。這個一般出現(xiàn)在驅動卸載不干凈、或者 nouveau 內(nèi)核模塊沒屏蔽的情況下。安裝驅動前得先把 nouveau 禁掉在 /etc/modprobe.d/blacklist-nouveau.conf 里寫入 blacklist nouveau 和 options nouveau modeset0更新 initramfs 后重啟再安裝驅動就順暢了。如果你還碰到 3D Vision 安裝卡住這類問題多半是安裝器在等待圖形會話釋放 GPU建議直接切到純命令行模式安裝。有一個判斷驅動是否就緒的技巧裝完驅動跑 nvidia-smi看到右上角和下方都顯示 CUDA Version說明驅動通過此時再運行 nvcc -V如果輸出和 nvidia-smi 里的 CUDA 版本不一致非常正常因為 nvcc 是 CUDA Toolkit 的編譯器跟驅動自帶的 CUDA runtime 版本允許不同。只要 nvidia-smi 正常驅動層面就沒問題。2.3 conda 環(huán)境安裝與驗證環(huán)境建議用 conda 隔離。創(chuàng)建一個干凈的 Python 3.9 環(huán)境然后裝匹配 CUDA 版本的 PyTorch比如conda create -n trt python3.9 -y conda activate trt pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121接著安裝 TensorRT。這里我強烈建議直接下載 NVIDIA 官網(wǎng)的 TensorRT 8.6 tar 包解壓后把路徑寫進環(huán)境變量export TRT_RELEASE/path/to/TensorRT-8.6.x.x export LD_LIBRARY_PATH$TRT_RELEASE/lib:$LD_LIBRARY_PATH最后安裝 torch2trtgit clone https://github.com/NVIDIA-AI-IOT/torch2trt.git cd torch2trt python setup.py install驗證是否裝好可以跑一個最小樣例把 ResNet18 轉一遍。但這里要注意最小樣例能跑通不代表一切正常我建議額外做一個“輸入輸出一致性”檢查讓轉換后的模型跑同一個輸入和 PyTorch 原模型的結果做逐元素對比這一步能快速暴露環(huán)境層面的問題。等到后面實操部分我會給出完整的驗證腳本。裝好環(huán)境后如果你的 CUDA、TensorRT、PyTorch 三個組件版本匹配torch2trt 會直接正常工作如果出現(xiàn) ImportError 或者 undefined symbol先檢查 LD_LIBRARY_PATH 是否指向正確的 TensorRT lib 目錄常見問題是系統(tǒng)里有多個 TensorRT 版本Python 進程加載了舊版動態(tài)庫。3. 源碼架構解剖torch2trt 到底怎么運作3.1 倉庫結構與核心文件把源碼克隆下來先看目錄結構。torch2trt 的核心代碼非常集中主要分三塊converters 目錄下是所有內(nèi)置轉換器的實現(xiàn)按算子類別拆分成 conv.py、matmul.py、normalization.py、activation.py 等文件core.py 定義了整個轉換框架的骨架也就是 ConversionContext、TRTModule、convert 主流程和裝飾器注冊表還有 setup.py 和版本控制相關文件。如果只挑一個文件精讀那一定是 core.py它承載了整個框架的心智模型。理解了 core.py 里的 ConversionContext 如何工作你就理解了 torch2trt 的全部設計精髓。converters 目錄里的文件反倒是次要的因為每個轉換器的邏輯都不復雜核心套路都一樣拿 PyTorch 算子入?yún)⒂成涑?TensorRT 層的參數(shù)然后向 network 里加一層。3.2 ConversionContext整個轉換過程的“現(xiàn)場”ConversionContext 是 torch2trt 在轉換過程中維護的一個上下文對象。它的職責很集中記錄當前 TensorRT network、當前輸入張量的映射表、當前輸出張量的映射表以及已經(jīng)處理過的參數(shù)集合和計算過程中用到的中間張量??梢园?ConversionContext 理解成一個“施工許可證”加“施工圖紙”的結合體。它握著 TensorRT builder 和 network 的引用這是向 engine 里填層的唯一通道。每一次 PyTorch 算子被調用觸發(fā)對應的 converterconverter 第一件事就是通過 context 拿到當前算子的 PyTorch 輸入張量去 input_map 里找到對應的 TensorRT ITensor如果沒有就現(xiàn)場創(chuàng)建一個輸入輸出張量同樣會注冊到 output_map供后續(xù)算子繼續(xù)查表。有些細節(jié)值得注意比如 context 里還維護了 method_dic 和 function_dic 兩張注冊表。深入看一下就會發(fā)現(xiàn)torch2trt 對“如何捕獲一個算子”的處理分了兩條線一條是捕獲 torch.nn.functional 下的函數(shù)式算子一條是捕獲 torch.Tensor 的方法調用。這兩類調用在 Python 層面的觸發(fā)點不同torch2trt 分別做了處理這也是它能同時覆蓋 F.conv2d、x.view、x.reshape 等形態(tài)的原因。3.3 裝飾器注冊機制擴展一個算子有多簡單torch2trt 最值得稱道的設計之一就是裝飾器注冊機制。所有內(nèi)置轉換器都是通過 tensorrt_converter 這個裝飾器注冊到注冊表里的。它的用法非常直白比如要支持某個 PyTorch 函數(shù)只需要tensorrt_converter(torch.nn.functional.relu) def convert_relu(ctx): input ctx.method_args[0] output ctx.method_return layer ctx.network.add_activation( trt_get_tensor(input, ctx), typetrt.ActivationType.RELU ) trt_set_tensor(output, layer.get_output(0), ctx)這里 tensorrt_converter 接收的是一個字符串這個字符串是算子的完整導入路徑。torch2trt 在初始化時會把這個注冊表構建成一個字典key 是算子全名value 是對應的轉換函數(shù)。當 tracing 階段捕獲到某一個 PyTorch 算子調用時torch2trt 就根據(jù)當前算子所屬的模塊路徑去這個字典里查詢命中則執(zhí)行對應轉換邏輯。這種注冊機制帶來的工程價值很大。遇到不支持的算子你不需要去 fork 整個 torch2trt 倉庫改源碼只需要在自己的工程里寫一個新的轉換函數(shù)用同一個裝飾器注冊進去這個函數(shù)就能被 torch2trt 自動識別并用于后續(xù)轉換。企業(yè)項目里維護一個自定義算子轉換庫完全不需要改動第三方包的任何文件對代碼審計和依賴管理都友好得多。3.4 前向傳播捕獲流程拆開看每一步把整個轉換流程串起來看實際是四步走。第一步torch2trt 調用 convert 函數(shù)把輸入的 torch.nn.Module 實例、輸入張量示例、網(wǎng)絡配置傳進去第二步創(chuàng)建 ConversionContext并在 context 里初始化 TensorRT network第三步使用 PyTorch 的 torch.jit.trace 機制對模塊進行 tracing這一步是最關鍵的因為 trace 過程中每執(zhí)行到一個算子都會觸發(fā)上面說的注冊表查詢第四步所有算子處理完context 里的 network 構建完成此時調用 builder 生成 engine并把結果包裝成一個 TRTModule 返回。第三步里有個隱蔽的細節(jié)trace 不是直接把輸入跑一遍就完事它會在執(zhí)行每個算子時把調用信息寫入 trace 圖。torch2trt 精妙的地方在于它把自己的鉤子掛在了算子執(zhí)行點而不是等著 trace 結束再去解析圖結構。這意味著它拿到的不是“圖結構”而是“算子調用順序”這正好是構建 TensorRT 網(wǎng)絡需要的拓撲順序。還有一處需要注意torch2trt 對每個 PyTorch Parameter 都有緩存機制。因為同一個權重參數(shù)可能在多個地方被引用比如共享權重的兩個卷積層。如果每次遇到這個參數(shù)都在 TensorRT 里新建一個常量層會造成權重重復存儲浪費顯存。torch2trt 在 context 里記錄了一個 tensor_map專門維護 PyTorch 張量到 TensorRT ITensor 的映射遇到已經(jīng)轉換過的參數(shù)直接復用這個細節(jié)對多分支共享權重的模型影響很大。3.5 一個 converter 的實現(xiàn)細節(jié)以 Conv2d 為例與其空談機制不如看一個具體轉換器的實現(xiàn)。torch2trt/converters/conv.py 里定義了卷積轉換邏輯核心代碼大概長這樣tensorrt_converter(torch.nn.Conv2d.forward) def convert_conv2d(ctx): module ctx.method_args[0] input ctx.method_args[1] output ctx.method_return input_trt trt_get_tensor(input, ctx) kernel module.weight.detach().cpu().numpy() kernel_trt ctx.network.add_constant(module.weight.shape, kernel) layer ctx.network.add_convolution( input_trt, num_output_mapsmodule.out_channels, kernel_shapemodule.kernel_size, kernelkernel_trt.get_output(0) ) layer.stride module.stride layer.padding module.padding if module.bias is not None: layer.bias module.bias.detach().cpu().numpy() trt_set_tensor(output, layer.get_output(0), ctx)梳理這段代碼的邏輯先從 context 里拿到當前算子的模塊實例、輸入張量和輸出張量再把 PyTorch 權重轉成 NumPy 數(shù)組通過 add_constant 構建一個常量層然后調用 TensorRT 的 add_convolution 構建卷積層最后把該層的輸出和 PyTorch 計算圖中的輸出張量做映射。整個邏輯簡單、直接、沒有任何花哨的包裝。這個模式在所有 converter 里是高度一致的取輸入、取參數(shù)、加層、映射輸出。讀通了這一個其他 converter 基本都能看懂。不過卷積這里有個細節(jié)值得提醒在 TensorRT 8.x 中 add_convolution 的 kernel 參數(shù)接收的是一個 ITensor而不是常見的 numpy 數(shù)組torch2trt 通過 add_constant 做了一個中間層來滿足這個 API 要求。某些舊版本寫法直接把 numpy 傳進去也是可以的但新版 API 已經(jīng)變了如果你自己寫 converter一定要對著當前版本 TensorRT 的 Python API 檢查參數(shù)類型。3.6 TRTModule轉換產(chǎn)物怎么承載推理轉換完成后返回的 TRTModule 本質上是一個包裝過的 torch.nn.Module。它的不同之處在于 forward 方法里不再執(zhí)行任何 PyTorch 算子而是把輸入張量復制到 GPU通過 pybind 調用 TensorRT engine 執(zhí)行推理。TRTModule 的初始化參數(shù)包括 TensorRT engine、輸入輸出綁定名稱以及是否啟用 context。每次 forward 時它創(chuàng)建一個統(tǒng)一的執(zhí)行上下文把 PyTorch 輸入張量按綁定名傳給 engine執(zhí)行完畢后把輸出張量取出來轉成 PyTorch Tensor 返回。這套機制保證了 TRTModule 在外部用起來和普通 nn.Module 幾乎一樣可以無縫塞進已有推理代碼里。如果轉換時指定了動態(tài) batch 或動態(tài) shapeTRTModule 會持有一些額外的 shape 信息并在每次推理時調用 set_binding_shape 來調整輸入輸出維度。這塊稍復雜我在實操部分會再說明。4. ResNet18 實戰(zhàn)從 PyTorch 模型到 TensorRT engine4.1 轉換 API 參數(shù)詳解實戰(zhàn)前先把 torch2trt 的轉換入口說透。核心方法是 torch2trt.torch2trt它的簽名里最關鍵的幾個參數(shù)是input輸入張量示例可以是一個 torch.Tensor也可以是元組表示模型接收多個輸入。這個參數(shù)既參與 tracing 計算圖生成又決定了 engine 的輸入 shape。max_batch_size靜態(tài) batch 上限。如果推理時 batch 不變或者固定保持默認 1 就行如果想支持動態(tài) batch需要配合 opt_shape 參數(shù)。fp16_mode是否啟用半精度轉換。開啟后 TensorRT 會在滿足條件的層上自動替換為 FP16 精度對性能提升很直接但有精度下降風險。max_workspace_sizeTensorRT 構建時的最大可用顯存單位字節(jié)。設小了可能優(yōu)化不充分設大了可能超出顯存導致構建失敗。strict_type_constraints是否強制嚴格類型約束。一般不需要除非你有特殊的層必須保持 FP32。這里我給一個推薦配置思路先以 FP32、默認 workspace 跑通再開 FP16 做精度對比最后根據(jù)顯存余量調大的 workspace讓 TensorRT 有更多空間去做 kernel 自動調優(yōu)。不要一上來就全參數(shù)拉滿否則出問題很難定位是模型不支持還是參數(shù)設置不合理。4.2 一步轉換與結果驗證轉換代碼本身非常簡潔PyTorch 里訓練好的模型直接傳進去就行。下面是一個完整的 ResNet18 轉換和驗證過程import torch import torchvision.models as models from torch2trt import torch2trt model models.resnet18(pretrainedTrue).cuda().eval() x torch.randn(1, 3, 224, 224).cuda() model_trt torch2trt(model, [x], fp16_modeFalse, max_workspace_size1 30) print(converted!) with torch.no_grad(): y_pytorch model(x) y_trt model_trt(x) max_abs_err float((y_pytorch - y_trt).abs().max()) print(max_abs_err:, max_abs_err)如果 max_abs_err 在 1e-4 量級甚至更小說明轉換結果和 PyTorch 原模型輸出基本一致。如果差距過大就要檢查模型里是否有對精度特別敏感的層比如某些歸一化、softmax以及 network 構建時是否報過警告。在實際工程里我還建議加一個固定的隨機種子跑多次推理檢查輸出是否穩(wěn)定。TensorRT engine 構建過程引入的優(yōu)化不應該影響輸出的確定性如果你發(fā)現(xiàn)同一輸入不同批次推理結果有微小波動那大概率是模型里用了非確定性算子比如某些 Attention 實現(xiàn)的 dropout 在 eval 模式下仍然被啟用這點需要到模型代碼里排查而不是在轉換工具上找問題。4.3 FP16 與工作空間調優(yōu)把 fp16_mode 設為 True 再跑一次model_trt_fp16 torch2trt(model, [x], fp16_modeTrue, max_workspace_size1 30)FP16 帶來的性能提升很直觀尤其是卷積層和全連接層多的模型。但相應的代價是精度下降ResNet18 這種較為魯棒的結構通常問題不大max_abs_err 可能從 1e-6 漲到 1e-3 左右對分類任務影響很小。如果是檢測、分割任務FP16 對邊界回歸和分割邊界可能有輕微影響需要你根據(jù)自己的精度要求判斷。workspace 的調優(yōu)邏輯是在顯存允許范圍內(nèi)給 TensorRT 更大的構建空間它就能嘗試更多 kernel 變體和融合策略。實際操作中我會從 1GB 開始逐步往上加直到構建時間明顯變長或者顯存不足報錯為止。我測過一個語義分割模型workspace 從 512MB 提高到 2GB 后推理延遲提升了約 8%這個提升完全取決于模型結構得實測觀察。另外如果你要部署到不同的 GPU 上強烈建議在目標 GPU 上重新構建 engine。TensorRT engine 和 GPU 架構和 TensorRT 版本強相關把 A100 上構建的 engine 拷貝到 4090 上跑大概率直接報錯或者性能很差。4.4 推理性能對比與正確解讀轉換完成后最讓人關心的就是性能。一個簡單的 benchmark 腳本就可以測出差異import time def run_bench(model, x, n100): # 前幾次預熱讓 CUDA context 和顯存分配穩(wěn)定下來 for _ in range(10): model(x) torch.cuda.synchronize() start time.time() for _ in range(n): model(x) torch.cuda.synchronize() return (time.time() - start) / n * 1000 print(PyTorch ms/iter: %.3f % run_bench(model, x)) print(TensorRT ms/iter: %.3f % run_bench(model_trt, x))我實測 ResNet18 在 RTX 3060 上PyTorch FP32 大約是 5.2msTensorRT FP32 大約 3.8msTensorRT FP16 大約 2.5ms。但這里必須提醒benchmark 的結果受很多因素影響輸入 shape 大小、batch 大小、是否固定 memory 分配、CUDA 版本、TensorRT 版本。我見過很多人在自己的機器上測出和宣傳完全不同的數(shù)字這不代表工具不行而是測試條件不同。解讀性能時還有一個容易踩的坑小模型或者輕量模型在 PyTorch 里跑Python 側的開銷占比很高轉成 TensorRT 后引擎執(zhí)行時間很短反而數(shù)據(jù)拷貝和 Python 調用開銷成了主要矛盾。如果你的推理管線里輸入預處理、后處理都很重單純優(yōu)化模型推理這 1ms 可能只是杯水車薪企業(yè)級優(yōu)化必須把整個推理鏈路放在一起做 profile不能只盯著 engine 本身的數(shù)字看。5. 常見問題與排查技巧實錄5.1 高頻報錯速查表把實際操作中遇到的典型報錯整理成一張表方便你對照排查。報錯信息常見原因解決辦法NotImplementedError: The converter for ... is not implemented算子未覆蓋換用更常見的算子表達或者手寫自定義 converterInvalidArgumentError: split can’t be applied on tensor...某層參數(shù)不兼容 TensorRT檢查該算子的具體參數(shù)組合主動替換為等價算子Node ... did not match any convertertracing 時遇到了推理分支之外的算子確保轉換時的輸入能覆蓋所有關鍵路徑CUDA error: out of memoryworkspace 設置過大降低 max_workspace_size或者減小 batch 測試AssertionError: bindings for... are not consistent輸入輸出 shape 與 engine 不符檢查 input 示例和實際推理 shape 是否一致engine 加載時報 architecture mismatchengine 不在當前 GPU 或版本上構建在部署機上重新構建 engineNotImplementedError 這個錯誤是 torch2trt 用戶遇到最多的。報錯信息里會直接給出算子路徑比如 “The converter for torch.nn.functional.gaussian_blur is not implemented”。這里的處理思路不是干瞪眼而是先看 PyTorch 里這個算子是否能被等價替換。gaussian_blur 如果只是在推理前對輸入做預處理完全可以在轉 TensorRT 之前用 CPU 或者 OpenCV 處理掉沒必要把它放進 engine 里如果確實在模型中間層那就走自定義 converter 方案。5.2 自定義 converter 擴展一個不支持的算子自定義 converter 是 torch2trt 最值得依賴的能力。以一個常見的 unsupported 算子為例比如模型里用到了某個自定義的加權求和算子它在 PyTorch 里長這樣def weighted_sum(a, b, alpha): return a * alpha b * (1 - alpha)要給這個算子寫轉換器需要先明確它可以被拆成 TensorRT 的 elementwise 乘法和加法。轉換器代碼大致如下import tensorrt as trt from torch2trt import tensorrt_converter, trt_get_tensor, trt_set_tensor tensorrt_converter(__main__.weighted_sum) def convert_weighted_sum(ctx): a ctx.method_args[0] b ctx.method_args[1] alpha ctx.method_args[2] output ctx.method_return a_trt trt_get_tensor(a, ctx) b_trt trt_get_tensor(b, ctx) alpha_arr alpha.detach().cpu().numpy() alpha_trt ctx.network.add_constant((1,), alpha_arr).get_output(0) one_minus_alpha ctx.network.add_constant((1,), 1.0 - alpha_arr).get_output(0) a_scaled ctx.network.add_elementwise(a_trt, alpha_trt, trt.ElementWiseOperation.PROD).get_output(0) b_scaled ctx.network.add_elementwise(b_trt, one_minus_alpha, trt.ElementWiseOperation.PROD).get_output(0) out ctx.network.add_elementwise(a_scaled, b_scaled, trt.ElementWiseOperation.SUM).get_output(0) trt_set_tensor(output, out, ctx)寫完這個函數(shù)后在轉換之前 import 它即可torch2trt 會自動把這個裝飾器注冊到全局注冊表。這個擴展模式是 torch2trt 能活這么久的核心原因——它把“支持新算子”的難度降到了“寫一個普普通通的函數(shù)”而不是去改底層框架。寫自定義 converter 時有幾個細節(jié)要特別注意一是 ctx.method_args 的索引不要搞錯尤其當目標算子是模塊方法而非函數(shù)時第 0 個參數(shù)是模塊實例本身二是 add_constant 創(chuàng)建常量時shape 要和參與運算的 TensorRT 張量兼容必要時要利用 broadcast 機制三是如果算子內(nèi)部有多個輸出每個輸出都要有對應的 trt_set_tensor 注冊否則后續(xù)算子拿到的是未映射的張量直接報錯。5.3 動態(tài) shape、序列化與部署注意事項torch2trt 原生對動態(tài) shape 的支持比較有限它主要支持動態(tài) batch而不太擅長 H、W 等維度任意變化。如果你的業(yè)務有動態(tài)分辨率需求需要傳入多個不同 shape 的 input 示例或者借助 trt 的 optimization profile 配置。這個方案可行但配置復雜度和出問題的概率都會上升我的建議是如果業(yè)務允許優(yōu)先把輸入尺寸固定下來。很多推理框架都支持統(tǒng)一 resize 到固定大小這樣能最大程度發(fā)揮 TensorRT 的優(yōu)化能力。序列化方面轉換得到的 TRTModule 可以通過 state_dict 的方式保存 engine 權重也可以直接用 trt 的 serialize 接口保存為 .engine 文件。我推薦用后者保存 engine 文件部署時直接反序列化加載省去每次重新構建的時間。但千萬別忘了 engine 與硬件、TRT 版本綁定這個限制換了 GPU 型號或升級了 TensorRT 版本老 engine 基本作廢。部署環(huán)節(jié)我不建議直接在產(chǎn)線環(huán)境里做轉換而是把轉換留到 CI/CD 或者離線構建階段。典型做法是訓練完成后跑一次 torch2trt 得到 engine保存文件部署端加載 engine 文件只負責推理。這樣做的好處是部署機不需要安裝 PyTorch也不依賴 torch2trt 環(huán)境鏡像體積能小不少故障面也更小。寫在最后的小提醒torch2trt 不是銀彈選型時最重要一點是要評估你們模型里的算子是否在它的覆蓋范圍內(nèi)最好拿真實模型和真實數(shù)據(jù)盡早驗證。如果發(fā)現(xiàn)某個關鍵算子不支持先試試替換成等價操作不行再寫自定義 converter實在兜不住才考慮換其他轉換路線。我做了幾次項目下來覺得 torch2trt 最舒服的地方是轉換鏈路短代碼可讀性高出了問題愿意去翻源碼的話半天時間基本能定位到根因。這套流程和源碼閱讀經(jīng)驗換個工具同樣通用。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
丁香六月亭亭久久综合| 色婷婷五月天小说| 99久热| 久久久av久av久片一区二区| 婷婷五月激情的图片| 五月天另类视频| 精品国产乱码久久久久夜深人妻| 久久色五月| 婷婷射婷婷舔| 五月激情网站| 日韩在线视频网站| 开心激情站| 久激情| 激情婷婷五六月天| 人碰人人人玩91| 成人超碰AV| 亚洲1区| 婷婷伊人综合| 先锋男人99资源| 色播五月| 六月丁香婷婷综合狠狠爱夜夜爱| 色情综合网| 97超碰在线免费观看| 日本高清久| 亚洲综合在线播放| 国产精品美女久久久久AV超清| 婷婷五月激情热播| 国产,欧美,学生妹,视频| 九色视频91| 久久久性爱视频| 久久天堂网| 成人一区在线观看| 婷婷社区五月天| 69精品人人人人| 色五月网址| 久久中文人妻系列| 国产色香蕉精品五夜婷| 开心五月婷婷激情| 婷婷丁香五月天狠狠| 九九Y精品热播| 色婷婷色五月天| 色月丁| 日日撸夜夜操| 人人干天天舔| 亚洲九九99精品视频在线播放| 777久久综合视频| 亚洲乱码日产精品BD| 久久AV电影| 日韩有码一区| 五月丁香狠狠爱| 五月天色婷婷av| 狠狠色噜噜狠狠狠狠狠色综合久久| 国产精品成人av在线观看春天| 婷婷五月色情| 超碰在线免费观看日韩| 狠狠草在线观看| aaaaaa片| 婷婷九月丁香中文| 激情五月天视频| 五月激情基地| VA日本视频| 免费碰碰视频久| 亚洲天堂爱爱| 色婷婷婷婷五月天| 激情综合网,五月| 综合激情专区| 日本91在线播放| 在线观看的av| 蒲京久久无码视频| 六月色婷婷| 99热这里只有免费精品| 婷婷五月天影视| 色综合99无码| 乱精品一区字幕二区| 色婷婷久综合久久一本国产AV| 丁香大香蕉| 精品香蕉99久久久久网站| 日本色综合| 激情文学天天| 青青.com| 免费超碰在线| 久久一级AV| 日本在线99| 婷婷另类开心| 狠狠色婷婷7777久| 亚洲成人在线播放| 26uuu欧美日韩| 91综合视频在线| 婷婷丁香五月综合| 久9视频| 激情五月婷婷综合网| 天堂网啪啪| 久久小说| 99在线观看精品视频| 色五月丁香网| 婷婷激情五月天小说校园| 少妇激情五月婷婷| 色波激情五月天| www.91av.com| 亚洲婷婷性爱| 色色色com| 婷婷丁香激情综合色情| 色综合久久天天综合网| 色久天| 五月成人网天天| 色播丁香五月婷婷操:屄| 丁香五月激情棕合| 99九九热视频免费| 婷婷色九月| 日本一毛片| av操B网站| 性爱综合网| 偷拍五月丁香| 香蕉AV777XXX色综合一区| 99热官网精品在线| 精品亚洲国产成AV人片传媒| 99精品手机在线视频| 99久久66综合| 丁香婷婷综合影院| 黄色片精品| 777精品久无码人妻蜜桃| 天天综合网在线| 91偷拍视频| 激情五月婷| 婷婷色五月婷| 丁香色五月天| 婷婷五月五月丁香| 天天综合网91| 天天AV导航网| 99久久99热这里只有精品| 538午夜激情| 久操欧美在线观看97| 色五月婷婷在线| 婷婷丁香五月综合| 99在线看视频| 97成人超碰免| 丁香五月久久| 婷婷深爱五月天在线| 久久久久久xxxxx| www,8050,午夜三级| 天堂婷婷五月在线| 天天日 天天草| 久热AA| 丁香伊人网| 天天日,天天插| 五月天开心网| 97AV人人插人人操| 91碰九色| 武则天精品久久| 五月天婷婷色在线视频免费观看| 天天操屄网| 天天做天天爱天天高潮| 色婷婷视频在线| 天天日夜夜| 九九热只有精品| 在线只有精品| 欧美性久| www久久五月com| 色综合开心五月深爱五月| 婷婷六月五月| 国产精品视频免费看| 午夜丁香| 丁香五月婷婷社区| 深爱五月婷婷开心中文字幕| 天天爽天天摸天天爱| 色色丁香五月天| 国产精品久久久久久妇女6080| 色很久综合| 热九九精品| 婷婷五月婷婷五月| 丁香九月婷婷色| 久久看婷婷| 色五月婷婷网| 日韩综合网络男女香蕉a片| 婷婷六月中文字幕| 天天操婷婷| 荫道BBWBBB高潮潮喷| 中文av在线观看| 狠狠五月激情在线| 色色激情网| 99视频在线观看地址| www.99久久久久99| 久久久久久人妻久久久久久久久久人妻久久久 | 日韩成人无码人妻| 婷婷色六月| www.夜夜操| 亭亭玉月丁香| 五月婷婷啪啪啪啪| 国产国产乱老熟女视频网站97| 五月天开心色情网| 99操碰| 欧美性爱丁香五月| 欧洲综合视频| 国产毛片精品一区二区色欲黄A片| 久久久国产精品黄毛片| 色青青视频| 综合色色色| 色色婷| 视频一区二区在线| 99热这里只有精品免费观看| 影视av久久久噜噜噜噜噜三级| 婷婷五月花| 性做久久久久久久免费看| 少妇伦子伦精品无吗| 色五月婷婷中文字幕在线观看| 丁香五月av| 五月天停停基地| 五月婷婷第四色| 草一草avb| 激情五月天小说| 六月综合婷婷开心伊人| 久久九区| 偷偷操99| 色色色色色色色色色色色色色五月天 | 激情六月婷婷啪啪| 99热99日…..| 伊人无码高清| 色宗合久久五月婷婷| 国产又爽又猛又粗的视频A片| 97日在线视频| 九九亚洲视频| www.国产亚洲69ty.久久久久久久久久久久 | AV激情五月| 香蕉操亚洲| 五月天婷婷色综合| 精品人妻在线| 婷婷激情五月| 国产精产国品一二三在观看| 99.色| 五月开心婷婷| 国产激情一区| 丁香激情五月| 久久久这里都是精品| 玖玖婷婷五月天| AAA久久久| 亚洲国产成人裸舞| 婷婷激情在线| 九九碰九九爱97| 无码一区二区三区四区五区| 色婷婷精品视频在线播放| 久久五月天激情| 婷婷五月激情视频网| 深爱激情网噜噜色| 99er热精品视频| 久久丁香五月| 亚洲精品va| 成人片黄网站色大片免费毛片| 思思热热久久| 黄色精品五月婷婷| 亚洲综合色婷婷| 96精品成人无码A片观看金桔| 操逼福利视频| 一二区成人电影| 丁香五月中文字幕| 婷婷天天舔| 天天碰夜夜操| va中文资源在线观看| 99久久婷婷国产综合精品电影| 亚洲热视频在线| 蜜臀久久99精品久久久久久酒店| 天天操夜夜操| 亚洲第精品| 久草 tingting| 日本久久婷婷| 五月天堂在线| 91九色精品熟女内射| 色色五月婷| 色婷婷五月天天天做| Av在线不卡一区| 丁香婷婷视频在线| 天天天摸夜夜夜玩| 婷婷五月综合婷婷| 色吧五月婷婷| 97色婷| 久久机只有这里精品| 91女人18毛片水多国产| 久久永久视频| 蜜乳中文字| 99视频久久久| 成人国产网站在线免费看| 亚洲综合草草| 日韩AV大全| 精品无码久久久久久久久| A久网| 大香蕉九九热| 婷婷久久色| 亚洲色视频| 久久一热| 婷婷综合激情五月中文字幕| 色情丁香五月婷婷精品| sewuyuetingtingiii| 内射人妻视频国内| 国产精产国品一二三在观看| 日韩aaaaa| 人妻久久久久久久| 国成人网| 成人在线日韩欧美| 99视频| 亚洲激情高潮| 思思99热这里只有精品| 99乱视频| 精品综合网在线| 国产Va视频| 91大神操美女| 色人久久| 五月色色激情网| 五月婷婷天天色| 婷婷伊人网| 婷婷丁香红五月91C| 九九在线视频| 丁香婷婷色五月激情综合| 99九九在线视频| 丁香婷婷色情社区成人小说| 思思热视频在线观看| 久久综合天天综合| 久久婷五月天| 久久激情网| 停停六月 综合| 婷婷.com| www.婷婷| 婷婷丁香五月婷婷| 开心激情网在线| 婷婷激情五月综合丁香社| 狠狠操综合| 999婷婷综合| 丁香六月在线综合| 五月婷婷丁香五月| 九九综合九九| 色爱爱综合网| 日韩AV在线免费观看| 色五月婷婷青娱乐| 婷婷五月天丁香成人社区| 色五月 五月婷婷| 噜噜噜噜噜色| 日韩性视频| 九洲一级A片| 国产精品成人AV在线| 久久曰9| 精品影院| 久久精品国产一区二区三区四区 | 色综色网| 操操操B| 思思热在线视频精品| 操人91| 天天爽人人综合免费7799| 色色婷| 色哟哟精品| 99碰超| 91超碰人人操| 久久久久久久久久久-久五月天婷婷| 亚洲精品久久久久久久久久飞鱼| 色香蕉影院| 五月婷婷色| 国产人妻人伦精品一区二区| 五月开心啪啪| 五月婷五月婷伊人伊人五月婷| 玖玖在线资源视频| www.maotanji.com| 丁香婷婷久久| 狠狠干伊人| 玖玖婷婷五月天| 丁香婷婷色| 天天色天天色天天色天天色天天色| 久久六月天| 色综合天堂| 99久久九九| 深爱开心五月天| 久久婷婷综合五月趴| 亚洲丁香花色| 色射7856五月天激情四射| 伊九九三级区| 色五月综合在线| 亚洲综合1024| 婷婷福利影院| 婷婷五月激情的图片| 丁香六月毛片| 天天日夜夜拍| 亚洲av电影网站| 久久的爱大香蕉| 中文精品久久久久人妻不| 操人妻90p| 色琪琪一综合久久激情五月视频| AV伊人青草丁香六月| 激情五月丁香六月| 秋霞av吧| 伊人婷婷大香蕉| 人妻肉射免费观看| 久99视频| 免费啪啪啪网站| 婷婷五月综合婷婷| 人妻操逼视频| 欧美性生交A片免费看| 人妻久热| 色青五月天| 久久女人天堂| 激情久久网| 婷婷丁香五月激情中文字幕版| 婷婷五月天成人综合网| 777影视理论片大全在线观看| 久99在线视频| 夜夜撸夜夜骑| 婷婷色综合网日韩国产| 天天爽天天摸| 色无婷婷| 操人妻AV| 久久亚洲婷婷| 五月丁香六月婷婷久久肏| 久草x色在线观看99| 99在线精品视频观看免费下载| 伊人婷婷五月天| 色色亚洲99com| 99rewww| 26uuu欧美| 丁香性爱在线视频| 五月婷婷深爱六月| 99热99色| 一本九九色| 五月天伊人日日噜影片AV| 黄网在线播放| 久久人人九| 亚洲热久久| 99精品丁香五月| 大香蕉人妻| 玖玖婷婷综合| 91操片| 色导航色婷婷五月天在线观看| 婷婷五月丁香激情| 六月婷婷久久| 欧美色99| 婷婷99狠狠躁天天躁中文| 五月婷婷丁香网| 懂色av粉嫩av蜜臀av| www.色婷婷。com| 色色色网站| 婷婷放心五日爱| 婷婷五月丁香香蕉| 五月天激情中文字幕| 五月J香蕉婷婷| 五月天婷婷色小说| 在线看av| 国产精品久久久60086| 丁香久久在线| 丁香五月色欲| 婷婷丁香五月91| 亚洲99视频| www.丁香黄色五月天人与| 色婷婷激情五月天在线观看| 天天日色情| 99国产性感视频| 1024在线视频| 五月丁香六月香香蕉| 777色色色| 久久久99日本大片| 久99视频| 色综合色综合色综合高潮| 中文字幕无码人妻少妇免费视频| 99热99热不卡| 青青草色在线视频观看| 青青草国产亚洲精品久久| 亚洲人妻一区二区| 九九99精品视频| 五月天开心网| 激情五月www| 亚洲色图在线视频| 大香网伊人久久综合| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 婷婷日韩| 久久精品性爱| 丁香五月婷婷婷婷欧美综合| 中文超碰视在线| 丁香五月成人婷婷| 第六色在线| 婷婷丁香熟女| 亚洲成人av在线播放| 五月激情小说网| 深爱网深爱综合网| 五月天久久www| 久久xx| 五月天激情无码高清| 色婷婷五月天成人网| 色偷偷AV亚洲男人的天堂| 丁香五月伊人| 亚洲五月天综合色| 色欲久久久久久综合网综合网| 色优久久| 五月天综合激情网| 亚洲射激情| aaa9区免费在线观看| 99热免费| 99热国产免费| 精品99只有。| 久久久色婷婷五月天| 丁香九月激情久久| 99人人爽| 五月激情综合网| 色六月视频| 婷婷色婷婷亚洲成人| 色原狠狠综合| 五月丁香婷婷AV| 色婷婷婷婷| 色综合伊人网| 激情婷婷五月| 五月婷婷五月天| 丁香六月婷婷综合麻豆| 开心丁五月| 天天综合五月| www.刺激色网站www.| 国产成人99久久亚洲综合精品| 深夜激情网| 性 色 婷婷| 久草五月丁香婷婷综合| 九九热视频精品999| 成人日韩欧美| 射区导航| 丁香五月综合在线视频| 婷婷五月天色综合| www.五月瑟| 五月天播播综合| 久久久激情视频| 射区导航| 免费观看高清无码| 91猫咪国产在线播放| 五月天久久婷| 五月天成人综合| 国产精品蜜臀99| 国产伦理精品高清在线观看网站一区二区| 欧美色宗和激情| 97人妻碰碰碰久久久久-最近国语高清| 色婷天天| 亚洲 在线 另类| 99在线精品视频| 久久女婷| 日韩av在线电影| www.91婷婷| 欧美婷婷综合| 亚洲免费观看高清完整版AV线| 色婷婷丁香五月天在线观看| 五月丁香亭亭| 超碰九九热| 99在线视频播放| 99热1| 婷婷六月激情综合| 97色永久免费视频| 天天干天天操天天拍| 亚洲成人综合在线| 国产99久久久国产精品免费看| 天天操中文字幕| 五月天啪啪啪| 小视频aaa久久久| 婷色人人狠| 婷婷激情综合无月| 婷婷五月天堂一本在线| 色婷婷A| 激情av在线| 五月天久久91| www99热| 色婷婷综合网| 色欧美色色色| 五月婷婷黄色毛片| 女人露出p毛视频www网站| 婷婷五月天无码熟女| 久久这里只有国产视频| 色婷久| www.com五月天| 久久亚洲天堂| 99免费在线视频| 日韩二区搞逼插逼毛片| 亚洲9久久精品| 国产肏屄大片| tingtingjiqingwuyue| 日本熟女一区二区| 五月丁六月香av| 五月天婷婷爱| 玖玖婷婷综合| 色婷婷丁香A片区毛片区女人区| 天海翼中文字幕高| 亚洲视频五区| 日日肏夜夜干| 亚洲六月色| 丁香性爱在线视频| 九月大香蕉| 91蜜桃婷婷狠狠久久综合9色| 五月天色婷婷小说| 国产免费AV在线| 男妓跪趴把舌头伸进我的嘴巴| 超碰在线网站| 五月天亚洲最大成人| 直接看的av| 99无码视频| 九九色情网五月天| 激情图片婷婷| 在线色色| 99噜噜噜在线播放| 五月激情视频| 婷婷深爱五月天| 另类专区在线| 久久33视频| 第2色五月婷| 综合综合网| 色情综合网| 青青草五月天| 99aese| 久久久99久久| 99在线一区| 婷婷丁香水多多视频| 久热婷婷| 91色色色视频| 极品人妻videosss人妻| 亚洲综合婷婷六月丁香五月| 日日天天干| 超碰亚洲欧美| 亚洲色色图片| 国产激情久久久| 六月激情丁香一道本7777| 色色亚卅| 九九热最新| 另类婷婷五月天啪帕帕| 婷婷开心激情综合五月天| 91chinese在线| 综激情网| 激情深爱五月| 婷婷久久五月天| 成人AV在线网站| 狠狠操天天干| 99人妻碰碰碰久久久久| 亚洲色频| 好叼操在线观看| 精品综合久久久久久五月天| 国产做爰视频免费播放| 开心亚洲久久开心| 色色色色综合网| 丁香色五月 97干| 色色网五月激情| 琪琪色五月天| 99热免费18| 天天综合久久| 婷婷综合网| 4438全国最大视频成人网站在线观看| 无码一区二区三区四区五区| 乱岳熟女50岁| 啪啪干伊人婷婷| 精品久久艹| 久久丁香| 少妇高潮一区二区三区99欧美| 婷婷情色五月天| 丁香色六月婷婷| 99久久99九九99九九九| 任你草| 色色啊| 丁香五月偷拍| 综合激情五月丁香| 97色色综合| 99色婷婷| www.黄色片-久久成人国产精品在线播放-999AV | 五月丁香久久| www.AV在线| 伊人丁香六月婷婷| 天天干天天日蜜臀av| 久久丁香五月婷| 国内久久久精品99| 久久性视频| 日日干夜夜撸夜夜骑| 99碰碰。| 天天摸天天舔| 婷婷色影院| 色五月婷婷中文字幕| 一区二区三区四区无码| 思思热99er| 色播五月综合网| 色区久久| 婷婷久久网| 99热这里只有国产精品| 91人人超碰在线| 久热9| 天天摸日日舔狠狠添婷婷婷| 秋霞AV美国| 噜噜狠狠色| 91vip在线观看| 色婷婷五月天| 亚洲婷婷五月天在线激情综合网| 日韩五月婷婷久久| 色情五月丁香| 99热这里只有国产精品| 996热re视频精品视频| 98国产精品综合一区二区三区| xxx综合在线| 亚洲人人操| 开心激情婷婷| 综合色播| 婷丁香五月天| 69精品人人人人人人人人人| 天天日日夜夜爽。| 五月六月丁香激情视频| 丁香五月婷婷综合91| WWW99热| 就爱干 在线| 久久性都花花世界成人免费视频| 色欲一二三| 五五月丁香花激情综合网| 9999热在线观看| 一起草av| 九九草热在线观看| 伊人激情| 五月丁香另类网| 91久久色| 五月色情婷婷开心五月色情| www.久久久久久久| 99视频在线观看视频| 超碰9799| 婷婷十月激情综合网| 精品婷婷五月视| 日本乱论99| 婷婷久综合| 色色婷婷丁香| 几激情五月婷婷色五月色天堂| 日日鲁鲁夜夜爽爽| 91成人品| 五月天大香蕉婷| 久久99热这里只频精品6学生| 久久激情天堂| 婷婷五月天狠狠搞干| 色婷激情网| 丁香六月色婷婷欧美| 色玖玖| 粉嫩AV久久一区二区三区| 天天色综网| 综合性视频99| 日韩欧美四五区| 射琪琪| 欧美内射AAAAAAXXXXX| www激情| 激情五月丁香六月综合AVXXXX| 久久欧洲综合网| 久久996re热这里只有精品无码| 丁香六月婷月91婷月| 丁香激情四射| 中文字幕丰满孑伦无码专区| 日本熟妇乱妇熟色A片蜜桃| 五月天综合网| www.99热| 色9999日韩国产| 五月丁香六月成人| 超碰免费人妻| 久久综合中文| 激情五月综合网| 欧美丁香婷婷五月| 色五月激情综合网| 青青久在线视频免费观看| 99原创自拍视频在线观看| 五月丁香影视| 天天干天天做| 97人人操在线| 天天干夜夜想| 亚洲国产精品SUV| 成人美女网| 青青久久五月天丁香婷婷| 激情五月天第四色| 五月丁香综合啪啪| 九九爱这里只有精品| 天天干-天天日| 丁香五月激情视频| 色在线99| 综合99综合久久久久久久| 久热99| 99色天堂| 99热亚洲| 五月婷婷色五月| 国自产拍偷拍精品啪啪一区二区| 久9久视频精品| 成人在线观看一区| 丁香五月在线人妻| 丁香五月婷婷亚洲另类| 色婷婷亚洲婷婷| 91日韩在线| 8090在线影视少妇| 伊人久久综合| 五月丁香六月激情综合网| 婷婷五月天影视| 天天做好综合色| 九九色婷婷| 亚洲成av人影院| 丁香五月天亚洲综合| 亚洲综合成人网站| 狠狠色狠狠| 五月丁香天天| 可以免费观看的AV| 农村熟妇高潮精品A片| 五月天大香蕉AV| 99热九九这里只有精品| 天天色域综合网| 99热97| 成人视频一区| 五月天婷婷影院影院| 亚洲啪啪网| 无码AV免费精品一区二区三区 | 久久九九99视频| 激情爱爱网站超大免费| 狠狠色综合777| 深爱激情五月天| 国精产品一区一区三区免费视频| 久久婷中文字幕| 日韩成人网站精品久久大全| 182TV大香蕉| 久久久天堂国产精品女人| 婷婷丁香花五月天| 五月婷婷丁香瑟瑟视频| 久久精品99国产精品日本| 国产资源在线视频| 欧美久久婷婷| 99色色网| 久久精品99国产精品日本| 4399在线观看免费高清黄色视频| 激情综合五月.....| 日韩在线视频中文字幕| 亚洲AV日韩AV永久无码网站| 思思热99在线| 狠狠色婷婷六月激情网| Blackedraw视频一区二区| 99小精品| 久久久激情视频| 久操人| 色五月婷婷天天操夜夜操| 久草热久草在线视频| 五月花综合网| 99热地址| 91丁香| 婷婷五月天香蕉| 色婷婷五月天| www.色婷婷| 五月丁香婷草| 久热精品在看| 婷婷久久六月费| 丁香五月影院| 成人网址在线观看| 99热播放| 99热人人操人人操| 色婷婷五月天激情在线播放| 五月天色婷婷成人| 久久人妻熟女一区二区| 亚洲成人在线播放| 性爱综合网| www.99热视频| 婷婷涩五月| 婷婷综合色| 99啪啪视频| 成人AV在线网站| 国产亚洲在线观看| 婷婷色五月婷婷姐妹| 国产精品人人做人人爽人人添| 成人五月天在线视频在线观看| 欧美三级巜人妻互换| 婷婷六月激情丁香| 国内在线99视频| 99热只有| 日本三级第一页| 久久婷婷五月天亚洲欧美| 婷婷丁香五月天操逼| 亚洲五月天另类小说图片| 影音先锋一区| 黄网在线播放| 久香草视频在线观看| 强奸幻女毛片| 26UUU欧美激情一区二区| 五月天色色色| 亚洲妇女熟BBW| 久久丁香久久| 五月天婷婷社区久久综合| 色五月婷婷影院| 密臀久久| ..真实国产乱子伦对白在线_欧| 狠狠狠五月婷婷六月丁香| 老师把我爽高潮了免费A片| 色色色国产| 丁香色情五月天| 91麻豆国产三级精品福利在线观看 | 97干在线免费| 五月婷在线| 色综合丁香| 99国产精品久久久久久久久久久| 99热这里只有精品86| 婷婷九月色| 激情人妻蜜夜系列区| 99九九玖玖| 婷婷五月天小说| 婷婷五月六月丁香综合| 中文AV在线播放| 免费无码毛片一区二区A片| 丁香久久| 久久刺激网| 欧美精品XXXXBBBB| 爱婷婷都市激情| 精品亚洲国产成AV人片传媒| 99操逼| 看全色黄大色大片| 色婷婷成人做爰A片免费看网站| 深爱婷婷网| 欧美激情五月天婷婷| 色约约视频一区二区三区四区五区| 超碰九九热| 婷婷丁香激情| 九九九热精品| 丁香五月婷婷亚洲天堂| 中国丰满熟女A片免费观| 激情五月综合网| 色五月婷婷大| 99啪啪| 超碰97在线观看免费| 99性色| 特级片神马电影| 色五月婷婷婷婷婷婷婷婷婷婷| 欧美碰碰碰| 色婷婷基地 | 玖玖综合色| 婷婷五月激情天| 99热在线中文字幕| 婷婷综合另类小说| 色噜噜狠狠色综合成人99| 丁香花五月天社区| 激情小说色五月| 97久久超碰| 亚洲AV日韩无码| 色婷婷婷婷五月天| 丁香熟女乱| 亚洲春色奇米影视| 亚洲综合五月天| 超碰亚洲天堂| 天天操夜夜操| 六月 丁香 视频| 五月丁香色狠狠干大屄| 中文久久久人妻| 操99| 五月丁香综合影院| 91亚洲天堂| 九月色婷婷婷| 国产毛片精品一区二区色欲黄A片| 婷婷俺去也| 成人婷99最新| 日本色久| 天天色域综合网| 色综合久久天天综合网 | 欧美日韩aaaa| 精品色色网| 天天人人天天爽| 99热只有精品在线播放| 色色日韩| 人人性久久| 日本视频欧美观看免费| 久久大香免费| 狠狠色丁香婷婷| 性爱网六月丁香| 丁香五月久久社区| 亚洲色基地| 亚洲有码在线视频| 97性视频| 熟女国产在线一区二区三区四区| Av在线资源| 激情超碰网| 五月天小说激情| 91色色色视频| 99热99| 九九激情视频| 色九九七七| 色色色色色色色色综合网| 91精品综合久久久久久五月丁香| 很很干天天干| 99久久久久| 伊人综合网站| 婷婷色综合网日韩国产| 99偷拍视频在线日本| 玖玖在线视| 五月天婷婷综合久久| 婷婷久久夜| 亚洲成人va| 丁香五月社区| 中文字幕AV在线| 婷婷五月天在线观看| 婷婷丁香五月天综合在线日韩| 色综合网页| 日韩国产在线免费观看| 国产成人+综合亚洲+天堂| 青青夜夜狠狠夜夜狠狠| 99热精品一| 狠狠干五月天| 综合色播| www.五月.com| 草草女人亚洲| 99色.com| 青青草99热久久精品国| 婷婷久久五月| AV 3P| 丁香五月婷婷手机| 大香蕉久久婷婷精品综合| 欧美婷婷综合| 五月婷婷涩涩爱| 99久久精品亚洲综合| 操操操操操操婷婷五月天| 激情都市五月天| 俺去也五月天| 99热国产免费| 色八戒操婷婷| 99视频自拍| 色综合久久88色综合中文字幕| 五月丁香婷婷深深爱| 五月丁香综合| 婷婷基地成人五月天| 人妻狠狠操| 凹凸操Av| 日本va欧美va欧美va精品| 亚洲五月情| 91色色色| 欧美韩国日本| 久热亚洲| 久热伊人| 九九在线免费观看| 亚洲综合成人网| 婷婷丁香红五月91C| 久久9久| 天天cha成人综合网| 碰碰91| 欧美色激情四射| 日韩成人免费电影| 五月花免费视频| 伊人无码高清| 久久久婷婷五月亚洲97号色| 久久婷婷亚洲五月天| 99久在线精品99re8热| 亚洲国产网站| 九九一综合精品| 九九亚洲视频| 青草青草久9视频在线视频| 美女婷婷六月色| 色婷婷五月色| 狠狠色狠狠色综合日日91| 天干干夜夜操| 激情九月婷婷| 综合网网欲色| 热这里| 天天干天天操天天拍| 丁香五月婷婷欧美激情-中文天堂最新版在线观看| 五月天无码视屏播放| 色色五月丁香| 欧美操逼天堂| 婷婷五月丁香网| 疯狂做受XXXX高潮A片动画| 成人av免费观看| 深爱激情五月天| 影音先锋男人AV资源站| 九九久久这里只有精品XB| 色狠狠综合| 丁香五月激情婷婷| 中文AV在线播放| 五月激情综合性爱| 丁香六月色婷婷| 在线免费视频caop| 久久人人人人妻| 美国天天日天天操| 久草热8精品视频在线观看 | 99ri在线观看视频| 五月丁香成年黄色| 99视频在线精品免费观看2| 68热超碰在线| 狠狠久综合| 大战熟女丰满人妻AV| 丁香婷婷六月激情| 深爱激情五月天| 日韩婷婷五月| 99热这里是精品| 色,激情五月天| 大香蕉av在线| 九月色婷婷| 久久狠狠干| 婷婷丁香视频在线观看免费| 婷婷色中文字幕| 亚洲激情丁香五月天色| 丁香五月天堂网| 五月天婷婷一起草| 欧美搡BBBBB摔BBBBB| 婷婷基地五月色| 丁香六月天婷婷色| 婷婷丁香五月高清| 黄色毛片精品| 99精品综合视频| 日韩av在线免费观看| 91操人视频| 99精品无码视频| 国产欧美熟妇另类久久久| 婷婷中文字幕版| 9九九久久精品无码专区| 五月丁香黄色视频| 丁香激情五月| 影音先锋一区二区三区| 丁香五月情色| 免费看欧美成人A片无码| 99视频一区| 欧美久人人| 欧美三级欧美一级| 包操45分钟网站| 成人网在线观看视频| 26uuu精品国产| 丁香激情五月| 成年人丁香五月| www.操逼comm| 久久精品日| 五月色婷婷影院| 五月色婷婷亚洲| 五月丁查人人| 碰97久久| 国产免费AV在线| 婷香五月网在线| 五月婷婷色在线| 久久久免费精彩视频| 91久久婷婷| 亚洲日韩一页精品发布| 久久人妻乱| 99热综合| 91狠狠综合久久久久久| 亚洲第一精品网站| 中文字幕不卡+婷婷五月| 欧美性生交XXXXX无码小说| 成人丁香五月| 99综合视频一体| 黄色录像网点| 激情99热| AV伊人青草丁香六月| 99丁香婷婷综合网| 日本久久婷| 五月天婷婷影院影院| 色婷婷狠| 久久丁香五月婷婷| 狠狠人人婷婷| 色色色精品无码区| 九月丁香八月婷婷久久综合久97| www.夜夜操| 播五月丁香三月婷婷| 五月激情丁香五月宗合| 玖热精品综合视频| 另类婷婷五月天啪帕帕| 五月丁香综合激情| 99热在线观看这里只有精品| 色欲天天综合| 久久99大| 玖玖五月丁香| 四色女婷婷| 婷婷伊人久久| 久久机热这里只有精品| a色色色色色| 婷婷五月色花丁香社区| 亚洲亚洲人成综合网络| WWW99热| 五月熟妇婷婷久久| 青青草色在线视频观看| 影音先锋五月天婷婷丁香在线观看| 色综合99| 五月 婷婷 成人| 婷婷五月天视| 熟女激情网| 色色色色色日韩午夜激情 | 五月天激情站| 五月天激情四射网站| 99热在线中出| 五月丁香六月婷综合成人综合 | 秋霞性爱AV| 人妻中文字幕网| 99久久国产宗和精品1上映| 91天天操天天干天天射| 久久久精品人妻| 97五月天婷婷| 99高级会所久久| 亚洲综合在线视频| 狠狠爱婷婷爱| 狠狠色丁香婷婷| 久久久全国免费视频| 中文字幕精品无码一区二区| 婷婷亚洲综合| 婷婷五月大香蕉| 美女五月狠狠| 国产精品婷婷午夜在线观看| 五月婷婷亚洲综合网| 亚洲国产色婷婷| 成片免费播放| 97人人操| 九九精品丁香花| 色婷婷在线电影| 精品国产乱码久久久久夜深人妻| 欧洲色色| www.婷婷,com| 99色热视频在线| 99热无码首页| 天天综合网网欲色| 婷婷五月天堂一本在线| 成人电影丁香六月天| 婷婷五月天另类网站| 婷婷情色激情| 久婷自拍视频| 五月久久| 狠狠精品干练久久久无码中文字幕| 粉嫩AV久久一区二区三区| 另类少妇人与禽zOZZ0性伦| www.天天干| 午夜少妇在线观看视频| 午夜天堂一区人妻| 亚洲丁香五冃97色| 日噜噜色| 热久综合| 亚洲成人在线观看av| 欧美日韩一区二区三区四区| 一级无码作爱片| 丁乡久久| 婷婷五月丁香综合桃花色网| 99啪99| 六月丁香色色| 91操碰| 桃色Av色哟哟| 四虎婷婷五月天| 亚洲欧州色情在线观看| 激情六月天婷婷| 中文字幕,综合,91| 天天操比比| 做爰丰满少妇1313| 欧美人人草草| 亚洲无码黄色| 91久久久久久久久久久| 无码网| 99视频在线观看视频| 人人人操B超碰| 色五月综合| 大香网伊人久久综合| 国产亚洲精品久久久久久郑州| 97碰碰九九视频| 91丨九色丨老农村| 啪啪综合网| 2025天天爽天天摸| 夜夜撸夜夜骑| 五月停亭六月,六月停亭的英语| 这里只有精品视频| 999精品久久久久久久| 啪啪激情综合| 婷婷久久免费看| 婷婷五月天在线观看免费 | 婷婷六月网| 97色色色色色| 色五月色五天色情网| 香蕉人妻AV久久久久天天| 99热一本| 小色小蛇伊人婷婷色香五月| 婷婷五月天伊人在线| 丁香五月激情在线| 丁香五月色| 五月婷婷激情在线| 99视频内射三四| 这里只有免费的精品| 婷婷丁香色情| 99精品偷自拍| 97热在线精品| 99久久思思| 久久五月天色婷婷| 久久婷婷午夜| 超碰9| 天天射天天射一道本日本社区 | 99热99操| 91久久婷婷| 亚洲最大五月六月丁香婷婷| 色五月AV| 狠狠婷婷综合| a在线观看| 丁香激情五月少妇|