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| AV在线观看网站| 乱精品一区字幕二区| 亚洲色vA| 国产精品久久久99视频| 婷婷五月天综合久久| 日日夜夜干| 丁香 婷婷 亚洲 熟女| 91丨九色丨高潮丰满日本| 欧美激情综合五月色丁香| 激情五月丁香五月| sewuyuejiqingwang| 欧美婷婷综合网| 六月丁香五月婷婷| 六月丁丁香| av操一操| 色婷婷丁香| 成人日韩欧美| AAA久久| 成 人片 黄 色 大 片| 亚洲AV成人无码久久精品老人法拉利| 亚洲激情五月婷婷日日| 久热这里这里有精品| 激情婷婷综合网| 欧美大片免费观看| 黑人巨粗进入警花疼哭A片| av在线观看网站| 五月丁香亚洲婷婷| 亚洲va欧洲va国产va不卡| 丁香五月天色综合| www.国产亚洲69ty.久久久久久久久久久久| 婷婷五月丁香欧洲| 色婷婷久久综| 亚洲综合婷婷| 久久6这里只有精品| 婷婷五月色综合| 五月婷婷性爱网| 亚洲精品V天堂中文字幕| 亚洲视频二区| 六月丁香激情网| 激情五月色婷婷| 99re这里只有精品视频了| 九九热10| 天天干肏夜夜| 婷婷色基地| 狠狠干狠狠干狠狠干狠狠干| 日韩综合大黄| 色色色色av色色色色| 九九视频这里是精品五月| 丁香五月自拍| 精品无码99| 99色视频在线观看| 五月天网站免费欧美| 特级片神马电影| 91操色| 激情5月舔| 噜噜噜噜婷婷五月天| 99操逼| 玖玖爱综合网| 五月综合亚洲色| 久久机热这里只有精品免费视频| 天天爽人人爽| 99a级片| 丁香久久综合| 久草热8精品视频在线观看| 丰满少妇猛烈A片免费看观看 | 色色日本| 九九精品热| 欧美日韩成人| 丁香五月色情av| 五月天色欧美| 久久66er久久| 天天天久久人人人合| 激情五月天无人视频在线| 丁香五月婷婷色情综合| 久久久网站| 99视频| 国产高清av黄色看片| 偷拍九九热| 人操91在线| 色色五月天婷婷丁香| 五月天丁香网站| 久久这里只有精品久久| 天天色激情| 国产在这里只有精品| 996er热| 九九香蕉网| 中国操逼99| 97色一二三| 九九色色色| 色综合爽| 九九色色网| 亚洲va综合va国产va中文| 99热 精品在线| 婷婷五月综合免费在线| 国产va在线视频| 插插五月天| 婷婷狠狠操| 五月天狠狠| 青草视频在线播放| 亚洲综合成人网| 婷婷六月激情啪啪| 玖玖热视频| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 久久9热好| www.久99| 色五月婷婷五月久久| 99re8这里只有精品99re8热视频| 成人综合网站| 国产片天天爽夜夜爽| 五月婷婷六月丁香色| 婷婷激情六月| 天天情天天狠天天透| 色99欧洲色19| 色色婷婷综合| 99精品在线下载| 久久东京热婷婷五月| 色婷婷五月天av在线| 9l视频自拍九色9l视频自拍九色9l社区 | 婷婷九月| 日本在线视频播放91| 五月社区婷婷激情| 亚洲视频一区| 草操AV在线| 激情丁香九九五月综合网| 欧美性做爰大片免费看办公室| 六月婷婷综合久久| 日本一级特黄大片AAAAA级| 成人草榴视频| 五月深爱激情网| 天天综合色| 久久色五月天| 91人人操.COM| 久热大香蕉| 欧美影院| 国产在线黄色| 久久久18| 无码se| 九九久久网| 中文字幕日产A片在线看| 中文字幕在线资源| 日日操夜夜爽| 亚州激情网| 婷婷综合网| 日本人人草草| 亚洲丁香花色| 色婷婷成人丁香| 久久五月网| 91人操人人人操人| 亚洲综合久| 色色色色色色五月婷婷| 性热视频99精品| 色婷婷影音| 色日本网| 亚洲四色五月| 婷婷五月天av| 国产六月婷婷| 日韩 mm 不卡| www.久久爱| 青青草色在线视频观看| 婷婷精品| 久色网五月| 影音先锋日本三级资源| 色播五月网| 婷婷五月色惰| 婷婷六月色| 五月天综合缴情网网站0| 婷婷五月婷婷| 337午夜福利| 色色色九九九五月婷婷| 九九热99免费视频| 亚洲色情一区二区三区四区| 欧美偷偷操| 五月天激情视频网站| 欧美色激情四射| 五月香六月婷| 91丨九色丨高潮丰满日本| 大香蕉伊人久久| 国产99美少妇| 超碰在线资源| 九九这里有精品| 99热这里只有精品96| 一本到不卡高清DVD| 五月久久婷婷成人网| 狠狠综合区| 久久99久久99久久99人受| 色9色| 五月丁香狠狠爱婷婷综合| 婷婷五月天成人小说| 黄久久久| 国产精品涩涩涩视频网站| 欧美综合五月丁香六月婷| 啪啪九九色| 伊人玖玖精品| 亚洲狠狠狠| 97热在线精品| 在线不卡的视频| 丁香成人五月天| 色五月六月婷婷| 久久精品综合色| 99久久九九| 婷婷丁香五月久久| 99亚洲精品视频在线观看| 婷色天堂| 欧美婷婷| 大香蕉精品视频| 天天 青草 丝袜制服 在线| 97AV人人插人人操| 99视频综合| 五月丁香婷中文| AV天堂婷婷五月天| 丁香五月综合图片在线观看| av五月丁香婷婷网| 99久热视频在线| 99热在这里只有精品| 婷婷丁香激情| 日在线V视频在线播放| 一本色道久久88加勒比—| 超碰狠狠操| 丁香五月激情五月| 久久99热久久99精品| 天天日天天插天天操| 这里只有精品在线免费视频| 亚洲综合在线视频| 另类图片色五月| 国产高潮白浆一区二区| 中字幕视频在线永久在线观看免费| 五月成人天| 噜色精品| 另类小说五月天综合| 色欲丁香| 手机旧版看人妻1025| 开心五月婷婷在线| 秋霞影音91人妻久久| 99综合一区| 国产肥白大熟妇BBBB视频| 玖玖爱综合网| 亚洲综合1024| 日韩黄黄| 天天色视频| 久久婷婷色综合| 激情五婷网| 婷婷丁香一月| 久久婷婷五月综合激情国产| 日日操夜夜爽天天天| 色五月激情视频在线综合| 色五月婷婷自拍| 色网站9| 七月丁香五月婷婷在线| 综合 激情 婷婷| 国产欧美精品AAAAAA片| 国产精品美女久久久久AV超清| 玖玖在线视频| 欧美性爱五月天| 五月丁香影视| 国产美女无遮挡裸体毛片A片| 丁香六月激情| 婷婷碰碰| 五月天色欧美| 99熟女视频| 97人人看| 狠狠va| 亚洲综合网激情五月天| 色婷婷狠狠色| 中文av网| 色五月婷婷色| OYIWbGcPu8H| 五月婷婷综合在线视频| 久久综合婷婷五月| 天天摸.天天mo| 五月婷婷中字在线| 99这里只有精品99| 99日韩| 色五月 五月婷婷| 色久综合| 热久久这里只有三级视频| www.刺激色网站www.| 99热在线观看| 99热婷婷| 丁香五月婷婷www..com| 色哟哟www| 久久综合干| 五月丁香六月综合情在线观看| 天天情天天狠天天透| 99热99热在线观看| 五月天六月色| 二色av| 无码激情AAAAA片-区区| 丁香花操逼| 精品牛仔裤超碰| 国产伊人五月天| 丁香5月婷婷| 人人摸人人| 色五月综合激情| 欧美大片| 天天操无码| 婷婷五月婷婷五月天| 丁香六月五月天| 9|无码久久久久久| 奇米色大香蕉| 这里只有精品,日韩视频| 热99只有精品| 五月丁香亭亭| 99在线免费视频| 日本va网站| 五月丁香六月激情视频| 韩国真做片在线观看| 婷婷WWW久久| 五月丁香六月综合情在线观看| 俺去也在线www色官网| 九九大香视频| 91人人妻人人操人人爽| 婷婷瑟五月天久久综合| 婷婷久热| 亚洲第一av| 色青青五月| 五月婷婷人人人操| 69色婷婷| 亚洲五月色| 五月天婷婷影院| 久久sp免费视频| 丁香五月第九色| www.射伊蕉婷婷| 婷婷操无码| 99色综合| 亚洲另类在线观看| 久草 天堂| 久久99性爱| 色婷婷五月天| 六月婷婷五月丁香首页| 色五月婷婷丁香五月| 西西4r午夜剧场| 婷婷色网| 婷婷九月激情| 五月丁香色婷婷色| 色玖玖综合| 嫩模草| 激情婷婷人妻| 97五月天| 久热这里只有国产| 丁香五月色| 综合九色| 中文乱子伦视频| 日本视频不卡123区| 性五月激情| 五月天社区| 久久综合图片| 欧美成人网99网| 色婷青青| 99久久精品视频女神1| 超碰人妻在线| 多精窝99在线视频| 性色做爰片在线观看WW| 久久网思思| 五月天激情小说| 日韩三级片一区二区| 久久性爱视频网站| 亚洲色婷婷婷婷人人爽| 国产做A爰片毛片A片美国| 亭亭玉立国色天香| 99国产精品久久久久久久久久久| 色色aⅤ網| 国外亚洲成AV人片在线观看| 激情黄色五月天| 激情第四色| 九九热在线亚洲免费视频| www.久久爱| 欧美日韩91| 9久久婷婷国产综合精品性色| 婷婷九月在线| 婷婷五月综合在线| 精品三区影院| 1024婷婷综合久久五月天| 天天综合五月天| 538任你爽视频不一样的| 天天噜| 人妻精品在线| 日产精品久久久久久久蜜臀| 99日这里只有精品| 精品久久9| 久久激情五月婷婷| 亚洲精品五月| 亚洲操精品| 97操碰| 99成人网站| 熟女强人妻一区二区三区四区无| 色婷婷狠狠| 六月婷婷综合久久| 国产无遮挡又黄又爽免费网站| 人人操人人爱丁香五月| 久久伊人婷婷| 五月停视频天堂| 婷婷色片| 九九热区一区二区三区| 亚洲xx网| 狠狠精品干练久久久无码中文字幕| 国产精品A片| 国产44页| 亚洲视频在线观看| 五月婷婷在线视频| 婷婷丁香五月视频| 婷婷五月天黄色网址| 97啪啪| 另类综合网| 26uuu精品一区二区| 99亚洲精品| 久久婷婷五月综合色丁香| 玖玖婷婷五月| 五月婷婷色在线| 久久综合影院| 激情综合色五月丁香六月亚洲| 久9无码视频| 天天操天天插| 狠狠爱婷婷爱| 深夜激情网| 亚洲成人免费在线| 51XX嘿嘿午夜无码| 丁香五月婷婷综合啪啪| 狼人久草| 五月婷婷狠狠干| 色五月天在线| 五月婷婷久久激情 | 996热| www.韩日视频| 国产精自产拍久久久久久蜜 | 丁香五月婷婷俺也要去| 美女亚洲五月丁香| 五月婷婷啪啪啪| 超碰成人影视| 亚洲无码 图片区| 婷婷五月天激情文学| 色五月在线观看| 五月丁香成人| 人人人人人人人人人草| 国产亚洲在线| 另类激情综合| 热久久91| 婷婷亚洲综合| 色婷婷中文在线| 婷婷免费视频| 色婷婷狠狠禁久久| 丁香五月婷婷色综合| 激情五月天社区| 欧美狠狠色| 天天综合网亚洲综合网| 天天插夜夜爽| 综合狠狠五月婷婷| 久久婷婷五月草视频在线播放| 久99久精品视频| 久色大香蕉| 嫩草AV久久伊人妇女超级A| 99在线免费观看| 五月丁香 啪啪| 久久久久婷| 91热网址| 五月婷婷六月天| 九九99精品视频| 婷婷色导航| 五月丁香婷婷激情视频| 色激情五月| www开心激情网| 日日干日日s| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 九九色99| 天干夜夜操| 激情色视频| 五月丁香婷婷三级| 九九热精品| 丁香五月婷婷亚洲色图| 久久久香| 99热免费观看| 三级黄色大片视频| 亚洲AV另类| 538任你爽视频不一样的| 亚洲婷婷婷| 亚洲成人av在线| 五月天伊人综合| www99久久| 婷婷在线免费| 五月婷无码| 99精品7| 凹凸操Av| 99热官网| 99热在线观看| 色综合99色| 人人看人人97| 18av天堂| 丁香五月区| 五月丁香亭亭| 欧美丁香婷婷五月| 超碰在线网站9| 97久久精品视频| 精品人妻在线| 色婷婷丁香五月天在线视频| 国产精品色婷婷AV综合色色| 91热爆在线| 五月天婷婷综合| 99热人人操人人操| 久久久激情| 欧美五月丁香在线观看| 婷婷五月天福利| 九九色综合| 五月日韩中文字幕| 99热国产精品| 夜丁香五月婷婷| 久久9久| 中文字幕有多少字| 婷婷欧美综合| 这里只有精品免费视频在线观看 | 亚洲成人在线播放| 涩婷婷五月天| 天天日天天舔| 操日本三片99| 天天添天天摸天天天天做| 激情五月婷婷网| 色综合激情| 97成人丁香| 91色五月| 五月丁香六月情| 这里只有精彩视频| 色色色色区| 五月丁香六月婷婷在线小说视频| 久碰婷婷视频| 国产黄色大片| 婷婷色香六月综合激情| 99热老司机| 国产精品成av人在线视午夜片| 色综合色综合网| 五月婷婷婷婷网| 国产精品久久久久久久久久| 色欲天天综合| 第四色婷婷丁香五月| 精品人妻伦一二三区久久| 爆乳熟女一区二区三区爆乳| 色婷婷丁香五月综合| 激情婷婷六月天| 精品99在线观看| 99精品无码网站| 99视频在线| 五月婷久久久| 中文AV网| 久操大屁股女人av| 17.c黄色| 亚洲日本三级片| 玖月婷婷爱丁香| 亚洲网视屏| 亚洲成人av在线播放| 操逼棍操逼| 这里有精品99| 九九热99视频| 久久99久久99精品免观看粉| 狠狠色大香蕉| 一本色道久久综合狠狠躁小说| 色五月婷婷啪啪五月| 五月花婷婷| 久久五月天色婷婷| 97人人超| 开心深爱五月天| 日韩视频99| 亚洲精品视频在线播放| 99热精品在线| 欧美性二区| 日日爽日日| 先锋五月婷婷丁香草草| 狠狠干狠狠色| 99re最新地址视频| 这里有精品| 五月丁香久久久日婷婷久久婷婷日| 热99在线| 色色色精品无码区| 亚洲无AV在线中文字幕| 青青草视频福利| 国产内射婷婷| 亚洲热视频在线| 国产色香蕉精品五夜婷| 五月天婷婷在线视频| 九九偷拍网| 五月丁香在线| 91精品久久久久久久| 日本123区日韩欧美不卡在线看| 五月天久久综合婷婷丁香| 91色五月在线观看| 五月精品| 色999;丁香五月| jiZZdr| 99热香港| 97操碰人免费| 色婷婷五月天成人网| av在线激情| 国产毛片精品一区二区色欲黄A片| 丁香六月色婷婷欧美| 成AV人片一区二区三区久久| 亚洲成人乱码av网站| 亚洲视频在线网| 色色无码| 激情六月丁香综合| 男同色五月开心五月激情五月| 五月婷六月| 4399在线日本A片| 五月天伊人| 思思w99| 色色综合院| 丁香六月啪| 五月婷婷丁香伦理网| 玖玖综合色区在线观看| 激情五月丁香五月| 婷婷伊人五月| 日韩欧美一级大黄网站| 99五月香婷婷丁香在线视频| 激情九色| 九九视频热| 亚洲成人中文字幕| 色婷婷XXXXX| 色五月激情五月| 色色com| 深爱五月婷婷开心中文字幕| 视频1区2区| 可以看的av| 综合网天天| 亚洲第一色网站| 五月丁香激情啪啪网| 婷婷色色五月天| 五月草视频| 国产色丁香| A1片久久| 色五月亚洲| 综合久久婷婷| www.夜夜操.com| 日本在线视频手机播放五月婷| 色综合色综合色综合| 99色色网| 午夜九九九九九九九九九九九九九| 丁香五月亭亭六月综合激情网| 美欧成人视频| 天堂在线伊久| 国产毛片欧美毛片久久久| 色综合天堂| 色五月在线视频观看| 99色色热| 久久99视频| sewuyuetingtingiii| 成人av在线网| 亚洲激情AV| 五月天婷婷情色| 国产精品天天狠天天看| 亚洲操b| 色综合久久88色综合天天看| 丁香久久久| 玖玖在线资源视频| 五月丁香久久精品在线观看| 久久久性爱视频| 久久99精品久久久| 久久五月天丁香| AV成人在线网站| 丁香五月性| av人人干| 五月丁香天堂网| 色婷婷操逼| 天天爱天天日| 色综合视频在线| 国产伦亲子伦亲子视频观看| 五月丁香网站| 狠狠综合网| 久久婷婷视频| 99热这里只有精品1| 第四色激情网| 九月婷婷综合| www.久热| 99热精品在线| 丁香五月花| 成人美女网| 午夜不卡久久精品无码免费| 丁香婷婷老熟女综合网| 亚洲无码 图片区| 狠狠色综合五月人人| 国产又爽又猛又粗的视频A片| 色五月网址| 色婷婷丁香五月| 国产精品18久久久| 色爆五月| 九久九精品| 亚洲人成网站999久久久综合| 国内精品免费一区二区2009| 免费99色| 亚洲成人无码网站| 91九九| 色五月xxx| 这里只有精9| 婷婷夜夜夜夜| 99精品大片| 99爱爱网| 丁香六月婷婷色XXXXX| 亚洲成人网站在线观看| 人人爽网| 亚洲操B视频| 午夜色婷婷| 婷婷黄色五月天在线视频| 欧美婷| 夜夜干 夜夜操| 五月丁香婷婷综合久久| 婷婷午夜| 激情五月最新网址| AV在线观看网站| 在线观看熟女少妇| 丁香五月第四色88| 九九热最新| 老司机日日夜夜青草| 国产99久久久国产精品免费看| 丁J香六月首页| 日韩av在线电影| 侠女刀之记忆电影在线看免费| 日日噜狠狠色综合久久| 天天干天天干天天干| 99热免费| 五月婷婷色色网址| 久鲁鲁色网| 婷婷五月天激情综合深爱激情 | 日本色天堂| 人人干天天操五月丁香| 五月天激情网图片| 亚洲国产精品VA在线看黑人| 成人在线视频一区| 欧美色播综合在线观看| 99色 | 任我肏视频精品| 9久久精品| 激情丁香五月婷婷啪啪| 天天激情站| 丁香婷婷综合影院| 色婷婷五月天激情在线播放| 四月婷婷五月丁香| 亚洲成人在线在线| 99re在线视频精品,这里只有精品18,| 人妻久久久久久久久久| 婷婷91| www.9797国产| 热99热9| 丁香六月激情| 神马欧美精| 五月精品免费XXX| 九九黄色网| 婷婷伊人綜合| 色婷婷亚洲在线| 26uuu国产| 婷婷九九视频| 亚洲色综合性| 成人精品视频99在线观看免费| 182TV亚洲| 色综合激情| 狠狠精品干练久久久无码中文字幕| 婷婷五月天激情小说| 天天艹夜夜艹| 九九Y精品热播| 伊人综合网4| 五月丁香综合激情| 91丨九色丨43老版熟女| 一区二区免费看| 婷婷综合伊人| 色六月视频| 国产XXXX搡XXXXX搡麻豆| 伊人网欧美在线男人天堂五月丁香| 精品人妻一区| www.久久色.com| 五区毛片七区毛片| 丁香五月婷婷色综合| 五月综合激情图片| 嫩BBB搡BBBB榛BBBB| 综合激情啪啪| 久热婷婷| 美女丁香五月天| 精品久久久人妻| 五月丁香综合啪啪| 91天天操天天干天天射| 99ri精品视频在线观看| 成人欧美日韩| 五月丁香六月香香蕉| 综合久久高清| 久久久99视频| 婷婷五月天激情网| 欧美A级网站| www.婷婷五月| 欧美日韓成人亚洲精品另类| 欧美精品XXXXBBBB| 丁香五月综合在线| 成人婷婷色综合| 天天视频亚洲| 92久操视频| 岛国av网站| 婷婷丁香五月天影院 | 日日.c| 亚洲精品网址| 丁香婷婷色情| 亚洲综人色综网| 国内外色色色色色成人视频| 婷婷五月天色网久| 婷婷9月天| 天天日天天干天天爽| 色香久久| 538在线精品| 激情播丁香| 日本韩国视频在线观看社区免费的9| 综合色综合| 六月丁香成人| 超碰在线人妻| 六月丁香婷婷开心综合基地| 婷婷桃色网| 激情第四色| 丁香六月婷婷久久综合| 国产古装妇女野外A片| 婷婷精品综合| 99操久久| 四川女人毛多水多A片| 亚洲va欧洲va国产va不卡| 色情婷婷。| 亚洲精品视频在线| 99热精品在线播放| 综合啪啪| 六月婷婷毛片| 国产激情在线| 亚洲色欲欧美一区二区三区| 91大神在线免费看视频全集男男一起操| www.婷婷| 五月丁六月香av| 久久九九九九| 久久婷婷亚洲| 色五月婷婷小说亚洲中文字幕组| 99热精品在线播放| 激情五月四色| 欧美久热| 91人人爽久久涩噜噜噜| 五月婷婷激情综合在线| 超级碰碰碰久久网站| 成人短视频在线观看| 天天成人综合视频| 婷婷综合五月| 久久婷婷大香蕉| 久久激情五月| 99热色精品| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 色色综合院| 中文字幕黄色片| 六月激情久久| 欧美黑人巨大猛烈cuckold| 亚洲激情综| 久久您您综合网| 成人看片网站| 激情五月天偷拍综合网| 久久伊人日日夜夜| 欧美一级色| 热婷婷在线视频| 国产亚洲精品久久久久苍井松 | 人妻丰满精品一区二区A片| 丁香婷婷色九月| 五月天激情社区| 天天日夜夜高潮| 精品久久9| 影音先锋91男人资源在线播放| 日日夜夜干| 国产精品成人AV在线| 五月天久久综合婷婷丁香| 综合久色五月| 五月丁香激情啪啪| 久操干| 五月天另类小说久久小说网| 播播网色播播| 婷婷综合五月天| 播五月丁香三月婷婷| 五月激情黄色小说| 婷婷丁香五月天色区| 人人草公开操| 日本综合色图| 婷婷伊人久久| 91人人澡人人爽人人看| 婷色视频| 97人妻碰碰碰碰碰久久久久久| 综合色、色综合| 色噜噜狠狠色综无码久久合欧美| 婷婷激情图片| 狠狠色丁香| 九九色色网| 五月天丁香综合久久国产| 婷婷五月激情五月激情| 激情五月四色| 婷婷色欧美激情| 五月丁香六月婷综合成人综合| 天天日夜夜夜操操操操| 五月婷婷开心色伊人| 人妻系列久久久久久久久久久| 九月婷婷| 人妻久久做| 色情·com| 亚洲色色在线| 开心五月丁香综合久久| 五月天激情小说电影| 国产欧美婷婷五月| 午夜爱爱爱成人| 9999色色色色| 啄木鸟丝袜美女福利视频| 99热的无码| 无码任你操| 亭亭玉月丁香| 亚洲成人av在线| www99热| 99久久婷婷| 一本道在线电影| 91919191919久久成人视频| 综合福利网| 婷婷五月天性爱视频| 99热久97| 色婷婷香蕉| 天天搞夜夜叫| 亚洲婷婷五月天激情综合| 婷婷五月深深爱| 色5月丁香婷婷| 丁香六月久久| 五月天综合在线| 伊人久久婷婷五月综合97色| 国洲夜色亚热在线久久| 久久永久视频| 婷婷在线五月天观看| 97好吊操| 狠狠干综合网| 五月天婷婷久久| 亚洲六月综合激情久久下卡| 9久操| 免费九九热| 26UUU精品一区二区Com| 丁香五月五月婷婷| 激情五月天 婷婷| 伊人婷婷福利网| 国产午夜精品一区二区| 五月丁香激情片| www.夜夜.com| 日良久久| 一二线视频 另类| 99啊精典免费视频| 99热精品网| 天天天干夜夜夜操| 婷婷五月天久久久| 日韩AV在线免费| 欧美婷婷六月丁香综合色| 色婷亚洲| 色色性爱视频| 亚洲精品另类| 五月天另类小说亚洲| 五月天婷婷中文字幕在线播放| 97影院一级片| 成 人片 黄 色 大 片| 九九色天堂| 五月婷婷就去色| 另类小说五月天| 亚洲日韩乱码一区二区三区四区| 9999热在线观看| 五月婷婷色丁香| 五月丁香无码| 97成人丁香| 99久热这里只有精品视频删减版| 亚洲天堂aaa| 99热亚洲| 4399在线日本A片| 色噜噜婷婷| 色综合色综合网| 99热这里有精品首页10| 6080av| 色五月天丁香| 大香伊人婷婷影院| 天天综合干| 色999亚洲人成色| 99在线综合视频| 综合色天天| 色丁香五月| 久久久久8888| 天天婷婷综合亚洲亚洲| 97在线观视频免费观看| 九九亚洲视频| 丁香五月婷婷av| 伊人成综合五月婷婷| 五月丁香综合伦理片| 亚洲无码色色| 久热超碰91| 天天综合影院| 免费看欧美成人A片无码| 97在线视频人妻九色| 日本色综合| 五月天堂六月丁香亚州中文字幕久久 | 思思热高清在线观看| 夫妇交换刺激做爰| 久久这里只精品66| 久草天堂| 插逼综合网| 免费观看的av| 天天艹| 久久色五月天综合网| 久久99热网| 26uuuu精品一区二区| A久久| 丁香五月在线伊人| 婷婷五月天开心网| www超碰| 欧美99热| 99黄色性生活| 99操逼| 91ncom.色| 久婷婷| 丁香色婷婷| 老司机日日夜夜青草| 中文无码婷婷| 五月丁香影院| 五月丁香综合啪啪| 亚洲六月婷婷| 激情99。| 免费看成人AA片无码视频吃奶| 99热 免费| 禁欲电影完整版在线播放| 99热99热在线观看| 中文字幕乱码亚洲精品一区| 超碰在线caop| 丁香五月天欧美| 高潮毛片又色又爽免费| 五月丁香六月合| 五月婷婷伊| 99re思思热久久| 国产色视频网站2| 97干在线播放| www色婷婷| 五月丁香| 米奇影视五月天| 国产亚洲成人综合| 国产这里只有精品| 久久东京热婷婷五月| 99综合| 丁香五月婷婷88在线| 丁香六月婷婷操逼网| 激情综合网五月激情| 婷婷五月天中文字幕| 99精品在线播放| 色月视频| 五月色丁香婷婷综合| 国产九九一区二区三区| 91viP在线看| 精品一二三区久久AAA片| 五月丁香六月综合激情网| 丁香花五月天婷婷成人社区| 五月婷婷av| 亚洲成人一区| 蜜臀AV在线观看| 久久亚洲激情五码| 99免费热视频在线| 青青草免费公开视频| 色狠狠综合入口| 99re热99| 五月天成人网在线观看| 中文字幕AV网址| 色优久久| 九九九九这里只有精品| 亚洲成人网在线观看| BBWCUCKOLD精品熟妇| 99A片| 激情小说五月天| 男人大jjc女人免费视频| 久久98热re| 丁香五月婷婷六月婷| 碰碰碰91| 色玖玖| 婷婷五月天伊人| 99热这里只有精品国产免费| 色五月婷婷丁香凹凸| 外国碰视频网站97| 国产成人va在线| 超碰超碰在线| 99se丁香| 91九九| 激情五月丁香六月| 凹凸7777操操操| 五月天婷婷激情在线色图| 五月天婷婷色| 久久天堂| 色五月婷婷婷婷| 色色日韩网| 久碰久| 人妻丰满精品一区二区A片| 天天舔天天摸| 婷婷精品在线| 国产成人+综合亚洲+天堂| 97色碰碰公开视频| 99热这里只有精品9| 色五月av| 久久九九99亚洲国产久精综合| 久久久97| 金品在线视频99| 五月天开心色色网| 色色热| 欧美日本国产欧美日本韩国99| 久热最新视频 | 97精品在线| 天天草比天天爽| 婷婷色播综合五月| 亚洲六月婷婷| 日本一区二区三区精品视频| 亚洲亚洲人成综合网络| 大香蕉伊人久久| 91视频综合网| 日日爽日日爽| 人人天堂操| 婷婷激情五月天网站| 丁香五月欧美激情| 高清国产AV| 久久玖玖99| 国产黄色在线观看| 99热官网| 这里只有精品视频在线| 影音先锋一区二区三区| 99热这里全都是精品| 久色资源网| 色婷婷五月天综合网| 婷婷五月天色综合翘| 激情五月丁香婷婷夜夜操| 五月丁香六月综合基地| 国产成人AV在线播放| 9精品一区| 丁香操逼| www.久99| 99久久国产综合精品五月天喷水\| 亚洲精品久久久久久久久久吃药| 99性色| 狠狠插狠狠操| 欧美色色色色色| 亚洲操b| 99视频在线| 九九热精品视频| 婷婷丁香六月天| 久久激情五月| 午夜不卡久久精品无码免费| 色色婷| 69精品人人人人| 三级片AAA久久久AAA久久久AAA | 99热精品无码| 五月天婷婷视频小说| 这里有精品| 色九亚洲| 色综合色综合网| 99热这里是精品| 综合网色| 国产毛片精品一区二区色欲黄A片| 成人做爰A片免费看视频| 极品人妻VIDEOSSS人妻| 婷婷伊人久久无码色五月| 97超级碰人人| 久久一伦| 久久伦乱| 五月天婷婷色在线视频免费观看 | 婷婷六月中文字幕| 婷婷五月成人系列| 5月丁香婷婷激情网| 9有码中文| 欧美日韩成人在线| 蜜臀AV在线观看| av在线免费播放观看| 丁香五月最新网址| 久9视频| 天天爱天天做天天舔| 色五婷婷| 超碰三级片| 天天日夜夜| 色香蕉婷婷| 99色精品| 樱花99视频| 五月婷色激情五月| 人人97碰| 99热这里有精品| 91免费试看| 另类专区在线观看| 爱草视频在线| 色99在线观看| 色五月天婷婷| 久久九九99视频| 久久精品63| 奸逼视频| 能看的av网站| 日本色婷婷| 一区二区乱视频码| 成人精品在线观看| 六月丁香激情综合| 97色片| 五月美女婷婷风骚| 99久久www| 久草五月天电影网| 九九热精品| 99热精品在线观看| 成人在线高清| 热99视频精品| 丁香五月婷婷AV在线| 1024亚洲无码| 日本综合久久| 极骚大香蕉伊人| 欧美综合五月丁香六月婷| 99热这里有精品24| 综合视频久久| 超碰97在线操| 成人av在线电影| 欧洲免费视频色| 丁香五月久久| 31色区视频免费看| 色五月涩涩婷婷蜜桃| 五月天网站免费欧美| 天天爽天天操| 五月丁香九九| 狠狠色五月| 97久久久| 日本在线观看aaa 99| 综合久久婷婷五月丁香| 开心五月天激情网| 熟女强人妻一区二区三区四区无| 日日噜狠狠| 日韩色色视频| 91中文狠狠综合| 婷婷五月四狠狠| 99九九热视频| 五月天另类小说久久小说网| 五月天天天操天天爽夜夜操| 黄色一级影片| 韩国不卡AC视频| 五月天婷综合网站| 日韩啪啪网| 色五月欧美| 色吧五月婷婷| 春色激情| 久久婷婷五月草视频在线播放| 超碰人人操人人干| 婷婷五月中文字幕| 婷婷丁香色无五月| 韩国中文字幕91| 在线,国产,色,热视频| 91操操| 婷婷五月综合色拍| 天天干天天日天天操| 婷婷伊人综合| 激情综合色五月六月婷婷| 一本色道久久综合狠狠躁小说| 欧美日本黄色| 丁香五月婷婷五月| 国产亚洲成AV人片在线| www,五月天激情| 欧美性生交XXXXX无码小说| 婷婷五月天av网| 这里只有精品视频在线| 五月丁香久久综合| 爱久综合| 99热免费精品| 日本啪啪网| 99热亚洲精品| 五月色婷婷影院| www.婷婷.com| 成人版视频在线观看| 超级碰碰碰碰视频| 九九热精品| 7777精品伊人久久久大香线蕉最新版| 五月婷婷丁香社区| 丁香五月婷婷激情中文| 99热这里只| 手机在线视频观看9| 开心网五月色婷婷| 婷婷 丁香 久久| 国产激情在线| 五月丁香婷婷中文| 天天日夜夜爽|