Skip to content

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

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

Zhang-pchao wants to merge 3 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 optional test dependencies to include tomli for Python versions below 3.11, while retaining dependency group support.

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
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: cc8d851c-9db9-4a82-a738-ac0019a343cc
Commits

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

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

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 across Python, i-PI, and LAMMPS interface settings. The test dependency group adds tomli for Python versions below 3.11 and retains dependency_groups.

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 tomli for Python versions below 3.11 and retains dependency_groups.

Priority: Normal

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

Change: Bug fix

Possibly related PRs

Suggested labels: bug

Suggested reviewers: njzjz

Merge Risk: Minimal · up to a866c

The change honors disabled TensorFlow for native-interface builds while preserving the enabled default. No actionable merge-blocking issue was found.

Pre-merge checks: Passed 5
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.
Docstring Coverage Passed Docstring coverage is inconclusive: files from earlier reviews still need to be rechecked within the check's analysis limits. Not blocking.
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.
Finishing Touches
🧪 Generate unit tests (beta)
  • 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