99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

Google TPU軟件棧核心組件與JAX/TensorFlow實(shí)戰(zhàn)解析

Google TPU軟件棧核心組件與JAX/TensorFlow實(shí)戰(zhàn)解析 之前一直在 GPU 集群上跑大規(guī)模模型訓(xùn)練直到項(xiàng)目遷移到 Google Cloud TPU 時才發(fā)現(xiàn)僅僅把訓(xùn)練框架換成 TPU 版本是遠(yuǎn)遠(yuǎn)不夠的。整個編譯鏈路、數(shù)據(jù)管道、算子融合策略和顯存規(guī)劃都變了踩了一圈坑之后才慢慢把 TPU 軟件棧的運(yùn)作方式理清楚。這篇文章會把 Google TPU 軟件棧的核心組件拆開梳理并結(jié)合 JAX、TensorFlow 分布式策略給出可落地的訓(xùn)練示例。適合正在評估 TPU、剛拿到 TPU 配額準(zhǔn)備遷移訓(xùn)練任務(wù)、或者已經(jīng)遇到底層報錯但搜不到完整解釋的開發(fā)者。讀完你能掌握 TPU 的完整軟件鏈路、訓(xùn)練啟動方式、常見編譯報錯定位思路以及把模型真正跑在 TPU 上而不只是跑在“模擬器里”的實(shí)踐經(jīng)驗(yàn)。1. TPU 到底是什么不止是“GPU 的替代品”1.1 AI 時代對芯片提出的新要求過去十年深度學(xué)習(xí)算力的主力是 GPU。GPU 的核心優(yōu)勢在于并行計算能力很強(qiáng)可以同時處理大量簡單運(yùn)算非常適合矩陣乘法和卷積這類深度學(xué)習(xí)算子。但隨著模型規(guī)模快速膨脹尤其是大規(guī)模 Transformer、推薦系統(tǒng)和多模態(tài)模型出現(xiàn)之后算力需求不再只看單卡峰值還要看集群擴(kuò)展效率、內(nèi)存帶寬、編譯優(yōu)化程度和單位算力的性價比。Google 正是在這種背景下推出了 TPUTensor Processing Unit張量處理單元。它不是為了替代 GPU 而設(shè)計的通用芯片而是為了加速 TensorFlow 和 JAX 這類深度學(xué)習(xí)框架中的張量運(yùn)算而專門定制的 ASIC 芯片。你可以把它理解成一個“為矩陣乘法而生的專用加速器”在特定負(fù)載下的能效比和吞吐表現(xiàn)非常突出。這里的“專用”意味著兩件事一方面TPU 在矩陣運(yùn)算、卷積運(yùn)算和大規(guī)模分布式訓(xùn)練上性能很強(qiáng)另一方面它對模型結(jié)構(gòu)的支持并不是無條件的某些自定義算子如果不適配 XLA 編譯器會直接卡在編譯階段。1.2 CPU、GPU、TPU、NPU 的定位區(qū)別先用一個表格把這幾種芯片的定位區(qū)分清楚芯片全稱定位典型場景CPUCentral Processing Unit通用計算強(qiáng)順序執(zhí)行操作系統(tǒng)、數(shù)據(jù)庫、邏輯控制GPUGraphics Processing Unit并行計算通用加速深度學(xué)習(xí)訓(xùn)練、渲染、科學(xué)計算TPUTensor Processing Unit張量專用 ASICTensorFlow/JAX 大規(guī)模訓(xùn)練與推理NPUNeural Processing Unit神經(jīng)網(wǎng)絡(luò)專用處理器手機(jī)端推理、邊緣 AI、端側(cè)加速從開發(fā)者的角度看這套術(shù)語體系經(jīng)?;煊糜绕涫窃诙藗?cè)場景里 NPU 和 TPU 的界限并不明顯。但如果你做的是云上大規(guī)模訓(xùn)練TPU 和 GPU 的差異會直接影響代碼寫法、編譯器行為、數(shù)據(jù)加載策略和故障排查方式。1.3 TPU 軟件棧的整體構(gòu)成TPU 硬件本身只是一塊芯片真正讓它跑起來的是軟件棧。Google TPU 軟件棧通常可以分成幾層前端框架層提供 TensorFlow、JAX、PyTorch 等框架的 TPU 后端接口。編譯器層XLAAccelerated Linear Algebra編譯器承擔(dān)了關(guān)鍵的角色。運(yùn)行時層libtpu、TPU Runtime、設(shè)備驅(qū)動等負(fù)責(zé)與硬件通信。系統(tǒng)調(diào)度層在 Cloud TPU 場景下負(fù)責(zé)資源創(chuàng)建、調(diào)度和生命周期管理。下面這張 ASCII 簡圖可以幫助理解數(shù)據(jù)流向PyTorch / TensorFlow / JAX ↓ 前端圖表示Graph / Program ↓ XLA 編譯器HLO → 優(yōu)化 → LLVM / TPU 指令 ↓ TPU Runtimelibtpu / 設(shè)備驅(qū)動 ↓ TPU 硬件理解這個軟件棧是很有必要的因?yàn)楹罄m(xù)很多報錯都不是框架層報出來的而是 XLA 編譯階段拋出的。你不能只盯著 TensorFlow 的報錯堆??催€得順著 XLA 的報錯信息往下追。2. TPU 軟件棧核心組件拆解2.1 XLA 編譯器從框架圖到 TPU 指令的橋梁XLA 是 TPU 軟件棧里最核心、最容易被忽視的一層。XLA 的全稱是 Accelerated Linear Algebra它是 Google 推出的領(lǐng)域?qū)S镁幾g器專門用來把 TensorFlow、JAX 等框架的計算圖編譯成高效的底層指令。XLA 的工作過程大致如下框架層把計算任務(wù)表達(dá)成計算圖或程序。XLA 將計算圖轉(zhuǎn)換成 HLOHigh Level Operations高級操作表示。XLA 在 HLO 層面上做優(yōu)化包括算子融合Fusion、常量折疊Constant Folding、內(nèi)存分配規(guī)劃、并行化調(diào)度等。最終把 HLO 編譯成目標(biāo)設(shè)備的 LLVM IR 或 TPU 專用指令序列。在 JAX 中jax.jit裝飾器就是觸發(fā) XLA 編譯的入口。當(dāng)你給一個函數(shù)加上jax.jit時JAX 會做兩件事把函數(shù)轉(zhuǎn)換成計算圖然后交給 XLA 編譯。import jax import jax.numpy as jnp # 加 jit 后函數(shù)不會一行一行執(zhí)行而是整體編譯后執(zhí)行 jax.jit def linear(x, w, b): return jnp.dot(x, w) b x jnp.ones((8, 128)) w jnp.ones((128, 64)) b jnp.ones((64,)) y linear(x, w, b) print(y.shape)這里需要注意jax.jit并不是簡單地把函數(shù)內(nèi)部代碼“合并成一個整體”而是讓 XLA 拿到整個計算流程后做算子融合。比如上面的matmul addXLA 在編譯后很可能融合成一個融合算子Fusion減少核函數(shù)啟動次數(shù)和設(shè)備緩存回寫的次數(shù)。生產(chǎn)環(huán)境里XLA 編譯失敗通常表現(xiàn)為類似“Detected unsupported operations when trying to compile graph”的報錯這類問題不是簡單的語法錯誤而是某個算子 XLA 還不支持或無法高效融合。2.2 JAX 與 TensorFlow 對 TPU 的支持方式JAX 是目前 Google 官方推薦的 TPU 訓(xùn)練框架之一。JAX 的設(shè)計思路是把 NumPy 風(fēng)格的 API 和自動微分、JIT 編譯結(jié)合再配合pmap、shard_map等并行抽象天然適合 TPU 這種需要精確控制數(shù)據(jù)切分的加速器。TensorFlow 對 TPU 的支持則主要通過TPUStrategy實(shí)現(xiàn)。TPUStrategy是 TensorFlow 分布式策略中的一種它負(fù)責(zé)把模型變量、優(yōu)化器狀態(tài)和數(shù)據(jù)分配到多個 TPU 核心上。PyTorch 用戶也不用太擔(dān)心PyTorch/XLA 項(xiàng)目已經(jīng)提供了torch_xla包讓 PyTorch 模型可以跑在 TPU 上同時支持 XLA 編譯優(yōu)化。不過平心而論P(yáng)yTorch 在 TPU 上的生態(tài)成熟度目前不如 JAX 和 TensorFlow如果你是從 PyTorch 社區(qū)遷移過來的建議預(yù)留更多時間做算子兼容性驗(yàn)證。2.3 libtpu 與低層運(yùn)行時libtpu 是 TPU 的低層運(yùn)行時庫負(fù)責(zé)主機(jī)與 TPU 設(shè)備之間的通信、內(nèi)存管理、指令提交等。在 Cloud TPU 環(huán)境中用戶代碼通過 gRPC 與 TPU Worker 通信但具體指令的下發(fā)是由 libtpu 完成的。這里想強(qiáng)調(diào)一個容易踩坑的點(diǎn)TPU 的虛擬地址頁大小是 16KB而絕大多數(shù) x86 Linux 主機(jī)默認(rèn)是 4KB 頁大小。當(dāng)你用 pip 安裝編譯好的包時如果包本身是在 4KB 頁環(huán)境下編譯的運(yùn)行到低層庫調(diào)用階段可能出現(xiàn)頁面大小不匹配的報錯這就是網(wǎng)上常見的“an error occurred while preparing sdk package 16 kb page size”一類問題的底層背景。解決思路通常不是修改內(nèi)核頁大小而是從官方渠道獲取與 TPU 運(yùn)行環(huán)境匹配的預(yù)編譯包或者在你的 TPU 虛擬機(jī)上重新編譯相關(guān)依賴而不是直接把本地 x86 環(huán)境里的包復(fù)制到 TPU 環(huán)境。3. 環(huán)境準(zhǔn)備與 TPU 獲取方式3.1 Cloud TPU 與 Colab 的選擇搭建 TPU 軟件棧的第一步是獲取 TPU 環(huán)境。根據(jù)場景不同有幾種主流選擇Google Cloud TPU適合長期訓(xùn)練任務(wù)支持創(chuàng)建 TPU Pod 和 TPU VM。Google Colab提供免費(fèi)的 TPU 運(yùn)行時適合學(xué)習(xí)和小規(guī)模實(shí)驗(yàn)。TPU Research Cloud面向研究者的免費(fèi) TPU 配額項(xiàng)目適合科研場景。本地模擬器適合調(diào)試代碼邏輯但性能完全不能代替真實(shí) TPU。如果你是第一次接觸 TPU建議從 Colab 開始它能用很短的時間驗(yàn)證你的代碼是否走通了 TPU 軟件鏈路。等代碼穩(wěn)定后再上 Cloud TPU 集群做真實(shí)規(guī)模訓(xùn)練。下面通過一個簡單的命令檢查 TPU 運(yùn)行時環(huán)境關(guān)鍵信息# 確認(rèn) Python 版本 python3 --version # 確認(rèn) TPU 設(shè)備是否可見在 TPU VM 或 Colab TPU 上執(zhí)行 ls /dev/accel* 2/dev/null || echo no accelerator device found # 查看安裝的關(guān)鍵包版本 pip list 2/dev/null | grep -Ei jax|tensorflow|torch|xla在實(shí)際 Cloud TPU v4 或更高版本的 TPU VM 環(huán)境中設(shè)備節(jié)點(diǎn)通常不是/dev/tpu而是/dev/accel0、/dev/accel1這類路徑這一點(diǎn)和傳統(tǒng) GPU 環(huán)境有所不同。3.2 JAX 環(huán)境變量與初始化JAX 在 TPU 上運(yùn)行前需要確認(rèn)設(shè)備已經(jīng)初始化成功。在 Colab 的較新版本 JAX 中通常會自動識別 TPU但如果你使用的是舊版本或使用自定義鏡像就需要手動初始化import jax import jax.numpy as jnp # 有些舊版本需要手動初始化 TPU # 新版 JAX 一般會自動初始化無需顯式調(diào)用 try: from jax.tools import colab_tpu colab_tpu.setup_tpu() except Exception as e: print(Manual TPU init skipped or already supported:, e) # 查看當(dāng)前所有可用設(shè)備 devices jax.devices() print(JAX devices:, devices) print(JAX default backend:, jax.default_backend())運(yùn)行正常的情況下jax.devices()會返回 TPU 設(shè)備列表jax.default_backend()返回tpu。如果你的輸出是cpu或gpu說明 JAX 并沒有真正訪問 TPU需要檢查鏡像版本或運(yùn)行環(huán)境。有一個經(jīng)常被忽略的問題Colab TPU 切換后必須重啟運(yùn)行時、重新安裝 JAX 版本否則 JAX 內(nèi)部緩存的設(shè)備信息不會刷新。如果切換 TPU 類型后jax.devices()仍然顯示舊的設(shè)備列表優(yōu)先考慮重啟運(yùn)行時而不是調(diào)試代碼。3.3 從源代碼編譯還是預(yù)編譯包在 TPU 上安裝 JAX 時我一直建議優(yōu)先使用官方發(fā)布的預(yù)編譯包因?yàn)檫@些包會和 TPU 的頁大小、指令集和運(yùn)行時庫做過匹配測試。只有在需要修改 JAX 源碼、debug 底層行為或者在 TPU VM 上做二次開發(fā)時才考慮從源碼編譯。下面是一個在 TPU VM 上安裝 JAX 的典型流程# 激活虛擬環(huán)境 python3 -m venv venv source venv/bin/activate # 安裝 JAX 的 TPU 版本 # 更準(zhǔn)確的安裝命令需要參考官方文檔關(guān)鍵是根據(jù) TPU 版本和系統(tǒng)架構(gòu)選擇匹配的 wheel pip install --upgrade jax[tpu] -f https://storage.googleapis.com/jax-releases/libtpu_releases.html # 驗(yàn)證安裝 python3 -c import jax; print(jax.devices())需要注意jax[tpu]這個 extra 的依賴列表和可用的 wheel 索引會隨著版本變化建議以官方 JAX 倉庫或 Google Cloud 文檔中的安裝命令為準(zhǔn)。不匹配的版本經(jīng)常導(dǎo)致 libtpu 無法加載報錯信息里會出現(xiàn)類似“Could not load libtpu.so”的字樣。4. 完整實(shí)戰(zhàn)用 JAX 在 TPU 上訓(xùn)練一個圖像分類模型講完概念和準(zhǔn)備下面進(jìn)入完整實(shí)戰(zhàn)環(huán)節(jié)。這里以 JAX 為例一步步演示從數(shù)據(jù)加載到 TPU 訓(xùn)練的全過程。4.1 創(chuàng)建項(xiàng)目結(jié)構(gòu)與準(zhǔn)備數(shù)據(jù)先創(chuàng)建一個項(xiàng)目目錄把代碼按模塊劃分好tpu-jax-demo/ ├── main.py ├── model.py ├── data.py ├── train.py └── requirements.txt數(shù)據(jù)部分使用 TensorFlow Datasets 中的 MNIST 數(shù)據(jù)集。MNIST 雖然簡單但它覆蓋了數(shù)據(jù)加載、批量切分、訓(xùn)練循環(huán)、模型保存的完整流程很適合用來驗(yàn)證 TPU 軟件棧是否正常工作。創(chuàng)建requirements.txtjax[tpu] tensorflow-cpu tensorflow-datasets optax這里特意引入optax作為優(yōu)化器庫它是 JAX 生態(tài)中最常用的優(yōu)化器集合后續(xù)如果要替換成 AdamW、LAMB 或自定義學(xué)習(xí)率調(diào)度直接改一行配置即可。4.2 編寫數(shù)據(jù)加載模塊創(chuàng)建data.pyimport tensorflow_datasets as tfds # 加載 MNIST 數(shù)據(jù)并轉(zhuǎn)換為 NumPy 數(shù)組 def load_mnist(batch_size128): ds tfds.load(mnist, split[train, test], as_supervisedTrue) def prepare(dataset): dataset dataset.map(lambda x, y: (tf.cast(x, tf.float32) / 255.0, y)) dataset dataset.batch(batch_size) dataset dataset.prefetch(tf.data.AUTOTUNE) return dataset train_ds prepare(ds[0]) test_ds prepare(ds[1]) return train_ds, test_ds在 TPU 訓(xùn)練中數(shù)據(jù)加載是一個經(jīng)常被忽略的瓶頸。CPU 端的數(shù)據(jù)加載速度如果跟不上 TPU 的消費(fèi)速度訓(xùn)練曲線會出現(xiàn)明顯的周期性停頓。prefetch是解決這個問題的最簡單手段。4.3 定義模型與訓(xùn)練循環(huán)創(chuàng)建model.pyimport jax.numpy as jnp from flax import linen as nn # 簡單卷積網(wǎng)絡(luò) class SimpleCNN(nn.Module): nn.compact def __call__(self, x, training: bool True): x nn.Conv(features32, kernel_size(3, 3), paddingSAME)(x) x nn.relu(x) x nn.max_pool(x, window_shape(2, 2), strides(2, 2)) x nn.Conv(features64, kernel_size(3, 3), paddingSAME)(x) x nn.relu(x) x nn.max_pool(x, window_shape(2, 2), strides(2, 2)) x x.reshape((x.shape[0], -1)) x nn.Dense(features128)(x) x nn.relu(x) x nn.Dense(features10)(x) return x這里使用 Flax 來定義模型。Flax 是 Google 官方維護(hù)的 JAX 神經(jīng)網(wǎng)絡(luò)庫和 JAX 一起使用時體驗(yàn)最自然。如果你之前用過 PyTorch 的nn.ModuleFlax 的nn.Module風(fēng)格會比較接近。創(chuàng)建train.py這是訓(xùn)練循環(huán)的核心import jax import jax.numpy as jnp import optax from flax.training import train_state from model import SimpleCNN from data import load_mnist def cross_entropy_loss(logits, labels): one_hot jax.nn.one_hot(labels, num_classes10) return -jnp.mean(jnp.sum(one_hot * jax.nn.log_softmax(logits), axis-1)) def compute_metrics(logits, labels): loss cross_entropy_loss(logits, labels) accuracy jnp.mean(jnp.argmax(logits, axis-1) labels) return loss, accuracy jax.jit def train_step(state, batch): images, labels batch def loss_fn(params): logits state.apply_fn({params: params}, images, trainingTrue) return cross_entropy_loss(logits, labels) loss, grads jax.value_and_grad(loss_fn)(state.params) state state.apply_gradients(gradsgrads) return state, loss jax.jit def eval_step(state, batch): images, labels batch logits state.apply_fn({params: state.params}, images, trainingFalse) return compute_metrics(logits, labels) def create_train_state(rng, learning_rate): model SimpleCNN() params model.init(rng, jnp.ones((1, 28, 28, 1)))[params] tx optax.adam(learning_rate) return train_state.TrainState.create(apply_fnmodel.apply, paramsparams, txtx) def main(): rng jax.random.PRNGKey(0) state create_train_state(rng, learning_rate1e-3) train_ds, test_ds load_mnist(batch_size128) # 將 TensorFlow Dataset 轉(zhuǎn)換為 NumPy Iterator train_iter iter(train_ds) test_iter iter(test_ds) for epoch in range(3): for step in range(100): batch next(train_iter) images batch[0].numpy() labels batch[1].numpy() state, loss train_step(state, (images, labels)) if step % 20 0: print(fepoch {epoch} step {step} loss {loss:.4f}) # 每個 epoch 結(jié)束評估一次 total_loss 0.0 total_acc 0.0 num_batches 0 for _ in range(50): batch next(test_iter) images batch[0].numpy() labels batch[1].numpy() loss, acc eval_step(state, (images, labels)) total_loss loss total_acc acc num_batches 1 print(fepoch {epoch} eval loss {total_loss / num_batches:.4f} facc {total_acc / num_batches:.4f}) if __name__ __main__: main()這段代碼有幾個關(guān)鍵點(diǎn)使用jax.jit裝飾訓(xùn)練和評估函數(shù)讓 XLA 將整個計算過程編譯成融合算子。每個 batch 通過.numpy()從 TensorFlow Dataset 轉(zhuǎn)換為 NumPy 數(shù)組供 JAX 消費(fèi)。訓(xùn)練狀態(tài)由TrainState統(tǒng)一管理包含模型參數(shù)和優(yōu)化器狀態(tài)。打印網(wǎng)絡(luò)在 MNIST 上的 loss 和 acc用來驗(yàn)證模型真實(shí)地訓(xùn)練起來了。4.4 真機(jī)運(yùn)行與驗(yàn)證在 Colab 或 TPU VM 上執(zhí)行python3 train.py正常輸出會類似epoch 0 step 0 loss 2.3021 epoch 0 step 20 loss 0.4218 epoch 0 step 40 loss 0.2534 epoch 0 step 60 loss 0.1842 epoch 0 step 80 loss 0.1507 epoch 0 eval loss 0.0852 acc 0.9734 ...看到 loss 在下降、eval accuracy 穩(wěn)步上升說明 JAX XLA TPU 這條鏈路已經(jīng)跑通了。接下來就可以把這里的SimpleCNN替換成真實(shí)模型把load_mnist替換成你的真實(shí)數(shù)據(jù)集。4.5 關(guān)于多卡 TPU 的擴(kuò)展思路上面的代碼是單進(jìn)程、單 TPU 核心訓(xùn)練的寫法。如果你創(chuàng)建的是多核心 TPUJAX 會自動識別多個設(shè)備。想要利用多個核心并行訓(xùn)練最簡單的方式是使用jax.device_put和pmap對 batch 做數(shù)據(jù)并行切分。from jax import pmap # 將狀態(tài)復(fù)制到所有設(shè)備 state jax.device_put_replicated(state, jax.devices()) # 多設(shè)備并行訓(xùn)練步驟 pmap def train_step_multi(state, batch): return train_step(state, batch) # 切分 batch 到多個設(shè)備 images images.reshape((num_devices, -1) images.shape[1:]) labels labels.reshape((num_devices, -1))這只是一個非常簡化的pmap示例真實(shí)多卡訓(xùn)練還要考慮 batch 切分策略、梯度累積、AllReduce 等細(xì)節(jié)。建議先把單 core 代碼跑通再逐步過渡到pmap或shard_map。5. TensorFlow 方式用 TPUStrategy 做分布式訓(xùn)練雖然 JAX 在 TPU 上體驗(yàn)越來越主流但生產(chǎn)環(huán)境中大量存量代碼還是 TensorFlow 的。如果你不想重寫模型可以直接使用 TensorFlow 的TPUStrategy把現(xiàn)有模型遷移到 TPU。5.1 TPUStrategy 工作原理TPUStrategy是 TensorFlow 的分布式策略之一。它會自動完成幾件事把模型變量復(fù)制到每個 TPU 核心。把全局 batch 切分成每個核心處理一個子 batch。優(yōu)化器在反向傳播后做跨核心梯度 AllReduce。對訓(xùn)練循環(huán)內(nèi)部使用tf.function編譯配合 XLA 加速。它的關(guān)鍵思路是“數(shù)據(jù)并行 同步更新”。用戶只需要寫一份單機(jī)單卡代碼策略層負(fù)責(zé)把計算擴(kuò)展到多個 TPU 核心上。5.2 TPUStrategy 訓(xùn)練示例import tensorflow as tf # 1. 初始化 TPU resolver tf.distribute.cluster_resolver.TPUClusterResolver() tf.config.experimental_connect_to_cluster(resolver) tf.tpu.experimental.initialize_tpu_system(resolver) strategy tf.distribute.TPUStrategy(resolver) print(TPU devices:, resolver.cluster_spec().as_dict()) # 2. 在 strategy 作用域內(nèi)構(gòu)建模型 with strategy.scope(): model tf.keras.Sequential([ tf.keras.layers.Conv2D(32, (3, 3), activationrelu, input_shape(28, 28, 1)), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Conv2D(64, (3, 3), activationrelu), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(128, activationrelu), tf.keras.layers.Dense(10), ]) model.compile( optimizertf.keras.optimizers.Adam(1e-3), losstf.keras.losses.SparseCategoricalCrossentropy(from_logitsTrue), metrics[accuracy], ) # 3. 準(zhǔn)備數(shù)據(jù) (x_train, y_train), (x_test, y_test) tf.keras.datasets.mnist.load_data() x_train x_train.reshape((-1, 28, 28, 1)).astype(float32) / 255.0 x_test x_test.reshape((-1, 28, 28, 1)).astype(float32) / 255.0 # 4. 訓(xùn)練 model.fit( x_train, y_train, batch_size128, epochs3, validation_data(x_test, y_test), )TPUStrategy的遷移成本很低尤其適合原本就是 Keras 寫的模型。如果你的模型里含有自定義tf.Variable更新邏輯就需要確認(rèn)變量創(chuàng)建是否都發(fā)生在strategy.scope()內(nèi)。5.3 TFRecord 數(shù)據(jù)管道與 TPU 的配合真實(shí)訓(xùn)練中數(shù)據(jù)通常在 GCS 上推薦使用 TFRecord 格式來減少小文件數(shù)量提高 TPU 的讀取效率。import tensorflow as tf def decode_fn(record_bytes): features { image: tf.io.FixedLenFeature([28 * 28], tf.float32), label: tf.io.FixedLenFeature([], tf.int64), } parsed tf.io.parse_single_example(record_bytes, features) image tf.reshape(parsed[image], (28, 28, 1)) return image, parsed[label] def build_dataset(file_pattern, batch_size, is_trainingTrue): dataset tf.data.Dataset.list_files(file_pattern) dataset dataset.interleave( tf.data.TFRecordDataset, cycle_length8, num_parallel_callstf.data.AUTOTUNE, ) dataset dataset.map(decode_fn, num_parallel_callstf.data.AUTOTUNE) if is_training: dataset dataset.shuffle(10000).repeat() dataset dataset.batch(batch_size, drop_remainderTrue) dataset dataset.prefetch(tf.data.AUTOTUNE) return dataset數(shù)據(jù)管道本身是 CPU 上的工作但它的吞吐能力直接決定了 TPU 是否被喂飽。經(jīng)驗(yàn)法則是數(shù)據(jù)管道的吞吐至少要達(dá)到模型訓(xùn)練速度的 2 倍否則訓(xùn)練過程中會不斷出現(xiàn)“等待數(shù)據(jù)”的空窗期。6. 常見問題與排查思路6.1 TPU 初始化失敗或設(shè)備不可見問題現(xiàn)象RuntimeError: Unable to initialize the TPU system.可能原因當(dāng)前運(yùn)行時不是 TPU 環(huán)境。JAX/TensorFlow 版本與 TPU 運(yùn)行時版本不匹配。運(yùn)行時使用舊內(nèi)核沒有加載必要的驅(qū)動。排查步驟先檢查設(shè)備文件是否存在在 TPU VM 上執(zhí)行l(wèi)s /dev/accel*。再執(zhí)行jax.devices()或tf.config.list_logical_devices(TPU)看框架層是否識別到設(shè)備。確認(rèn)虛擬環(huán)境中的包版本與當(dāng)前 TPU 版本匹配。重啟運(yùn)行時尤其是在切換 TPU 類型之后。6.2 XLA 編譯報錯 “unsupported operations”問題現(xiàn)象Detected unsupported operations when trying to compile graph可能原因模型里使用了 XLA 不支持的算子。自定義 Layer 或自定義 JAX 函數(shù)里調(diào)用了無法被轉(zhuǎn)換成 HLO 的 Python 控制流。解決思路逐步裁剪模型定位到具體是哪個操作不能被編譯。檢查是否是動態(tài)形狀問題TPU 上盡量避免 runtime shape 變化。對自定義算子優(yōu)先考慮能否用現(xiàn)有的 JAX 原生操作重寫。6.3 關(guān)于 16KB page size 編譯包報錯問題現(xiàn)象在安裝或運(yùn)行 TPU SDK 相關(guān)包時出現(xiàn)類似 “an error occurred while preparing sdk package 16 kb page size” 的報錯。背景原因TPU 運(yùn)行環(huán)境的虛擬地址頁大小是 16KB而常見 x86 Linux 是 4KB 頁。本地下載的預(yù)編譯 wheel 如果是在 4KB 頁環(huán)境下構(gòu)建的運(yùn)行時會與 TPU 內(nèi)核模塊或運(yùn)行時庫不兼容。解決思路不要直接從普通 PyPI 鏡像安裝 TPU 相關(guān)包優(yōu)先使用官方發(fā)布渠道。在 TPU VM 內(nèi)重新安裝匹配版本而不是把本地環(huán)境復(fù)制過去。查看完整日志確認(rèn)是下載失敗還是安裝后運(yùn)行時崩潰。6.4 OOM 與 batch size 調(diào)整問題現(xiàn)象訓(xùn)練時出現(xiàn)Resource exhausted錯誤??赡茉騜atch size 過大超出了 TPU 單核的 HBM 容量。模型參數(shù)或中間激活值過大。數(shù)據(jù)管道prefetch使用內(nèi)存過多。解決思路先嘗試減小 batch size確認(rèn)模型在單卡上可以跑通。合理設(shè)置prefetch和num_parallel_calls避免 CPU 端內(nèi)存溢出。檢查 XLA 是否啟用了內(nèi)存優(yōu)化選項(xiàng)但不要盲目相信默認(rèn)配置。6.5 排查清單匯總問題現(xiàn)象常見原因解決思路設(shè)備不可見運(yùn)行時環(huán)境錯誤 / 版本不匹配檢查/dev/accel*重啟運(yùn)行時核對版本XLA 編譯失敗不支持的算子 / 動態(tài) shape簡化模型逐步定位避免動態(tài)形狀16KB page size 報錯wheel 與 TPU 頁大小不匹配使用官方發(fā)布渠道安裝匹配包OOMbatch size 過大 / 中間激活過大調(diào)整 batch size優(yōu)化數(shù)據(jù)管道內(nèi)存訓(xùn)練速度上不去數(shù)據(jù)管道存在瓶頸使用 TFRecord、interleave、prefetch 優(yōu)化輸出結(jié)果有 NaN學(xué)習(xí)率過高 / 精度配置不當(dāng)降低學(xué)習(xí)率使用混合精度時檢查損失縮放7. 最佳實(shí)踐與工程建議7.1 數(shù)據(jù)管道要提前壓測TPU 非?!疤羰场彼倪\(yùn)算速度快到如果數(shù)據(jù)管道沒跟上訓(xùn)練就會空等。建議在正式訓(xùn)練前先單獨(dú)測試數(shù)據(jù)管道的吞吐能力。import time train_iter iter(train_ds) start time.time() for i in range(100): batch next(train_iter) end time.time() print(f100 batches take {end - start:.2f}s)如果數(shù)據(jù)讀取時間占比過高優(yōu)先使用 TFRecord 格式、interleave并行讀取、prefetch預(yù)加載等手段。7.2 使用混合精度時需要驗(yàn)證損失縮放TPU 的 bfloat16 支持是它的強(qiáng)項(xiàng)之一。用jax時可以很自然地把部分參數(shù)轉(zhuǎn)換成bfloat16或使用混合精度訓(xùn)練。但在混合精度下梯度很小的時候有可能在低精度下溢出導(dǎo)致 NaN。建議開啟損失縮放Loss Scaling機(jī)制并周期性檢查梯度統(tǒng)計而不是在出現(xiàn) NaN 后才去排查。7.3 模型算子優(yōu)先考慮 JAX/TensorFlow 原生實(shí)現(xiàn)遇到自定義算子時優(yōu)先檢查原生庫里有沒有替代實(shí)現(xiàn)。XLA 對原生算子的融合優(yōu)化做得很成熟但自定義算子往往無法被融合會打亂 XLA 的優(yōu)化策略。如果一定要使用自定義算子至少把“無法編譯”的算子獨(dú)立出來避免拖累整體性能。7.4 成本與資源管理TPU 資源通常是按時計費(fèi)的長期任務(wù)建議配合 checkpoint 和自動重啟機(jī)制。這里給出幾個實(shí)用性建議訓(xùn)練腳本要有穩(wěn)定的 checkpoint 保存與恢復(fù)邏輯。使用搶占式資源時代碼要能安全處理進(jìn)程中途被回收的情況。創(chuàng)建 TPU 實(shí)例后盡快驗(yàn)證訓(xùn)練腳本避免空轉(zhuǎn)計費(fèi)。配置監(jiān)控報警對異常掉線、訓(xùn)練停滯、指標(biāo)不回傳這些情況做告警。7.5 把訓(xùn)練過程日志化TPU 上的日志查看比 GPU 環(huán)境要麻煩一些尤其是多 worker 場景下。推薦在訓(xùn)練腳本中顯式記錄關(guān)鍵指標(biāo)比如每個 epoch 的 loss、acc、每個 step 的平均耗時、數(shù)據(jù)加載耗時等并把日志輸出到統(tǒng)一的日志平臺方便后續(xù)歸因。import logging logging.basicConfig( levellogging.INFO, format%(asctime)s %(levelname)s %(message)s, ) logging.info(start training, devices%s, jax.devices())這一步可能看起來不起眼但當(dāng)你遇到 TPU 訓(xùn)練中途卡死、重啟、性能退化問題時這些日志是定位問題的唯一線索。8. 總結(jié)Google TPU 軟件棧本質(zhì)上是一條從深度學(xué)習(xí)框架到專用硬件的編譯和運(yùn)行鏈路JAX、TensorFlow、XLA 和 libtpu 各司其職。對開發(fā)者而言遷移到 TPU 時最需要調(diào)整的往往不是模型結(jié)構(gòu)本身而是對計算圖編譯、數(shù)據(jù)切分、內(nèi)存規(guī)劃這些底層層面的理解。如果你準(zhǔn)備開始嘗試建議從 Colab 免費(fèi) TPU 環(huán)境入手把 MNIST 或自己的小型模型跑通再逐步擴(kuò)展到真實(shí)業(yè)務(wù)模型。遇到 16KB page size、XLA 編譯失敗、TPU 設(shè)備不可見這類問題先順著軟件棧的層級逐層排查不要一開始就懷疑硬件。只要把 JAX 或 TensorFlow 的 TPU 鏈路跑通一遍后續(xù)在 Cloud TPU 上做規(guī)模化訓(xùn)練會順暢得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
激情五月天网站| 狠狠综合网| 六月激情网| 久久婷婷五月| 99爱视频在线| 夜夜操狠狠操天天操| 五月婷婷九九热| 丰满人妻一区二区三区| 狠狠色综合网| 久久玖玖综合| 99免费热视频在线| www.俺去也com| 中文字幕,综合,91| 亚洲精品V天堂中文字幕| 欧美大道不卡| 色色无码| 开心五月婷婷| 五月天国产| 狠狠大香婷婷爱| 婷婷丁香www视频日本韩国| A久久| 99久久激情视频| 色 免费网站视频| 丁香婷婷浪潮AV久久综合| 五月天精品视频| 成人综合伍月天| 综合激情网| 9久热| 婷婷爱五月| 性做久久久久久久免费看| 中文字幕视频在线播放| 亚州色婷婷| 婷婷五月天在线一区| 亚洲激情视频网| 丁香五月亚洲激情婷婷射| 色色九九五月天 | 亚洲乱码日产精品BD| 色综合久久中文| 天天色综合网1| 五月婷婷深深爱爱| 天天橾日日橾夜夜橾17| 久热网在线视频| 亚洲人人干| 婷婷五月深深的爱| 激情婷婷五月色| 五月婷婷丁香五月亚洲色| 久久综合中文字幕| 91爱啪啪| 人人舔人人色人人高潮| 五月丁香六月婷婷综合伊人| 国产婷婷五月天| 婷婷五月天深爱| 婷婷婷色五月| 五月天综合激情网| 99在线视频资源| 日日爽日日| 99A片| 色五月中文网| 伊人久久婷| 激情五月天在线免费美女视频| 天堂AV在线看| 五月婷婷影| a久久| 午夜激情综合| 91色久| 五月天激情婷婷| 国产成人精品亚洲线观看| AVDV久久| 亚洲图色五月天| 99五丁香月| 665566 无码| 狠狠婷婷综合| 日本三级中文字幕| 六月色色婷婷| www.婷婷,com| 97啪在线观看视频| 婷婷丁香在线| 开心五月网| 五月激情婷婷综合| 99年操人人爽| 永久免费视频| 亚洲色vA| 色色色五月婷婷| 五月天婷婷人妻| 日韩色色一区| 亚洲中文丁香| 国产密乳av一区二区三区四区| 噜噜五月天综合| 丁香五月婷婷五月天| 91九色熟女| 五月婷婷综合网| 天天日日夜夜| 六月婷欧美| 超碰99在线| 激情 婷婷 丁香五月天| 亚洲午夜视频| 一级韩国产精品毛| 激情的五月婷婷蜜桃| 色五月婷婷啪啪五月| 伊人五月成人| 国产成人一区二区三区在线观看| 丁香五月123| 第四色激情网| 日本狠狠网| 99热在线只有精品| 综合久久五月天| 六月婷婷私欲| 超碰在线91| 久热久re| 婷婷开心六月| 97超碰,人人舔,人人操,人人摸| 婷婷五月天AV在| 五月天婷婷六月激情网| 丁香激情五月| 综合激情九月婷婷,激情综合婷婷中文字| 99久在线精品| 婷婷 丁香 精品| 久热无码| 狠狠色婷婷| 5月婷婷五月天| 色色五月婷| 先锋影音男人的天堂AV| 天天拍夜夜爽| 欧美内射AAAAAAXXXXX| 四月婷婷五月丁香| 99久久网站| 亚洲精品又粗又大又爽A片| 久久婷婷夜| 丁香五月AV综合激情| 97人人做| 182TV大香蕉| 欧美啄木乌丝袜人妻系列| 丁香婷婷基地| 丁香五月天无码AV| 97人人操人人干| www五月天com| 亚洲天天操| 丁香狠狠色婷婷久久无码视频| 久久er免费视频| 深爱五月天| 精品九九婷婷| 91啪啪网| 婷婷五月丁香综合| 天天天天天天操| 久久WW| 五月婷婷在线综合| 日日噜噜久久婷婷五月天| ss99热| 99爱在线精品视频免费观看| 九九视频免费| 久久精品一区二区三区四区| 五月丁香激情婷婷综合| 五月色亭丁香| 夜夜 操无码| 婷婷免费无马| 极品少妇XXXX精品少妇偷拍| 久久机热这里只有| 91综合网| 色综合激情| 中文字幕97超级碰| 五月色丁香| 久久这里都是精品免费| 欧美情色一区| 激情噜噜噜| 婷婷五月天午夜激情影院| 激情五月天激情小说| 久久精彩视频99| 亚洲综合五月天婷婷| 碰碰碰91| 亚洲色99| 五月婷婷亞洲中文| 婷婷丁香花五月天| 精品人妻伦九区久久AAA片| 九九爱这里只有精品| 国产AV一区二区三区日韩| 天天日天天摸天天| 色色五月激情| 国产激情综合五月久久| 这里只有精品视频一区| 91AV婷婷| 国产伦亲子伦亲子视频观看| 色五月婷婷影院| 丁香六月激情| Aaa久久| 亚洲激情97五月天| 五月婷婷无码| 97伦色婷婷| 五月婷婷综合在线| 人妻久久久久久久久妻久久久久久久久| 色婷婷成人做爰A片免费看网站 | 久草婷婷网 | www.五月天性.com| 久9精品| 日韩操人| 狠狠干综合网| 丁香综合伊人| 激情五月综合久久| 久九男女天堂| 狠狠色色| 久热这里只有精品99re| Av狠狠色丁香婷| 激情图片亚洲| 色色色图| 九热免费视频| 六月丁香成人网| 无码人妻激情| 综合久久综合五月天婷婷| 激情网婷婷五月天| 久久婷婷五月综合伊人| 婷婷丁香一月| 丁香五月婷婷激情网| 老师的粉嫩小又紧水又多A片视频 粉嫩AV久久一区二区三区 | 99视频精品在线| 久久激情视频99| 婷婷丁香六月天激情四射网| 五月婷婷激情综合| 99热这里只有精品1| 五月天激情开心网| 综合网激情五月天| 性爱在线播放av| 色吊丝av中文字幕| 五月天丁香色色| 丁香五月欧美成人| 婷婷激情视频| 久久亚洲天堂| 天天操婷婷| 婷婷五月天手机版视频| 激情五月激情综合网一级丸片| 国产婷婷五月| 激情碰碰碰| 精品一二三区久久AAA片| 99视频| 丁香激情六月天婷婷| 综合色久| 婷婷伊人久久| 99人碰碰碰| 亚洲激情| 色综合香蕉| 1024欧美看片| 亚洲午夜国产成人电影VA国产欧…| 色播五月网| 狼人婷婷综合| 亚洲第一成人无码A片| 五月丁香欧美综合| 人妻精品一区二区三区| 五月婷婷六月色| 五月天激情.com| 亚洲第一色色色色| 五月综亚洲| 丁香激惜男女| 久久亚洲色导航| 激情五月天色色网| 五月婷婷高清| 中文不卡一二三区| 日日懆天天懆| 99这里都是精品6| 综合综合网| 人人摸人人射| 婷婷情色激情| 五月丁香亭亭| 久热人妻| 九九在线精品| 久777| 教师性爱毛片| 在线成人av播放| 久久电影五月天丁香电影| 国产免费性爱| 亚洲无码激情| 色色爽爽天天| 五月天婷婷色播综合在线| 激情 五月 婷婷 丁香| 精品九九在线观看视频| 我爱宗和色| 天天cha成人综合网| 森林影视大全,最好看的2019年视频 | 国产成人精品一区二区三区视频| 久在热99| 99九九99九九九视频精彩| www,com,五月色色| 天天天天天天天干| 精品久久久久久久久久久久人妻| 79精品视频在线观看,| 丁香五月婷老师| 中文成人在线| 农村熟妇高潮精品A片| www.色五月| 色九月丁香婷婷蜜桃在线观看| 婷婷狠狠爱| 2017狠狠干| 欧美色图天堂网| 欧美激情五月综合| 五月婷婷综合在线视频小说| 99热6精品| 六月丁香婷| 精品成人在线| 91偷拍视频| 亚洲视频丁香网va| 少妇人妻人伦A片| 五月天婷婷综合| 国产av一区二区三区| 丁香六月婷婷开心婷婷网| 国産精品| 婷婷瑟瑟五月天| 99精品在线播放| 婷婷久久久| 好叼操在线观看| 国产亚洲99久久| 久久九九99| 激情5月天天天| 91日视频| 色情成人五月天| 在线色色| 五月丁香婷婷五月| 欧美日本日韩| 色色激情| 色五月天堂| 日本色色影片| 蜜臀A∨在线水帘洞| 五月婷婷啪啪啪啪| 国产一级视频a| www.91在线观看| 插少妇综合网| 丁香九月激情| 久热九九| 欧美综合123区| 久热A片| 五月激情四射婷婷丁香| 人人干99| 丁香玖玖| 天天做天天爱天天综合网| 婷婷导航| 久久婷婷丁香五月一二三| 久久九九色| 亚洲V国产V欧美V久久久久久| 亚洲无码11| 亚洲色A| 激情五月天视频| 亚洲免费视频网站| 丁香色五月天| 91日综合欧美| 99在线亚洲| 大地资源色婷婷视频在线 | 日本怕怕视频| 激情五月天电影| 9 1在线视频| 欧美性爱5月天天天看| 五月天伊人网| 欧韩性爱| 婷婷精品视频| 丁香六月婷婷综合色| 91视频一起草| 91狠狠综合久久久| 狠狠操综合| 超碰在线看| 狠狠色五月| 五月天婷婷激情四射综合| 五月婷婷中文网| 粉嫩AV久久一区二区三区| 色婷婷狠狠爱| 国产精品色| 亚洲综合在线伊人婷| 丁香婷婷色九月| 色欲色香综合网站| 一起草无码| 性爱人人网| 婷婷狠狠色| 日本天堂网站99| 五月色俺婷婷| 新激情综合| 丁香五月婷婷基地| 91偷拍视频| 久草A片| 99久久婷婷国产综合| 综合五月婷婷| 伍月激情天| www久久久久久久久久久| 狠狠久久婷五月综合色| 任你干线上免费视频有3吗| 激情综合五月色丁香婷婷| 偷拍丁香九月激情| 另类激情五月在线视频欧美| 《诡秘之主》在线观看| 欧美熟女视频 色婷婷| 人妻精品久久久久久久| 狼友超碰| 99久久国产宗和精品1上映| 丁香五月综合亚洲| 久久婷婷五月天蜜桃| 色色婷婷五月| 天天情色综合网| 五月五月婷婷| 丁香五月av| 5月丁香六月婷婷| 日韩婷久| 六月婷婷综合| 综合一本道| 伊人网碰碰| 激情四射五月天| 淫水导航| 婷婷九月色| 国产性爱在线| 99人妻碰碰碰久久久久禁片| 婷婷五月天亚洲综合网| AV五月丁香| 丁香五月天堂| 超碰人人操| 九九爱这里只有精品| 亚洲AV久久久久久久久久久久久久久久 | 青草青草视频2免费观看| www.99成人视频| 婷婷丁香花五月天| 婷婷综合国产| 色五月av| 五月婷婷狠狠干| 欧美激情xxxXX| 色婷婷综合影院| 丁香五月影院| www.婷婷| 久热这里只有精品99re| 六月色伊人婷婷| 99ri在线播放| WWW色色色COM| 大地9中文在线观看免费高清| 婷婷五月天干干| 色色五月天丁香| 日韩在线视频9色| 9久视频| 色婷婷色婷婷五月| 蜜桃婷婷丁香五月天狠狠久久综合| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 天天操天天曰天天射| 国产人妻777人伦精品HD| 久久a热| 国内婷婷丁香社区在线播放| 狠狠香蕉| 91精品婷婷国产综合| 日本V在线观看不卡视频网站| 五月天丁香网站| 狠色狠色综合久久| 99色视频在线观看| 蜘蛛女免费观看完整版高清电影 | av中文网站| 激情综合网五月天天| 蜜臀av粉嫩av懂色av| 综合五月激情| 婷婷丁香红五月91C| 色婷婷六月激情| 五月丁香色色色| 色五月综合| 91成人视频| 天天爱天天做天天| 五月天国产婷婷精品视频在线| 久久狠色噜噜狠狠狠狠97| 涩综合网| 97人妻碰碰碰久| 97性视频| 97色在线视频| 亚洲成人影视在线观看| 欧美在线操| 视频一二区| 91 九色 入口| 亚洲AV第二区国产精品| 99久高清视频| 六月婷婷九月丁香| 久99在线视频| 变态另类9| 欧洲不卡视频| 美女天天久久| 天天爽曰日爽| 日日舔夜夜操| 国产精品久久久海的味道| www.henhengan| 五月丁香激情婷婷| 久久激情五月婷婷| 色五月婷婷91| 婷婷综合激情| 久久A极片| 久久久久久久久久久-久五月天婷婷| 99久久婷婷国产综合| 久久久激情| 久久久婷婷| 亚洲日韩乱码一区二区三区四区 | 夜夜操天天干| 第四色激情网| 天天爽天天爽| www.九月婷婷丁香.com| 人人操插| 激情六月五月婷婷综合网| 五月天伊人日日噜影片AV| 久99热| 五月婷婷婷| 98色花堂98t.R| 丁香婷婷久久| 色狠狠色综合久久久绯色aⅴ影视| 久久久久久久久久久jjjj| 碰碰碰碰碰99| 99久视频| 深爱激情六月| 99热九九热| 五月日韩中文字幕| 91疯狂操操操操| 7月婷婷六月丁香| 色五月婷婷五月久久| 丁香 婷婷 亚洲 熟女| 日本色色网站| 亚洲精品字幕| 色婷婷88| 色婷婷色五月综合| 九九碰九九爱97| www.色五月| 婷婷终合色图| 丁香花五月天| 狠狠色噜噜狠狠狠狠综合| 91狠狠色丁香婷婷综合久久精品| 久久婷婷五月综合一| 亚洲1区| 99热这里只有精品69| 五月婷婷亚洲色视频| 天天插天天日| 超碰成人在线免费观看| 77799热| 婷婷久久丁香| 五月天sesese| 婷婷五月天成人导航| 久久丁香久久| 国产毛片欧美毛片久久久| 久久91久久91色欲精品| 色九月激情综合网| 国产成人网站在线观看| 国产亚洲av片| 六月五月久久丁香| 色五月激情五月天| 九九热精品99| 国产色色色色| 亚洲精品一二三| 五月婷婷激情综合| 狠狠干婷婷| 香蕉97碰碰碰欧美| 天天综合色丁香| 色欧美影院| 久久曰9| 天天舔天天插天天爱| 噜噜吧天天爱| 婷婷成人av| www.五月激情.com| 久久五月天婷婷| 538任你爽视频不一样的| 狠狠色激情综合| 久久性视频| 婷婷丁香激情综合色情| 色色色综合| 月丁香久久久| 婷婷六月丁香五月| 欧美日韩一区二区三区四区| 丁香五月网| 九九精品热| 婷婷激情五月综合| 久久曰曰| 91九色视频| 99热99久久| 丁香五月天天| 日日夜夜天天| 九月婷婷激情| 丁香五月激情啪| 久久综合中文字幕| 殴美激情综合网| 综合激情专区| 综合久久高清| www.99在线| 五月婷婷啪啪啪| 色情五月天丁香社区| 激情五月天 婷婷| 日韩有码一区| 综合久久99| 99视频在线观看视频| 99热国产这里只有精品| 超级碰碰视频无码| 第四色五月婷婷| 婷婷 伊人 久久| 色婷婷五月天成人网| 婷婷久久影院| 激情综合网五月| 婷婷色播色五月五色五月天色妇| 婷婷97| 婷婷久久国产视频| 琪琪色网址| 51avj视频大全| 4399伦理午夜| 色色亚洲五月天| 五月丁香婷婷综合网| AA久久| www五月| 五月天婷亚洲天综合网综合| 婷婷丁香五月综合网| 五月丁香婷爱在线| 狠狠综合久久| 刘玥av在线| 99久久性爱| 大香蕉婷婷五月| www.日日夜夜.com| 2025天天爽天天摸| 国产精品国产| 九九无码| 96五月丁香熟女| 99久re热| 99热在线观看| 丁香五月激情五月| 99高级会所久久| 久久五月天影院| 久久久无码精品成人A片小说| 99人人干| 色婷婷小视频| 九九热在线99| 丁香桃色网| 99精品激情| 婷婷丁香91综合| 开心激情站| 色色色综合视频| 2021日韩无码| 99精彩视频| 色五月婷婷在线| 亚洲无码成人网| 黄色aa观看aaguochan| 久热伊人| 伊人五月天在线| 伊人婷婷青青cao| 九热av| 99re8这里只有精品99re8热视频| 丁香五月六月婷婷怡红院| 《诡秘之主》在线观看| 在线超碰91| 午夜精品人妻无码一区二区三区 | 久婷狼色诱惑在线| 99热九九热| 久久激情五月婷婷| 婷婷五月天熟妇| 无码se| 97色操| www.99精品日操伊人乱碰在线| 成人午夜无码视频| 亚洲操B| 丁香五月亚洲婷婷| 婷婷五月丁香五月丁香| 亚洲综合视频网| 97操男人的天堂| 色色色色色色色色色影院| 久久九九免费视频| 久久婷婷综合网| 五月丁香久久| 五月婷婷官网色| 色五月婷激情| 密乳视频| 六月丁香五月亭亭| 婷婷五月丁香综合激情小说| 四色综合网| 五月天开心色情网| 国产成人高清| 五月丁香激情综合啪啪| 色 五月 天 婷婷 丁香 九月| 91人久| 国产人妻777人伦精品HD| 亚洲激情AV| 欧美视频五区| 五月丁香啪综合| 99这里都是精品| 亭亭玉月丁香| 九九视屏| 六月婷婷激情图片| 日本人妻A片成人免费看片| 中文久久婷婷| 久99久在线观看| 中文字幕AV网址| 伊人网大香| 久久久大香蕉| 婷婷色五月丁香六月欧美啪| se99视频| 无码色| 久久久国产精品黄毛片| 99人妻碰碰久久久禁片| 久9热视频在线| yw.av| 97人妻碰碰碰久久久久-最近国语高清| 精品操逼一区二区| www.9797国产| 激情综合色网| 99小精品| 九九热这里只有精品31| 久久五月天婷婷| 在线观看av网站| 五月丁香色色网| 成人电影一区| 日本性视频| 97超级操操| 激情99热| 五丁香激情综合| 丁香婷婷在线| 日本婷婷在线| 色激情五月天| 91美女啪啪| 伊人综合婷婷| 99热1| 欧美五月丁香啪啪响视频| 色情·com| 婷婷五月色亚洲| 99九九精品| 成人 在线 日韩| 九九在线视频| 婷婷性爱五月天丁香网| 91婷婷在线观看| 青青.com| 无码婷婷五月天| 色五月五月天色婷婷色五月| 无码任你操| 欧美色一级色| 久婷首页| 色一情一乱一乱一区9| 久久久宗合| 888精品福利地址| www.99成人视频| 97色天堂| 色色色五月天婷婷| 骚五月婷婷| 亚洲综合网激情小说| 色色免费网战视频| 亚洲热视频| 婷婷五月丁香综合亚洲| 97啪啪| 亚洲婷婷丁香五月亚洲| 五月丁香久| 无码人妻AV久久久一区二区三区 | 九九精品碰| 亚洲AV网站| 99爱在线视频观看| 五月婷婷激情久久| 丁香六月婷婷久久亚洲天堂| 国产成人综合网| 天天日天天爱天天噪| 久草A片| 激情性爱婷婷| 激情六月下句是什么| 狠狠干狠狠干| 久久艹 五月天| 丁香六月久久| 伊人久久五月天综合| 26uuu亚洲| 国精产品一区一区三区免费视频| 99碰| 色综合色色色| 无码少妇高潮喷水A片免费| 国产精典视频在线观看| 丁香五月天天高清在线| 精品一区二区三区免费毛片爱| 久久久色情| 色色日韩无码| 五月色丁香| 五月丁香无码| 久久综合人妻| 激情婷婷五月在线合集| 99这里只有精品8| 日韩人妻无码专区| 亚洲Av成人在线观看| 99色免费视频| 香蕉久久国产AV一区二区| 亚洲精品视频在线| 五月香婷婷| www色婷婷com| 五月婷婷丁香在线视频| 亚洲第一成人无码A片| 婷婷丁香五月亚洲欧美| 色情五月综合婷婷| 久久最新色| 丁香婷婷激情五月天无毒不卡蜜桃| 日本精品人妻无码77777| 精品久久婷婷五月天| 综合网啪啪| 激情视频91| 亚洲综合五月| 91九色中文字幕女在线观看| 激情欧美五月丁香| 九月av在线| 婷婷五月成人系列| 综合超碰熟| 都市激情五月婷婷亚洲| 国产操逼视频网站| 99综合一区| 精品自拍97| 婷婷丁香五月天中文字幕| 五月婷三级片| 激情五月丁香六月婷婷| 色婷婷亚洲综合天堂| 开心五月丁香啪| 亚洲成人电影在线免费观看| 五月天激情日色在线| 久久婷婷五月天综合| 日逼影音先锋男人资源站| 99视频在线精品免费观看2| 在线五月婷| 人人爽天天爽| 另类 在线| 色婷婷免费观看| 久99久在线| 成人短视频在线观看| 久久久久久xxxxx| 欧美搡BBBBB摔BBBBB| WWW.桔色成人.COM入口| 男同色五月开心五月激情五月| 久久久妻人人人| 亚洲12p| 婷婷开心青青草| 密着浓厚中出乚交尾GvG935| 玖玖热视频| 久久九九国产| 国产精品色色| 玖久精品视频9| 九九热婷婷| 91九色国产| 激情六月五月婷婷综合网| www.97视频| 婷婷五月天播播| av色婷婷| 性爱激情五月| 久久婷婷五月天| 综合五月草| 亚洲狠狠爱婷婷| 97在线刺激| 激情五月图| 丁香婷婷综合喷| 人妻久久婷婷| 五月色婷婷激情| 超色欲天天| 俺也去色| 久久这里只有精品热在99| 日木狠狠干| 超碰人妻公开在线| 97AV在线视频| 99爱在线| 五月婷婷色色网址| 另类少妇人与禽zOZZ0性伦| 五月激情五月婷婷五月天在线| 9色在线视频| 搡BBBB搡BBB搡五十| 色五月大| 狠狠狠人妻| 久99久在线| 五月婷婷影视| 日韩九区| 色婷婷www| 丁香六月av| 久热亚洲| 久久曰9| 色色五月天网站| 俺也去综合| 思思99热热热99| 99艹精品在线观看| 最近中文字幕大全免费版在线| 久久六月综合| 色五月激情基地| 丁香五月香蕉| 99爱爱网| 婷婷五月天 丁香五月天 裸体| 99超级碰免费视频| 婷婷激情社区| 五月丁香婷在线| 亚洲欧洲色色| 99久精品视频| 无码动漫AV| 香蕉久久国产AV一区二区| 久久久中文| 五月婷婷亚洲色视频| 亚洲色欲AAAAAA| 欧美在线视频99| 婷婷欧美综合| 99在线一区| 色九月综合| 中文字幕视频色婷婷| 五月丁香六月成人| 另类视频综合| 五月丁香六月激情| 国产精品久久久海的味道| Jh7Uf088VHafNm| 五月婷久久| 日韩成人综合网| 激情综合区| 丁香8月手机综合| 国精产品一区一区三区免费视频 | 婷婷五月香蕉| 亚洲操精品| 婷婷五月丁香色综合| 超碰成人影视| 婷婷桃色网| 丁香婷婷狠狠97| 97人碰人操| 欧美成人AAA片一区国产精品| 少妇高潮A片无套内谢麻豆传| 我去色色网五雨天| 狠狠高潮精品亚洲1| 五月天激情无码| 婷婷激情五月天在线| 99思思热只有在这里看| 视频这里只有精品16| 色国产五月| 九九99视频精品| 五月婷婷综合激情| 丁香五月激情天AV无码| 丁香六月亚洲| 亚洲人人操BD| 亚洲无码九九| 激情影院丁香五月| 欧美激情VA永久在线播放| 欧美色色色色色色| 日韩精品一区二区亚洲AV观看 | 九九十99视频| 久久三级视频| 婷婷五月天777| 婷婷激情六月中文| 婷婷五月天综合小说网| 九九亚洲视频| 夜夜久久综合网| 色综合综合色| 99久久综合| 亚洲xx在线| 五月丁香综合网| 国产av基地| 久9热| 亚洲欧洲自拍图片专区五月天| 日韩操人| 五月丁香九九九综合| 日韩在线婷婷五月天综合| 五月天成人小说| 婷婷五月天成人| 婷婷五月激情综合| 久久久噜噜噜操操操| 六月色 亚洲| 欧美日韩成人高清在线| 《诡秘之主》在线观看 | 色播激情五月天| 久久9久| 97人人草| 国产99久9在线| 婷婷五月丁香综合激情| 狠狠va| 蜜桃五月天| 色99网| 亚洲美女裸体被操在线观看| 亚洲精品在线视频| 婷婷五月丁香在线观看| 性生活久久人妻| 丁香六月综合激情| 国产精品久久久久久久久久免费| 99热久97| 天天干天天日日| 99热这里只有精品首页| 国产成人网| 大香人妻| 色婷婷综合中心| 97干综合网| 一本道在线电影| 99热在线精品播放| 另类婷婷丁香| 色婷婷色99国产综合精品| 秋霞av吧| 精品成人在线观看| 五月丁香激情在线| 色婷婷免费观看| 色婷婷色综合久久精品V| 亚洲天堂碰碰婷婷| 深爱激情九九五月天| 九色七七| 大香蕉伊人丁香五月| 色丁香五月天射婷婷爱婷婷| 天天操综合网站| 99热免费| www久| 99re思思热久久| 极品人妻VIDEOSSS人妻| www.97碰碰com| 天天色宗合| 草草女人亚洲| 69热在线| 日本精品99| Www.Av网9| 久久这里只有国产精品视频| 天天干天天干天天| 超碰高清在线| 亚洲视频伍月婷婷| 一点色成人网| 人人色人人摸人人看| 色色五月丁香婷婷| 91大神在线免费看视频全集男男一起操| 婷婷久久夜| 九九黄色网| 操人久久| 99在线观看精品| 国产91在线视频| 日韩人妻操逼视频| 国产成人精品一区二三区熟女在线| 色伊人婷婷| 婷婷五月综合色拍| 另类亚洲电影| 欧美成人精品老美女噜噜噜| 狠狠婷婷色| 99久热这里有精品| 婷婷激情六月| 五月丁香激情婷婷| 在线观看中文字幕亚洲| 六月婷婷综合久久| 日韩色五月| 第1影院之五月婷婷| 久久婷婷五月综合色播| 青柠影视免费高清电视剧| 色噜噜伊人| www激情| 丁香无月在线观看| 91热爆在线| 久操操| 五月天婷婷丁香| 综合AV在线| 99久久极情精品一区| 色色操| 超碰人人在线| 婷婷五月天激情网址| 丁香六月婷婷久久综合| 久操b网| 免费观看欧美成人AA片爱我多深| 色热久资源| 国产看真人毛片爱做A片| 2025天天爽天天摸| 国产露脸150部国语对白| 丁香五月亚洲综合| 99久久五月婷婷| 五月激情偷拍| 色婷婷综合成人| 操操自拍| 婷婷免费精品视频| 97超碰免费超级在线观看| 激情五月婷婷啪啪| 亚洲综合色激情色五月| 99视频在线| 超碰色婷婷| 激情综合网五月| a69在线视频| 成人AV播放| 97碰碰在线看视频免费| 五月婷婷AV| 无码人妻AV久久久一区二区三区| 五月天色视频| 92久操视频| 五月丁香啪啪| 丁香婷停五月激情综合深爱| 九九热思思| 婷婷色丁香五月| 大地资源色婷婷视频在线| 色情免费视频播放| 九九色播五月丁香| 五月天色综合| 久久久人妻门| 97在线视频人妻九色| 婷婷97狠狠成人网站| 久久婷婷五月丁香| 亚洲午夜视频| 性爱久久| 天天久| 亚洲激情图文小说| 99人人爽| 六月丁香啪啪| 亚洲激情精品| 婷婷月综合| 婷婷五月欧美综合| 久久六月天| 六月五月久久丁香| 另类激情码| 在线观看免费观看在线9久| 天天操天天曰| 丁香狠狠| 大香蕉99热| 98国产精品综合一区二区三区| 婷婷久久五月天| 98色花堂98t.R| 丁香婷婷五月香蕉91| 成人视屏在线观看| 五月天婷婷开心| 精品婷婷| 五月丁香888| 色色热| 第四色五月婷婷| 人人舔天天| 五月丁香久久综合| 五月婷婷亚洲综合在线 | 这里只有精品视频| 五月天成人在线视频网站| 色综合久久五月| 日韩久久色| 五月激情久久| 拍真实国产伦偷精品| 99精品一二三四视频| 久热网在线视频| 天堂婷婷五月在线| 激情久久久久久久久久久| 五月久久丁香| 五月天激情婷婷| 六月久久婷婷| 99久在线精品99re8| 六月婷婷狠狠| 日日噜人人人做人| 婷婷伊人综合中文字幕| 色综啪啪| 精品二区| 国产乱人偷精品人妻A片| 97碰在线| 久久激情五月婷婷| 99视频只有精品| 婷婷五月天论坛| 插插网爽妇五月丁香| 激情com| 超碰人人射| 婷婷午夜激情| 激情六月天婷婷| 99九九99九九九视频精品| 久热一区| 屁股翘好撅高迎合跪趴| 亚洲综合色色色| 久久九九爽| 久久久久久激情| 日本狠狠干| 五月天婷婷成人网| 五月天婷婷视频小说| 激情五月,色播五月| 成人欧美Va| 黄色99网| 人人干AV| 丁香婷停五月激情综合深爱| 婷婷色香六月综合激情| 婷婷五月天色综合翘| 亚洲小视频免费看| wwW天天干| 人妻系列久久久久久久久久久 | 亚洲精品国产成人AV在线| 久久与婷婷| 丁香六月婷婷久久综合| 亚洲色色色| 中文字幕,综合,91| 天天干天天拍| 婷婷五月天综合网| 五月天婷婷在线播放| 久久久久久欧美精品se一二三四| 五月天色图| 狠狠操狠狠| www.色婷婷| 亚洲热视频| 免费看欧美成人A片无码| 日韩综合成人| 一级片操逼视频| 婷婷丁香婷婷97| 五月天婷婷社区久久综合| 五月天婷婷久草丁香| 91尤物九色在线| 99综合色色色| 成人羞羞啪啪 全 视频| 这里只有精品在线播放| 色色网五月激情| 91九色精品| 丁香五月激情啪| 色婷婷激情| 久9热插入| 久久婷婷亚洲无码一起| 丁香婷婷色九月| 五月婷六月综合在线观看| 婷婷五月激情中文字幕| 五月天激情无码| www.99婷婷| 天天爽天天操| 五月天开心激情综合网| 中文成人在线| 五月丁香最新| 亚洲色精彩| 久久机热这里只有 | 二级黄色毛片| 国产免费一区二区在线A片视频| 区区久久妻| 六月色丁香中文字幕| 久re热视频| 丁香六月五月天| 亚洲色99综合天堂| 色域五月婷婷丁香| 激情黄色小说色五月| 日韩砖区| 五月婷婷亚洲色视频| 九色婷婷| 天天日P天天射P| 影音先锋按摩| 国产日韩欧美| 婷婷五月色激情欧美激情| 欧美日韩999| 久久爱综合| 中文网AV| 丁香五月天在线| 免费观看的av| www.久久爱.c n| 欧美日韩成人在线观看| 激情五月天之六月婷婷| 久久99精品久久久久久三级| 国产做爰视频免费播放| 婷婷中文字暮| 婷五月丁香| 在线中文字幕av| 婷婷性爱五月天丁香网| 亚洲精品亚洲人成人网| 深爱婷婷丁香五月激情| 婷婷五月天av| 99久久終合| 深爱网深爱综合网| 久久婷综合| 97在线视频 欧美| 色网站99| 人妻AV在线| 大香蕉欧美在线| A网在线欧洲| 婷婷久久综合| 99小视频在线观看| 狠狠操在线视频| 狠狠色婷婷777| 99资源在线| 久色国产| 亚洲国产精品二二三三区 | 日本啪啪网| 99er久久| 九九99九九精品免费| 天天综合网、天天综合色 | 丁香五月亚洲综合| www.婷婷| 五月天婷婷操逼视频| www.狠狠艹| 亚洲岛国电影| 99热骚货| 综合网天天| 激情五月天色色网| 九九婷婷综合| 日韩精品一品二区三区的使用体验 | 五月婷婷深深爱| 天天久| HD久久精品视频| 夜丁香综合| 免费看欧美成人A片无码| 丁香五月天天哦| 99热最新| 99热在线观看免费中文| 九九99热| 2017狠狠干| 欧美精品啪啪| 五月综合激情| 月婷婷婷婷五月| cao久久| 色色色婷婷| www、丁香五月天| 色亚洲欧洲| 色婷婷女优有码五月亭| 可以免费看的AV网站| 97性高潮久久久| 欧美啄木乌丝袜人妻系列| 欧美A A A A A| 毛片色五月| 大香伊人婷婷| 五五月五月| 嫩草AV久久伊人妇女超级A | 婷婷操逼| 噜综合|