blob: 0347195a6a6924c54f3a90d527e62648654f482b [file] [log] [blame]
# Copyright 2021 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
# Generates runner variants for the tf math tests.
import generate_runner
# These layers were selected by:
# 1. Getting all subclasses of `tf.keras.layers.Layer`
# 2. Removing deperacated layers based on the tf.keras docs
# 3. Removing irrelevant layers
# 4. Removing layers that don't fit in the testing framework (Wrappers, DenseFeatures, ...)
LAYERS = [
"Activation",
"ActivityRegularization",
"Add",
"AdditiveAttention",
"AlphaDropout",
"Attention",
"Average",
"AveragePooling1D",
"AveragePooling2D",
"AveragePooling3D",
"BatchNormalization",
"Concatenate",
"Conv1D",
"Conv1DTranspose",
"Conv2D",
"Conv2DTranspose",
"Conv3D",
"Conv3DTranspose",
# "ConvLSTM2D", # TODO(meadowlark): Debug flakiness.
"Cropping1D",
"Cropping2D",
"Cropping3D",
"Dense",
"DepthwiseConv2D",
"Dot",
"Dropout",
"ELU",
"Embedding",
"Flatten",
"GRU",
"GaussianDropout",
"GaussianNoise",
"GlobalAveragePooling1D",
"GlobalAveragePooling2D",
"GlobalAveragePooling3D",
"GlobalMaxPool1D",
"GlobalMaxPool2D",
"GlobalMaxPool3D",
"InputLayer",
"LSTM",
"Lambda",
"LayerNormalization",
"LeakyReLU",
"LocallyConnected1D",
"LocallyConnected2D",
"Masking",
"MaxPool1D",
"MaxPool2D",
"MaxPool3D",
"Maximum",
"Minimum",
"MultiHeadAttention",
"Multiply",
"PReLU",
"Permute",
"ReLU",
"RepeatVector",
"Reshape",
"SeparableConv1D",
"SeparableConv2D",
# "SimpleRNN", # TODO(meadowlark): Debug flakiness.
"Softmax",
"SpatialDropout1D",
"SpatialDropout2D",
"SpatialDropout3D",
"Subtract",
"ThresholdedReLU",
"UpSampling1D",
"UpSampling2D",
"UpSampling3D",
"ZeroPadding1D",
"ZeroPadding2D",
"ZeroPadding3D",
]
# A list of all layers with non-default api tests can be generated by running:
# bazel run integrations/tensorflow/e2e/keras/layers:layers_test_manual -- \
# --list_layers_with_full_api_tests
LAYERS_WITH_FULL_API_TESTS = [
"ActivityRegularization",
"AdditiveAttention",
"Attention",
"AveragePooling1D",
"AveragePooling2D",
"AveragePooling3D",
"BatchNormalization",
"Concatenate",
"Conv1D",
"Conv1DTranspose",
"Conv2D",
"Conv2DTranspose",
"Conv3D",
"Conv3DTranspose",
# "ConvLSTM2D", # TODO(meadowlark): Debug flakiness.
"Cropping1D",
"Cropping2D",
"Cropping3D",
"DepthwiseConv2D",
"GRU",
"LSTM",
"LocallyConnected1D",
"LocallyConnected2D",
"MaxPool1D",
"MaxPool2D",
"MaxPool3D",
"SeparableConv1D",
"SeparableConv2D",
"SimpleRNN",
# "SimpleRNN", # TODO(meadowlark): Debug flakiness.
]
# Layers that mention a training kwarg in their doc.
LAYERS_WITH_TRAINING_BEHAVIOR = [
"AdditiveAttention",
"AlphaDropout",
"Attention",
"BatchNormalization",
# "ConvLSTM2D", # TODO(meadowlark): Debug flakiness.
"Dropout",
"GRU",
"GaussianDropout",
"GaussianNoise",
"LSTM",
"MultiHeadAttention",
# "SimpleRNN", # TODO(meadowlark): Debug flakiness.
"SpatialDropout1D",
"SpatialDropout2D",
"SpatialDropout3D",
]
BACKENDS = [
("llvmcpu", "--target_backends=iree_llvmcpu"),
("vulkan", "--target_backends=iree_vulkan"),
]
# Non dynamic dim tests.
for variant, flags in BACKENDS:
for layer in LAYERS:
# Static.
generate_runner.main([
variant,
(f"{flags} --dynamic_dims=false --training=false "
f"--test_default_kwargs_only=true --layer={layer} --artifacts_dir=%t"),
f"iree_tf_tests/layers/layers_test.py:{layer}"
])
# Dynamic.
generate_runner.main([
variant,
(f"{flags} --dynamic_dims=true --training=false "
f"--test_default_kwargs_only=true --layer={layer} --artifacts_dir=%t"),
f"iree_tf_tests/layers/layers_test.py:dynamic_dims_{layer}"
])
# Test with test_default_kwargs_only=false
for layer in LAYERS_WITH_FULL_API_TESTS:
generate_runner.main([
variant,
(f"{flags} --dynamic_dims=false --training=false "
f"--test_default_kwargs_only=false --layer={layer} --artifacts_dir=%t"
), f"iree_tf_tests/layers/layers_test.py:full_api_{layer}"
])
# Test with training flags.
for layer in LAYERS_WITH_TRAINING_BEHAVIOR:
generate_runner.main([
variant,
(f"{flags} --dynamic_dims=false --training=true "
f"--test_default_kwargs_only=true --layer={layer} --artifacts_dir=%t"),
f"iree_tf_tests/layers/layers_test.py:training_{layer}"
])