Skip to content

feat(pt): Support denoise model #4644

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 38 commits into
base: devel
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 26 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
975d9e4
Init branch
Chengqian-Zhang Mar 10, 2025
8785ae3
Merge branch 'devel' into merge_denoise
Chengqian-Zhang Mar 10, 2025
2e4d94e
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 10, 2025
e42a860
Add token loss
Chengqian-Zhang Mar 12, 2025
9cf0849
Solve conflict
Chengqian-Zhang Mar 12, 2025
45841a6
Merge branch 'devel' into merge_denoise
Chengqian-Zhang Mar 12, 2025
81cb7c2
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 12, 2025
8d622bf
Fix pre-commit and Code Scanning
Chengqian-Zhang Mar 13, 2025
36ac73e
Fix conflict
Chengqian-Zhang Mar 13, 2025
34e647d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 13, 2025
b2e1419
Add denoise rot,trans,permutation,smooth UT
Chengqian-Zhang Mar 13, 2025
add4005
Merge branch 'merge_denoise' of github.com:Chengqian-Zhang/deepmd-kit…
Chengqian-Zhang Mar 13, 2025
b9e8528
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 13, 2025
1246658
Fix pre-commit
Chengqian-Zhang Mar 13, 2025
9712271
Merge branch 'devel' into merge_denoise
Chengqian-Zhang Mar 14, 2025
5e5abaa
Support dpmodel denoise fitting
Chengqian-Zhang Mar 14, 2025
ebef6c1
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 14, 2025
b20dd58
Add universial denoise fitting UT
Chengqian-Zhang Mar 17, 2025
f84d28b
Fix conflict
Chengqian-Zhang Mar 17, 2025
cdcb74e
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 17, 2025
f7060ba
Merge branch 'devel' into merge_denoise
Chengqian-Zhang Mar 17, 2025
96bd72a
Add dtype and device to strain_components
Chengqian-Zhang Mar 17, 2025
13eba8c
Add denoise universial atommic_model UT
Chengqian-Zhang Mar 17, 2025
ae98c15
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 17, 2025
491eabd
Fix pre-commit
Chengqian-Zhang Mar 17, 2025
2a2b707
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 17, 2025
9cc9f29
Merge branch 'devel' into merge_denoise
Chengqian-Zhang Mar 19, 2025
993ed2f
Add universial denoise model UT
Chengqian-Zhang Mar 19, 2025
acbbdea
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 19, 2025
954bb4e
Merge branch 'devel' into merge_denoise
Chengqian-Zhang Mar 26, 2025
5c58054
delete special precision
Chengqian-Zhang Mar 26, 2025
0897114
Fix conflict
Chengqian-Zhang Mar 26, 2025
ebb2c34
Add universial denoise loss UT
Chengqian-Zhang Mar 26, 2025
9e1e1f4
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 27, 2025
ecf937d
Fix torch cuda UT
Chengqian-Zhang Mar 28, 2025
dc97854
Fix conflict
Chengqian-Zhang Mar 28, 2025
d468917
Add DeepDenoise part, but not complete
Chengqian-Zhang Mar 28, 2025
0a2f57d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions deepmd/dpmodel/atomic_model/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
from .base_atomic_model import (
BaseAtomicModel,
)
from .denoise_atomic_model import (
DPDenoiseAtomicModel,
)
from .dipole_atomic_model import (
DPDipoleAtomicModel,
)
Expand Down Expand Up @@ -50,6 +53,7 @@
"BaseAtomicModel",
"DPAtomicModel",
"DPDOSAtomicModel",
"DPDenoiseAtomicModel",
"DPDipoleAtomicModel",
"DPEnergyAtomicModel",
"DPPolarAtomicModel",
Expand Down
55 changes: 55 additions & 0 deletions deepmd/dpmodel/atomic_model/denoise_atomic_model.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# SPDX-License-Identifier: LGPL-3.0-or-later
import numpy as np

from deepmd.dpmodel.fitting.denoise_fitting import (
DenoiseFitting,
)

from .dp_atomic_model import (
DPAtomicModel,
)


class DPDenoiseAtomicModel(DPAtomicModel):
def __init__(self, descriptor, fitting, type_map, **kwargs):
if not isinstance(fitting, DenoiseFitting):
raise TypeError(

Check warning on line 16 in deepmd/dpmodel/atomic_model/denoise_atomic_model.py

View check run for this annotation

Codecov / codecov/patch

deepmd/dpmodel/atomic_model/denoise_atomic_model.py#L15-L16

Added lines #L15 - L16 were not covered by tests
"fitting must be an instance of DenoiseFitting for DPDenoiseAtomicModel"
)
super().__init__(descriptor, fitting, type_map, **kwargs)

Check warning on line 19 in deepmd/dpmodel/atomic_model/denoise_atomic_model.py

View check run for this annotation

Codecov / codecov/patch

deepmd/dpmodel/atomic_model/denoise_atomic_model.py#L19

Added line #L19 was not covered by tests

def apply_out_stat(
self,
ret: dict[str, np.ndarray],
atype: np.ndarray,
):
"""Apply the stat to each atomic output.

In denoise fitting, each output will be multiplied by label std.

Parameters
----------
ret
The returned dict by the forward_atomic method
atype
The atom types. nf x nloc. It is useless in denoise fitting.

"""
# Scale values to appropriate magnitudes
noise_type = self.fitting_net.get_noise_type()
cell_std = self.fitting_net.get_cell_pert_fraction() / 1.732
if noise_type == "gaussian":
coord_std = self.fitting_net.get_coord_noise()
elif noise_type == "uniform":
coord_std = self.fitting_net.get_coord_noise() / 1.732

Check warning on line 44 in deepmd/dpmodel/atomic_model/denoise_atomic_model.py

View check run for this annotation

Codecov / codecov/patch

deepmd/dpmodel/atomic_model/denoise_atomic_model.py#L39-L44

Added lines #L39 - L44 were not covered by tests
else:
raise RuntimeError(f"Unknown noise type {noise_type}")
ret["strain_components"] = (

Check warning on line 47 in deepmd/dpmodel/atomic_model/denoise_atomic_model.py

View check run for this annotation

Codecov / codecov/patch

deepmd/dpmodel/atomic_model/denoise_atomic_model.py#L46-L47

Added lines #L46 - L47 were not covered by tests
ret["strain_components"] * cell_std
if cell_std > 0
else ret["strain_components"]
)
ret["updated_coord"] = (

Check warning on line 52 in deepmd/dpmodel/atomic_model/denoise_atomic_model.py

View check run for this annotation

Codecov / codecov/patch

deepmd/dpmodel/atomic_model/denoise_atomic_model.py#L52

Added line #L52 was not covered by tests
ret["updated_coord"] * coord_std if coord_std > 0 else ret["updated_coord"]
)
return ret

Check warning on line 55 in deepmd/dpmodel/atomic_model/denoise_atomic_model.py

View check run for this annotation

Codecov / codecov/patch

deepmd/dpmodel/atomic_model/denoise_atomic_model.py#L55

Added line #L55 was not covered by tests
5 changes: 5 additions & 0 deletions deepmd/dpmodel/fitting/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# SPDX-License-Identifier: LGPL-3.0-or-later
from .denoise_fitting import (
DenoiseFitting,
)
from .dipole_fitting import (
DipoleFitting,
)
Expand All @@ -23,6 +26,8 @@

__all__ = [
"DOSFittingNet",
"DenoiseFitting",
"DenoiseFitting",
"DipoleFitting",
"EnergyFittingNet",
"InvarFitting",
Expand Down
Loading