同一字段得到两种运行时类型
启用延迟注解后,dataclass 字段保存的是推迟求值的类型描述,`f.type is dict` 不再成立。CLI 会把 `model_args` 等字典参数解析成映射,纯 YAML 入口却可能把同样的 `"pretrained=gpt2,dtype=float16"` 一路保留为字符串,直到元数据与模型配置阶段才暴露类型错位。

广泛使用的大语言模型评测框架,将任务定义、few-shot 模板、生成参数和推理后端统一到可复现流水线,支持跨模型、跨基准的标准化比较。
CLI 和 YAML 表达方式不同,但进入评测系统前应该被规范化成完全相同的数据结构。
key=valueYAML"key=value"启用延迟注解后,dataclass 字段保存的是推迟求值的类型描述,`f.type is dict` 不再成立。CLI 会把 `model_args` 等字典参数解析成映射,纯 YAML 入口却可能把同样的 `"pretrained=gpt2,dtype=float16"` 一路保留为字符串,直到元数据与模型配置阶段才暴露类型错位。
问题不在某个参数,而在配置入口缺少共同的规范化边界。项目已经用 `DICT_KEYS` 维护 CLI 风格字典字段的单一清单,因此类型识别不应依赖注解对象身份;字符串字典还必须在任何元信息消费之前解析,同时让原生 YAML mapping 保持原状。
以现有 `DICT_KEYS` 取代 `f.type is dict`,并把字典字符串解析前移到 `from_config()` 与 `from_cli()` 共享的配置流水线;将 `trackio_args` 纳入同一注册表。回归同时覆盖 YAML 字符串、原生映射及两种入口,验证规范化发生在模型配置构建之前。
相同的评测参数现在从 CLI 与 YAML 进入后会得到一致的运行时映射,不再因延迟注解静默绕过解析;原生 YAML 字典不会被重复转换。针对配置子命令的 70 项测试和主体测试集的 613 项用例共同锁定这条入口契约。