From edd2a4d68207157e3d51a9aecc0354a296e2fbf7 Mon Sep 17 00:00:00 2001 From: bhack Date: Wed, 3 Jun 2020 14:33:56 +0200 Subject: [PATCH 1/9] Handle the so loading in dev mode --- tensorflow_addons/utils/resource_loader.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tensorflow_addons/utils/resource_loader.py b/tensorflow_addons/utils/resource_loader.py index 73f59cf3c1..c270de1faf 100644 --- a/tensorflow_addons/utils/resource_loader.py +++ b/tensorflow_addons/utils/resource_loader.py @@ -42,6 +42,9 @@ def get_path_to_datafile(path): The path to the specified data file """ root_dir = get_project_root() + bazel_bin_dir = os.path.join(os.path.dirname(root_dir),"bazel-bin","tensorflow_addons") + if os.path.isdir(bazel_bin_dir): + root_dir = bazel_bin_dir return os.path.join(root_dir, path.replace("/", os.sep)) From d8b7c916132ddb5bcb09c07045b718f63446dc8f Mon Sep 17 00:00:00 2001 From: bhack Date: Thu, 4 Jun 2020 09:00:53 +0000 Subject: [PATCH 2/9] Adapt for compatibility with no SO resources --- tensorflow_addons/register.py | 2 +- tensorflow_addons/utils/resource_loader.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/tensorflow_addons/register.py b/tensorflow_addons/register.py index 9c76d53994..bcce1118b9 100644 --- a/tensorflow_addons/register.py +++ b/tensorflow_addons/register.py @@ -103,7 +103,7 @@ def register_custom_kernels() -> None: def _get_all_shared_objects(): - custom_ops_dir = os.path.join(get_project_root(), "custom_ops") + custom_ops_dir = get_path_to_datafile("custom_ops",is_so=True) all_shared_objects = glob.glob(custom_ops_dir + "/**/*.so", recursive=True) all_shared_objects = [x for x in all_shared_objects if Path(x).is_file()] return all_shared_objects diff --git a/tensorflow_addons/utils/resource_loader.py b/tensorflow_addons/utils/resource_loader.py index c270de1faf..f134eb2ac6 100644 --- a/tensorflow_addons/utils/resource_loader.py +++ b/tensorflow_addons/utils/resource_loader.py @@ -31,7 +31,7 @@ def get_project_root(): return os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -def get_path_to_datafile(path): +def get_path_to_datafile(path, is_so=False): """Get the path to the specified file in the data dependencies. The path is relative to tensorflow_addons/ @@ -42,9 +42,10 @@ def get_path_to_datafile(path): The path to the specified data file """ root_dir = get_project_root() - bazel_bin_dir = os.path.join(os.path.dirname(root_dir),"bazel-bin","tensorflow_addons") - if os.path.isdir(bazel_bin_dir): - root_dir = bazel_bin_dir + if is_so: + bazel_bin_dir = os.path.join(os.path.dirname(root_dir), "bazel-bin") + if os.path.islink(bazel_bin_dir): + root_dir = os.path.join(bazel_bin_dir, "tensorflow_addons") return os.path.join(root_dir, path.replace("/", os.sep)) @@ -64,7 +65,9 @@ def ops(self): ) if self._ops is None: self.display_warning_if_incompatible() - self._ops = tf.load_op_library(get_path_to_datafile(self.relative_path)) + self._ops = tf.load_op_library( + get_path_to_datafile(self.relative_path, is_so=True) + ) return self._ops def display_warning_if_incompatible(self): From 0719b8c0f2bb0b80ca088a0a04ed1093bdd865b9 Mon Sep 17 00:00:00 2001 From: bhack Date: Thu, 4 Jun 2020 09:23:37 +0000 Subject: [PATCH 3/9] Fix import --- tensorflow_addons/register.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tensorflow_addons/register.py b/tensorflow_addons/register.py index bcce1118b9..483589fe59 100644 --- a/tensorflow_addons/register.py +++ b/tensorflow_addons/register.py @@ -1,10 +1,9 @@ import glob -import os from pathlib import Path import tensorflow as tf -from tensorflow_addons.utils.resource_loader import get_project_root +from tensorflow_addons.utils.resource_loader import get_path_to_datafile def register_all(keras_objects: bool = True, custom_kernels: bool = True) -> None: @@ -103,7 +102,7 @@ def register_custom_kernels() -> None: def _get_all_shared_objects(): - custom_ops_dir = get_path_to_datafile("custom_ops",is_so=True) + custom_ops_dir = get_path_to_datafile("custom_ops", is_so=True) all_shared_objects = glob.glob(custom_ops_dir + "/**/*.so", recursive=True) all_shared_objects = [x for x in all_shared_objects if Path(x).is_file()] return all_shared_objects From 1dc593d1d5719b12e521000cdbc4198b84b0703f Mon Sep 17 00:00:00 2001 From: bhack Date: Thu, 4 Jun 2020 09:44:04 +0000 Subject: [PATCH 4/9] Test with is_dir --- tensorflow_addons/utils/resource_loader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tensorflow_addons/utils/resource_loader.py b/tensorflow_addons/utils/resource_loader.py index f134eb2ac6..340e13735d 100644 --- a/tensorflow_addons/utils/resource_loader.py +++ b/tensorflow_addons/utils/resource_loader.py @@ -44,7 +44,7 @@ def get_path_to_datafile(path, is_so=False): root_dir = get_project_root() if is_so: bazel_bin_dir = os.path.join(os.path.dirname(root_dir), "bazel-bin") - if os.path.islink(bazel_bin_dir): + if os.path.isdir(bazel_bin_dir): root_dir = os.path.join(bazel_bin_dir, "tensorflow_addons") return os.path.join(root_dir, path.replace("/", os.sep)) From ce9deb7cc1969888e50a74d6f618f666815759cd Mon Sep 17 00:00:00 2001 From: bhack Date: Thu, 4 Jun 2020 10:22:15 +0000 Subject: [PATCH 5/9] Clean bazel before running test --- tools/docker/build_wheel.Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/docker/build_wheel.Dockerfile b/tools/docker/build_wheel.Dockerfile index c7c48ad822..3d7514c780 100644 --- a/tools/docker/build_wheel.Dockerfile +++ b/tools/docker/build_wheel.Dockerfile @@ -72,6 +72,8 @@ RUN python -m pip install --default-timeout=1000 tensorflow==$TF_VERSION COPY --from=make_wheel /addons/wheelhouse/ /addons/wheelhouse/ RUN pip install /addons/wheelhouse/*.whl +RUN bazel clean + RUN python -c "import tensorflow_addons as tfa; print(tfa.register_all())" # ------------------------------------------------------------------- From a4ffa74d98fd9381fbad542157776a08fcf37e46 Mon Sep 17 00:00:00 2001 From: bhack Date: Thu, 4 Jun 2020 13:32:13 +0200 Subject: [PATCH 6/9] Update build_wheel.Dockerfile --- tools/docker/build_wheel.Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/docker/build_wheel.Dockerfile b/tools/docker/build_wheel.Dockerfile index 3d7514c780..c7c48ad822 100644 --- a/tools/docker/build_wheel.Dockerfile +++ b/tools/docker/build_wheel.Dockerfile @@ -72,8 +72,6 @@ RUN python -m pip install --default-timeout=1000 tensorflow==$TF_VERSION COPY --from=make_wheel /addons/wheelhouse/ /addons/wheelhouse/ RUN pip install /addons/wheelhouse/*.whl -RUN bazel clean - RUN python -c "import tensorflow_addons as tfa; print(tfa.register_all())" # ------------------------------------------------------------------- From f171530f3b89d6062bf9e5e3a2e2df86978c7862 Mon Sep 17 00:00:00 2001 From: bhack Date: Thu, 4 Jun 2020 11:40:29 +0000 Subject: [PATCH 7/9] Remove bazel cache in run --- tools/run_gpu_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/run_gpu_tests.sh b/tools/run_gpu_tests.sh index 7773266fc9..bf22482849 100644 --- a/tools/run_gpu_tests.sh +++ b/tools/run_gpu_tests.sh @@ -9,4 +9,4 @@ docker build \ --build-arg TF_VERSION=2.2.0 \ --build-arg PY_VERSION=3.5 \ -t tfa_gpu_tests ./ -docker run --rm -t -v cache_bazel:/root/.cache/bazel --gpus=all tfa_gpu_tests +docker run --rm -t --gpus=all tfa_gpu_tests From 7fcc4b8d702b9c1e6465a732616ad0a7452b67a8 Mon Sep 17 00:00:00 2001 From: bhack Date: Thu, 4 Jun 2020 12:28:53 +0000 Subject: [PATCH 8/9] Remove installing so in source tree --- tools/testing/build_and_run_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/build_and_run_tests.sh b/tools/testing/build_and_run_tests.sh index 274c741b47..3223e3f07f 100644 --- a/tools/testing/build_and_run_tests.sh +++ b/tools/testing/build_and_run_tests.sh @@ -22,7 +22,7 @@ export CC_OPT_FLAGS='-mavx' python -m pip install -r tools/install_deps/pytest.txt -e ./ python ./configure.py -bash tools/install_so_files.sh +#bash tools/install_so_files.sh python -c "import tensorflow as tf; print(tf.config.list_physical_devices())" # use 10 workers if a gpu is available, otherwise, From 90b132a3b7b13ed84529f7bae5a3991c4677c41b Mon Sep 17 00:00:00 2001 From: bhack Date: Thu, 4 Jun 2020 12:50:28 +0000 Subject: [PATCH 9/9] Clean bazel --- tools/testing/build_and_run_tests.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/build_and_run_tests.sh b/tools/testing/build_and_run_tests.sh index 3223e3f07f..e77650cd79 100644 --- a/tools/testing/build_and_run_tests.sh +++ b/tools/testing/build_and_run_tests.sh @@ -22,7 +22,7 @@ export CC_OPT_FLAGS='-mavx' python -m pip install -r tools/install_deps/pytest.txt -e ./ python ./configure.py -#bash tools/install_so_files.sh +bash tools/install_so_files.sh python -c "import tensorflow as tf; print(tf.config.list_physical_devices())" # use 10 workers if a gpu is available, otherwise, @@ -34,5 +34,5 @@ if ! [ -x "$(command -v nvidia-smi)" ]; then EXTRA_ARGS="-n auto" fi - +bazel clean python -m pytest -v --functions-durations=20 --modules-durations=5 $EXTRA_ARGS ./tensorflow_addons