Skip to content

fix(build): honor disabled TensorFlow for native interfaces - #6051

Open
Zhang-pchao wants to merge 2 commits into
deepmodeling:masterfrom
Zhang-pchao:codex/deepmd-native-backend
Open

Zhang-pchao wants to merge 2 commits into
deepmodeling:masterfrom
Zhang-pchao:codex/deepmd-native-backend

Conversation

@Zhang-pchao

@Zhang-pchao Zhang-pchao commented Oct 6, 2026 •

Copy link
Copy Markdown

Summary

When an i-PI or LAMMPS interface is requested, derive USE_TF_PYTHON_LIBS from DP_ENABLE_TENSORFLOW instead of unconditionally enabling it. This keeps a PyTorch-only native-interface build from requesting TensorFlow libraries. The existing default behavior, including the default TensorFlow-enabled setting, is preserved.

Tests

A backend-independent regression exercises 9 combinations: Python/i-PI/LAMMPS interfaces and DP_ENABLE_TENSORFLOW set to 0, 1, or unset. It checks that disabled TensorFlow is not discovered and verifies the resulting CMake flags and dp_ipi entry point.

  • PYTHONPATH=. python -m pytest -q source/tests/test_build_backend.py: 9 passed.
  • All applicable repository pre-commit hooks passed after import formatting.

Based on current master (7a9510d). This is an independent build-configuration fix and does not modify model evaluation or introduce new backend dependencies.

Summary by CodeRabbit

  • Bug Fixes
    • Build configuration now applies the TensorFlow setting consistently across supported interfaces. When TensorFlow is disabled, the build no longer attempts to discover or configure it.
  • Chores
    • Updated the optional test dependencies to support dependency groups and Python versions below 3.11.

CI follow-up (2026-10-07)

The exact-head Read the Docs build fails while installing doc/requirements.txt, before Sphinx runs: the selected PyTorch headers require C++20, while the current target baseline selects C++17. The same build-standard mismatch appears on all five related contribution heads (#6051 through #6055). Existing issue #6048 and PR #6049 already address this compatibility problem; this PR leaves that repair in its independent upstream review. The Read the Docs check remains failed until that dependency is resolved and the build is rerun. The exact-head pre-commit.ci check passes; GitHub Actions still require maintainer approval.

@github-actions github-actions Bot added the Python label Oct 6, 2026
@coderabbitai

coderabbitai Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: ae9d3853-3bb3-49c9-bde6-7c9911ff2351
📥 Commits

Reviewing files that changed from the base of the PR and between 063b873 and 6ea84f8.

📒 Files selected for processing (1)
  • pyproject.toml

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 7 remain after this review.


📝 Walkthrough

Walkthrough

The backend reads DP_ENABLE_TENSORFLOW once and uses that value to configure the C++ interface and TensorFlow setup. A parametrized regression test checks build arguments and script selection for Python, i-PI, and LAMMPS interface settings. The test dependency group adds dependency_groups and conditionally adds tomli for Python versions below 3.11.

Changes

TensorFlow build selection

Layer / File(s) Summary
Apply TensorFlow selection and test interface options
backend/read_env.py, source/tests/test_build_backend.py, pyproject.toml
The backend uses the stored TensorFlow setting for C++ interface configuration and TensorFlow setup. The regression test checks interface and TensorFlow setting combinations. The test dependency group adds dependency_groups and conditionally adds tomli for Python versions below 3.11.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~8 minutes

Change: Bug fix

Suggested reviewers: njzjz

Merge Risk: ⚪ Minimal · up to 6ea84

The TensorFlow selection change honors the stated default and disablement behavior. The reported documentation install failure follows unchanged settings and is not introduced by this change.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: honoring disabled TensorFlow settings for native interfaces during builds.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
🧪 Generate unit tests (beta)
  • Create a new PR
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@njzjz-bot njzjz-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agent: dot

Reviewed exact head 063b873. No blocking findings in this scoped build-option fix.

Traced the native-interface flags through source/CMakeLists.txt: USE_TF_PYTHON_LIBS=TRUE re-enables ENABLE_TENSORFLOW there, so deriving that flag from the same boolean as TensorFlow discovery removes the contradiction for PyTorch-only builds. The default/unset and explicit-enabled paths preserve the prior flags; i-PI script selection and LAMMPS version forwarding remain unchanged. The nine-case regression checks the Python/i-PI/LAMMPS matrix, asserts disabled TensorFlow is never discovered, and clears the cached environment result before and after each invocation.

Validation: source review of both changed files plus backend discovery and CMake consumers. I could not rerun pytest in this review environment because pytest is not installed; no full native build was performed. This review does not approve or run fork CI.

@Zhang-pchao Zhang-pchao changed the title Honor disabled TensorFlow when configuring native interfaces fix(build): honor disabled TensorFlow for native interfaces Oct 7, 2026
@Zhang-pchao

Zhang-pchao commented Oct 9, 2026 •

Copy link
Copy Markdown
Author

The Python collection failure was a missing test dependency: test_build_backend.py imports the build backend directly, but dependency_groups was only installed in the isolated build environment. Commit 6ea84f88ecd86c2bdfeb2f01f0898f72f3782b5a adds it to the test extra, together with the existing conditional tomli requirement for Python < 3.11.

The nine build-option regressions pass in clean Python 3.10.22 and 3.13.16 environments, with no skips. The repository's pre-commit hooks and Ruff checks pass too.

The previous C++ sanitizer crash and LAMMPS exit 143 are still under investigation; this dependency fix does not resolve or suppress them. I am checking those paths against the exact base with matched dependencies. The updated upstream workflows currently require approval.

The new-head Read the Docs build 35031571 also fails during installation of doc/requirements.txt, with PyTorch/ATen C++20 header errors. This is the build compatibility issue tracked by #6049, which remains open; I have kept that separate from this patch.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants