Float16 смешанной точности работает медленнее, чем обычный float32, keras, tensorflow 2.0 ⇐ Python
-
Anonymous
Float16 смешанной точности работает медленнее, чем обычный float32, keras, tensorflow 2.0
Я использую Tensorflow 2.10 в Windows с NVIDIA RTX 2060 SUPER (с тензорными ядрами) для глубокого обучения. Но при включении смешанной точности float16 время на эпоху фактически становится медленнее, чем быстрее.
Код:
импортировать тензорный поток как tf импортировать SSL ssl._create_default_https_context = ssl._create_unverified_context (train_x, train_y), (test_x, test_y) = tf.keras.datasets.cifar100.load_data() tf.keras.mixed_precision.set_global_policy("mixed_float16") модель = tf.keras.Sequential([ tf.keras.layers.Lambda(лямбда x: x/255, input_shape=(32,32,3)), tf.keras.layers.Conv2D(filters=64, kernel_size=(4,4)), tf.keras.layers.MaxPool2D(), tf.keras.layers.Conv2D(filters=32, kernel_size=(2,2)), tf.keras.layers.MaxPool2D(), tf.keras.layers.Flatten(), tf.keras.layers.Dense(4096, активация="relu"), tf.keras.layers.Dense(4096, активация="relu"), tf.keras.layers.Dense(4096, активация="relu"), tf.keras.layers.Dense(4096, активация="relu"), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(100), tf.keras.layers.Activation("softmax", dtype="float32") ]) model.compile(optimizer="adam", loss=tf.keras.losses.SparseCategoricalCrossentropy(), metrics=["accuracy"]) print("вычислить dtype первого слоя: ", model.layers[0].compute_dtype) model.fit(train_x, train_y, эпохи = 100, Batch_size = 1020) model.evaluate(test_x, test_y) Я выложил несколько изображений проблемы: Вот изображение без использования смешанной точности , А вот изображение со смешанной точностью, более медленное
Запуск кода в Google Colab, который использует более современную версию tensorflow (TF 2.15), работает хорошо и быстрее со смешанной точностью, чем без нее (как и должно быть). Вот ссылка на совместную работу: Google Colab
Я не эксперт в использовании тензорного потока и уже несколько недель пытаюсь исправить эту ошибку, буду благодарен за помощь. Спасибо!
Другая информация:
Я использую cuDNN версии 8.1.1 и Cuda 11.2, которые технически совместимы.
Я использую Tensorflow 2.10 в Windows с NVIDIA RTX 2060 SUPER (с тензорными ядрами) для глубокого обучения. Но при включении смешанной точности float16 время на эпоху фактически становится медленнее, чем быстрее.
Код:
импортировать тензорный поток как tf импортировать SSL ssl._create_default_https_context = ssl._create_unverified_context (train_x, train_y), (test_x, test_y) = tf.keras.datasets.cifar100.load_data() tf.keras.mixed_precision.set_global_policy("mixed_float16") модель = tf.keras.Sequential([ tf.keras.layers.Lambda(лямбда x: x/255, input_shape=(32,32,3)), tf.keras.layers.Conv2D(filters=64, kernel_size=(4,4)), tf.keras.layers.MaxPool2D(), tf.keras.layers.Conv2D(filters=32, kernel_size=(2,2)), tf.keras.layers.MaxPool2D(), tf.keras.layers.Flatten(), tf.keras.layers.Dense(4096, активация="relu"), tf.keras.layers.Dense(4096, активация="relu"), tf.keras.layers.Dense(4096, активация="relu"), tf.keras.layers.Dense(4096, активация="relu"), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(100), tf.keras.layers.Activation("softmax", dtype="float32") ]) model.compile(optimizer="adam", loss=tf.keras.losses.SparseCategoricalCrossentropy(), metrics=["accuracy"]) print("вычислить dtype первого слоя: ", model.layers[0].compute_dtype) model.fit(train_x, train_y, эпохи = 100, Batch_size = 1020) model.evaluate(test_x, test_y) Я выложил несколько изображений проблемы: Вот изображение без использования смешанной точности , А вот изображение со смешанной точностью, более медленное
Запуск кода в Google Colab, который использует более современную версию tensorflow (TF 2.15), работает хорошо и быстрее со смешанной точностью, чем без нее (как и должно быть). Вот ссылка на совместную работу: Google Colab
Я не эксперт в использовании тензорного потока и уже несколько недель пытаюсь исправить эту ошибку, буду благодарен за помощь. Спасибо!
Другая информация:
Я использую cuDNN версии 8.1.1 и Cuda 11.2, которые технически совместимы.