Skip to content

Commit b57b86e

Browse files
authored
support DeePMD-kit 2 (#420)
* support deepmd 2.0 * support dp 2.0 * support dp 2.0 * support dp 2 auto_prob
1 parent c1f0f66 commit b57b86e

File tree

1 file changed

+29
-5
lines changed

1 file changed

+29
-5
lines changed

dpgen/generator/run.py

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -326,13 +326,37 @@ def make_train (iter_index,
326326
jinput['model']['fitting_net'].pop('numb_fparam', None)
327327
else:
328328
raise RuntimeError('invalid setting for use_ele_temp ' + str(use_ele_temp))
329+
elif LooseVersion(mdata["deepmd_version"]) >= LooseVersion('2') and LooseVersion(mdata["deepmd_version"]) < LooseVersion('3'):
330+
# 2.x
331+
jinput['training']['training_data'] = {}
332+
jinput['training']['training_data']['systems'] = init_data_sys
333+
jinput['training']['training_data']['batch_size'] = init_batch_size
334+
jinput['model']['type_map'] = jdata['type_map']
335+
# electron temperature
336+
if use_ele_temp == 0:
337+
pass
338+
elif use_ele_temp == 1:
339+
jinput['model']['fitting_net']['numb_fparam'] = 1
340+
jinput['model']['fitting_net'].pop('numb_aparam', None)
341+
elif use_ele_temp == 2:
342+
jinput['model']['fitting_net']['numb_aparam'] = 1
343+
jinput['model']['fitting_net'].pop('numb_fparam', None)
344+
else:
345+
raise RuntimeError('invalid setting for use_ele_temp ' + str(use_ele_temp))
329346
else:
330347
raise RuntimeError("DP-GEN currently only supports for DeePMD-kit 1.x version!" )
331348
# set training reuse model
332349
if training_reuse_iter is not None and iter_index >= training_reuse_iter:
333-
jinput['training']['auto_prob_style'] \
334-
="prob_sys_size; 0:%d:%f; %d:%d:%f" \
335-
%(old_range, training_reuse_old_ratio, old_range, len(init_data_sys), 1.-training_reuse_old_ratio)
350+
if LooseVersion('1') <= LooseVersion(mdata["deepmd_version"]) < LooseVersion('2'):
351+
jinput['training']['auto_prob_style'] \
352+
="prob_sys_size; 0:%d:%f; %d:%d:%f" \
353+
%(old_range, training_reuse_old_ratio, old_range, len(init_data_sys), 1.-training_reuse_old_ratio)
354+
elif LooseVersion('2') <= LooseVersion(mdata["deepmd_version"]) < LooseVersion('3'):
355+
jinput['training']['training_data']['auto_prob'] \
356+
="prob_sys_size; 0:%d:%f; %d:%d:%f" \
357+
%(old_range, training_reuse_old_ratio, old_range, len(init_data_sys), 1.-training_reuse_old_ratio)
358+
else:
359+
raise RuntimeError("Unsupported DeePMD-kit version: %s" % mdata["deepmd_version"])
336360
if jinput['loss'].get('start_pref_e') is not None:
337361
jinput['loss']['start_pref_e'] = training_reuse_start_pref_e
338362
if jinput['loss'].get('start_pref_f') is not None:
@@ -349,7 +373,7 @@ def make_train (iter_index,
349373
raise RuntimeError ("data sys %s does not exists, cwd is %s" % (jj, os.getcwd()))
350374
os.chdir(cwd)
351375
# set random seed for each model
352-
if LooseVersion(mdata["deepmd_version"]) >= LooseVersion('1') and LooseVersion(mdata["deepmd_version"]) < LooseVersion('2'):
376+
if LooseVersion(mdata["deepmd_version"]) >= LooseVersion('1') and LooseVersion(mdata["deepmd_version"]) < LooseVersion('3'):
353377
# 1.x
354378
jinput['model']['descriptor']['seed'] = random.randrange(sys.maxsize) % (2**32)
355379
jinput['model']['fitting_net']['seed'] = random.randrange(sys.maxsize) % (2**32)
@@ -452,7 +476,7 @@ def run_train (iter_index,
452476
task_path = os.path.join(work_path, train_task_fmt % ii)
453477
all_task.append(task_path)
454478
commands = []
455-
if LooseVersion(mdata["deepmd_version"]) >= LooseVersion('1') and LooseVersion(mdata["deepmd_version"]) < LooseVersion('2'):
479+
if LooseVersion(mdata["deepmd_version"]) >= LooseVersion('1') and LooseVersion(mdata["deepmd_version"]) < LooseVersion('3'):
456480

457481
# 1.x
458482
## Commands are like `dp train` and `dp freeze`

0 commit comments

Comments
 (0)