色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

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
返回資訊列表
中文字幕二区日韩天堂| 色婷婷国产精品一区在线观看| 91在线精品一区二区三区| 三级片网站在线播放| 久久久精品,3| 丰满精品人妻少妇久久字幕| AA丁香综合激情| 欧美日韩人妻精品一区二区三区| 性爱动态120秒| 色乱二区| 国产人妖视频一区在线观看| 熟妇女伦乱视频| 中文字幕人乱码中文字的预防方法 | 超碰97久久| 日日嗨AV一区二区夜夜| 东北黄色电影| 日韩av乱伦| 免费观看性欧美一级| 丝袜狠狠草尤物 91| 久久免费老司机精品| 91足交| 久综合国内精品自在自线| 欧美中日韩XXXX| 亚洲美女色图| 99热超碰| 欧美高清在线| 91女优在线观看| 丁香婷婷激情五月天无毒不卡 | 岛国艾薇凹凸视频天堂| 国产精品嫩草影院午夜两性| 久久久99久9| 国产欧美日本亚洲精品 | 国产精品亚洲免费| 欧美成人都市人妻| 中文字幕啊啊啊在线观看视频| 日本女优在线视频福利| 中文字幕国产| 天天色,天天干,天天干| 久久久四区| 蜜臀AV一区二区三区| 日韩av不卡在线观看| 亚洲色图亚洲| 欧美日韩国产人人| 无码精品啪啪啪一区二区三区三州| 91色艳| 麻豆婷婷成人一二三| 歐美一級亂黃99在綫精品| 澳门人妻久久| 在线观看视频91| 亚洲AV不卡在线观看| 91黑丝少妇| 色老汉色| 偷拍导航视频网站| 波多野结衣之双飞调教在线播放 | 神马久久69| www. 男人天堂成人在线| 国产精品午夜精品| 久久日韩肥臀| 91人妻精华帖| 久久久影院| 四季AV一区二区凹凸精品小说| 欧美影音在线| 曰韩中文人妻视频| 国产欧美日韩在线不卡第一页| 婷婷精品| 茄子社区国产精品| 免费国产电影一区二区| 色性欧美| 日本99一区二区| 男人久久天堂| 国产精品自拍xxxx| 亚洲第一色页夜| 精品日日人妻| 国产资源中文字幕在线| 色爱综合网| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 91麻豆va国产精品| 97操97色| 欧美亚洲综合色| 后入式视频国产自| www欧美91| 两性色网| 91色伦| 欧美综合中文| 屌色在线97视频| 九九超碰综合网| 亚洲天堂一区| 色情五月综合婷婷| 国产亚洲精品美女| 色视频蜜乳| 欧美操逼一二三区| 夜夜高潮夜夜爽夜夜爱爱一区| 亚洲在线91| 丁香色色网| 2017,超碰| 强奸乱亚洲| 欧美后入式| 国产欧美日韩在线不卡第一页| 天天超级碰碰碰| 人人操人人摸人| 亚洲污一污二| 日本日皮视频逼| 亚洲一区二区av| 五月丁香久久| 日韩中文字幕精品一区在线| 黄页大片在线观看| 国产精品免费1区2区视频| 情色五月天久久久| 国产无套粉嫩白浆在| 97爱爱官网| 9/A片 | 最新岛国大片| 91操熟女视频 | 91大神精品长腿在线观看网站| 亚洲永久永久永久永久一级一级一级精品 | 色99视频| 日韩精品中文字幕一| 无马一区二区| Aa东京男人的天堂| 99热这里只有精品99| 国产高潮AA片免费看| 久久久专区| 97资源超碰| 欧美96在线|欧| 国产精品粉嫩福利在线| 国产麻豆一区二三区| 91美腿丝袜在线观看| 激情网色| www.久久制服糖| 高清无码 国产精品| 亚洲成人久久美女| 曰韩中文人妻视频| 激情一区二区| 国产成人精品必看| 亚州情色j区| 日本123区操B视频| 亚州黄站| 97AV爱| 台湾佬大香蕉| 裸体美女国产免费久久久网站| 熟女五十路一区二区三| 欧美亚洲激情小说| 五月天婷精品激情| 成人久久久| 超碰国产在线| 亚洲精品三区在线观看| 偷偷人人精品女女久久| 日产操逼| 少好三P| 国产乱伦搜索结果91P| 天天做天天爱天天高潮| 午夜国产综合视频在线观看 | av橘色网站| 日韩中文字幕二区| 变态另类专区| 日日夜夜青青草母狗| 啊啊啊好多水| 日本 情色 1区2区3区| 2020中文字幕| 爽 好舒服 无码刺激久久| 91精品91久久久中77777| 啊啊啊好湿国产一二| 精品日韩中文在线| 一起草高清无码| 330Dv国产女人终合视频极品人与兽 | 看一级特黄a大一片| 女人香蕉久久毛毛片精品| 性色中出| 97摸视频| 狠狠色狠狠色狠狠五月| 中文字幕一二区二三区人妻专区| 在线午夜成人无码视频| 亚洲色人阁| 2019男人的天堂| 动漫片子网站3黄| 亚洲色五月| 久久AV无码网址| 欧美日韩啪啪电影| 七月婷婷综合| 懂色AV网| 久久久久久中文| 美女久久久久久久| 91国产大片| 国产丝袜美女诱惑| 夜夜操91744565| 天天爱天天韩国日本牛牛牛牛 | 91啪啪| 亚洲男人在线观看天堂| 久久国产对白激情浪潮 | 亚洲一二三精品久久网| 97色诱| 九热大香蕉| 美女91网| 日本亚洲熟女视频| 夜夜嗨一区| 日韩强奸av| 一区操逼| 激情露脸爱| 91老司机视频| 男女一级A片大黄,一进一出| 亚州色站 日韩电影| 久草男人天堂| 国产精品一区二区久久精品| 九色 人妻 大香蕉| 欧美色91| 欧美一级A片在线看视频性色| 99xav| 国产精品一区二区亚洲人成毛片 | 蜜桃视频精品一区二区| 青青草大香蕉视频| 中文字幕乱在线伦视频中文字幕乱码在线| 岛国精品视频在线观看| 大香蕉琪琪日本女优不卡| 不卡在线观看视频| 日本精品一区三区| 五十路熟女工口| 懂色Av| 蜜桃传媒一区二区亚洲| 日本久久女同性恋视频| 色精品极品| 女人的天堂大香蕉网| 日欧操屄| 99re99在线视频| 九九aV| 国产成人啪一区二区| 天天谢天天干| 人妻少妇精品一区二区三区| 伊人欧美大香蕉视频| 激情综合二| 啊啊啊啊操死我了| 高清国产精品无码| 久热这里| 激情抓乳插进去啪啪啪日韩 | 亚洲综合大片| 久久日韩肥臀| 欧美淫穴| 91视频成人福利网站在线一区 | 在线播放一级无码视频| 国产美女91视频| 国产精品第一区第一页| 亚洲AV无码成人精品久久| 情色五月天网| 青娱乐欧美激情一区二区| 色综合尤物| 欧美热图99| 在线人人人人人人精品超 | 强奸a片网| 麻豆一区二区三区在线看 | 老司机免费视频在线91| 日本中文字幕在线视频| 都市激情人妻一区二区青青操视频| 色偷偷超碰亚洲| 2020国产精品| 91在线精品一区二区三区| 天天欧美色| 精品人妻1区| 日韩久射综合| 日韩丝袜高跟制服在线观看| 在线有码中文字幕| 91爱剪切久久| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 日本人妻伦在线中文字幕| 亚洲av热热色| 凹凸视频特色日本特黄| 天天射天天操天天干天天吃2018 | 免费国产电影一区二区| 亚洲精品国产精品乱码不卡| 粉嫩av平台| 蜜桃臀久久| AV天天综合| 秋霞一集毛片观看| 婷婷激情五月综合| 国产丰满熟夫69mpp| 9l视频自拍9l九色成人| 亚洲欧洲自拍图片专区满春格| 天美传媒av在线| 女人的久久久| 亚洲啪啪性视频| 中文字幕在线观看永久| 丝袜加勒比| 无码乱人伦中文视频| 少妇综合| 中文三一区| 久久超碰av在线| 成人网欧美风情| 久久久久久国产精品免费网站| 亚洲色天| 麻豆熟妇乱妇熟色A片在线看| 亚洲va综合va国产va中文| 久久久久国色αv免费观看| 婷婷激情五月| 老熟女乱子伦中文字幕一区二区| 97亚洲欧美| av天堂加勒比| 久久草视频污视频| 老熟女91av| 日本三级韩国三级99| 夜色AV无码手机在线影院| 欧美色图片| 97超碰9| 人妻喷水| 中文无线日韩一区| 亚洲国产亚洲天堂| 97超碰中文字幕| 精品国产72| 日韩av熟女一区二区三区成人| 污啪啪啪视频| 蜜乳AV网址| 国产精品自在自拍视频| 天堂中文日本在线观看| 欧美自拍偷拍综合图片| 国产精品视频自拍在线| 成年人网站在线免费观看| 亚洲天堂男人的天堂| 亚洲少妇综合| 99热销国产这里有精品| 亚洲色图欧美色图综合| 亚洲人妻一区二区三区| 大香蕉免费中文| 青青草中文-久久青草精品一区二区三| 婷婷丁香熟妇综合网| 日本道久久综合色色| 东京热视频网| 天堂中文日本在线观看| 午夜偷拍久久熟女| 九九精品无码专区免费| 在线无码视频| 三级特黄60分钟播放| 91bbb| 好爽视频在线观看视频| 国产精品夜夜| 九九视频黄色片| 亚洲黄色视频在线观看视频| 国产最新小视频在线播放下载 | 无码操逼天堂| 蜜汁欧美| 26uuu最新| 中文字幕三四区| 97视频免费播放| 一级性爱网| 天堂а√在线最新版在线| av网页一区二区三区| 国产精品女久久久久av爽| 亚洲密乳AV| 国产成人自拍视频在线| 亚洲三区视频| 午夜免费视频1000| 制服中出中文人人精品| 3级毛片一二| 情色图区| 偷拍亚洲熟女视频播放| 欧美极度丰满熟妇hd| 91人妻中文| 牛黄色久午久| 一区黄二区黄| 超碰 国产熟女精品一区| www欧美91| 97在线免费看视频| 家庭乱伦网站国产| 东京热一区二区三区四区五区六区| 亚州 综合 色图| 综合少妇网| 欧美性爱18观看| www狠狠| 亚洲综合性感在线| 97在线免费观看| a级成人毛片免费视频高清| 亚洲精品色| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 艾草av| 97在线观看免费| 97国产精品一区| 国产一国产一级毛片古装| 特级特黄一级毛片免费| 99综合网| 99精品在线| 欧美偷拍区| 久热99| 久久 久久国内精品亚洲| 黑人综合网| 亚洲天堂无码| 美女干逼2| 精品人妻中文字幕高清| 丁香啪啪| 欧美黄色图片| 欧美97se| 美中日韩无码| 日日噜噜夜夜久久亚洲一区二区| 中文乱码字字幕在线第5页| 婷婷丁香五月天综合东京热| 后入人妻一区| AAAA级日本片免费视频| 一区黄二区黄| 成人性爱免费播放| 一道本东京热加勒比一区二区三区| 97人妻人人躁人人玩人人| 亚瑟国产精品久久无码| 天天综合有色网| 久久亚洲中文字幕视频| 精品久久久无码| 欧美色干| 极品五月天噜噜| 午夜视频久久久| 高清国产性猛交xxxx乱大交| 一道本东京热加勒比一区二区三区| 久久97精品久久久久久久不卡| 日本精品网站在线中文| 啊啊啊啊啊啊啊好爽不要| 欧美综合天天| 性感女人网页在线观看视频| henhen91| 91在线欧色| 美国三级日本三级久久99| 91在线秘 男同| 97天堂| 欧美翘臀视频网站一区二区三区| 26uuu国产| 色爱天堂| 日韩精品人妻系列无码天堂| 国产伦精品一区二区三区在线观 | 亚洲美女自拍偷拍视频| 91小视频| 亚洲天堂人妻一区二区| 亚洲情色 自拍| 五月丁香六月婷| 亚洲久久久久| 有码人妻系列| 亚洲综合图色在线| 国产女大学生AV| 国产性爱在线视频一区二区| 亚洲伊人久久综合97| 夜夜一区二区| 国产粉嫩蜜臀av一区二区三区| 天天综合欧美黑人| 色av中文字| 久久精品店| 亚洲国产综合久久天堂| 天天爽夜夜欢视| 久久久av爱| 久久久久久亚洲中文| 青青草在线视频欧美| 人妻偷拍一区二区三区| 日本特黄f c2| 亚洲福利影院一区久久| 欧美日韩国产中文精品字幕自在自线,| 一区二区三区麻豆| 精品国产一区二区三区av在线资源| 男人天堂久久精品不卡| 中文字幕在线观看丝袜| v91av| 久久AV无码1区2区3区| 欧美日韩激情无码专区| 另类欧美色| 夜夜狼人妻| 日韩免费三级黄片电影| 传媒免费一区二区三区| 深爱五月婷婷| 欧美黑人精品在线播放| 国语少妇精| 国产五码丝袜屁眼| 亚洲 欧美 天天| 亚洲中文字幕久久人妻| 91热| 亚洲吊色| 在线视频一区二区传媒| 手机在线中文字幕国产| 欧美日韩狠狠爱| 激情黄色五月天| 欧州色图区| 91丨熟女丨丰满熟女| 超碰午夜| 美女91av| 懂色天天爱天天日天天射天天澡| 人妻熟妇一区二区三区| 麻豆天美传媒在线视频天堂| 俺去俺来也在线www| 久久久性少妇| 国产欧美成人精品| 日韩人妻网站| 超AV色女| 蜜臀操逼黄色视频操的好爽| 日夜尻逼网| 免费视频在线观看啊啊啊啊啊| 亚洲高清国产理伦片| 久久久久久综合久久伊人蜜月| 欧美日韩99精品麻豆传媒| 久久久久国产精品喷潮免费观看臀 | 激情网色| 免费av在线播放二区| 性欧美91| 又黄又硬又粗又长国产视频| 欧美猛交黑寡妇中文字幕| 人人人人人人少妇| 桃色五月天| 色婷婷导航| 国产精品久久久久久久久AV大片| 色操逼网| 不卡av在线中文字幕| 久久97视频| 欧美久久久| 桃色人妻在线视频| 免费网色网站| 夜草欧美| 欧美激情亚洲情色| 东北女人| 密臀在线视频| 少妇蜜汁| 啊啊啊好舒服好爽啊啊啊视频| 亚洲AV免费在线| 色色色999| 搡老女人老妇女AAA一VU麻豆| 女人与公拘交酡2020视频| 少妇精品久久| av网站在线看| 免费一级性爱久久| 亚洲AV噜噜狠狠网址蜜桃动漫| 操婢日韩| 国产精品免费视频人成| 欧美网站免费| 中文字幕啊啊啊在线观看视频| A久久| 熟女乱伦二区| 国产懂色精品国产av| 亚洲av国产av综合av卡| 亚洲无码精品AV久久久| 亚洲无无码αⅴ每日更新| 欧美一二三级精品在线| 东京热男人的天堂| 中国一级操逼视频| 97色碰| 91女神在线视频| 嗯嗯,啊啊,国产精品| 蜜臀AV成人精品蜜臀AV久久| 欧美久久婷婷| 亚洲资源吧| 91久久久亚洲| 欲香欲色综合天天伊人| 竹菊影视国产一区二区| 六月婷婷综合| 少妇内射www在线观看视频| 亚洲精品黑丝| 久久三区四区| www.yeyecao| 色欲蜜臀AV| 一级黄色影片| 大吊色| 国产激情在线| 可以在线观看的黄色网址| 欧美午夜一区二区三区| 亚洲熟女中文字幕在线| 日韩在线女优天天干| 成人久久精品| 玖草在线视频| 欧美日韩中文亚洲v在线综合| 99热在线播放| 综合色久欲| 欧美天堂第二区| 欧美黄色大香蕉一区二区| 黄色电影在线播放综合网站| 91人妻中文| 九九九九九九亚洲| 97久操| 一个国产在线综合网站| 激情五月综合网| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 91无码人妻精品一区二区三区蜜桃| 亚洲日韩狠狠撸视频| 久热在线精品免费观看| 丁香五月婷婷五月| 蜜臀在线看片| 无码逼| 在线观看中文av字幕| 一区二区你上我| 91丝袜美腿片| 沈阳熟女高潮对白视频| 色呦呦呦在线观看视频| 日本一区三级韩国| 变态综合色| 亚洲国产精品成人无码久久久| 男人天堂站| 九九热午夜欧亚国产视频| 日韩成人精品| 精品国产99| 亚欧洲日韩国产精品| av天堂手机版追回| 操曰本熟女| 丰满高潮18xxxx| 校园春色亚洲无码| 精品亚洲国产成人精品| 成人日韩中文字幕| 日韩无码视频黄色| 精爱久久| 国产黄色影片在线观看| 国产成人主播| 日韩美女操b| 日本黄色XXX| 懂色AV蜜臀无码精品APP| 97超碰在线资源网站| 熟妇综合一区二区三区| 欧美自拍网| wwwss在线观看| 亚洲中文丝袜美腿诱惑字幕| 嫖老熟女A片一二三区| 四虎在线播放| 99精品人妻| 午夜免费视频1000| 亚洲成a人v欧美综合天堂下载| 综合激情五月丁香| 欧美黑人91| 中文字幕aⅴ在线视频| 亚州男人的天堂| 26uuu偷拍亚洲欧洲综合| 欧亚久久偷拍视频| 午夜福利在线合集| 亚洲日韩XXX| 日本性爱少妇| 天天干人妻视频| 操人91| 国产精品高潮久久久无码| 骚乳在线| 萌白酱自拍视频| 亚洲激情深爱文学小说网站| 免费一级毛片在线视频观看| 2020天天色综合| 精品妇女一区二区三区| 强奸乱伦 亚洲一区| 久久精品老司| 亚洲AV成人无码一区二区三区在线观看| 精品人妻一区二区三区蜜桃视频| AV大香蕉| 日本性爱欧美性爱| a啊啊啊啊啊啊啊啊一区二区| 香蕉久久精品| 操逼操逼操| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 蜜桃久久久久久久| 亚洲一区二区久久久久| 久9综合在线| baisiav| 国产亚洲深夜激情| 国产少妇内射| 中文字幕一区二区三区蜜臀| 热99这里有精品综合久久| 一区 欧美 日韩 麻豆| 日本激情免费大片| 婷婷五月天激情四射| 久久成年精品| 激情五月天色色网| 天美传媒婬乱在| 久久久久久久久久久97| 激情综合网五月婷婷五月天| 九九九久| 中 文字幕一区二区三四 五 区日 日 骚 | 激情婷婷丁香| 国产精品久久久啊| 9久9久9久9久视频网站| 亚洲一区二区三区麻豆传媒| 国产操操日韩三级黄| 手机在线大香蕉| 中文字幕人乱码中文字的预防方法 | 伊人操| 超碰97在线色男人??| 九九色色| 日本在线播放不卡一区| 亚洲色图8| 亚洲精品一卡二卡三卡福利视频网站 | 欧美91久久久久| 97综合在线观看| 色墦五月丁香| 成人性爱高清视频免费看| 黄片视频观看| 一区二区视频在看| 91久久久老司机| 免费看污网站| 理论久久婷婷网 8| 97干在线| ,成人免费啪啪视频| 青青草原香蕉日本Ap| 黄资源| 天天插夜夜操| 亚洲A曰本VA欧美VA视频| 日韩人妻无码不卡网站| 国产中午字一暮区| 亚洲素人网| 丝袜无码a片| 亚洲色图欧美色图制服丝袜| 大香网伊人久久综合| 中国一级操逼视频| 影视综合无码少妇| AV一起草在线| 强奸抽插av| 国产精品黑人一区二区三区| 91青青| 人妻蜜桃臀| 青青草五月份天| 97天天操天天干| 97免费视频网| 操操操操操操| 人人爽人人精品乱人伦AV| 欧美色九九九| 国产传媒美日韩av| 青青草啪啪网| www.91欧美| 午夜综合在线| 偷拍亚洲情色| 这里只有97精品| 麻豆区久久久久亚| 欧美肥臀在线| 九九九九九九九九九国产精品 | 成人精品久久| 1024精品在线| 78精品在线| 操熟女91| 四虎国产精品永久在线囯在线| 97超碰碰| 免费观看一区| 国产黄色剧情影片麻豆免费播放| 国产精品懂色tv影视免费观看| 久久久9999| AV乱伦专区| 青娱乐亚洲自拍| 欧美日韩第一页| 夜夜爽33333| 精品人妻二区三区| 国产精品第二页| 日本加勒比无码专区一二三| 亚洲在钱| 麻豆天天躁天天揉揉AV| 久久尹人大香焦视| 91精品微拍福利| 操逼网站地址| 激情文学网伊人| 色噜噜人妻丝袜AV资源| 亚州欧美总和| 一起草视频在线| 亚洲AV成人无码一二三久久| 日韩AV无码网站| 一本一道vs波多野结衣| 亚洲精品一区中文字幕乱码| 久久久一级| 国产夜夜艹| 91色s| 国产精品白丝| 成年人性爱日韩| 久久99视频| 色大师网站www永久网站视频| 国产中文日韩欧美一区二区三区人妻丝袜美腿| 欧美丝袜91| 欧洲亚洲国产综合在线| 久久婷婷综合国际产色怕| 91天天日| 桃色人妻在线视频| 97久久久| 免费无码国产精品v片在线观看| 手机看片1024你懂的国产| 欧美色棕合| 色香综合天天影视综合 | 国产一区二区三区白丝| 亚洲免费97免费| AV天堂丝袜| 91夜夜蜜桃臀1区2区3区| 日韩少妇丰满亚洲| 在线视频资源| 欧美另类综合久久| 9久久9综合| 男人天堂新在线| 乱伦日本色图AⅤ| 成人熟女视频一区二区三区| 欧美青青视频| 另类老少妇| 国产第12页| 首页亚洲国产高跟丝袜诱惑视频| 极品久久久久久久久久久久久久| 91白虎| 天天色,天天干,天天干| 色色五月婷| 欧美青青草视频| 日本韩国国产精品一区| 色婷婷激情| 天天综合站| 日韩乱中文| 亚洲免费97免费| 国产精品一区二区手机看片| 操逼网免费无码视频| 久久中文色图| 免费成人自拍视频在线| 黄片免费久久久久久久| 色老汉色| 久久女人| 欧美日不卡| 国产精品久久久久久久久久久久久久| 日本3级一区二区免费| 国产精品久久久久久久久久久久久久久久| av一区二区三区不卡| 国产九月婷婷| 伊人网高清| 男人亚洲91首页在线| 亚洲欧美碰碰| 操操碰| 亚洲欧洲无码97久久精品| 性高潮久久久久久久久久久| 国产一进一出视频网站| 91 丝袜在线| 国产精品视频内谢女人| 偷窥自拍亚洲色图| 亚洲春色一区二区三区| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 啊啊啊啊啊啊啊啊啊在线观看| 少妇熟女1区2区3区| 午夜久久一区二区无码中出| 啊啊啊轻点在线观看| 亚洲?V无码专区在线电影| 动漫片子网站3黄| AV一区观看| 久久精品国产精品| 破苞ⅩXXX性无码动漫无码| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 久久精品99久久久久久| AV污污污污| 亚洲大色堂| 国产精品无套内谢| 天天干夜夜操一区二区| 日韩不卡av一二三| 麻豆成人AV| 日本不卡码黄色| 三级特黄60分钟播放| 欧美 亚洲 综合 制服 另类| 亚洲精品国产专区在线观看| 青青草大香蕉在线视频| 亚洲精品影视老司机| 欧美在线干| 蜜臀国产AV中文字幕| 亚洲视频精选| 婷婷国产精品九区| 亚洲中文国际强奸字幕| 插插综合网天天影视网| 大稥蕉免费视频这里只有精品| 中文字幕一区二区视频在线观看| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 七月婷婷综合| 亚州综合色图| 人妻乱仑一区二区三区| 亚洲性天堂| 亚洲欧美中日韩| www.久久制服糖| 亚洲第一男人天堂| 九月丁香婷婷| 入口操逼网站| 一级性爱视频免费观看| 日本精品九九九| 2011国产精品| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 岛国大片在线观看网站入口| 久久6热精品99视频| 亚洲成人免费电影| 91人妻在线视频| 欧美性五月| 91精品人妻一区二区三区蜜桃臀| 亚洲欧美国产成人综合不卡| 中文有码9| 色女综合| 五月天社区| 日本高清免费一本视频在线观看| 加勒比性爱成人在线| 女人爽到高潮潮喷18禁网站| 九热中文字幕| 夜夜爽夜夜摸夜夜操免费视频| 亚洲91极品| 福利在线黄片| 国内精品久久人妻性色av| 亚洲色欧| 久久本道| 国产精品熟女丝袜一区二区| 久久久新亚洲AV| 天天干夜夜操一区二区| 久久一二三四不卡 | 素人伊尹大香蕉免费下载视频| 日韩天堂av电影在线观看| 亚洲AV无码久久久国产精品| 亚洲国产成人精品久久久国产成人一区二区| 中文字幕av一区二区三区人妻少妇| 五月丁香六月| 人看人人摸人人操| 中文一区二区三区影院| 亚洲精品国产拍免费91在线| 亚洲最大的黄色电影网站。| 九九久久国产精品怡红院| 欧美成不卡网| 98一区二区精品| 国产最火爆久久国产网站网站| 亚洲好色人妻| 亚洲天天精品| 国产精品电影推荐| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚 | 欧美制服网站美腿丝袜| 久草大| 日本丝袜人妻内射| 日本免费中文字幕在线| 亚洲一区中文精品| 日韩特级毛片免费观看全集| 97视频一区| 67914在线兔费成人视频| 加勒比东京热五月天天堂网| 久久婷色| 丁香六月婷婷| 综合欧美日韩在线观看| 午夜视频好爽啊| 精品欧美老熟女一二区| 欧美狠狠狠| 国产美女高潮| 波多野结衣之双飞调教在线播放| 天天综合-91入口| 欧美日韩资源| 日本不卡五区| 欧美片第一页| 麻豆国产视频精品观看| 成人无遮挡毛片免费看| 日韩欧美操逼xxx| 国产又黄又爽又刺激久久久久久| 搡老熟女免费视频| 少妇熟女1区2区3区| 麻豆美女丝袜人妻中文| 国产精品久久蜜乳av| 搡老女人老91二区| 日韩欧无码一区二区三区免费不卡 | 国内偷自视频区视频综合| 久久黄片国产一区二区| 亚洲国产精品99久久久| www.伪伪| 在线看片国产精品每日更新| 国产日产精品久久快鸭的功能介绍| heyZO天然素人无码AⅤ专区| 国产无码精品无码| 日逼逼免费看| 色青青久久影视| 亚洲精品99| 欧美亚综合色图| 九九国产热| 超碰色大香蕉| 国产91丝袜 在线播放| 国产精品久久久久婷婷二区次| 色香91| 欧美日韩另类激情图片| 欧美裸体美女日麻屄| 成人无遮挡毛片免费看| 中国一区二区亚洲人妻| 国产亚洲国产超碰| 欧美日日夜夜| 9997se| 亚洲人综合19| 91精品微拍福利| 性爱av在线免费观看| 少好三P| 91无遮挡| 亚欧日韩成人| 男人的天堂2010| 97碰碰日本乱偷人妻中文的| 欧美在线干| 亚洲中文sv| 人妻无一区二区三区| 91free福利| 欧美色九九九| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 任我爽在线视频免费观看| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 青青草玖玖爱| 97干色| 家庭乱伦网站国产| 蜜桃传媒一区二区亚洲| 欧美极品色| 四虎国产精品永久在线囯在线| 无码免费在线观看黄色片| 欧美成人一级免费电影| 开心五月婷婷激情| 丝袜狠狠草尤物人妻av91| 99久在线精品99re8a| 亚洲一区制服诱惑| 日韩三级在线观看网站| 偷看洗澡一二三区美女| 婷婷成人五月天| 内射卯月麻衣| 国产色综合亚洲色综合吹潮| 91精品伊人久久久大香线蕉91| 澳门人妻久久| av久日| 极品色综合| 操逼1区| 超碰1024久久| 七月丁香婷婷| 成人性爱美曰韩| 制服少妇欧美| a级免费在线观看| 99啪啪| 少妇精品久久久八区九区| 国产JDAV无码视频在线观看| 欧美中出1| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 黑人中出21连凳花野真衣| 国产日韩久久| 啪啪啪大香蕉| 午夜在线播放| 情色五月天就去干| 操逼操逼视频操逼| 日日干夜夜欢| 97人人操人人摸人人爱| s片在线观看| 中文字幕国产| 一区二区 日韩 欧美 国产 传媒| 草草草草视频| 亚洲人妻一区二区三区| 久久精品成人一区二区三区蜜臀| 大香蕉视频一二三区| 99热亚洲天堂| 九九九九热| 国产在线精品偷| 久久久性少妇| 天天躁日日躁XXXXYY| AV久日| 欧美东京热精品A∨| 91老熟女老女人国产老太 | 亚洲国产精品成人综合| 东京热亚洲一区二区| 欧美韩日精品99综合| 人妻99p| 日本亚欧爱爱| 发朗少妇买婬全视频中文| 另类图片五月天| 免费黄色片子| 人妻久久| 中文伊人大香蕉视频| 亚洲欧美日韩偷拍色图| 看日韩美女二区三区免费操逼视频| 农村少妇久久久久久久| 激情专区综合| 亚州欧美色图| 91扒丝袜综合在线| 97在线精品观看视频| 爆乳免费黄网站| 黄片qw| 久湿久久| 美国精品国产精品| 免费超碰97久久| 亚洲AV成人无码一区二区三区在线观看| 骚鸭AV| 欧州色图区| 人人做,人人操,人人摸| 蜜臀久久久国产| 国产精品无码论坛| 天天综合欧美黑人| 欧美天天插| 国产亚洲中文不卡二区| 人人妻人人色一区二区三区| 久9热| 69视频入口| av草草在线电影| 免费毛片在线播放| 97亚洲精品| 都市激情人妻一区二区青青操视频| 人人操人人操草草| 99精品九九九九九九| 99热这里只有精| av无码精品久久久久| 欧美日韩制服| 1区2区3区中文字幕日韩| 操逼操逼逼操操逼91| 欧美97网| 久草男人天堂| 亚洲欧美精品91| av无码精品久久久久| 久久精品成人| 欧美黑人猛交春色影视大全| 97超碰磁| 欧美在线电影| 伊人991| 亚洲日本加勒比在线| 日韩一级二级三级免费看完整版国语版| 久久九九精品一区二区| 欧美日日网| 国产成人免费观看在线视频| 欧美se综合| 99热在线不卡| 久久xxxx| 一区操逼日比视频| 亚洲精品久久久久毛片A片拉屎 | 人人妻人人狠人人| 最新av网站在线观看| KK色在线影院| 乱老熟女一区二区三区| 女优免费一区二区永久| 操高情无码| 波多野结衣之双飞调教在线播放| 人妻激情在线视频| 91啪9色| 操迟操逼在巾线Fre看| 97视频在线看| 色欧洲| 中文字幕第二页| 二级毛片| 欧美乱妇狂野欧美在线视频| 97爱爱影院| 久久人人看| 亚洲强奸乱伦影视网| 午夜无遮挡男女啪啪视频| 另类图片综合| 91色欧美| 91路www| 九九九九日本| 国精品一区二区三| 欧美日韩第一页| 99精品久久久久久久婷婷| 五月天久久综合网| 少妇天堂| 欧美日韩亚洲五月天婷婷| 久久综合日韩亚洲欧美| 亚洲日本加勒比在线| 乱伦AVxx| 盗摄女人妻在线| 激情五月天中文字幕色| 玖玖爱伊人玖玖爱| 九九热男人天堂| 激情综合亚洲| 国产热RE99久久6国产精品首| 国产黄片在线免费观看| 人人妻碰人人免费| 丝袜美腿亚洲| 久久六六| 久久久久久九九九九| 精品大全99999| 久久久久久久久久久999| 99啪啪| 青青草吊丝| 美骚妇av高清在线| 熟女乱伦二区| 国产女人操逼视频| 偷拍自拍在线视频观看| 高清无码 国产精品| 亚洲囯产精品女人久久久| 美女裸体无遮挡永久免费观看网站| 久久久久国产精品久久久| 天天综合网91| 舔人妻中文免费视频| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 久久综合激情| 国产成人+综合亚洲+天堂| 婷婷五月影院| 中文字幕亚韩| 第一高清av中文字幕| 伊人久久婷婷| 情色日播放AV| 国产乱弄免费在线视频。| 极品色电影院| 亚洲中文sv| 91处女在线观看| 26uuu国产亚洲综合| 欧美aaaaaaa| 黄色片大香蕉| 男人的天堂不卡一区二区| 美女淫穴| 熟女欧美日韩综合婷婷| 日韩国产九九精品一区二区三区毛片|