色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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
返回資訊列表
精品久久一区二区三区四区五区| 国内毛片无码一级毛片| 麻豆久久视频在线地址| 色综合超碰超| 亚洲无线观看久久| 26uuu国产亚洲综合| 亚洲性天堂| 97人人操人人摸| 国产精品视频电影| 综合久久久久久久久91| 97爱免费插| 久久噜| 成人免费毛片| 中文一区在线日| 久久性爱网站| 亚洲熟女乱色| 78久久| 欧美精品成人亚洲| 91美女视频| 色婷婷综合网| 亚洲欧美日韩免费观看| 色好看av| 国产剧情AV不卡在线观看| 麻豆伊人网| 久久黄片国产一区二区| 97chaopenrihan| 亚洲色图殴美色图激情乱伦| 97在线精品| 亚洲国产日韩精品久久久| 日韩伦理久 久久 清纯| 日韩乱伦影音先锋| 26uuu最新| 久久久99999久网站| 国产AV激情无码久久无码| 日韩 欧美 校园一区| 午夜影美女日鸡鸡天天视频国产| 色噜噜日韩精品| oumeisetu综合| 亚洲久久久| 欧美日韩成人在线| 成人av在线播放| 99re6国产精品99re| 精品国产嫩穴视频| 天天激情干| 亚洲欧美伦综合| 91av一区二区在线观看| 久久国产精品一级二级三级| 中文字幕五月婷婷免费| 久久久亚洲熟妇资源| 96AV精品| 五月色网| 国产高潮AA片免费看| 国产自制av蜜乳| 久久风骚城市人| 久久伊人青青草| 又黄又爽在线观看视频| 99久视频| 日本久久精品| 国产精品久久久鸭无码的功能| 岛国福利在线精品播放| 欧洲性爱无码区| 超碰美女97| 日本操逼aaaaa| 黑人在线91| 午夜AV污污污| 78m啪啪啪| 亚欧美色图| 狠狠躁日日躁夜夜躁A| 国产第二页| 日韩99神马视频播放| 精品一区二区成人动漫| 一本色道久久天天射天天干| 99热8| 中文幕97| 九久久九九久视频| 97国产超碰| 久久啊啊啊| 明星性猛交ⅹxxx乱大交| 性综合网| 天天做日日爱夜夜爽| 91精品无码人妻系列| 久久久久久亚洲中文| 日韩激情电影中文字幕| 太久视频| 婷色五月| 亚洲美女色图| 91强在线播放| 啊啊啊啊好爽好舒服一区二区易域| 天天综合网亚洲综合网| 天堂v无码免费视频| 国产www色在线观看| 和协无码影院| 99久在线精品99re8| 丰满人妻一区二区三区免费| 99精品视频在线观看免费| 操美女高潮抽搐白浆| 男人天堂一区二区| 熟妇一区,二区,三区。| 看免费一级在线播放毛片| 尤物一级在线免费观看| 69综合网| 欧美性爱日韩高清| 色色热| 熟女一区二区三区| 日韩欧美大片免费高清啪啪| 精品视频久久久久九九九九9999| 搞中出视频在线观看| 成人羞羞视频国产| 丁香六月天| 91强在线播放| 国产51色综合久久免费| 啊啊啊快操我视频| 精品亚洲国产成人精品| 精品人妻一区二区三区视频| 日韩欧美大力操| 成年女人一区| 日本爽爽爽爽爽爽免费视频| 久久久久久中文字幕中文字幕最新| 中文字幕无码不卡啪啪| 一级啊性爱在线视频| 加勒比人妻综合| 欧美日韩夜夜| 91人妻人人澡人人爽人人精品| 国产 v乱码一区二| 青青草这里只有精品| 26UUU欧美激情一区二区| 少妇一线天久久久久久| 中文字幕丰满人妻日本| 老熟女区| 欧美性爱五月天| 日本Suv精品一区二区| 99自拍视频| 久久久久久9| 亚洲春色激情小说| 免费一级性爱久久| 99少妇| 亚洲日韩一区电影| 免费av大片| 精品人妻av区天天看片| 加勒比日本在线| AV无码久久久精品| 亚洲国产97| 久热伊人99re| 大JI巴好深好爽又大又粗视频| 高清不卡国产| 9色在线| 2021国产成人精品久久| 亚洲男人天堂视频| 亚洲图片偷拍视频区| 人人澡人人干| 一本色道久久综合狠狠操| 日韩精品区二区三区不卡| 亚洲av成人精品一区| 性欧美精| 超清中文乱码字幕| 欧美91网| 亚洲和欧美裸体美女双飞视频| 亚洲啪啪性视频| 欧美精品三区| 欧美78P| 俺去啦自拍| 懂色AV中文| 综合色图,成人综合网| 午夜无码精品免费看性色| 亚洲一区在线观看欧洲| 久草尤物| …亚洲黄色厕厕女女在线播…| 激情情色五月天| 午夜天堂网| www.婷婷| 强奸a片网| 欧美十八禁导航成人| 韩国一级做a久久久久| 就去色综合| 日日妻色网| 97日视频| 好爽要喷了| www.男人天堂| 超碰综合97在线| 大香交| 久久啊啊| 又大又大又大又粗爽高潮观看| 992视频一区| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 欧美日韩情色一区二区| 熟女色图在线| 亚洲欧美日韩国产丝袜自拍中文| 97频视在线| 大香蕉在线SuP| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 偷拍亚洲情色| 日韩有码 一区二区三区| 久久无码成人| 艳美熟妇先锋一二三区| 欧美乱妇狂野欧美在线视频| 久肏视频字幕| 亚洲一区二区三区不卡国产欧美| 操逼逼无码| 特级特黄一级毛片免费| 丰满人妻一区二区三区性色| 99热在线观看| 蜜桃视频一区二区三区在线观看| 天综合网欧美| 日本三级A片网站com| 亚欧高清在线| 91女网站| 好爽视频在线观看| 全球成人中文在线| 色老汉色| 日韩一级二级三级| 99热这里只有精品99| 久久视网78| 男人的天堂日韩| 午夜视频黄| 久久久久久久久久久六六| 精品视频97| 亚洲人在线| 亚洲素人综合| 久久精品国产亚洲AV无码电影| 国产欧美岛国精品一区| 欧美论理片| 激情熟女12P| 中国女人内射6XXXXX| 北京专精特新企业招聘信息| 亚洲天堂人人妻| 超碰2017| 江都AV在线| 久草加勒比一区在线| 性色av大全| 91大学精品激情戏| 黄页| 校园春色 男人天堂 | 久久狠狠色噜噜狠狠狠狠97| 自拍丝袜美腿人妻| 91大神精品长腿在线观看网站| 天天日老熟妇| 日韩免费高清大片在线| 国产又大又粗又长视频在线| 日韩精品碰碰| 久久9免费视频| 亚洲欧美一区二区三区在钱蜜桃| 中文字幕三四区| 亚洲综合码| 人人做天天爱| 天天干天天日天天射黄色| 日韩欧美性吧婷婷乱伦大香蕉| 91美女在线视频| 乱伦系列一区二区| 国产精品扒开腿做爽爽爽视频| 免费A V在线播放| 亚洲宗合网| 摸奶性爱视频网站在线免费播放| AV男人天堂网| 97超碰精品图片| 免费视频a级毛片免费视频| 色图综合| 成人无码在线超碰网| 宅男91视频在线播放| 亚洲欧美国产va在线播放频| 欧美日韩青操| 中文字幕在线观看丝袜| 91内射| 欧美高潮| 亚洲欧美另类少妇精品| 蜜臀国产AV中文字幕| 美国aaaaa一级黄片| 嗯嗯不要视频| 人妻少妇久久中文| 国产精品 午夜福利| 强免费黄色网址| 脫衣舞一区二区三区| 综合色好色| 人妻色情天天操| 精久久久| 91亚洲最新在线| 久久神马影院| 人妻爽爽啪视频| 欧美另类色图片| 第一高清av中文字幕| a一区二区三区乱码在线| 欧美乱欲| 成人性交免费视屏| 免费国产视频| 色五月AV| 欧洲亚洲国产综合在线| 欧美成人性活片| 亚州一区二区| 一区在线精品中文字幕| 欧美天天| 欧美牲| 啊啊啊啊啊啊在线| 校园春色 亚洲| 怡红院久久老司机| 免费精品无码一级毛片牛牛影视| 深喉吞精| TS人妖另类精品视频系列| 97在线免费观看视频| 国产美女在线精品免费看| 无码动漫av中文字幕| 久久性爱精品一区| 人妻精品一区二区在线| 97久久精品亚洲| 密乳无码| 日日日啊啊啊| 青草影院内射高潮| 久久老熟女| 国产高清视频无码在线| 国产极品粉嫩馒头一线天av| 天天日B夜夜干B时时操B| 丁香色色网| 久偷拍| 蜜臀久久99精品久久久久久成人小说| 国产一国产一级毛片古装| 免费一级a毛片久久久久久鸭绿欲 国产精品亚洲天堂网址 | 99热精品青草在线| 91 综合 色| 色偷偷人人玩人人舔人人操人人摸人人爽 | 亚洲国产一级黄色视频| 人人操人人叉人人插人人| 精品国产一区二区久久| 精品免费囯产一区二区三区| www.av在线观看| 1204av韩国| 老女人综合网| 久jiu久神马影院| 伊人网在线点播| 久久精品熟妇丰满人妻99| 97精品久久久久久久| 亚洲天堂久| 中国农村熟妇毛片视频| 情色av电影| 国产精品人妻无码久久久互動交流| 日韩欧美中文日韩欧美色| 欧美在线l亚洲| 91丨人妻丨国产丨丝袜| 99丝袜福利在线播放| 一区二区三区一亚洲中文字幕、综合区灬| 午夜AV人气不卡| 97在线欧洲| 91无遮挡| 91麻豆天美国产欧美| 丝袜视频网国产90| 极品极品色影院| 九九九九精品在线| 96AV久久久| 操逼操逼逼操操逼91 | 97国产超碰| 国产欧美一区激情交| 国产400孕妇孕交群| 蜜桃在线观看一区二区三区| 曰韩精品视频一区二区| 97超碰伊人| 成年女人18级毛片毛片免费观看| 青青草原成人| 青青草在线视频人人想人人上| 国产v亚洲v日韩v欧美v片另类| 九九久久99| 中出91视频| 日本一二区免费| 免费A V在线播放| 超碰这里有精品| 久久婷婷一区二| 久久免费99精品久久久久久| 96久久久精品| 人妻天天爽夜夜爽精品2| 亚洲aV性爱| 色综合加勒比| 国产sv美女内射| 欧日韩在线观看| 久久大香蕉手机高清视频| 欧美黄片视频在线观看免费 | 日韩精品人妻一| 久久性爱精品一区| 亚洲综合在线91| 久久av色| 密臀在线免费观看| 亚洲精品第一| 欧美一区二区三区另类精品| 久久在肏| 日韩丨制服丨中文|在线| 天天插夜夜爽| 伊人久久久日韩一区| 色99视频| 97精品综合久久| 亚洲国产一区二区入口| 91综合网| 精品一区二区三区国产 | www.伪伪| 女人被添高潮免费视频| 色婷婷99| 91久久精品蜜臀| 狠狠操狠狠爱| 天美AV片| 欧美日韩精品国产91| 综合网久久| 美女裸体麻豆天美蜜桃91| 另类图片五月| 欧美日韩亚洲电影| 亚洲的天堂网| 999九九精品| 国产自产22区| 怡红院成人视频| 久久系列| 9国产超碰| 91社操逼| 把腿张开老子CAO烂你| 无码精品人妻一区二区三区妖精| 色色97爱| 亚洲av青草久久一区二区| 久久国产免费激情视频| 亚洲av强奸乱伦| 大鸡吧尹人在线| 亚码人妻| 视频不卡中文字幕| 热久久精品| 激情欧美日韩女同久久| chaopen97久久| 欧美日韩黄片精品在线| 日韩精品国产精品五码一区二区| 久干网| 亚洲 欧美 日本 国内 首页| 欧美天天干| 国产伦精品一区二区三区在线观| 蜜桃久久综合视频| 久久久精精精| 强奸乱亚洲| 欧美久久婷婷| 屁股久久久久久| 成人性爱视频在线看| 色色色综合| 中文字幕乱亚洲美女精品一区| 亚洲中文字幕久久人妻| 免费农村成人少妇人妻Aa一区二区视频| 爆乳免费黄网站| 少妇人妻在线| 亚洲色图日韩精品| 青青欧美| 99在线免费公开视频| 丁香五月天视频| 2017天天操| 嗯嗯啊啊啊好舒服| 中文字幕久久婷婷丁香五月天| 另类小说五月天| 欧美亚洲宗合色性图| 综合国产影视三级| 人妻丰满熟妇av无码区蜜桃| 亚欧高清在线| 97超碰人妻| 九一屌逼| 香蕉人人操tv| 蜜臀99久久国产| 日韩成人综合网| 色综合加勒比| 一区二区三区日韩欧美 | 欧美亚洲se91| 国产又黄又猛又粗又爽的网站| 大鸡巴久久| 亚洲丝袜色图| 久久久久久AⅤ无码免费肉站| 人人爽夜夜玩视频| 色色综合网站| 三级精品三级在线观看| 青青伊人这里只有精品| 狠狠色色| 美国aaaaa一级黄片| 久久男人| 91老熟女老女人国产老太| 日韩在线地址一| 中文字幕丝袜| 97久久国产精品| 国产精品一区二区三区在线密挑| 大香蕉线| 91模特在线观看| 人妻嗯啊啊在线播放| 澳门黄片一香蕉视频| 精品白丝一区| 丝袜无码a片| 熟女自慰久久久| 欧美操逼视频二区| 91粉嫩萝控精品福利网站_精品影音先锋国 | 秋霞视频一区二区| 国产精品视频麻豆入口| 久久久96| 亚洲一区二区AV| av东京热男人的天堂| 亚洲美女 晚间男人天堂 | 果冻传媒A片一二三区| 刺激精品视频| 日本免费一区二区不卡| 91亚洲欧美综合高清在线| 欧美亚洲20p| 91热爆在线| 男人天堂一区二区| 人妻美腿丝袜制服诱惑综合天堂-| 久久,精品一二三| 综合一区中亚洲国产成人综合精品 | 夜夜爽夜夜摸夜夜操免费视频| 青青草大香蕉在线视频| 女人天堂网| 国产欧洲精品亚洲午夜拍精品| 日韩天堂av电影在线观看| 九九无码| 日韩少妇无吗| 午夜成人福利影视| 玖玖超碰熟| 色哟哟精品1精品2| 欧美色图91p| 夜夜高潮夜夜爽国产伦精品| 欧美在线天堂| 波多野结衣AV无码一区| 国产欧美日本亚洲精品 | 欧美桃色网| 男女啪啪网站免费视频| 狠狠中文字幕| 混色激情av| 亚洲国产精品久久久男人的天堂| 国产精品久久久久9999小说| 国产精品区在线12p| 日韩少妇一区二区三区| 国产福利精品最新在线 | 超碰狠狠操| 久草视频制服诱惑| 国产成人精品一区| 午夜无遮挡男女啪啪视频| 久久久精品视频免费观看| 欧美成人亚洲精品| 欧美熟女妇同| 草莓精品视频在线免费观看| 国产精品香蕉热久久新品| 91精品人妻电影| 欧美九九爱| 五月天伊人网| 爱射综合| 夜夜爽夜夜操| 激情五月综合网| 91国产伊人大香蕉| 国产精品成人AV片免费看网站| 在线性黄高清免费视频| 天久久久噜噜噜久久国产精品爽爽| 国产自偷| 九月丁香| 国产精品久久久久久久久久久久久久吹 | 久久精品日韩| 强奸熟女一区二区三区| 久久久久亚洲AV无码专区少妇| 99热免费| 九九九九九精品| 国产一区96在线| 国产亚洲福利第一页丝袜| 中文字幕片| 97香蕉网| 久久久久久久久国产| 无码在线亚洲| 天堂男人网| 操亚州| 91精品国产麻豆国产自产在| 国产精品伦理| 蜜桃精久三区| 粉嫩av在线一区二区| 人妻夜爽夜夜爽| 亚洲熟妇丝袜在线观看| 翔田千里一区二区三区奶水| 日本性一区| 精品国产乱码久久久久久久久1| 人人操人人摸人人骑| 情色五月天网| 看日韩美女二区三区免费操逼视频 | 天堂69亚洲精品中文字| 一本色道久久综合亚洲二区三区| 99亚洲天堂| 无码天天操| 激情综合二| 美女t无毒不卡不卡| 91处女视频在线观看| 五月婷婷无码| 97国产高清视频在线观看| 大香蕉一级黄色片久久| 国语精品av| 99热18这里只有精品| 天美国产三级传媒| 国产精品久久久鸭无码的功能| 日本黄大片在线观看视频| 国产精品69久久久久孕妇欧美| 欧亚第一综合网| 无码9区| 狠狠色婷婷7777久| 免费看欧美美女黄色大片 | 九九九精品一区二区无码| 偷拍欧美激情| 欧美熟女激情| 精品97精品97| 97超碰资源网| 日本999精品| 男人的天堂在线| 9999九九九久久久| 午夜精品久久999热蜜桃介男人用| 午夜欧美J进J出白浆流出久久久| 97亚洲综合电影| 嗯啊不要在线观看嗯啊| 丁香激情网| ss久久| 骚逼一区二区| 久久人妇| 日韩久射综合| 久久永久无码人妻视频| 测评在线观看AV| 在线播放免费av福利片| 色yeye成人免费视频| 入口操逼网站| 国产超碰国产97| 午夜啊啊| 亚洲精品免费中文字幕| 每日更新AV| 久久麻豆一区二区| 神马久久久久久久久久| 亚州精品人妻一二三区| 天天干嫩逼网| 成人乱码一区二区三少妇| 日韩中文字幕人妻视频| 97精品综合| 久婷婷一区| 97资源站日韩| 欧美经典一区二区三区| 丁香五月色| 噜噜噜久久亚洲精品色情| juliaann丝袜大战黑鬼| 亚洲AV色图| 国产日韩欧美中文在线播放| 人妻丝袜无 码视频专区| 天天舔九色婷婷| 欲香欲色综合天天伊人| 日韩欧美性爱电影在线观看| 狠狠色噜噜狠狠狠狠狠色综合久久| 情色AV电影| 久久网亚洲| 91夜色| 丁香五月影院| 午夜啊啊| 九月婷婷久久| 久久成人东京热人妻| 夜夜做夜夜爽精品视频| 男人亚洲91首页在线| 欧美成人9797| 温婉少妇玩3p| 九九干| 九久精品| 78m啪啪啪| 中文字幕在线高清男人的天堂 | 天美av在线观看| 操逼www.| 男女啪啪网站免费视频| 欧美日韩97在线| 开心六月色| 91 手机在线播放 绯色| 乱伦3P视频| 国产精品国产自产高清AV| 久久97视频| 精品美女少妇一区二区| 激情四射五月天| 中文字幕一二区二三区人妻专区| 青草精品视频一日本久久久久网站| 高潮9999外国| 99热| 91久久久老司机| 亚洲天堂 视频你懂的| 嗯啊不要啊啊在线观看视频| 欧美日韩人妻精品系列一区二区三区| 久久精品国产亚洲AV清纯| 99抽插| 久久亚洲AV无码专区国产精品| 中国少妇XXXX做受| 天操天操夜操夜月操月年年操| 精品午夜福利| 91搡老女人老妇女老熟女歌词翻译| 一级成人性爱| 婷婷精品国产一区二区三区日韩| 超碰九7| 中文字幕久久精视频久久大全| www.人人cao| 亚洲牲交| 日韩人妻无码不卡网站| 伊人久久大香蕉线AV五月天| 精品一区二区成人动漫| 不卡中文字幕aⅴ在线| 蜜臀在线网站| 亚洲宗合网| 99自拍视频在线| 日韩激情小说一区二区| 91无遮挡| 青青草中文字幕| 五月天精品| 999日韩中文精品观看视频。| 国产理论视频在线播放| 老司机福利青青草| 久草资源在线| 四虎影视精品| 亚州色国| 99蜜桃臀久久久欧美精品网站| 九九九久千久久激情蜜桃在线看 | 婷婷五月天久久精品视频一区二区三区 | 老司机天天操| 久久精品人人做人人看| 免费成人自拍视频在线| 亚洲综合第一页| 日本二三四区| 久久啊啊啊视频| 91欧美美女日韩国产婷婷| 国产有码一区| 欧美婷婷久久| 亚洲天堂日本| 午夜精品人妻二区三区| 精品二区三四区五电影 | 99精品久久久久久| 东京热伊久| 亚洲无码一区成人免费午夜 | 9Ⅰ超碰| av网站免费看| 日本操大逼| 亚洲AV无码成人精品久久| 蜜乳av首页| 色欧美天天| 精品乱码久久久久| 97色97好| 9精品久久久久| 亚洲日韩天堂| 精品性爱一二三区| 亚 欧 美 综合| 久久久18禁| 久艹99| 翔田千里A片一区二区| 91社区拍啪人妻| 亚洲,欧美,春色,另类| 刺激性视频黄页| 亚洲麻豆18发?| 99久久99九九99九九九| 手机看片日韩人妻| 人人扣人人操| 日韩欧美被操黄免费观看| 欧美激情 一区| 熟妇xxxxx性春色| 99热9| 男女香蕉一区二区| 成人小说视频在线精品欧美| 国内毛片无码一级毛片| 丝袜亚洲91| 69av一区二区三区| 91婷婷伊人狠人| 久草资源在线视频官方总站日韩丝袜美腿| 亚洲少妇自拍中文字幕懂色| 影音先锋少妇| 337p大胆噜噜噜噜噜91Av| 丁香婷婷激情五月天无毒不卡| 91熟女网| 夂久色| 一区,二区,三区视频| 999精品国产高清一区二区| 日本有码久久| 熟妇乱伦一区二区| 啊啊啊 在线观看| 中文字幕亚洲热播人妻| 日比av无码| 婷婷激情四射| 能看的AV| 人人操人人操人人人操| 国产亚洲精品美女久久久| 91中出在线| 人妻啊啊人妻啊啊| 蜜臀久久99精品久久久久久酒店| 日韩情色视频| 欧美日韩999| 手机在线A片| 亚洲欧美国产va在线播放频| 久久久久久久综合,国产| 久久精品天美| 欧插网站| 日本在线一二| 俺去俺来也在线www| 日熟女| 少妇被c 黄 免费观看| 中文字幕福利视频一区二区三区在线观看| 99热精品国产| 强上我不卡卡| 久久手机视直播| 丰满人妻-区二区三区免费| 老外又粗又长一晚做五次| 欧美v日韩v亚洲v最新在线| 加勒比五月天| 射丝袜大香蕉| 色偷综合| 国偷自 一区二区| 茄子社区国产精品| 亚洲另类小说卡通动漫| 日本三级A片网站com| 精品久久久久久AV无码| 色黄污美女啪啪啪免费网站| 日韩操p| 99国产在线 精品 视频| 日本精品无码三级网站| 人人操人人插人www| 婷婷激情五月天小说网| 亚洲精品日日夜夜52| 午夜丁香| 性欧美天天| 大香蕉综合| 亭亭丁香激情| 99热18这里只有精品| 天天综合站| 思思热一热婷婷热一热| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 日本506070| 久久久久久亚洲精品中文字幕人妻| 亚洲国产精品9999在线观看| 欧美中日韩XXXX| 亚州高清色综合| 五月天色图影视| 精品国产www久久| 中文字幕国产| 性色AV网站| 加勒比性爱成人在线| 色天使大香蕉| 在线人妻熟女一区二区三区四区五区| 亚洲图片偷拍视频区| 国产精品女生av| 婷婷av在线中文字幕| 人人性爱视频免费| 97久久久| 色五月AV| 亚洲国产成人精品女人久久久| 精品中文字幕一区二区| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 久九九九| 日韩熟女精一区二区三区不卡| 国产成人亚洲精品无| 吖在线不卡一区二区国产剧情| 亚洲色系另类精品国产| 99操| 少妇天堂网络| 天天在线91| 韩三级a视频在线观看| 亚洲女毛多水多21P| 欧美在线伊人色| 超碰97人人乐| 国产精品一区二区校花| 在线 制服丝袜中出 人妻| 欧美色图中文字幕| 色妺妺AⅤ| 91天堂色男人的天堂| 国产精品乱码久久久久久久久久久久| 亚洲AV色图一区| 18禁在线视频| 91黑丝少妇| 91n处女在线观看| 国产熟女免费观看久久| 熟妇的味道HD中文字幕| 成年女人黄网站| 欧美综合制服在线| 欧美色图20p| 色99视频| 啊啊啊快操我视频| 51久久夜色精品国产麻豆| 亚 欧 美 综合| 女生看匆91网站| 五月丁香色婷婷| 激情婷婷丁香网| av九九| 天天上日日上日韩精品| 美女91在线观看| 亚洲一本大道中文字幕无码在线| 中文字幕精品专区搜索结果91| 婷婷色导航| 精品日韩中文在线| 大屁股国产在线视频| 国产97视频免费观看| 夜夜高潮夜夜爽夜夜爱爱一区| 夂久色| 欧美福利视频啊啊啊啊| 中文字幕久久精视频久久大全| 欧美少妇性爱网站| 精品成人久久久人人亚洲| 这里只有精品视频在线| 强奸乱伦AV一天堂网| 亚洲熟妇综合久久久久久| 蜜臀久久久久久999| 97色97干| 国产有码一区| 男女性感激情网站| 日本亚洲嫩草影院啪啪| 五月天婷婷小说| 91人妻最真实刺激绿帽| 亚洲偷91色| 五月天激情网图片| 涩综合导航| 超碰97.com| 操我啊啊啊啊啊| 国产三级多多影院2022国产AA一级毛片无码| 亚洲网污污污污| 午夜丁香婷婷| 亚洲国产一区二区入口| 暴力av在线| 蜜屁Av| 色区久久| 欧美在线官网| 岛国大片在线观看网站入口| 色操逼网| 国产精品一级二级在线| 国产亚洲中文不卡二区| 国产吹潮女在线观看| 99久久无色码| 东京热一区二区三区四区五区六区| 狠狠爱综合网| 婷婷香蕉| 中文自拍欧美影视| 加勒比伊人综合| 天天综合色| 97超碰9| 日本熟妇精品九九| 激情文学小说一区二区| 操死我了啊啊啊| 欧美亚洲韩国视频十五区| 成人青青草原伊人| 一区二区高清视频| 国产无码高清操逼视频| 黄色区免费观看中文字幕| 欧美日韩性爱精品| 性爱乱伦网址| 丝袜美腿欧美| 久操在97| 中文字幕乱妇免费视频| 一级乱伦网站| 久久精品日韩| 天天爽天天爽| 岛园激情| 日韩亚洲精品一区二区| 99在线免费公开视频| 五月婷婷啪啪| 91高潮喷水美女| 青娱乐 成人娱乐在线| 91小视频| 日韩色欲久久一二三四区| 国产亚洲精品农村妇女 | 爱av免费| 色五月婷婷中文字幕| 蜜臀国产AV中文字幕| 一区二区三区成人| 欧美 色 亚洲| 国产亚洲深夜激情| 99国产精品视频尤物| 99热这里只有精品8| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 日韩精品在线观看网站| 久久婷五月| 国产人伦精品一区二区三区| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊| 在线天堂资源亚洲| 日韩一级性爱无码| 国产18精品亚洲精品| AV天天在线观看| 91真人天天在线| 国内一级精品| 日韩黄片视频试看| 日本超碰在线国产一区| 91伊人大香蕉| 99少妇| 日本色色视频网站| 少妇超碰在线| 91中出在线| 亚洲精品乱码线路中文字幕| 婷婷大香蕉| 330dv亚洲成年视频网| 亚洲无码精品AV久久久| 亚洲操人| 99热这里只有是精品10| 亚洲色人| 992这里有精品| 高清不卡 中文 人妻| 久久永久无码人妻视频| 欧美疯狂做爰xxxx| 欧洲亚洲人人爽爽视频| 精品人妻免费观看| 九九香蕉网| 天天爱综合网| 91c色| 九九热视频这里只有精品| 一二三区精品视频| 国产AV激情无码久久无码 | 日韩啪啪视频| 欧美一级黄片免费播放| 伊人嫩草| 亚洲av影音先锋| 97超碰色屌| 女人天堂av在线播放| 理论久久婷婷网 8| 蜜臀久久99精品久久久久久成人小说 | 老司机午夜精品视频| 久久久久一本一区二区青青蜜月| 欧美亚洲手机在线| 天堂中文资源在线bt| 亚洲图片偷拍欧美| 涩涩五月天| 亚洲性刺激| 亚洲有码 视频一区| 久久黄色视频一区二区三区| 日韩淫色网| www.夜夜| 欧美日韩久久精品爱爱| blacked精品一区国产| 精品人妻一区二区免费蜜桃| 国产免费内射视频| 蜜桃久久久久久久| 思思热国产高清| 97在线观| 欧美性爽xyxOOOO| 色69大色97香蕉| 久久XX| 久久综合久色欧美综合狠狠 | 黄片免费视频2019| 亚洲 欧美 色图| 在线看免费无码AV天堂的| 97一区二压| 性爱乱伦视频免费| 欧亚揄拍偷拍精品视频| 日韩性爱人人爱人人操| 好舒服视频| av午夜影院在线播放| 天天综合,91入口| 国产久久久久久久久一区二区| 91美女视频电影| 国产精品久久伊人| 2017天天操| 强奸少妇AV导航网| 日本视频在线中文字幕| 国产成人AV麻豆| 黑人狂躁日本妞一区二区三区| 久久中文色图| 中国乱伦一区二区| 我想要啊 啊 啊| 天天干一干| 绯色一区二区三区不卡少妇| 天天综合网~69| 美女天天干| 亚洲人久久久网| 久久一二三四五六七八九区区区| 欧美 亚洲 在线| 极品粉嫩一区二区| 国产又大又硬又长又粗| 亚洲丝袜少妇在线| 尤物av网站| 国产Av超碰| 国产精选视频| 99啪啪视频| 九色在线熟女国产黑人| 一起草视频在线| 国产AV人人 夜夜人人澡| 黄页视频网站野外| 偷拍精品一区二区三区| 日韩天天本| 97碰在线视频| 日本一区二区不卡| 大香蕉色欲AV| 一区二区三区精品黑丝白丝酒店对鸡 | 国产亚洲深夜激情| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 亚洲影院小综合| 亚欧无码在线| 亚洲少妇在线观看| 日韩色图 一区二区| 日本久久久久久久久| 亚洲国产成人福利在线观看| 校园春色 欧美| 99re在线视频国产| 日本曲间由美性生活片| 亚洲自拍偷拍视频在线| 97网站在线观看| 爱欲AV| www.yw尤物| 国产浮力影院第1页| 欧美色狠| 99这里只有精品| 偷拍五区| 日韩内射视频| 欧美视频在线视频免费va| 亚洲天堂中文字| 亚洲欧美天堂| 大白逼三四级| 国产午夜视频| 亚洲91极品| AV无码久久久精品| 亚洲国产精品无石码久久 | 大稥蕉免费视频这里只有精品| 日本熟女中文字幕一区| 亚洲国产成人精品999| 久久久性爱| 99999这里都精品| 中文字幕文字幕无码一区二区三区电影99| 亚洲1区| 国产午夜无码片在线观看影视| 粉嫩av一区二区三区天美传媒 | 99激情视频| 探花激情视频| 免费精品人妻一区二区三| 欧州一区二区三区四区| 欧美色亚洲| 中国熟妇| 欧美同性恋 的搜索结果 - 91n| 日日妻色网| 超碰地址97| aaa淫乱视频| 亚洲中文电影| 天天操女人| 91久久久久免| 黄片www.| 成年人性爱日韩| 美国精品国产精品| 95自拍视频在线观看| 日欧操屄| 性综合网| 久久久96| 精品欧美乱码久| 女优大全 - 91n| 97亚洲欧美| 欧美在线天堂| 97视频免费播放| 国产精品熟女一区二区三区| 超碰99在线| 变态综合色| 精品一区二区三区国产| 91色狼| 97在线视频免费| 国产无马在线| 91亚洲色人| 成人av影院在线观看| 九月激情婷婷| 色波多| 日本色色色网站免费看不卡| 亚洲激情色片 | 日韩精品人妻中文字幕有码午| 国产女人操逼视频| 簧片免费看视频| 97综合在线| 小少妇| 久久精品亚洲东京热色播| 精品v1区| 99操| 亚洲第一男人天堂| 日韩欧美中文字幕搭讪巨乳美人妻视频| 天天影视综合色| dy888午夜老子影视达达兔| 天天看天天日天天操| 秋霞操逼片| 午夜理论片在线观看免费| 午夜一区| 天天肏美女| 爱妻综合网| 黑人性欧美| 骚女天天综合网| 成人无码在线视频网站| 又大又长又粗又爽又黄| 国产一级内射无挡观看| 自偷自拍的亚洲视频| 另类小说五月天|