feat : checkpoint 支持保存 config.json
- Checkpoint.save 写入独立的 config.json(模型架构参数) - Checkpoint.load 读取 config.json,恢复时覆盖 context.model_config - TrainContext 新增 model_config 字段,builder 从 resume_dir/config.json 加载 - BaseConfig.to_dict 支持 tuple 和嵌套 dataclass(如 LoRAConfig) - 删除 _get_meta/_get_config wrapper,直接使用 load_json
This commit is contained in:
+12
-3
@@ -13,12 +13,21 @@ class BaseConfig:
|
||||
d[fld.name] = v
|
||||
elif v is None:
|
||||
d[fld.name] = None
|
||||
elif isinstance(v, (dict, list)):
|
||||
elif isinstance(v, (dict, list, tuple)):
|
||||
try:
|
||||
json.dumps(v)
|
||||
d[fld.name] = v
|
||||
val = list(v) if isinstance(v, tuple) else v
|
||||
json.dumps(val)
|
||||
d[fld.name] = val
|
||||
except (TypeError, ValueError):
|
||||
pass
|
||||
elif isinstance(v, BaseConfig):
|
||||
d[fld.name] = v.to_dict()
|
||||
elif hasattr(v, "__dataclass_fields__"):
|
||||
sub = {}
|
||||
for f in fields(v):
|
||||
a = getattr(v, f.name)
|
||||
sub[f.name] = list(a) if isinstance(a, tuple) else a
|
||||
d[fld.name] = sub
|
||||
return d
|
||||
|
||||
@classmethod
|
||||
|
||||
Reference in New Issue
Block a user