- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Google colab TPU 训练一个简单的 Keras 模型。删除分布式 策略 并在 上运行相同的程序CPU 比快得多TPU .这怎么可能?
import timeit
import os
import tensorflow as tf
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
# Load Iris dataset
x = load_iris().data
y = load_iris().target
# Split data to train and validation set
x_train, x_val, y_train, y_val = train_test_split(x, y, test_size=0.30, shuffle=False)
# Convert train data type to use TPU
x_train = x_train.astype('float32')
x_val = x_val.astype('float32')
# Specify a distributed strategy to use TPU
resolver = tf.contrib.cluster_resolver.TPUClusterResolver(tpu='grpc://' + os.environ['COLAB_TPU_ADDR'])
tf.contrib.distribute.initialize_tpu_system(resolver)
strategy = tf.contrib.distribute.TPUStrategy(resolver)
# Use the strategy to create and compile a Keras model
with strategy.scope():
model = Sequential()
model.add(Dense(32, input_shape=(4,), activation=tf.nn.relu, name="relu"))
model.add(Dense(3, activation=tf.nn.softmax, name="softmax"))
model.compile(optimizer=Adam(learning_rate=0.1), loss='logcosh')
start = timeit.default_timer()
# Fit the Keras model on the dataset
model.fit(x_train, y_train, batch_size=20, epochs=20, validation_data=[x_val, y_val], verbose=0, steps_per_epoch=2)
print('\nTime: ', timeit.default_timer() - start)
最佳答案
谢谢你的问题。
我认为这里发生的事情是一个开销问题——因为 TPU 在一个单独的 VM 上运行(可在 grpc://$COLAB_TPU_ADDR
访问),每次在 TPU 上运行模型的调用都会产生一些作为客户端的开销(Colab notebook in在这种情况下)将图形发送到 TPU,然后编译并运行。与运行所需的时间相比,此开销很小,例如一个时期的 ResNet50,但与运行像您示例中的模型这样的简单模型相比较大。
为了在 TPU 上获得最佳效果,我们建议使用 tf.data.Dataset .我为 TensorFlow 2.2 更新了您的示例:
%tensorflow_version 2.x
import timeit
import os
import tensorflow as tf
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
# Load Iris dataset
x = load_iris().data
y = load_iris().target
# Split data to train and validation set
x_train, x_val, y_train, y_val = train_test_split(x, y, test_size=0.30, shuffle=False)
# Convert train data type to use TPU
x_train = x_train.astype('float32')
x_val = x_val.astype('float32')
resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu='grpc://' + os.environ['COLAB_TPU_ADDR'])
tf.config.experimental_connect_to_cluster(resolver)
tf.tpu.experimental.initialize_tpu_system(resolver)
strategy = tf.distribute.experimental.TPUStrategy(resolver)
train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(20)
val_dataset = tf.data.Dataset.from_tensor_slices((x_val, y_val)).batch(20)
# Use the strategy to create and compile a Keras model
with strategy.scope():
model = Sequential()
model.add(Dense(32, input_shape=(4,), activation=tf.nn.relu, name="relu"))
model.add(Dense(3, activation=tf.nn.softmax, name="softmax"))
model.compile(optimizer=Adam(learning_rate=0.1), loss='logcosh')
start = timeit.default_timer()
# Fit the Keras model on the dataset
model.fit(train_dataset, epochs=20, validation_data=val_dataset)
print('\nTime: ', timeit.default_timer() - start)
train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train)).repeat(20).batch(20)
val_dataset = tf.data.Dataset.from_tensor_slices((x_val, y_val)).batch(20)
fit
用这个调用:
model.fit(train_dataset, validation_data=val_dataset)
关于tensorflow - 谷歌 Colab : Why is CPU faster than TPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59264851/
按照 Get Started with Edge TPU Dev Board 上的说明进行操作,我无法通过第 2 步: $ screen /dev/ttyUSB0 115200 问题是屏幕立即返回 [
我正在尝试使用 TPU 在 google colab 上进行一些基本的字符分类。我收到以下错误: InvalidArgumentError: Unsupported data type for TPU
我的数据集很大(大约 13gb)。我有一个数据集的 hdf5 文件,我正在使用自定义生成器从数据集中加载批处理。我的模型在 Kaggle GPU 上运行良好,但当我切换到 TPU 时出现错误。下面是我
我正在使用预训练的 keras 模型,我想在 Google Colaboratory 的 TPU 上运行它,但出现以下错误: ValueError: Layer has a variable shap
CPU即中央处理器(Central Processing Unit) GPU即图形处理器(Graphics Processing Unit) TPU即谷歌的张量处理器(Tens
如何在 Google Colab 中打印我正在使用的 TPU 版本以及 TPU 有多少内存? 我得到以下输出 tpu = tf.distribute.cluster_resolver.TPUClust
我正在尝试使用 TPU client API 创建 Google Cloud TPU 节点我无法找出 Google Cloud 中 TPU 节点的父资源名称。 下面你可以找到我用来创建节点的完整代码,
无论我们是使用 Google Colab 还是直接访问 Cloud TPU,以下程序仅提供有关底层 TPU 的有限信息: import os import tensorflow as tf tpu_a
我试图在 TPU 上乘以 3000 个独立的矩阵和向量以加快计算速度,但我遇到了一些问题。我无法得到最终结果,我也很感兴趣是否有更好的解决方案。 代码如下: import time import nu
我正在尝试使用 TPU 在 Colab 上训练和运行图像分类模型。没有pytorch。 我知道 TPU 仅适用于来自 GCS 存储桶的文件,因此我从存储桶加载数据集,并且还评论了检查点和日志记录功能,
我正在关注 Google's object detection on a TPU发布并在培训方面碰壁。 查看作业日志,我可以看到 ml-engine 为各种软件包运行了大量 pip 安装,配置了 TP
我正在尝试使用 pytorch_xla 使用 TPU,但它在 _XLAC 中显示导入错误。 !curl https://raw.githubusercontent.com/pytorch/xla/ma
我正在训练一个模型,当我在 Google Cloud Platform 控制台中打开 TPU 时,它会向我显示 CPU 利用率(我想是在 TPU 上)。它真的非常非常低(比如 0.07%),所以也许是
我有 100k 张照片,它不适合内存,所以我需要在训练时从光盘读取它。 dataset = tf.data.Dataset.from_tensor_slices(in_pics) dataset =
我刚刚在 Google Colab 中尝试使用 TPU,我想看看 TPU 比 GPU 快多少。令人惊讶的是,我得到了相反的结果。 以下是NN。 random_image = tf.random_n
我正在尝试将 keras 模型转换为 google colab 中的 tpu 模型,但该模型内部有另一个模型。 看一下代码: https://colab.research.google.com/dri
我正在尝试在 Google 云上使用 TPU,并且正在尝试弄清楚如何指定要使用的正确 TPU。我正在尝试遵循快速入门 https://cloud.google.com/tpu/docs/quickst
我编写的代码可以在 GPU 上运行,但实验的周转时间很长。我想移植这段代码,以便可以在 TPU 上运行它。我怎么能这样做?这就是我所拥有的。 Bunch of datloading stuff !!!
我如何在 colab 上查看 TPU 的规范,对于 GPU,我可以使用类似的命令 nvidia-smi 但它不适用于 TPU,我如何查看 TPU 的规范? 最佳答案 我找不到来源。但据说 Colab
以 TPU 可接受的方式缓存/生成数据集的最佳策略是什么? 到目前为止,我设法在自己创建的数据集上训练 tensorflow 模型。每个数据点都基于大型时间序列进行大量设计,使用基于 numpy、pa
我是一名优秀的程序员,十分优秀!