色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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
返回資訊列表
亚洲午夜精品久久久中文影院| 超碰79人人乐| 日韩无码第3页| 精品妇女一区二区三区| 国产一级黄色片在线观看| 国产精品一区二区三区四区五区| 国产白丝在线| 狠狠干,狠狠操| 东北丰满熟女国产一区| 风月影院十八禁| 久久久久9999精品九九九| 久久久婷婷| 天天干一区二区| 亚洲乱色熟女一区| 国产日韩精品suv| 日韩精品人妻中文字有码在线| 九九九九九九九九九九九免费国产| 亚洲国产一区二区入口| 日韩国产欧美伦理在线| 国产精品美女久久久久久网站| 91美女看B| 伊蕉97蜜桃97狠狠综合干 | 2017超碰| 色婷婷成人综合| 色色色欧美| 首页中文字幕中文字幕免费| 欧美日韩 强奸乱伦| 欧美日韩97| 在线 欧美 亚洲| 粉嫩小泬久久久一区二区| 黄色乱论网站| 久操B网| 亚洲午夜福利视频| 伊人黄色视频免费观看| 肉嘟嘟www视频在线观看高清| 超碰在线第一页| 国产女同性恋视频| 少妇三P| 青青草精品| 99久久这里只有精品| 国产精品视频精品一二| 99性视频| 亚 欧 美 综合| 欧美日韩第一页| 日韩一级片在线看| 99操碰| 日韩国产中文字幕| 99性爱| 国产精品老熟女一区二区| 国产玖玖| 欧美色图天堂网m| 中文字幕一区二区三区蜜臀| 久久久久久波多野吉衣高潮| 热久久无毒不卡| 97日韩欧美亚洲| 欧美姓爱综合网| 欧美亚洲情色| 九月丁香婷婷色| 日韩久草| 天天天肏屄肏屄肏屄欧美欧美| 亚洲国产熟妇综合色专区| 亚洲日韩精品久久久久一区壹牛| 国产AV色黄看到爽| 抽插无码高清一区| 久久熟妇五十路一区| 国产小炒后入式| 玖玖草久草99蜜月一区二区三区| 国产日产欧产美韩系列麻豆免费| 久久久久久久97| 大香蕉免费3| 黄在线| 亚洲夜色在线| 国产熟码AV| 免费国产视频| 探花熟女,姿勢到位,體驗感也到位| 亚洲另类电影| 亚洲永久AV无码精品秋霞| 97在线欧| 国产中文字幕在线点播| 亚洲中文字幕av| 99国产精品在线观看| 中国熟女网站| 精品国产乱码| www.色五月| 亚洲AV无码| 欧美成人精品一区二区男人蜜臀| 伊人天堂在线| av国产无码| 色综合中文字幕不卡| 黄呦呦在线| 日本熟妇人妻一区二区三区| 激情抓乳插进去啪啪啪日韩 | 日本一区二区电影网站| 欧美精品丝袜久久久中文字幕| 97激情97激情| 91老司机在线| 欧美夜夜草视频| 青青草天天亲夜夜操网| 性色av蜜臀av色欲aV| 嗯啊不要啊在线| 农村妇女精品一区二区| 日韩激情无码影院| 久久免费中文字幕在线观看| 久久久久久久久久久久97| 隔壁邻居波多野结衣中文字幕| 五月丁香婷婷啪啪| 日韩精品系列| 欧美亚洲一级在线观看| 日韩熟女精品无码专区一区二区| 熟女人妻一区二区三区免费看| 中日韩欧美精品无码AⅤ一区二区| 久久理论字幕视频| 一级性爱视频免费在线| 神马久久久久眼| 欧美综合1性辶| 色色五月天激情| 亚洲黄a三级三级三级看三级| 在线午夜成人无码视频| 色爽爽文学| 少妇三p| 国产精品麻豆成人AV艾秋| 欧美丝袜中文字幕07在线| 伊欧美综合视频| 精品欧美日韩在线观看| 家庭乱伦网站国产| 人澡逼| 国产成年免费大片黄在线观看| 日韩乱伦AⅤ| 亚州人妻| 亚洲中文日韩欧美大香蕉视频| 夜夜操一区二区| 黄色免费网页无码| 国产在线激情| 亚洲男人天堂2019| 91操操操操| 亚洲中文字幕乱码无码一区二区| 乱伦一二三区| 老女人老91妇女老热女| 蜜乳AV色欲AVAV无码| 亚春色色| 99re这里只有精品中心播放| 一区二区三区国产在线播放| 精品小视频在线| 17c在线成人免费A片观看| 国产亚洲色婷婷99精品91| 成人性爱视频在线看| 无卡一区=区| 婷婷伊人网| 国产精品久久| 亚洲欧洲色情高清| aaa一级黄片| 亚洲男人天堂网| 黄色不卡视频| 亚洲天堂中文字幕无码男同| 亚洲黄色视频在线观看视频| 久久亚洲日韩国产欧| 婷婷午夜| 久久毛卡| 电家庭影院午夜69久久夜色精品国产69乱| 成人一区二区三区四区| 亚洲日韩肥臀视频在线观看| 丰满高潮18xxxx| 97日亚洲欧美| 97伪v| 成人日韩欧美| 日韩国产乱子伦App| 国产精品农村妇女精品| n1038 一二三区| av天堂5| 色欲Av人妻精品一区二| 91国产丝袜白虎| 亚洲中文字幕有码视频一区二区三区| 精品在线观看视频在线| 2024年最新色情网站在线观看| 日日日大屁股骚女人精品| 天天摸,夜夜摸| 国产精品视频在线播放 | 欧美色图校园春色| se,,,亚洲欧美| 久久亚洲婷婷| 青娱乐国产精品| 日本不卡二区| 日本国产二线女色| 少妇专区一二三四五| 五月婷婷综合在线| 亚洲Av无码成人精品国产| 日本韩高清无砖码22o| 67914在线兔费成人视频| 亚洲美女色图| 躁躁日曰躁2020| 久久久久久亚洲精品不卡人乳| 免费αⅴ在线观看| 国产精品蜜臀久久久久无码AV| 九九九九九九综合| 91久久精品美女高潮喷水| 九九久久国产精品| 日韩精品电影| 欧美色图 人妻| 中文字幕一区 二 区 三 四 五 区日 日 骚| 日韩丰满熟妇| 老司机射| 五月天日日操夜夜操| 中文字幕诱惑制服人妻丝袜美丝袜美| 和协无码影院| 9999亚洲电影| 国产一区二区久久| 久久熟女久| 国产免费久久精品99re韩国| 啊啊啊啊啊好大好舒服想要| 中文字幕久久精视频久久大全| 亚洲情色电影网| 五月香婷婷| 亚洲成人免费在线| 日韩AV一区二区三区四四| 五月天色五月| 操人妻丝袜高跟| 99色悠悠| 伊人久久大香线综合无码| 91偷拍欧美亚洲| 久久综合中文国产| 和协影院中文字幕三区| 综合网97| 亚洲高潮影院| 日本伦乱九九九综合| 亚欧无码线免费观看视频| 亚洲网站一区二区在线| 亚洲国产精品9999在线观看| 美女午夜福利免费视频| 91精品人妻一区二区三区蜜桃| 久操国产在线| 人人操人人摸人人骑| 人人操欧美风骚| 天天谢天天干| 亚洲最大网站av| 久热91| 久久久草成人网站久久久草成人久久久草久久久 | 乱伦一二三区| 色色操| 亚洲熟妇图片| 中文字幕av丝袜| 日韩97超碰| 黄片www视频免费| 国产日韩区| 日韩黄色成人性爱| 久久久久久久久久久人妻| 国产不卡中文字幕免费avi| 久操影视| 起碰97| 亚洲制服aⅴ中文字幕| 操人91| 在线观看十八禁| 中文字幕在线2| 人妻精品一区二区| 欧美视频一区二区在线| 亚洲成人一二三区| 欧美情色亚洲| 国产精品久久久久久久AV大片| 国内三级自拍小视频在线观看 | 人妻精品一区二区| 5月婷婷6月六月丁香| 久久亚洲影院一区二区| 国产AB视频| 91视频伊人| 99久久婷婷国产综合| 亚洲视频,小说| 999国产精品999久久久久久| ..日韩av毛片精品久久久| AV中文在线| 日韩美女高潮喷水视频| 东京热视频网| 亚洲无套久久嗯嗯| 久久风骚城市人| 无遮挡又黄又刺激的视频| 91一起操| 欧美综合777| 精品国产Av无码久久久亚洲| 久操视频免费在线观看| 欧色网址| 3571色综合一区二区二区| 久久婷婷欧美| 综合国产影视三级| 亚洲精品欧美专业| 国产精品电影大全| av天堂影视中文在字幕在线中文 | 欧美成人一级免费电影| 精品午夜福利国产一区二区在线观看 | 好好的日:com久久九九| 天天激情综合站| 亚洲色图久久成人| 一区AV| 男人兔费天堂| 手机看片91人妻| 99热超碰| 内射小黄片| 亚州综合电影| 国产精品探花在线| 青青草一区二区高清无码视频| 尤物一级在线免费观看| 欧美精品,四区。五区| 日韩欧美tv一区二区在线观看| 躁躁日曰躁2020| 国产福利视频精品视频| 97操在线| 婷婷色播婷婷| 亚洲风情在线观看| 久久国产视频专区一二三| 久久永久无码人妻视频| 艳尻美人妻| 国产超碰AV在线精品| av在线人气| 88xx成人精品视频| 精品视频专区| 精品国产人成在线| 亚洲精品国产熟女久久久| 中文久久爆乳| 天堂成人网| 日本免费不卡二区| 中文字幕精品一区欧美| 亚洲中文字幕精品久久久久久直播| 久久久久久裸体| 国产又爽又黄| 国产一级内射高清视频 | 成人小说另类在线| 91热色| 99精品在线| 免费a级毛片av无码久久精品中文字幕| 日日夜夜国产综合| 大香蕉乱伦视频网| 91内射| 夜夜嗷嗷一区二区| 99色在线观看| 午夜寂寞欧美| 婷婷伊人五月| 91美女国产在线| 日韩乱码Av| 久热在线精品免费观看| 久久久九| 日本天堂网| 色综合av男人天堂| 九九碰九九爱97超| 精国久久一区二区三区98| 91精品综合久久久久久五月丁香| 国产日韩精品suv| 嗯嗯啊啊日韩精品| 九九久久国产精品| 熟女人妻精品一区二区视频 | a片自拍直播视频| 国产精品电影推荐| 久久久久久久极品香蕉视频| 极品色www影院| 综合久久97| 美熟女逼导航AV操逼| 嗯啊不要啊在线 | 免费看污网站| 亚洲激情在线| 人人插人人摸人人| 日本高清免费一本视频在线观看| 少妇高潮一区二区三区在线| 国产偷仑| 91亚洲精品青草| 国产精品免费视频人成| 国产亚洲精品av一区| 久热热| 大干人妻| 极品色电影院| 99亚洲人人| 亚洲人妻av| 综合免费无码中文| 在线国产福利网址导航| 精品国产丝袜一区二区三区乱码| 精品视频一区二区| 777超碰| 亚洲成人在线乱码色午夜| 欧美传媒一区| 台湾佬中文娱乐网久久久久久久久久com | 丁香五月性爱| www五月| 一起草精品人妻| AV污污污污| 日本免费一级AAA大片器 | 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 熟女网站最新| 国产精品视频在线播放| 久操在97| 超碰97导航| 蜜乳av一区二区三区| 天美一区在线| 无码精品啪啪啪一区二区三区三州| 亚洲国产丝袜在线观看| 亚洲欧美日韩中文久久自慰| 九九九精品色乱九九九| 91在线国产后入风骚翘臀美女素人| 精品9区| 狠色婷婷久久一区二区三区_| 熟妇熟女一区二三区| 亚洲国产综合久久天堂| 久久婷婷在线观看视频| 四虎884a| 亚洲人精品久久久| 久久亚洲一区女同性恋中文字幕| 欧美人妻制服| 无码精品久久久久久亚洲| 免费看片黄| 密乳AV免费观看| 嗯啊抽插大香蕉网页| 伊人女女资源在线观看| 婷婷激情五月综合| 禁止观看美女黄| 97 超碰 人人做 人人爱| 欧美第一页| 偷拍亚洲视频一区二区三区四区| 男人天堂网站| 免费啪啪一级视频| 亚洲日韩一区电影| 精品视频97| 五月天亚洲网| 18禁在线视频| 亚洲激情深爱文学小说网站| 久久久啊啊啊| 操操操五月天婷婷丁香影院| 99久久综合网| 久久久久久91香蕉国产| 超碰 欧美| 久久国产在线一区二区| 日韩性爱再线视频| 欧美A√综合网 | 欧美性爱一区二区| 3P乱轮视频| 内射中出日韩在线观看视频| 国产99999久久精品| 色欧美综合| A V视频日本| 亚洲精品一区中文字幕乱码| 久久av网| 久久华人网| 婷婷久久五月综合激情| 在线国产探花| 性生活无遮挡纯毛片在线看| 国产精品久久久久婷婷二区次| 免费的黄片有限公司| 五月丁香婷婷综合网| 一区二区三区蜜桃成人撸久久东京热| 99少妇内射| 欧美日韩不卡a片| 国产精品女同| 一区二区三区一亚洲中文字幕、综合区灬 | 亚洲一级特黄大片在线播放91| 欧美日韩国产在线| 婷婷九月丁香| 91足交| 久久、1234| 丁香九月婷婷| 九月色婷婷| 大香蕉92| 亚洲一级特黄大片在线播放91| 麻豆亚洲Av成人无码一区精品| 国内精品久9| 奇米狠999| 久久久久9999妇女| 日日日日做夜夜夜夜无码| 欧美老熟另类| 亚洲一区二区在线观看91| 综合久久9| 欧美日韩99| 丝袜美腿91| 风流老熟女一区二区三区l| 青青草日本中文字幕| 亚洲精品久久久久毛片A片拉屎| 99久久9| 亚洲91射| 99ri视频| 亚洲AV成人无码久久精品播放| 老司机福利青青草| 无码日韩网站| 大香蕉欧美| 91精品丝袜久久久久久无码人妻| 日韩97超碰| 五月天激情四射| 日本 情色 1区| 啊…啊…操我用力操我| 精品午夜福利导航| 亚射在线| 国产精品无码av嫩草| 69久久久久久久久久久久久| 无码精品蜜桃一区二区三区ww| 欧美天天综合站| 秋霞影音一区二区三区| 天天操妹子| 综合熟女| 欧美高清无码免费视频高清版| 日本三级小说中文字幕| 亚洲最大成人a毛毛片| 日本免费一区二区不卡| a网站免费观看| 一级二级在线观看| 日本性爰一道本| 欧美熟妇亚洲版| 中文字幕性感少妇av| 九七超碰人人乐| 射 色综合| 丁香六月激情| 91熟女在线| 天天综合影院91| 黄色小视频日本txt| 另类欧美色| 黄网站黄视频网站进入口| 国内毛片国产专区二| 日韩情色一区二区| 国产熟女精品区| 999国产精品999| 欧美人黑A片无码免视费| 欧美成人综合| 亚州色图第三区| 奇米四色影视777久久久| 国产一二三福利视频网| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV| 亚洲Av无码成人精品国产| 96精品久久久久久久久久| 精品九九九九九九九九九| 丁香五月性| 伊人黄色片| 欧美成人精品欧美一级乱黄一区二…| 操b网站亚洲无码| 超碰99在线观看| 乱伦a片视频| 伊人操| 亚州色阁| 国产婷婷一区| 欧美色图天堂在线| 国产一级αv免费看片| 亚洲欧洲中文日韩女优乱码| 97久久国产| 天堂综合| 91爱看| 草莓精品视频在线免费观看| 欧美日韩久久精品爱爱| 二级毛片| 啊啊啊好舒服视频在线观看| 亚洲精品天天影视综合网| 久久综合99| 乱伦AVxx| 郑州宾馆老熟女露脸啪啪| 日本操逼无码| 强奸熟女一区二区三区| a人欧美综合天堂麻豆| 人妻少妇视频在线播放| 激情专区综合| 睡产熟女乱伦| 日本性爱少妇| 亚洲九月丁香| 日韩欧美午夜视频在线| 国产免a费看黄片在线| 青青青国产手线观看视频2| 97精品视频| 精品一区二区三区丰满熟女-亚洲欧美一区| 偷拍2020| 天天干1区2区在线| 欧美第一页| 啊啊啊啊好疼视频| 97国产精品久久久久| 亚洲性猛| 热热色综合网| 91精品丝袜久久久久久| 日韩本不卡视频在线观看| 国产精品另类一区大香蕉| 久久中久文96| 日韩无码人妻中字久久三区四区| 欧美第五页| 午夜传煤十二区精品| 国产嫩草精品A88AV| 六月婷婷五月丁香| 欧美夜夜狠| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 无码久| 夜夜 中文视频rt| 亚洲青青草| 超碰97久| 又粗又长又大国产不卡| 亚洲男人久久综合天堂| 一本一道vs波多野结衣| 91久久99久久91熟女精品| 国产精品一二三免费网站| 色哟哟国产精品免费网址| 久久亚州高清| 亚洲骚男同com| 91丝袜视频在线观看| 无码精品久久久久久亚洲| 翔田千里AⅤHD无码| 91操人| 水澄无码AV| 天天碰操中国年青熟妇| 曰本特级特黄特色黄色A级网站高清在线免费看 | 一级毛片电影免费看| 国产宅男宅女在线观看| 99综合网| 久久一二三四不卡| 天天综合~91| 操逼网站网站| 久久性爱免费送| 久久久影院| 搡老女人老91妇女熟女| 欧美精品宗合| 色综合尤物| 天堂日本亚洲欧美| 免费视频观看60秒| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 色五月AV在线| 亚洲网站一区二区在线| 性做久久久久久免费观看软件| 激激五月| www.久久超碰| 免费伦费视频在线观看| 日韩99神马视频播放片在线播放| 久久原创中文| ,成人免费啪啪视频| 开心五月深爱五月| 久久久成人免费av电影| 日日操免费视频| 婷婷色综合| 制服丝袜第二页| 久久久久久99AV无码免费网站| 久久曰曰| 欧美另类天堂| 久久成人国产| 白丝少妇一区二区| 日本性感人妻91| 亚洲欧美精品一区天堂久久 | 蜜臀av一区二区三区免费观看| 人妻丝袜肏逼| 999精品国产高清一区二区| 欧亚综合一卡二卡中文字幕| 密臀国产在线| 把腿张开老子CAO烂你| 欧州激情视频在线一区二区| 一区二区三区国产在线播放| 69精品少妇一区二区三区蜜桃| 日本久久久精品电影| 成人亚欧免费视频| 亚洲一卡2卡3卡4卡乱码网站| 一本正道久久熟女| 成年无码动漫av片无尽在线| 国产伦精品一区二区三区视频女| 风间由美日韩欧美久久| 日本一级性爱| 亚洲熟女一区二区| 亚洲五月婷| 青青五月天| 色色五月婷| 亚洲熟女诱惑| 欧美亚州手机在线| 91久久青青草原精品| 天美国产精品| 欧洲黄色网| 加勒比综合九九99视频在线播放| 中文字幕一区二区三区四区在线视频| 日han少妇无码| 韩国一级婬片A片无码天美| 日韩精品操少妇| 婷婷去俺也去六月色| 亚洲文学偷乱拍啪啪啪啪| 亚洲国产高清福利视频| 97ai亚洲| 91色碰| 欧美精品一区二区少妇免费A片| 欧美91在线+|+欧美| 国产三级多多影院2022国产AA一级毛片无码| 亚洲成人妻日韩在线| 欧美激情中文字幕另类小说| 欧洲亚洲人妻无码高清久久三区四区| 男人的天堂啪啪| 1000部熟女视频在线观看| 亚州综合图片| 国产又色又爽又舒服的三级视频| 日本二三四区| 97色97好| 日韩性爱高清免费视频| 69一区二区三区| 亚洲精品欧洲精品| 日韩性爱小视频在线观看| 99热免费| 看免费的黄片| 亚洲天堂电影网99999| 91爱综合| a v网站在线播放| 欧美92| 77国产精品| 色99视频| 欧美一区二区三区入口| 青青在线视频免费| 97干天天| 920日本午夜免费| 亚洲无码太久| 精品欧美乱码久| 国产精品视频播放| 99热| 黄色免费网页无码| 最新日本中文字幕| 日韩欧美~中文字| 色哟哟-国产专区| 噜噜噜无码AV一级一级久久影院| 免费观看网黄| 日本欧美不卡| 97免费视频在线观看视频| 99丝袜福利在线播放| 国产女人操逼视频| 亚洲一区操| 清纯唯美亚洲综合| 久久久草草精品| 青青草啪啪网| 天天狠| 国产又色又爽又舒服的三级视频 | 久久嫩草国产成人一区| 天天日夜夜爽| 亚洲精品亚洲人成在线麻豆| 美女操逼A A| 九九草| 欧美性高潮| 亚洲熟妇综合久久久久久| 欧美老妇综合网| 欧美日不卡| 色播综合| 欧美精品自慰系列寂寞少妇 | 91美女在线视频| 91青视频| 日本天天吊| 激情一区二区三区在线观看| 日本岛国黄色网址| 日韩成人大片在线观看| 久久精品国产亚洲AV嘿嘿| 国产精品久久久久久高清无码免费看| 亚洲色图91| 91人妻少妇| 精品国产乱码久久久久久网站入口| 大色网久久| …中文字幕亚洲乱,97人妻无码费视…| 干B| 九九热精彩视频| 超碰天天操你比| 蜜臀AV成人精品蜜臀| 秋霞午夜视频一区二区| 久久综合精品一区二区三区| 韩日男人的天堂| 夜夜操91744565| 欧美日本久久精品一区| 亚洲乱色视频一区、二区在线| 97超碰69| 九九久久首页| 国产传媒1234区| 亚洲国产精品久久久男人的天堂| 欧美暴力猛交| 久久高清无码夜夜操| 人人摸人人舔一区二区| 夜夜国自区| 精品人妻少妇| 亚洲爽图| 日本精品网站在线中文| 国产一区二区a毛片| 中国国国产一级特黄毛片| 综合自拍| 最新欧美色网| 国产SV一线| 2017天天透天天通天天擦| 夫妻AV网站| 欧洲综合色图| 亚洲欧洲中文日韩女优乱码| 中文字幕一区电影在线观看| 精品国产一级久久| 婷婷四五区| 日韩美女高潮喷水视频| 中日992视频| 校园春色五月天| 国产一区免费午夜视频| 亚洲性爱无码乱伦av| 日韩啪啪啪啪啪| 亚欧中文字幕在线视频| 欧美,日韩,中文,另类| 91在线欧美| 无码黑人精品一区二区三区三| 综合久久欧美| 丰满少妇人妻久久久久久| 亚洲欧美国产中文字幕| 97色操| 亚洲春色欧美激情自拍| 精品成人av一区二区三区在线| baisiav| 麻豆传媒一区二区在线观看| 天天日天天干少妇日| 国产女人高潮嗷嗷嗷叫小说 | 岛国不卡超碰护士AV在线播放| 久久精品久久久久久久| 日本丝袜人妻内射| 欧美色三级片91| 国产外初女出血视频| 国产免费黄色一级大片| 无遮挡h肉动漫在线观看| 久艹伊人精品综合在线| 97在线视频免费看| 黄片com.| 日韩情色AV| 亚洲日韩电影| 中国亚洲呦女专区| 久久久久9999精品九九九| 丝袜亚洲综合| 五月婷婷久久综合| 96久久久精品| 强奸乱伦AV一天堂网| 性爱久久| 成人AV在线网站| 日韩激情啪啪啪| 肥臀熟女福利视频一区二区| 9Ⅰ超碰| 丁香五月天激情网站| 日本久久综合| A级在线视频| 亚洲国产第一页综合视频| 超碰一区二区| 天天看天天在线精品| 国产九九久久久精品| 少妇熟女一区二区三区| 97色干| 疯操AV| 麻豆啪啪啪视频| 日本精品九九九| 美国一区二区三区视频| 亚洲自拍欧美国产首页网曝| av黄图片在线观看| 999在线电影香蕉| 人人妻人人爽一区二区三区| 天天爽人人综合免费7799| 久九9精品| 午夜爽爽爽在线观看永久入口姬片| 青青操在线亚洲视频观看欧美在线 | 亚洲av国产av综合av卡| 亚州精品丝袜-不卡成人免费| 91综合网| 亚洲熟妇丝袜在线观看| 亚洲国产一级黄色视频| 国产九九久久久精品| 97超碰人人模人人拍人人| 亚洲美女精品| 日韩欧洲操屄视频| 超碰98综合网| 日韩丰满熟妇| 欧洲一区二区| 日韩精品区二区三区不卡| 国产精品操| 九九玖玖精品| 色综合久久av| 97就爱干| www.91色| 久久男人天堂| 亚洲视频一二区| 亚洲av综合色区无码一| 夜夜做夜夜爽精品视频| 香蕉久久国产AV一区二区| 熟妇女伦乱视频| www.操| 欧美性生活免费网| 无码人妻丰满熟妇区毛片| 91狠狠综合久久久久久| 天美精品原创av片国产| 久久国产精品熟女人妻| 色香色欲天天综合网天天来吧| 亚洲区 欧美区| 97 亚洲 日韩 欧美 在线| 高清国产精品无码| 久久禁| 亚洲综合网电影91| 日韩欧美操逼xxx| 欧美一二级| 天天影视色香色欲| 被男人添B超爽视频| 久久久月天| 熟妇人妻一区二区三区| 欧美性爱www免费版| www欧美91| 伊人一区二区三区| 丁香婷婷久久 | 亚洲色偷偷色噜噜狠狠99网| 男女日B国产| 精品久久久久成人码免| 欧美色图亚洲色图成人在在线| 日韩色欲久久一二三四区| 欧美少妇高潮视频| 久久久久久久久久久久黄色| 久99视频| 日本福利二区视频| 日韩中文字幕视频| 中文区中文字幕免费看| 日日AV加勒比| 天天做天天爱天天爽| 欧美的性爱网站免费| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 秋霞午夜视频一区二区| 思思热在线视频精品| 日韩在线性爱免费视频| 欧美写真视频一区| 亚洲综合色在线| 久久久穴999| 国产少妇肉丝在线观看| 久久一级无码精品毛片6| 999久久久免费精品国产牛牛| 91成人亚洲色图| 性色av一区二区| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 另类 日韩 熟女| 国产区日韩区在线观看| 97久久超碰国产精品| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 久久大| 国内一级精品| 精品9999| 97超碰超欧美。| 嗯嗯啊啊好疼| 国产污视频麻豆传媒一区二区 | 97超碰站| 中文乱码字幕观看视频| 美女十八禁| 我爱操| 久久久久久人| 天天综合网视频91| 久久精品99久久久久久| 搞中出视频在线观看| 亚洲91色在线| 色女综合| 超碰午夜在线| 超碰 另类 欧美| 国产精品高清2021在线| 嗯嗯啊啊操我| 国产熟妇 码视频户外直播| 久久啊啊| 亚洲开心网| 亚州欧美色图| 新亚洲无码| а√天堂资源官网在线资源| 2024年最新色情网站在线观看 | 91狠狠综合久久| 欧美视频在线视频免费va| 国产剧情AV不卡在线观看| 日韩国产乱子伦App| 国产熟女免费观看久久| 国产一区二区三区导航| 国产一区二区视频在线播放| 亚洲精品日日夜夜52| 成人AV在线电影| 日日干日日| 日韩乱码Av| 厕所偷拍在线| 刺激精品视频| 国产精品在线一区二区| 麻豆a'v电影| 91 偷| 国产精品女aA片爽爽视频| 91视频精品| av天堂天堂av日韩| 亚洲精品国产精品乱码不99| 久久XX| 久久这里都是精品| 九九英色视频| 久久 久久国内精品亚洲| 午夜操操操| 老熟女91视频| 激情熟女12P| 欧美日本国产日韩激情视频| 婷婷色中文字幕| 射丝袜高跟鞋99| 亚州欧美一区| 久久精品国产亚洲粉嫩| 最新日本中文字幕| 黑人操一区二区| 丁香五月婷婷基地| 丝袜天堂| 91日产桃蜜| 国产JDAV无码视频在线观看| 国产亚洲美日韩Aⅴ中文字幕无码成人| 免费a在线播放v| 国产日本熟女顶级一区二区三区视频 | 国内97干免费看| 人人妻人人爽人人精品| 丁香五六月啪啪| 小情侣高清国产在线视频| 熟女日韩| yazhouzaixian| 人妻少妇久久中文字幕一区二区 麻豆 | www.91久久| 打av高清| 97 国产精品| 久久草草亚洲蜜桃臀| 乱色视频中文字幕| 日本啊啊啊啊啊视频| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 中文字幕精品专区搜索结果91| 超碰欧美97| 黄色免费网页无码| 九九九久千久久激情蜜桃在线看| 高清不卡 中文 人妻| 日本乱人伦片中文三区| 久久综合激情| av东京热男人的天堂| 一区二区三区视频| 精品亚洲国产成人AV制服丝袜| 一区二区三区四区姦女| 国产精品乱码久久久久久久久| 日韩综合无码色欲vv| 天综合中文| 色婷婷日韩精品一区二区三区| 秋霞一级A片黄色视频| 亚州宗合另类| 丝袜美腿丝袜| 操逼操网| 亚洲区限制级| 人人性爱视频免费| 91校园春色长篇| 老司机福利社视频在线观看| 国产av强奸美女| 色婷婷成人综合| 久艹日日日| 激情五月天婷婷| 中文字幕av一区二区三区人妻少妇| 性饥渴少妇av无码毛片| 人妻夜夜爽天天爽麻豆三区网站 | 日韩欧美~中文字| 欧美强奸乱能| 九九九九九九视频| 99国产精品视频尤物| 国产视频一区二区在线| 超碰91在线| 91欧美高清| 欧美超碰在线| 蜜臀av一区二区三区免费观看| 久久久无码精品人妻二区| 国产精品免费视频人成| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 欧美,亚洲,日韩,v,天堂,手机在线观看| 国模私拍一区二区三区神乳| 亚洲一二三精品久久网| 综合久久97| 免费观看国产小粉嫩喷水精品午| 欧美老熟另类| 一起草三级AV电影在线观看 | 岛国激情视频在线观看| 超碰天天久久79| 国产兽交视频在线播放| 97综合国产精品高潮久久| 爱妃国产亚洲视频中文字幕| 欧美精品丝袜久久久中文字幕| 91殴美大片| 秋霞午夜成人福利片片| 成人网欧美风情| 成人自拍三级在线观看| 日本999精品| 色久桃花影院在线观看| 97爱啪| 91婷婷| 亚洲av成人精品一区| 久久久久久中文版| 国产一级作爱毛片| 男生通女生屁股| 亚洲影视综合网| 亚洲成人在线高清| 久久久精品一区二区| 99综合免费视频| 极品白嫩美少妇在地板上位骑射淫水泛滥| 美女啊啊啊啊啊啊啊| 国产AAAAAABBBBB| 日韩 女同 综合| 六月婷婷综合| 天天看精品动漫视频一区| 国产精品久久久久久久久久久久久久久久久久| 成在线人在线观看视频| 欧美综合自拍亚洲综合图| 东京热男人的天堂网| 久久黄片国产一区二区| 人人摸人人舔一区二区| 亚洲高潮少妇| 亚洲熟女精品| 69久久| 色狠人在线99| 激情啪啪拍91| 色99999| 色偷综合| 亚洲另类综合欧美| 变态乱伦伪娘灌肠一区二区| 999久久久久久久久| 国产乱婷婷精品二区三区| 午夜影美女日鸡鸡天天视频国产| 超碰在线人人射| 影视综合无码少妇| 91熟女丨老女人| 91天天美女| 精品一区二区三区蜜桃臀赵总| 三男一女不戴套的A片| 好爽要喷了| 欧美亚男人的天堂| 国产精选三级在线观看| 国产毛片毛片4p懂色| 欧美在线|亚洲| 色月天AV导航| 亚洲精品日韩国产欧美| 国产一区二区成人av在线播放| 国产精品69久久久久久久| 综合激情97| 色色色网站| 久久精品国产亚洲AV片多多| 黄色大片视频在线免费看| 在线电影亚洲色图| 99色婷婷中文字幕乱色| 亚洲图片 91| 韩国一级做A片免费的| av在线播放国产一区| 91少妇人妻| 无码人妻毛片丰满熟妇精品区| 欧美一区二区三区大综合| 天天天天干| 无码人妻丰满热妇又大又粗| 午夜舔阴达高潮视频免费看| AV中文字幕三四五| 欧美大色交| 亚洲男人的天堂AV| 国产伦精品免编号公布| 99只有精品| 国产精品熟女丝袜一区二区| 蜜乳AV.COM| 蜜乳中文字幕a在线| 欧美色图综合网| 欧美BT 亚洲色图| 青草伊人久久| 综合激情一一91| 欧美97日韩精品| 校园春色综合色| 久久综合日韩亚洲欧美| 夜夜中出国产| 91 刺激在线| 亚洲欧美情色| 国产9l 大屁股| 骚货操死你| 18+91网站| 色噜噜日韩精品| 新91视频.cmp| 夜夜国自区| 日韩成人人妻网站| 999久久芭蕾| avav青青草久久夜| 日韩本不卡视频在线观看| 尤物视频新赏网鲜网色诱网| 欧美女同在线| 久久精品六区| 亚洲女优有码无码高清| 91天堂丝袜美腿| 欧美综合色| 97在线公开视频| 日本欧美不卡| 日躁天天爽爽| 啪啪视频免费在线观看| 肏逼视频日本| 欧美大波激情xxxx| 天天操天天射天天日| 欧美人妻久久精品二区三区| 思思热免费视频观看| 婷婷啪啪|