Replies: 5 comments
|
Hi @aersilang! I'm Dosu and I’m helping the deepmd-kit team. Your understanding is correct! Let me clarify the key differences: Simplify ≠ Transfer Learning: The DPGEN Simplify workflow is designed for data screening and selection, not model updating. It filters representative frames from large datasets based on model deviation—useful for dataset curation, but not for adding new phase data to an existing model. For your use case (adding Phase C to existing Phase A+B model), use the DP-Gen Run workflow with transfer learning parameters: {
"training_finetune_model": [
"phaseAB_model_0.pb",
"phaseAB_model_1.pb",
"phaseAB_model_2.pb",
"phaseAB_model_3.pb"
],
"training_reuse_old_ratio": "auto:5",
"training_reuse_start_lr": 0.0001,
"training_reuse_start_pref_e": 0.1,
"training_reuse_start_pref_f": 100,
"init_data_sys": [
"path/to/phaseA_data",
"path/to/phaseB_data",
"path/to/phaseC_data"
]
}Key parameters:
Regarding Best practices for small Phase C datasets:
To reply, just mention @dosu. How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other |
|
However, the documentation(https://tutorials.deepmodeling.com/en/latest/CaseStudies/Transfer-learning/Transfer-learning.html) at describes it as follows: "This tutorial will introduce how to implement potential energy surface (PES) transfer-learning by using the DP-GEN software. In DP-GEN (version > 0.8.0), the “simplify” module is designed for this purpose. Suppose that we have completed a typical DP-GEN flow, and obtained the DFT dataset and four DP models. The workflow of “simplify” is similar to a typical DP-GEN process: iteratively training the DP models with the (re-) labeled data (00.train), picking data according to prediction deviations between different models (01.model_devi), and (re-) labeling the picked data (02.fp). Repeat the iterations until convergence is achieved. Then, the relabeled new dataset that is sufficient to refine the DP model is successfully collected." So, which one is actually the correct approach? |
|
"Simplify" : active learning to reduce the size of an existing training data set. Reference for dpgen concurrent learning: https://doi.org/10.1016/j.cpc.2020.107206 |
|
Regarding the DP-Gen run example, I noticed a supplement on the (https://docs.deepmodeling.com/projects/dpgen/en/latest/run/param.html) with the following description: 'type: list[str], optional Based on this, I have two specific questions: Can the simplify method still be used for transfer learning? If so, could you please point me to the latest JSON configuration files and documentation? Or is it now strictly for database simplification (implying the functionality described in https://tutorials.deepmodeling.com/en/latest/CaseStudies/Transfer-learning/Transfer-learning.html has been deprecated)? If DP-Gen run is the only way to achieve my goal, is there a recommended procedure to perform finetuning using an existing potential function (frozen model) or a checkpoint file? I would be extremely grateful for your guidance on these matters. |
|
The maintainer's clarification resolves the distinction: This issue is already labeled Coding agent: Codex |
Uh oh!
There was an error while loading. Please reload this page.
Summary
Hello,
I have recently encountered a challenge regarding potential function development. I currently possess a potential model that accurately simulates the Phase A and Phase B of a specific alloy. I now intend to incorporate data for Phase C into this potential. Please note that no new elements are being introduced, but my current dataset for Phase C is quite limited. Consequently, I am looking to utilize transfer learning.
During my research, I identified two possible workflows, but I am confused about their practical differences:
The "Simplify" Method ((https://docs.deepmodeling.com/projects/dpgen/en/latest/simplify/simplify.html)): Upon testing, it appears this method is primarily designed for database screening or selection rather than direct model updating.
The "DP-Gen Run" Method (deepmodeling/deepmd-kit#4580): This seems to behave more like a standard model refitting process.
I have consulted technical support, but they were unable to provide a definitive explanation of the distinctions between these two paths. I would appreciate your guidance on the following:
Which method is the most efficient and "convenient" path for adding a small amount of new phase data to an existing model?
Which JSON configuration template should be used for the most up-to-date workflow?
I would be extremely grateful for any insights or documentation you could provide to help resolve this.
DeePMD-kit Version
DPGEN
Backend and its version
all time
Python Version, CUDA Version, GCC Version, LAMMPS Version, etc
No response
Details
that‘s all
All reactions