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

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(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 時(shí)才發(fā)現(xiàn)僅僅把訓(xùn)練框架換成 TPU 版本是遠(yuǎn)遠(yuǎn)不夠的。整個(gè)編譯鏈路、數(shù)據(jù)管道、算子融合策略和顯存規(guī)劃都變了踩了一圈坑之后才慢慢把 TPU 軟件棧的運(yùn)作方式理清楚。這篇文章會(huì)把 Google TPU 軟件棧的核心組件拆開梳理并結(jié)合 JAX、TensorFlow 分布式策略給出可落地的訓(xùn)練示例。適合正在評(píng)估 TPU、剛拿到 TPU 配額準(zhǔn)備遷移訓(xùn)練任務(wù)、或者已經(jīng)遇到底層報(bào)錯(cuò)但搜不到完整解釋的開發(fā)者。讀完你能掌握 TPU 的完整軟件鏈路、訓(xùn)練啟動(dòng)方式、常見編譯報(bào)錯(cuò)定位思路以及把模型真正跑在 TPU 上而不只是跑在“模擬器里”的實(shí)踐經(jīng)驗(yàn)。1. TPU 到底是什么不止是“GPU 的替代品”1.1 AI 時(shí)代對(duì)芯片提出的新要求過去十年深度學(xué)習(xí)算力的主力是 GPU。GPU 的核心優(yōu)勢(shì)在于并行計(jì)算能力很強(qiáng)可以同時(shí)處理大量簡(jiǎn)單運(yùn)算非常適合矩陣乘法和卷積這類深度學(xué)習(xí)算子。但隨著模型規(guī)??焖倥蛎浻绕涫谴笠?guī)模 Transformer、推薦系統(tǒng)和多模態(tài)模型出現(xiàn)之后算力需求不再只看單卡峰值還要看集群擴(kuò)展效率、內(nèi)存帶寬、編譯優(yōu)化程度和單位算力的性價(jià)比。Google 正是在這種背景下推出了 TPUTensor Processing Unit張量處理單元。它不是為了替代 GPU 而設(shè)計(jì)的通用芯片而是為了加速 TensorFlow 和 JAX 這類深度學(xué)習(xí)框架中的張量運(yùn)算而專門定制的 ASIC 芯片。你可以把它理解成一個(gè)“為矩陣乘法而生的專用加速器”在特定負(fù)載下的能效比和吞吐表現(xiàn)非常突出。這里的“專用”意味著兩件事一方面TPU 在矩陣運(yùn)算、卷積運(yùn)算和大規(guī)模分布式訓(xùn)練上性能很強(qiáng)另一方面它對(duì)模型結(jié)構(gòu)的支持并不是無條件的某些自定義算子如果不適配 XLA 編譯器會(huì)直接卡在編譯階段。1.2 CPU、GPU、TPU、NPU 的定位區(qū)別先用一個(gè)表格把這幾種芯片的定位區(qū)分清楚芯片全稱定位典型場(chǎng)景CPUCentral Processing Unit通用計(jì)算強(qiáng)順序執(zhí)行操作系統(tǒng)、數(shù)據(jù)庫、邏輯控制GPUGraphics Processing Unit并行計(jì)算通用加速深度學(xué)習(xí)訓(xùn)練、渲染、科學(xué)計(jì)算TPUTensor Processing Unit張量專用 ASICTensorFlow/JAX 大規(guī)模訓(xùn)練與推理NPUNeural Processing Unit神經(jīng)網(wǎng)絡(luò)專用處理器手機(jī)端推理、邊緣 AI、端側(cè)加速從開發(fā)者的角度看這套術(shù)語體系經(jīng)?;煊糜绕涫窃诙藗?cè)場(chǎng)景里 NPU 和 TPU 的界限并不明顯。但如果你做的是云上大規(guī)模訓(xùn)練TPU 和 GPU 的差異會(huì)直接影響代碼寫法、編譯器行為、數(shù)據(jù)加載策略和故障排查方式。1.3 TPU 軟件棧的整體構(gòu)成TPU 硬件本身只是一塊芯片真正讓它跑起來的是軟件棧。Google TPU 軟件棧通常可以分成幾層前端框架層提供 TensorFlow、JAX、PyTorch 等框架的 TPU 后端接口。編譯器層XLAAccelerated Linear Algebra編譯器承擔(dān)了關(guān)鍵的角色。運(yùn)行時(shí)層libtpu、TPU Runtime、設(shè)備驅(qū)動(dòng)等負(fù)責(zé)與硬件通信。系統(tǒng)調(diào)度層在 Cloud TPU 場(chǎng)景下負(fù)責(zé)資源創(chuàng)建、調(diào)度和生命周期管理。下面這張 ASCII 簡(jiǎn)圖可以幫助理解數(shù)據(jù)流向PyTorch / TensorFlow / JAX ↓ 前端圖表示Graph / Program ↓ XLA 編譯器HLO → 優(yōu)化 → LLVM / TPU 指令 ↓ TPU Runtimelibtpu / 設(shè)備驅(qū)動(dòng) ↓ TPU 硬件理解這個(gè)軟件棧是很有必要的因?yàn)楹罄m(xù)很多報(bào)錯(cuò)都不是框架層報(bào)出來的而是 XLA 編譯階段拋出的。你不能只盯著 TensorFlow 的報(bào)錯(cuò)堆??催€得順著 XLA 的報(bào)錯(cuò)信息往下追。2. TPU 軟件棧核心組件拆解2.1 XLA 編譯器從框架圖到 TPU 指令的橋梁XLA 是 TPU 軟件棧里最核心、最容易被忽視的一層。XLA 的全稱是 Accelerated Linear Algebra它是 Google 推出的領(lǐng)域?qū)S镁幾g器專門用來把 TensorFlow、JAX 等框架的計(jì)算圖編譯成高效的底層指令。XLA 的工作過程大致如下框架層把計(jì)算任務(wù)表達(dá)成計(jì)算圖或程序。XLA 將計(jì)算圖轉(zhuǎn)換成 HLOHigh Level Operations高級(jí)操作表示。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)你給一個(gè)函數(shù)加上jax.jit時(shí)JAX 會(huì)做兩件事把函數(shù)轉(zhuǎn)換成計(jì)算圖然后交給 XLA 編譯。import jax import jax.numpy as jnp # 加 jit 后函數(shù)不會(huì)一行一行執(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并不是簡(jiǎn)單地把函數(shù)內(nèi)部代碼“合并成一個(gè)整體”而是讓 XLA 拿到整個(gè)計(jì)算流程后做算子融合。比如上面的matmul addXLA 在編譯后很可能融合成一個(gè)融合算子Fusion減少核函數(shù)啟動(dòng)次數(shù)和設(shè)備緩存回寫的次數(shù)。生產(chǎn)環(huán)境里XLA 編譯失敗通常表現(xiàn)為類似“Detected unsupported operations when trying to compile graph”的報(bào)錯(cuò)這類問題不是簡(jiǎn)單的語法錯(cuò)誤而是某個(gè)算子 XLA 還不支持或無法高效融合。2.2 JAX 與 TensorFlow 對(duì) TPU 的支持方式JAX 是目前 Google 官方推薦的 TPU 訓(xùn)練框架之一。JAX 的設(shè)計(jì)思路是把 NumPy 風(fēng)格的 API 和自動(dòng)微分、JIT 編譯結(jié)合再配合pmap、shard_map等并行抽象天然適合 TPU 這種需要精確控制數(shù)據(jù)切分的加速器。TensorFlow 對(duì) TPU 的支持則主要通過TPUStrategy實(shí)現(xiàn)。TPUStrategy是 TensorFlow 分布式策略中的一種它負(fù)責(zé)把模型變量、優(yōu)化器狀態(tài)和數(shù)據(jù)分配到多個(gè) TPU 核心上。PyTorch 用戶也不用太擔(dān)心PyTorch/XLA 項(xiàng)目已經(jīng)提供了torch_xla包讓 PyTorch 模型可以跑在 TPU 上同時(shí)支持 XLA 編譯優(yōu)化。不過平心而論P(yáng)yTorch 在 TPU 上的生態(tài)成熟度目前不如 JAX 和 TensorFlow如果你是從 PyTorch 社區(qū)遷移過來的建議預(yù)留更多時(shí)間做算子兼容性驗(yàn)證。2.3 libtpu 與低層運(yùn)行時(shí)libtpu 是 TPU 的低層運(yùn)行時(shí)庫負(fù)責(zé)主機(jī)與 TPU 設(shè)備之間的通信、內(nèi)存管理、指令提交等。在 Cloud TPU 環(huán)境中用戶代碼通過 gRPC 與 TPU Worker 通信但具體指令的下發(fā)是由 libtpu 完成的。這里想強(qiáng)調(diào)一個(gè)容易踩坑的點(diǎn)TPU 的虛擬地址頁大小是 16KB而絕大多數(shù) x86 Linux 主機(jī)默認(rèn)是 4KB 頁大小。當(dāng)你用 pip 安裝編譯好的包時(shí)如果包本身是在 4KB 頁環(huán)境下編譯的運(yùn)行到低層庫調(diào)用階段可能出現(xiàn)頁面大小不匹配的報(bào)錯(cuò)這就是網(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ù)場(chǎng)景不同有幾種主流選擇Google Cloud TPU適合長(zhǎng)期訓(xùn)練任務(wù)支持創(chuàng)建 TPU Pod 和 TPU VM。Google Colab提供免費(fèi)的 TPU 運(yùn)行時(shí)適合學(xué)習(xí)和小規(guī)模實(shí)驗(yàn)。TPU Research Cloud面向研究者的免費(fèi) TPU 配額項(xiàng)目適合科研場(chǎng)景。本地模擬器適合調(diào)試代碼邏輯但性能完全不能代替真實(shí) TPU。如果你是第一次接觸 TPU建議從 Colab 開始它能用很短的時(shí)間驗(yàn)證你的代碼是否走通了 TPU 軟件鏈路。等代碼穩(wěn)定后再上 Cloud TPU 集群做真實(shí)規(guī)模訓(xùn)練。下面通過一個(gè)簡(jiǎn)單的命令檢查 TPU 運(yùn)行時(shí)環(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 中通常會(huì)自動(dòng)識(shí)別 TPU但如果你使用的是舊版本或使用自定義鏡像就需要手動(dòng)初始化import jax import jax.numpy as jnp # 有些舊版本需要手動(dòng)初始化 TPU # 新版 JAX 一般會(huì)自動(dòng)初始化無需顯式調(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()會(huì)返回 TPU 設(shè)備列表jax.default_backend()返回tpu。如果你的輸出是cpu或gpu說明 JAX 并沒有真正訪問 TPU需要檢查鏡像版本或運(yùn)行環(huán)境。有一個(gè)經(jīng)常被忽略的問題Colab TPU 切換后必須重啟運(yùn)行時(shí)、重新安裝 JAX 版本否則 JAX 內(nèi)部緩存的設(shè)備信息不會(huì)刷新。如果切換 TPU 類型后jax.devices()仍然顯示舊的設(shè)備列表優(yōu)先考慮重啟運(yùn)行時(shí)而不是調(diào)試代碼。3.3 從源代碼編譯還是預(yù)編譯包在 TPU 上安裝 JAX 時(shí)我一直建議優(yōu)先使用官方發(fā)布的預(yù)編譯包因?yàn)檫@些包會(huì)和 TPU 的頁大小、指令集和運(yùn)行時(shí)庫做過匹配測(cè)試。只有在需要修改 JAX 源碼、debug 底層行為或者在 TPU VM 上做二次開發(fā)時(shí)才考慮從源碼編譯。下面是一個(gè)在 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]這個(gè) extra 的依賴列表和可用的 wheel 索引會(huì)隨著版本變化建議以官方 JAX 倉庫或 Google Cloud 文檔中的安裝命令為準(zhǔn)。不匹配的版本經(jīng)常導(dǎo)致 libtpu 無法加載報(bào)錯(cuò)信息里會(huì)出現(xiàn)類似“Could not load libtpu.so”的字樣。4. 完整實(shí)戰(zhàn)用 JAX 在 TPU 上訓(xùn)練一個(gè)圖像分類模型講完概念和準(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)建一個(gè)項(xiàng)目目錄把代碼按模塊劃分好tpu-jax-demo/ ├── main.py ├── model.py ├── data.py ├── train.py └── requirements.txt數(shù)據(jù)部分使用 TensorFlow Datasets 中的 MNIST 數(shù)據(jù)集。MNIST 雖然簡(jiǎn)單但它覆蓋了數(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ù)加載是一個(gè)經(jīng)常被忽略的瓶頸。CPU 端的數(shù)據(jù)加載速度如果跟不上 TPU 的消費(fèi)速度訓(xùn)練曲線會(huì)出現(xiàn)明顯的周期性停頓。prefetch是解決這個(gè)問題的最簡(jiǎn)單手段。4.3 定義模型與訓(xùn)練循環(huán)創(chuàng)建model.pyimport jax.numpy as jnp from flax import linen as nn # 簡(jiǎn)單卷積網(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 一起使用時(shí)體驗(yàn)最自然。如果你之前用過 PyTorch 的nn.ModuleFlax 的nn.Module風(fēng)格會(huì)比較接近。創(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}) # 每個(gè) epoch 結(jié)束評(píng)估一次 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()這段代碼有幾個(gè)關(guān)鍵點(diǎn)使用jax.jit裝飾訓(xùn)練和評(píng)估函數(shù)讓 XLA 將整個(gè)計(jì)算過程編譯成融合算子。每個(gè) 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正常輸出會(huì)類似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 會(huì)自動(dòng)識(shí)別多個(gè)設(shè)備。想要利用多個(gè)核心并行訓(xùn)練最簡(jiǎn)單的方式是使用jax.device_put和pmap對(duì) 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 到多個(gè)設(shè)備 images images.reshape((num_devices, -1) images.shape[1:]) labels labels.reshape((num_devices, -1))這只是一個(gè)非常簡(jiǎn)化的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 的分布式策略之一。它會(huì)自動(dòng)完成幾件事把模型變量復(fù)制到每個(gè) TPU 核心。把全局 batch 切分成每個(gè)核心處理一個(gè)子 batch。優(yōu)化器在反向傳播后做跨核心梯度 AllReduce。對(duì)訓(xùn)練循環(huán)內(nèi)部使用tf.function編譯配合 XLA 加速。它的關(guān)鍵思路是“數(shù)據(jù)并行 同步更新”。用戶只需要寫一份單機(jī)單卡代碼策略層負(fù)責(zé)把計(jì)算擴(kuò)展到多個(gè) 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)練過程中會(huì)不斷出現(xiàn)“等待數(shù)據(jù)”的空窗期。6. 常見問題與排查思路6.1 TPU 初始化失敗或設(shè)備不可見問題現(xiàn)象RuntimeError: Unable to initialize the TPU system.可能原因當(dāng)前運(yùn)行時(shí)不是 TPU 環(huán)境。JAX/TensorFlow 版本與 TPU 運(yùn)行時(shí)版本不匹配。運(yùn)行時(shí)使用舊內(nèi)核沒有加載必要的驅(qū)動(dòng)。排查步驟先檢查設(shè)備文件是否存在在 TPU VM 上執(zhí)行l(wèi)s /dev/accel*。再執(zhí)行jax.devices()或tf.config.list_logical_devices(TPU)看框架層是否識(shí)別到設(shè)備。確認(rèn)虛擬環(huán)境中的包版本與當(dāng)前 TPU 版本匹配。重啟運(yùn)行時(shí)尤其是在切換 TPU 類型之后。6.2 XLA 編譯報(bào)錯(cuò) “unsupported operations”問題現(xiàn)象Detected unsupported operations when trying to compile graph可能原因模型里使用了 XLA 不支持的算子。自定義 Layer 或自定義 JAX 函數(shù)里調(diào)用了無法被轉(zhuǎn)換成 HLO 的 Python 控制流。解決思路逐步裁剪模型定位到具體是哪個(gè)操作不能被編譯。檢查是否是動(dòng)態(tài)形狀問題TPU 上盡量避免 runtime shape 變化。對(duì)自定義算子優(yōu)先考慮能否用現(xiàn)有的 JAX 原生操作重寫。6.3 關(guān)于 16KB page size 編譯包報(bào)錯(cuò)問題現(xiàn)象在安裝或運(yùn)行 TPU SDK 相關(guān)包時(shí)出現(xiàn)類似 “an error occurred while preparing sdk package 16 kb page size” 的報(bào)錯(cuò)。背景原因TPU 運(yùn)行環(huán)境的虛擬地址頁大小是 16KB而常見 x86 Linux 是 4KB 頁。本地下載的預(yù)編譯 wheel 如果是在 4KB 頁環(huán)境下構(gòu)建的運(yùn)行時(shí)會(huì)與 TPU 內(nèi)核模塊或運(yùn)行時(shí)庫不兼容。解決思路不要直接從普通 PyPI 鏡像安裝 TPU 相關(guān)包優(yōu)先使用官方發(fā)布渠道。在 TPU VM 內(nèi)重新安裝匹配版本而不是把本地環(huán)境復(fù)制過去。查看完整日志確認(rèn)是下載失敗還是安裝后運(yùn)行時(shí)崩潰。6.4 OOM 與 batch size 調(diào)整問題現(xiàn)象訓(xùn)練時(shí)出現(xiàn)Resource exhausted錯(cuò)誤??赡茉騜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)行時(shí)環(huán)境錯(cuò)誤 / 版本不匹配檢查/dev/accel*重啟運(yùn)行時(shí)核對(duì)版本XLA 編譯失敗不支持的算子 / 動(dòng)態(tài) shape簡(jiǎn)化模型逐步定位避免動(dòng)態(tài)形狀16KB page size 報(bào)錯(cuò)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í)率使用混合精度時(shí)檢查損失縮放7. 最佳實(shí)踐與工程建議7.1 數(shù)據(jù)管道要提前壓測(cè)TPU 非常“挑食”它的運(yùn)算速度快到如果數(shù)據(jù)管道沒跟上訓(xùn)練就會(huì)空等。建議在正式訓(xùn)練前先單獨(dú)測(cè)試數(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ù)讀取時(shí)間占比過高優(yōu)先使用 TFRecord 格式、interleave并行讀取、prefetch預(yù)加載等手段。7.2 使用混合精度時(shí)需要驗(yàn)證損失縮放TPU 的 bfloat16 支持是它的強(qiáng)項(xiàng)之一。用jax時(shí)可以很自然地把部分參數(shù)轉(zhuǎn)換成bfloat16或使用混合精度訓(xùn)練。但在混合精度下梯度很小的時(shí)候有可能在低精度下溢出導(dǎo)致 NaN。建議開啟損失縮放Loss Scaling機(jī)制并周期性檢查梯度統(tǒng)計(jì)而不是在出現(xiàn) NaN 后才去排查。7.3 模型算子優(yōu)先考慮 JAX/TensorFlow 原生實(shí)現(xiàn)遇到自定義算子時(shí)優(yōu)先檢查原生庫里有沒有替代實(shí)現(xiàn)。XLA 對(duì)原生算子的融合優(yōu)化做得很成熟但自定義算子往往無法被融合會(huì)打亂 XLA 的優(yōu)化策略。如果一定要使用自定義算子至少把“無法編譯”的算子獨(dú)立出來避免拖累整體性能。7.4 成本與資源管理TPU 資源通常是按時(shí)計(jì)費(fèi)的長(zhǎng)期任務(wù)建議配合 checkpoint 和自動(dòng)重啟機(jī)制。這里給出幾個(gè)實(shí)用性建議訓(xùn)練腳本要有穩(wěn)定的 checkpoint 保存與恢復(fù)邏輯。使用搶占式資源時(shí)代碼要能安全處理進(jìn)程中途被回收的情況。創(chuàng)建 TPU 實(shí)例后盡快驗(yàn)證訓(xùn)練腳本避免空轉(zhuǎn)計(jì)費(fèi)。配置監(jiān)控報(bào)警對(duì)異常掉線、訓(xùn)練停滯、指標(biāo)不回傳這些情況做告警。7.5 把訓(xùn)練過程日志化TPU 上的日志查看比 GPU 環(huán)境要麻煩一些尤其是多 worker 場(chǎng)景下。推薦在訓(xùn)練腳本中顯式記錄關(guān)鍵指標(biāo)比如每個(gè) epoch 的 loss、acc、每個(gè) step 的平均耗時(shí)、數(shù)據(jù)加載耗時(shí)等并把日志輸出到統(tǒng)一的日志平臺(tái)方便后續(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)練中途卡死、重啟、性能退化問題時(shí)這些日志是定位問題的唯一線索。8. 總結(jié)Google TPU 軟件棧本質(zhì)上是一條從深度學(xué)習(xí)框架到專用硬件的編譯和運(yùn)行鏈路JAX、TensorFlow、XLA 和 libtpu 各司其職。對(duì)開發(fā)者而言遷移到 TPU 時(shí)最需要調(diào)整的往往不是模型結(jié)構(gòu)本身而是對(duì)計(jì)算圖編譯、數(shù)據(jù)切分、內(nèi)存規(guī)劃這些底層層面的理解。如果你準(zhǔn)備開始嘗試建議從 Colab 免費(fèi) TPU 環(huán)境入手把 MNIST 或自己的小型模型跑通再逐步擴(kuò)展到真實(shí)業(yè)務(wù)模型。遇到 16KB page size、XLA 編譯失敗、TPU 設(shè)備不可見這類問題先順著軟件棧的層級(jí)逐層排查不要一開始就懷疑硬件。只要把 JAX 或 TensorFlow 的 TPU 鏈路跑通一遍后續(xù)在 Cloud TPU 上做規(guī)?;?xùn)練會(huì)順暢得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲精品人妻吞精av| www.五月天| 成人免费福利在线观看| 青青操视频在线| 日韩特级毛片免费观看全集| 国产无码精品久久久久久| 色综合久久久久| 9精品久久久久| 成人性爱高清视频免费看| 男人天堂 天天射| 婷婷亚洲天堂| av天堂精品久久| 老鸭窝日丰县女人| 蜜桃久久综合视频| 中国一级操逼视频| 翔田千里爆乳巨臀无码| 久久久精品九| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 天天内射| 久操操AV电影| 亚洲人妻精品一区二区| 久久久久中出| 欧美在线干| 肏逼视频日本| 久夜视频| wuyechaopeng| 久久久久久久国产| 97色婷| 国产精品成人久久一区二区三区| 91性| 日韩9999| 久久久久久久久九九久孕交| 婷婷AV一区二区三区| 人妻夜夜爽天天爽三区麻豆AV网站| 日韩少妇丰满亚洲| 日韩女模中文造逼| 精品少妇一区二区三区在线视频| 成人无遮挡毛片免费看| 国产免费黄色一级大片| 久久精品一区二区一8| 超碰色老头| 久久久久久久9最新免费视频观看| 婷婷色导航| 91操人| 在线综合 亚洲 欧美中文字幕| 国产精品国产| 久久风骚城市| 久久久精品网| 国产呦精品系列在线观看| 精品人妻一区二区三区蜜桃视频| 亚洲精品 超碰| 91亚洲黑人| 亚洲福利中文字幕在线| 亚洲男人的天堂亚洲| 乱伦av麻豆| 亚洲国产丝袜熟女av| 午夜精品久久久99热蜜桃的功能特点| 国产乱婷婷精品二区三区| 国产懂色精品国产av| 情趣丝袜无码操逼视频| 色在线亚洲视频www| aaa亚无码专区| 激情 欧美 亚洲 小说| 成人线上超碰| 亚洲日韩美国人妻| 激情五月综合网| 日韩人妻精品久久久久| 亚州久久9| 欧美青青视频| 97爱综合| 欧美性爱第一页久久| 人妻少妇被猛烈进入中| 91ise欧美| 成年男人的天堂| 精品一区二区麻豆| 欧美性爱一区二区三区| 精品传媒在线一区| 97在线观| ,成人免费啪啪视频| 免费毛片在线播放| 青青草日本中文字幕| 久久夜夜夜夜| 亚av顶级裸体一区二区三区四区五区 | 久久m| 天天亚洲| 97人人操人人摸人人爱| 性爱av在线免费观看| 国产熟女少妇一区| 爱妻综合网| 玖玖久久久| 中文字幕乱在线伦视频中文字幕乱码在线 | 大香蕉免费乱伦视频| 国产蜜臀精品一区免费尤物| 91撸色网 玖玖网 欧美| 精品国产Av无码久久久伦古装| 一类无码操逼视频| 97精品久久久久久久| 蜜臀va69| 婷婷午夜成人色中色| 亚洲精品97在线| 成人女人国产| 综合色久欲| 97色综合中文网| 国产AV色黄看到爽| 丁香五月性| 综合天天网| 亚洲日韩东京热一区| 欧美啪啪色吧在线| 免费啪啪啪网站18岁| 久久人妻少妇| 亚洲天堂AV在线播放| 啊啊啊啊啊在线观看网址 | 中日韩熟女| 日影院久久婷婷夜夜网| 免费一级性爱久久| 裸模AV女优| 蜜臀久久99精品久久久电影| 91视频国品一二三区| 97国产精品在线观看| 欧美色网| 色综合潮| 国产一区二区三区视频在线看| 殴美,日韩国产伦精品| 久久一区,青青青青草视频在线播放| 97国产精品在线观看| 91成人在线免费视频| 精品国产国产AV| 久久啊啊| 久久久com| 久久永久无码人妻视频| 久久久久久久久九九久孕交| 亚洲日韩在线a不卡99精品| 天天综合精品| 人妻天天爽| 亚州免费啪啪视频| 欧美,亚洲,日韩,v,天堂,手机在线观看| 激情五月综合开心五月| 国产AV人人 夜夜人人澡| 黄片www视频免费| 91女人的网站| 国产亚洲中文不卡二区| 男人的天堂2000| 探花一区二区三| 日本顶级天天操狠狠操夜夜操中文字幕| 免费一级a毛片久久久久久鸭绿欲| 亚洲情色图片区| 嗯啊抽插大香蕉网页| 9997se| 99精品久久久久久久婷婷| 国产视频一区二区三区久久亚洲天堂| 影音先锋少妇| 久草毛片| 麻豆天美久久91| 天天干天天燥| 上特色A在线| 六月婷婷激情| 免费国产电影一区二区| n1038 一二三区| 操逼大黄片| 国产超碰97| 污到发麻的视频 国产| 亚洲伊人a线观看视频| 97免费视频在线观看视频| 黄色av一区二区在线| 一区二区亚州激情久婷婷欧美| 五月婷久久| 一级性爱视频免费观看 | 亚洲天堂另类小说男人| 婷婷亚洲综合| 久久无码成人| 少妇被c 黄 免费观看| 4虎在线视频| 操人91| aaa亚无码专区| 蜜汁欧美| 熟女在线视频| 婷婷在线精品| 中文字幕日韩电影人妻| а√天堂资源官网在线资源| 欧美亚洲激情| 抽插一区二区视频| 欧美 亚洲 另类 综合| 欧洲色色| 99热伊人| 久久草大香蕉| 亚洲综合色网| 日本中文字幕在线电影| 可能人人看人人摸| 久久久久久久九九九九九九| 人人操人人插 - 百度 - 百度| 超碰人人干天天射| 综合性视频99| 精品美女人人干| 天天碰操中国年青熟妇| 嗯啊啊啊轻点视频 | 青女在线| 春色校园综合网| 色蜜AV| 亚洲另类电影| 五月丁香综合啪啪| 五月丁香啪啪网| 精品久久人妻成人网| 第四色奇米影视777| 亚洲色图91| 啪啪啪男女亚洲中文字幕99| 亚洲男人天堂网| 国产精品久久久久久久久久久久久久吹 | 欧美性五月| 好看的久久不射无码影视影院| 男人的天堂在线2| 亚洲美乱| 高清不卡视频| 亚洲视频,小说| 麻豆黄色五月天| 欧美乱色| 美女淫穴| 婷婷精品国产一区二区三区日韩| 日韩丝袜高跟制服在线观看| 很很很很操| 日韩精品电影| 天天在线91| 欧美瑟综合| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 91日韩网站| 国产吹潮女在线观看| 久久宗合亚洲| 国产免费内射视频| 熟妇人妻精品一区二区| 国产精品一区二区三区四区五区| 91老司机在线| 激情五月综合开心五月| 黄aaaaaaaaaaaaaaaaaa色网站| 国产精品免费美女视频| 久久久九九网站| 红杏大香蕉| 久久久精久久久| 91 综合 色| 欧美综合网站999| 欧美日韩狠狠爱| 亚洲av噜噜噜噜噜噜| 性暴力欧美猛交在线直播| 免费观看国产不卡av| 亚洲天堂无码| 97爱免费插| 国产美女91视频| 啊啊啊啊,啊啊好多水 | 午夜精品视频777| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 婷婷综合网站| 日本不卡码黄色| 亚洲精品蜜桃久久久久久久| 中文字幕一区二区三区人妻不卡 | 丁香激情五月| 秋霞午夜视频一区二区| 亚洲欧美综合图片| 94色色电影网| 日本东京热加勒比久久| 丁香五月影院| 中文字幕国产精品1区| 黄日韩| www欧美91| 老熟女搡BBBB搡BBBB视频| 久久久久9999| 熟妇高潮精品一区二区三区下载| 日韩在线观看三级电影| 免费在线观看国内色片网站网址 | 青青草久草| 亚洲熟女精品| 久久久工口| yazhouzaixian| 精品国产91内射久久| 99久久99久久综合| 男人的天堂日韩| 精品国模无码| 国产超碰国产97| 亚洲成人AB| 国产高清免费不卡av| 亚州少妇| 97无码视频在线播放| 综合久久中文字幕综合日韩精品| 日本超碰色精品| 在线视频 亚洲精品| 99∨VTV| 一区二区亚州激情久婷婷欧美| 日韩av无码网站| 色婷婷电影网| 中国91AV| 精品人妻伦一二三区久久| 97视频在线免费播放| 久久受www免费人成| 99热这里只有精| 国产精品天堂| 精品精品精品| 91狠狠综| 麻豆亚洲Av成人无码一区精品| 狠久久| 2018色综合天天操| 99999亚洲| 亚洲九区| 欧美日韩亚洲天堂| 精品国产乱码久久久久久影片| 97就爱干| 日韩在线观看中文字幕视频| 9l视频自拍9l九色成人| 久区视频| 欧美人妻精品| 天堂69亚洲精品中文字| 97色爱| 黄色操人| 欧亚第一综合网| 国产精品久久久久久久久久梁医生| 亚洲精品97在线| 中国农村熟妇毛片视频| 亚洲日产专区婷婷| 大色综合网| 少好三P| 麻豆这里只有精品| 特污精品女优骚货黄色视频在线免费观看| 美女刺激久久国产欧美| 男女性无套 免费九一| 国产高清不卡视频| 亚洲一欧洲中文字幕在线 | 亚洲青青草| 深田咏美亚洲精品福利社| 精品国产乱码久久久影院| 深爱五月婷婷| 99婷婷一区二区| 色娱乐色呦呦夜夜夜夜av| 国产1769在线| 亚洲综合999| 欧美亚洲AN| 成人性爱全视频观看| 久久久日本电影| 97干天天| 国产欧美第五页| 久久性爱视频99| 天天操熟妇| 亚码激情| 欧美性爱视频免费一区一A| 国产久久天堂资源| 超碰1024久久| 性吧在线视频| 3d成人精品一区二区| 密臀在线一区尤物| 超碰无码五月97| 日韩偷拍色图| 色婷五月| 国产一进一出视频网站| 超碰人妻久久| 好湿好紧视频| 97精品网站| 日少妇亚洲版| 丝袜美腿诱惑亚洲欧美视频在线观看 | 人妻少妇精品视频一区二区三区| 欧美91精彩| 91女在线观看| 1024人妻| 中国一区二区亚洲人妻| 午夜福利一区二区影院| 不卡在线观看视频| 一区二区三区看视频| 日日干夜夜欢| 精品96久久| 婷婷四五区| 婬女免费一二三区A片| 国产精品视频麻豆入口| 国产家庭乱伦表演| 蜜臀99久久| 欧美精品不卡一二三四在线91| 白丝jkav| 久操 高清| 宅男91视频在线播放| 人妻少妇久久久| 日韩不卡毛片Av免费高清| 久久久精品中文字幕爱豆| 人人妻人人澡人人爽人人精品浪潮| 亚洲色情在线影视| 久久久久网站-538在线视频-欧美永久乱码| 97天天摸天天碰| 可以免费观看的AV| 韩日精品四区| 九月丁香婷婷| 无码一区二区三区四区五区六区七区八区九区十区视频 | 十八禁啪啦拍视频无遮挡| 久久精品国产亚洲AV嘿嘿| 丁香五六月啪啪| 婷婷色色五月天福利| 九九热国产| 天天噜| 九九热九九| 一二三区精品视频| 亚洲第一视频 欧美风情 日韩| 玖玖爱伊人玖玖爱| 精品综合久久久久久97| 色香欲天天天天综合色| 日韩特一级久久| 亚州熟妇精品| 啪啪啪男女亚洲中文字幕99| 日韩成人人妻网站| 欧美亚州综合网图片| 欧亚揄拍偷拍精品视频| 免费97视频| 久草精品视频| 嗯~啊~快点 死我视频免费看网站| 亚洲图片 激情小说| 东京热熟女亚洲视频网站| 99re只有精品| 吉川爱美亚洲二区在线| 日本精品一区二区三| 后入式999| 久久9999 | 亚洲中文字幕av| 蜜臀aV午夜一区二区三区| 大屁股国产在线视频| 成人欧美日超碰| 超碰97导航| 人妻少妇精品视频一区二区三区| 男人亚洲天堂| 亚洲精品乱码线路中文字幕| 午夜福利av电影在线| 日本三级R| 激情五月天综合网| 超碰天天操你比| 91 偷| 91老熟女视频| 精品无码久久久久久国产浪潮| 亚洲第一无码播放立川理惠| 久久色人体 | 69少妇一区二区| 做爱A级亚欧| 国产超碰人人操| 超碰调教97| 欧美在线 亚洲| julia国产在线| 国产精品久久久吖| 人人操人人爽人人操人人| 日本一区二区成人在线| 亚洲情色第一页| 美女毛片999| 亚洲熟女人妻中文字幕一区二区| 大香蕉黄色一级片免费看| 欧美色综合影院| 91精品成人www| 天天操福利视频综合网站| 东北熟女91| 久草国产在线视频| 亚洲一区二区三区麻豆传媒| 亚洲 欧美 日韩另类 麻豆| 九九九九热| 欧美性爱一级操| 亚洲自拍欧美国产首页网曝| 中文字幕丝袜| 国产欧美一级在线观看| 色九月综合| 熟妇人妻丰满久久久久久久无码| 国产精品久久久久亚洲av| 欧美日韩性爱视屏免费看了| 亚洲天堂日本| 麻豆国产视频精品观看| 日本大片日本一区二区免费高清| 国产AB视频| 欧美综合自拍| 婷婷五月天色| 国产suv精品一区二六| 26UUU欧美激情一区二区| A V少妇特黄三级| A啊啊在线观看| 日本影视久久免费| 亚洲91少妇| 中出人妻中文字幕91在线| 免费看片黄| 狠狠操综合| 中文字幕精品专区搜索结果91| 先锋色眉乱伦资源| 粉嫩AV输入| 成人一二| 在现视频女上位好爽| 黄页av| 五月丁香| 亚洲男人的天堂va亚洲男人社| 少妇滛荡视频| 欧美性色欧美| 五月婷婷色| 丰满人妻一区二区三区免费| 日韩人妻无码专区| 天天躁日日躁狠狠狠躁| 水野优香在线观看| 三久久久四久久久久| 人妻AV在线| 蜜臀视频网站| 精品免费1| 精品国产av一区二区三区四区入口| 3571色综合一区二区二区| 激情欧美97| 长长久久88视频| 亚洲综合首页| 乱码熟妇人妻久久久| 最近2018中文字幕在线高清第一页| 天美av在线观看| 啪啪性爱免费视频| 欧美 牲| 国产探花精品在线| 997色在线| 操人91| 91亚州| 亚洲有薄码区日本系列中文字幕| 日韩免费高清大片在线| 91欧美性| 午夜免费视频1000| 韩国手机不卡无码三级视频| 97国产伦理| 无码国产精品午夜不卡(| 超碰色综合| 18岁禁 茉莉成人久久| 免费一级黄色录像影片| 亚洲视频精选| 日韩钢筋无码高清啾啾啾| 18禁的网站在线| 亚洲色图一区二区三区| 欧美亚洲日韩16色| 操人91| 国产成人无码啪| 欧美综色欧| 久久嫩草国产成人一区| 天天影视色香欲综合网小说| 国内外毛片在线观看| 口爆综合网| 可以在线观看的黄色网址| 久9精品| 99re8免费高清在线| 亚洲最大无码中文字幕网站| 久久久久亚洲三级电影| 国产97色在线| 色综合 加勒比| 精品国产99| 乱老女人一区二区视频| 成人五级久久| 日韩兔费看黄片| 大屁股熟女一区二区三区| 天天射网| 吻戏激情性巴克| 男人a天堂手机在线版| 美女久久久久久久久久久| 色网1| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 麻豆视频国产一区二区| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 久久九色| 南澳成人一级片在线播放| 欧美日韩人妻婷婷一区| 二三四区精品| 五月天综合网| 国产又黄又猛又粗又爽的网站| 高清国产av无码| 天天躁日日躁xxxxx| 97亚洲综合| 欧美天天射| 蜜桃天美传媒AV一区二区三区| 日韩精品第3页| 人人妻人人色| 日本加靬比网站发布页| 国产成人资源| 91暧暧| 91在线美女| 欧美激情综合色综合啪啪五月| 十八禁视频网站| 干婷婷综合网| 国产成人无码啪| 99久久婷婷丁香| 男人天堂黄片| av日韩在线观看电影| gogogo免费高清看中国国语| 精品久久无码午夜福利| 国产精品麻豆免费视频| 美国黄片aaa| 黄色大片免费在线| 太久视频| www.国产高潮精品| www.色婷婷色综合| 婷婷五月天成人网| 亚洲不卡AV在线| 大胆91| 97se综合网| 9超碰免费| 粉嫩少妇自慰在线| 加勒比久久av| 四虎在线视频| 亚洲色狠| 青青操综合网| 丁香婷婷啪啪| 日韩三级一区| 人人爽夜夜操| 日韩天天本| www男人天堂| 97欧美日韩| 久久永久无码人妻视频| 免费一级特黄特色大片在线观看看 | 久久美女国产| 中文字幕成人| 欧洲乱码视频| 九色 蝌蚪 熟女自| 久久久久九九九| 人人操人人操人人操人人操人人操人人人11.CM | 91亚洲综合| 国产成人 综合亚洲 天堂| 久久国产热视频97电影| 一区二区激情国产熟女 | 大香蕉伊人75| 97超碰磁| 亚洲综合激情五月久久| 中文字幕亚洲欧美在线不卡| 一本大道综合伊人精品热热| 97久久超碰国产精品| 呦呦一区| 亚洲国产欧美中文永久| 久久国产精品91| 精品人妻一区春色| 又粗又长又大国产不卡| 亚洲一欧洲中文字幕在线| www.天天干| 欧美激色| 国语av狠狠色丁香婷婷综合激情| 婷婷激情五月天小说网| 日韩AV一区二区三区三州三州| 婷婷久草| 黄色人人| 欧美九九爱| 超碰9 7女人| 国产不良强奸视频免费看| 性一交一乱一交A片久久四色| 成人色女网| 四虎在线观看视频| 婷婷中文网| 亚洲欧美另类少妇精品| 试看60秒 爽| 人人扣人人操| 啊啊在线| 欧美一级久久久久久久大片动画| 天天综合亚在线| 欧美偷拍| 99超级碰免费视频| 五十路人妻在线| 综合 欧美 亚洲 日本| av婷婷色网| 九九九热| 天天综合色电影| 四虎免费在线播放| 国产99 中文字幕日韩小视频| 日日夜夜草草草| 国产强奸乱伦无码视频| baisiav| 中国91AV| 色性综合| 熟妇色99| 欧美熟爽综合| 17c嫩草51久久91嫩草| 67194国产| 97久操| 欧美性爱五月天| 97伦综合| 成人贴图日韩欧美| 日韩啪啪视频| 麻豆天美电影一区二区| 国产一级高清免费观看| 无码一区二区三区四区五区六区七区八区九区十区视频 | 艹少妇网站| 久久久专区| 免费伦费视频在线观看| 亚洲少妇激情一区二区三区| 一本大道不卡一二三区| 91美女看B| 秋霞无码av鲁丝片一区| 夜夜爽夜夜摸夜夜操免费视频| 欧美人妻精品一区二区| 亚洲AV色图一区| 青青草中文-久久青草精品一区二区三| 78精品在线| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 久草久热| 日韩精品国产一区二区| 91艹| 色色婷婷丁香| 少妇被c 黄 免费观看| 欧美三级免费伊人| 九九探花视频在线观看| 91在线国产后入风骚翘臀美女素人| 99精品成人免费看| 婷婷五月天激情四射| 欧亚乱色熟一区二区三四区| 久久精品高清AV| 插插综合网天天影视网| 射 色综合| 超碰在线香蕉| 91操熟女视频 | 劲爆欧美人妖三区91| 精品人妻美妇91job| 中文乱码字幕观看| 热热色色综合| 色优久久| 综合伊人激情| 男女啊啊啊啊啊| 国产九区| 嗯嗯啊中文字幕| 乱伦Av网| 26UUU欧美日本| 啊啊啊啊在线播放| 亚洲激情 欧美色图| 无码国产精品午夜不卡( | 韩日精品四区| 欧美综合娱乐久久| 黄色无码高清黄色无码网站| 久久久久久少妇| juliaann精品熟女一区| 粉嫩在线一区二区懂色| 欧美人人曰人人操人人射射| 蜜桃臀av一区二区| 97日视频| 91在线页| 天天色综合天天操| 日本免费中文字幕在线| 国产一区二区在线播放| 男女性扦B| 国产精品 午夜福利| 久久久中文| 亚洲av影院在线观看| 精品性爱| 亚洲日韩电影| 亚洲图片视频小说| 91精品国久久久久久无码| 欧洲中文字幕| 丁香六月综合激情| 天天精品| 能直接看AV的网站| 亚洲av国产av综合av卡| 亚洲国产精品成人久久蜜臀| 疯操AV| 国产99999久久精品| 欧美日韩精品国产91| 91狠婷| 亚洲影视综合网| 日韩成人大片在线观看| 久久九九国产精品| 免费精品人妻一区二区三| 一区AV| 国内精品嫩模A∨私拍小视频| 91美女视频。| 国产精品乱码久久久久久久久| 久久夜精品一区二区三区| 欧美天天谢综合网| 亚洲天堂第一页| 开心六月色| 91精品成人| 亚洲色9| 69精品少妇一区二区三区蜜桃| 这里有精品| 三级三久久线久久99久目本WW| 欧美日韩中文亚洲v在线综合| 国产白嫩漂亮KTV在线| 国产第25页在线观看| 淫荡少妇免费| 在线中文字幕极品av| 色爱三区| 国产欧美一区激情交| 婷婷激情五月| 六六久久日韩不卡| 中文字幕片| 亚洲情色一区三区| 夜夜久久| 欧美高清在线| 久操电影网| 91老熟妇| 成人无码在线超碰网| 亚洲自拍偷拍视频在线| TS人妖另类精品视频系列| 91久久久亚洲| 91社区拍啪人妻| 亚洲av无线观看| 婷婷五月天综合网| 国产欧美美女免费观看视频| 夜夜一区二区| 亚洲 另类 丝袜 自拍 动漫| 亚洲drav色图| 亚洲在饯| 人人干黄色| 国产综合日韩伦理| 在线国产福利网址导航| 久久激情五月| 色综合中文字幕不卡| 久干网| 精品女同一区二区三区| 一级做受视频免费是看美女| 成人av动漫在线观看| 亚洲天堂另类| 97精品免费视频网站| 无码区蜜乳| 91天堂色男人的天堂| 久久久久成人蜜桃精品| 九区国产| 91色香| 日韩一级特黄av毛片| 超碰91在线| 中文字幕人妻色偷偷久久皮 | 亚洲男人天堂视频| 蜜臀在线视频| 乱伦1色页| 久久国产精品91| 欧美天堂亚洲电影院一区在线播放 | 亚洲精品一区二区日本| 黄色区免费观看中文字幕| 久久久人体| 91精品人妻啪啪间| 日韩av电影成人在线| 亚洲欧洲综合视频在线| 亚洲免费97免费| 九九操久久国产免费视频| 久久性生大片免费观看性| 久久精品亚洲成a人天堂| 密臀在线免费观看| 成人性生活高清视频在线播放| 人人操人人摸人人看人人插| 美女露胸露屁股| 人妻 欧美亚洲| 国产自制av蜜乳| 免费视频a级毛片免费视频| 玖玖爱综合| 欧美激情综合网| 97最新在线播放视频| www.男人天堂| 国模私拍一区二区三区神乳| 青青草在线视频人人想人人上| 久久精品一区一起草| 黄色AAAAAAAAAAA大片| 成人AV素股で擦久久| 我想要 啊 啊 啊| 国产精品99久久久www| 欧日韩在线观看| 精品国产一区二区三区香蕉欧美| 久久人人妻| 日韩性爱长视频免费| 狠狠色综合网| 色色97爱| 91操人视频| 99re这里只有| 国产成人精品亚洲日本| 欧美后入式| 人人干人人搞人人摸| 91久久久老司机| 人人摸人人入| 老女人爆菊| 91一区二匹| 9久热| 欧美96在线|欧| 日本欧美成人片AAAA| 中文字幕-区二区三区四区视频中国| 天天综合亚洲综合| 伊人青青一区成人视频在线观看区| 亚州综合色| 久久的网站啊啊啊啊啊| 夜夜草我| 熟女网站最新| 国产欧美日韩精品中文| 伊人97| 性吧在线视频| 欧美日韩国产成人高清| 情色五月天久久久| 日本成熟少妇A∨网站| 丁香婷婷激情五月天无毒不卡| 欧美真人抽搐一进一出gif| 婷婷色网| 午夜120视频在线观看| 超碰9 7女人| 超碰在线看| 国产强奸无码乱伦| 少妇69中文| www黄片免费看com| 九九九久久久W精品| 一个人在线看的黄色电影网站| 人人操人人爽人人操人人| 国产视频第2页| 国产成人自拍视频在线| 97爱爱爱| 成人久久精品| 九九AV| 五月天我淫我色av| 熟妇高潮二区三区| 欧美超碰9798| 国产浮力影院第1页| 国产日韩美女小穴视频网站不卡| 91丝袜在线观看视频在线观看| 日本三级A片网站com| 丝袜美腿丝袜| 精品国产99| 免费观看欧美日韩操逼视频| av网站国产主播在线| 成人精品欧洲亚洲| 久久伊人大香蕉| JIZZJIZZ亚洲女人被躁| 青青久日| 天天综合有色网| 亚洲久热| 国产美女销魂在线观看不卡| 国产又粗又长视频| 99国产精品免费| 亚洲综合97中文网| 伦伦成年午夜免费视频| 97啪啪| 夜夜操夜夜高潮夜夜爽国产精品区| 欧美精品另类人妖xxxx| 黑人无码一区二区| 日本国产亚洲一区在线观看| 青青青草原| 美美91成人国产精品欧美精品久久久久久久| 亚洲欧美日韩精品久久久一区二区| 一区二区三区美女超清| 色原狠狠天天天| 2017超碰| 久久亚州高清| 天天干一区二区| 开心激情站| 国产AV超爽| 园内精品自拍视频在线播放| 91福利网在线观看| 夜夜嗨视频| 亚洲色图欧美另类在线| 用力操死我| 九色 人妻 大香蕉| 婷婷五月天网| 亚洲最大无码中文字幕网站| 秋霞久久亚洲精品成人| 黄色操人| 超碰美女97| 99re6在线视频播放免费精品| 免费国产| 啊啊啊久久久视频| 精品无码久久久久| 亚洲97P| 欧美爆操91| 亚洲欧洲小说图片视频 | 91性| 欧美影音在线| 曰本熟女视频| 久久久久9999妇女| 图色综合网| 打av高清| 久久久久中出| 91jk色拍| 亚州成人a∨| 精品久久久久黄少妇| 怡红院视频在线| 亚洲人精品久久久喷水| 黑丝内射一区二区三区| 黄色AV影视| 日本一级性爱| 大香网伊人久久综合| 色婷五月天| 亚洲 综合 欧美| 欧洲综合视频| 91在线欧色| 欧美色图中文字幕| 天天看特黄的免费网站| 伊人伊人LD| 午夜综合在线| 欧美色91| 91综合熟女| 日韩偷拍一区二区三区| 超碰色综合| 天天日天天搞天天干| 亚洲制服欧美另类内射| 亚洲福利中文字幕在线| 91狠狠色丁香婷婷综合久久| AV 少妇 人妻 偷拍| 男人的天堂在线2| 10000部十八禁看电影| 天天爱综合网| 99少妇| 欧美大波激情xxxx| 波多野42部无码喷潮在线观看| 秋霞一级视频在线观看免费| 日韩av不卡在线观看| 亚洲色啪| 国产大片精久久久久久| 91性感网站| 成人一二三区| 亚洲伊人成综合成人网| 成年女人黄网站| 中国亚洲呦女专区| 五月天色图| 久久综合久久综合人久久夜精品| 亚洲日韩久久精品一区| 农村妇女精品一二区| 久久成年片色大黄全免费网站| 精品人妻一区二区视频| www.色婷婷色综合| 中文久久一区| 搡老熟女国产1000部| av激情亚洲五月天| 综合欧美激情网| 超碰超碰95| 成人一级二级| 91夜色| 岛国片在线观看视频亚洲| 插入综合网| 中文字幕无码不卡啪啪| 91 欧美| 精品婷婷| 麻豆九九九| 999久久久国产精品| 免费观看的黄色的网站| 超碰人人乐97| 亚欧美无遮挡| 欧美偷拍区| 男女打扑克高清网站| 久久久成人精品| 在线中文字幕| 91亚洲黑人| 91在线丝袜| 乱伦a片视频| 亚洲天天艹| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 日日夜夜国产综合| 久艹日日日| 亚洲成?V人片在线观看福利| 久久大线蕉一区| 探花视频免费观看国产专区| 亚洲夜夜欢无码一区二区| 不卡一区视频| 国产91亚洲精品一区二区三区| 一本道综合色图| 天操天操夜操夜月月年年操操| 精品久久久高清无码| 色九月综合| 99re在线| 又大又白奶子| 欧美色爱综合| 中文字幕av乱伦| 亚洲成人一二三区| 免费人成毛片乱码| 久久天天摸| 精品久久97| 色色色网站| 男人天堂导航| 九月婷婷综合| 97中文热色| 丁香色色网| 精品人妻久久久| 极品白嫩美女白浆成人福利在线看| 国产诱惑| 亚洲欧洲综合av在线| 2017大香蕉国产精品久久| 成人自拍三级在线观看| 抽查国产福利主播| 免费av高清无码| 国产福利夜| AV一区观看| 少妇色综合| 色嗨嗨在线| 东京男人天堂| 静品嫩模一区二区| 日本媚薬中文字幕在线| 一品道视频一区二区三区| 躁躁躁日日躁2020| 9久久9综合| 综合亚洲欧美精品日韩?v| 大香蕉在线视频重口味毛片在线| 日本狂喷奶水在线播放212| 久久亚洲人妻| 色色色天美视频| 色九九九九九九| 91美女丝袜诱惑视频| 成人九九| 91色碰| 高清一区AV无码| 91色色综合| 成人婷婷丁香| 97天天日| 久久超碰、| 久草福利在线资源站| 又黄又硬又粗又长国产视频| 色999人与兽| 熟女五十路一区二区三| 亚洲图片小说欧洲| 日本亚洲vr欧美不卡高清专区| 日日噜噜夜夜狠狠视频无| 色69大色97香蕉| 精品超碰中文在线| 少妇啪啪自拍| 亚洲综合色图欧美| 欧美大香蕉97| 日韩在线观看中文字幕视频| 97天堂| 综合色久欲| 色婷婷在线视频精品导航| 一级aaaaa欧美中文字幕录像片| 老熟女综合网| 天天综和| 九九Av| 国产免a费看黄片在线| 东北女人性交| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 婷婷丁香一区二区三区| 亚洲中文字幕久久人妻| 欧美日韩亚洲少妇寂寞影院正在播放 | 啊啊啊啊免费视频| 欲射影视| 精品一区二区三区蜜桃臀赵总 | 国产女主播视频在线观看| 中文字幕高清20页视频| 永久免费发布性爱网| 老鸭窝成人| 福利一级版子| 综合久草| 日本123区操B视频| 性色生活片久久毛片婬片免费放女人一级毛片 | 99国产在线绯色一区| 岛国黄色短视频| 高清国产无码av| 91bbbbbb| 熟妇国产免费一区| 欧美日韩理论一区| 欧美色五月| 人妻81p| 日本十八禁免费看污网站| 超碰2017| 蜜臀99久久精品| 久9久精品视频| 欧美色图亚洲色图成人在在线| 六月婷婷色综合| 午夜福利视频在线一区| 26uuu国产亚洲综合| 翔田千里AV无码秘 三区| 嗯嗯啊啊啊好爽| 久久久内射良家| 热热色色综合| 亚洲精品97在线| 亚洲一区日韩| 久久久久国产一区二| 欧美一区二区福利在线| 亚洲春色一区二区三区| 国内外内射高清视频| 韩日欧亚a级| 日本幼女18+| 天天性射网| 超碰久久网| 欧美亚州色的图| 色网1| 天天操人人操骚逼网站| 亚洲欧美日产国产91毛片| 亚洲综合图色在线| 97欧美精品综合| 久久、1234| 新97国产超碰| 天天看人人操屄犊摸阴| 天天碰操中国年青熟妇| 蜜臀久久99精品久久综合| 五月天激情网图片| 激情自拍 校园春色| 亚洲图片欧洲图片aⅴ| 日本理论在线| 日韩操人| 国产 码在线成人网站|