# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import Protocol from benchmarks.profiler.utils.defaults import EngineType from dynamo.planner.defaults import SubComponentType class ConfigModifierProtocol(Protocol): @classmethod def convert_config( cls, config: dict, target: EngineType, is_moe_model: bool = False, ) -> dict: ... @classmethod def set_config_tp_size( cls, config: dict, tp_size: int, component_type: SubComponentType = SubComponentType.DECODE, ) -> dict: ... @classmethod def set_config_tep_size( cls, config: dict, tep_size: int, num_gpus_per_node: int, component_type: SubComponentType = SubComponentType.DECODE, ) -> dict: ... @classmethod def set_config_dep_size( cls, config: dict, dep_size: int, num_gpus_per_node: int, component_type: SubComponentType = SubComponentType.DECODE, ) -> dict: ... @classmethod def get_model_name(cls, config: dict) -> str: ... @classmethod def get_port(cls, config: dict) -> int: ... @classmethod def get_kv_cache_size_from_dynamo_log( cls, dynamo_log_fn: str, attention_dp_size: int = 1 ) -> int: ... @classmethod def load_default_config(cls) -> dict: ... @classmethod def update_model(cls, config: dict, model_name: str) -> dict: ... @classmethod def update_image(cls, config: dict, image: str) -> dict: ...