| 28 | intermediate_size = json::require_i64(value, "intermediate_size"); |
| 29 | num_hidden_layers = json::require_i64(value, "num_hidden_layers"); |
| 30 | num_attention_heads = json::require_i64(value, "num_attention_heads"); |
| 31 | num_key_value_heads = json::require_i64(value, "num_key_value_heads"); |
| 32 | head_dim = json::optional_i64(value, "head_dim", hidden_size / num_attention_heads); |
| 33 | max_position_embeddings = json::require_i64(value, "max_position_embeddings"); |
| 34 | rms_norm_eps = json::optional_f32(value, "rms_norm_eps", rms_norm_eps); |
| 35 | rope_theta = json::optional_f32(value, "rope_theta", rope_theta); |
| 36 | } |
| 37 | |
| 38 | AceStepPlannerConfig parse_planner_config(const engine::io::json::Value & value) { |
| 39 | AceStepPlannerConfig config; |
| 40 | config.lm_family = json::optional_string(value, "model_type", config.lm_family); |
| 41 | parse_qwen_common( |
| 42 | value, |
| 43 | config.vocab_size, |
| 44 | config.hidden_size, |
| 45 | config.intermediate_size, |
| 46 | config.num_hidden_layers, |
| 47 | config.num_attention_heads, |
| 48 | config.num_key_value_heads, |
| 49 | config.head_dim, |
| 50 | config.max_position_embeddings, |
| 51 | config.rms_norm_eps, |
| 52 | config.rope_theta); |
| 53 | config.bos_token_id = json::optional_i64(value, "bos_token_id", config.bos_token_id); |
| 54 | config.eos_token_id = json::optional_i64(value, "eos_token_id", config.eos_token_id); |
| 55 | config.pad_token_id = json::optional_i64(value, "pad_token_id", config.pad_token_id); |
no test coverage detected