From 7da426c6aea430a25a6c8bc1e14cdb86476b726b Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Mon, 26 Feb 2024 20:29:48 -0500 Subject: [PATCH 1/6] bump python to 3.12 in the test environment Signed-off-by: Jinzhe Zeng --- .github/workflows/test_python.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_python.yml b/.github/workflows/test_python.yml index 60b5ecf0e0..514b552aec 100644 --- a/.github/workflows/test_python.yml +++ b/.github/workflows/test_python.yml @@ -18,7 +18,7 @@ jobs: - python: 3.8 tf: torch: - - python: "3.11" + - python: "3.12" tf: torch: From eff403475b3dc08953d0cff6f771ca133b36f310 Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Mon, 26 Feb 2024 21:47:47 -0500 Subject: [PATCH 2/6] fix breaking change in tf.keras.layers.LayerNormalization --- deepmd/tf/descriptor/se_atten.py | 1 + 1 file changed, 1 insertion(+) diff --git a/deepmd/tf/descriptor/se_atten.py b/deepmd/tf/descriptor/se_atten.py index 327c3c1d3d..1c3c48e484 100644 --- a/deepmd/tf/descriptor/se_atten.py +++ b/deepmd/tf/descriptor/se_atten.py @@ -990,6 +990,7 @@ def _attention_layers( input_xyz = tf.keras.layers.LayerNormalization( beta_initializer=tf.constant_initializer(self.beta[i]), gamma_initializer=tf.constant_initializer(self.gamma[i]), + dtype=self.filter_precision, )(input_xyz) # input_xyz = self._feedforward(input_xyz, outputs_size[-1], self.att_n) return input_xyz From 890958d52abc52a459d3a95da4d9b19a9c711f5e Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Mon, 26 Feb 2024 22:37:46 -0500 Subject: [PATCH 3/6] pin to keras 2 Signed-off-by: Jinzhe Zeng --- backend/find_tensorflow.py | 9 +++++++++ deepmd/tf/env.py | 4 +++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/backend/find_tensorflow.py b/backend/find_tensorflow.py index c4d58ea0cd..c0029f47bf 100644 --- a/backend/find_tensorflow.py +++ b/backend/find_tensorflow.py @@ -1,6 +1,7 @@ # SPDX-License-Identifier: LGPL-3.0-or-later import os import site +import sys from functools import ( lru_cache, ) @@ -136,6 +137,14 @@ def get_tf_requirement(tf_version: str = "") -> dict: extra_select = {} if not (tf_version == "" or tf_version in SpecifierSet(">=2.12", prereleases=True)): extra_requires.append("protobuf<3.20") + # keras 3 is not compatible with tf.compat.v1 + if ( + tf_version == "" + or tf_version in SpecifierSet(">=2.16", prereleases=True) + # only TF>=2.16 is compatible with Python 3.12 + or sys.version_info >= (3, 12) + ): + extra_requires.append("tf-keras") if tf_version == "" or tf_version in SpecifierSet(">=1.15", prereleases=True): extra_select["mpi"] = [ "horovod", diff --git a/deepmd/tf/env.py b/deepmd/tf/env.py index 2afe5cc862..3127e01e97 100644 --- a/deepmd/tf/env.py +++ b/deepmd/tf/env.py @@ -75,7 +75,9 @@ def dlopen_library(module: str, filename: str): dlopen_library("nvidia.cusparse.lib", "libcusparse.so*") dlopen_library("nvidia.cudnn.lib", "libcudnn.so*") - +# keras 3 is incompatible with tf.compat.v1 +# https://keras.io/getting_started/#tensorflow--keras-2-backwards-compatibility +os.environ["TF_USE_LEGACY_KERAS"] = "1" # import tensorflow v1 compatability try: import tensorflow.compat.v1 as tf From fcb1b5ed8df88bbed3dbc820fafaacb16734b223 Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Mon, 26 Feb 2024 23:05:40 -0500 Subject: [PATCH 4/6] requires tf-keras>=2.16.0rc0 Signed-off-by: Jinzhe Zeng --- backend/find_tensorflow.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/find_tensorflow.py b/backend/find_tensorflow.py index c0029f47bf..e5d190a5e7 100644 --- a/backend/find_tensorflow.py +++ b/backend/find_tensorflow.py @@ -140,11 +140,11 @@ def get_tf_requirement(tf_version: str = "") -> dict: # keras 3 is not compatible with tf.compat.v1 if ( tf_version == "" - or tf_version in SpecifierSet(">=2.16", prereleases=True) + or tf_version in SpecifierSet(">=2.16.0rc0", prereleases=True) # only TF>=2.16 is compatible with Python 3.12 or sys.version_info >= (3, 12) ): - extra_requires.append("tf-keras") + extra_requires.append("tf-keras>=2.16.0rc0") if tf_version == "" or tf_version in SpecifierSet(">=1.15", prereleases=True): extra_select["mpi"] = [ "horovod", From 455ae8fb0cc0b6dc34bd1180c9909bf35ef75a71 Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Mon, 26 Feb 2024 23:16:54 -0500 Subject: [PATCH 5/6] fix tf-keras versions Signed-off-by: Jinzhe Zeng --- backend/find_tensorflow.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/backend/find_tensorflow.py b/backend/find_tensorflow.py index e5d190a5e7..4aa052d27f 100644 --- a/backend/find_tensorflow.py +++ b/backend/find_tensorflow.py @@ -1,7 +1,6 @@ # SPDX-License-Identifier: LGPL-3.0-or-later import os import site -import sys from functools import ( lru_cache, ) @@ -138,13 +137,10 @@ def get_tf_requirement(tf_version: str = "") -> dict: if not (tf_version == "" or tf_version in SpecifierSet(">=2.12", prereleases=True)): extra_requires.append("protobuf<3.20") # keras 3 is not compatible with tf.compat.v1 - if ( - tf_version == "" - or tf_version in SpecifierSet(">=2.16.0rc0", prereleases=True) + if tf_version == "" or tf_version in SpecifierSet(">=2.16.0rc0", prereleases=True): + extra_requires.append("tf-keras; python_version>='3.9'") # only TF>=2.16 is compatible with Python 3.12 - or sys.version_info >= (3, 12) - ): - extra_requires.append("tf-keras>=2.16.0rc0") + extra_requires.append("tf-keras>=2.16.0rc0; python_version>='3.12'") if tf_version == "" or tf_version in SpecifierSet(">=1.15", prereleases=True): extra_select["mpi"] = [ "horovod", From 4af3e1aaaef72422bd46cda82b5a52bffb34771c Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Tue, 27 Feb 2024 00:57:01 -0500 Subject: [PATCH 6/6] also install tf-keras for TF 2.15 as it also checks TF_USE_LEGACY_KERAS Signed-off-by: Jinzhe Zeng --- backend/find_tensorflow.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/find_tensorflow.py b/backend/find_tensorflow.py index 4aa052d27f..fb9e719600 100644 --- a/backend/find_tensorflow.py +++ b/backend/find_tensorflow.py @@ -137,7 +137,7 @@ def get_tf_requirement(tf_version: str = "") -> dict: if not (tf_version == "" or tf_version in SpecifierSet(">=2.12", prereleases=True)): extra_requires.append("protobuf<3.20") # keras 3 is not compatible with tf.compat.v1 - if tf_version == "" or tf_version in SpecifierSet(">=2.16.0rc0", prereleases=True): + if tf_version == "" or tf_version in SpecifierSet(">=2.15.0rc0", prereleases=True): extra_requires.append("tf-keras; python_version>='3.9'") # only TF>=2.16 is compatible with Python 3.12 extra_requires.append("tf-keras>=2.16.0rc0; python_version>='3.12'")