Skip to content

实现InfiniLM python前端统一config管理#269

Open
MoringLotus wants to merge 3 commits intoInfiniTensor:mainfrom
MoringLotus:feat-new-work
Open

实现InfiniLM python前端统一config管理#269
MoringLotus wants to merge 3 commits intoInfiniTensor:mainfrom
MoringLotus:feat-new-work

Conversation

@MoringLotus
Copy link

@MoringLotus MoringLotus commented Mar 16, 2026

InfiniLM 配置系统使用说明

概述

提供了一个统一的配置管理系统,用于管理各个脚本和应用的运行参数。

架构设计

BaseTestConfig (基类)
    ├── 通用参数:model_path, device, ndev, verbose
    │
    └── 子类继承 (如 launch_config)
            ├── 添加特有参数
            └── 扩展功能

核心类:BaseTestConfig

BaseTestConfig 是所有配置类的基类,提供通用的参数解析和设备管理功能。

支持的设备类型

设备名称 说明 枚举值
cpu CPU 设备 DEVICE_TYPE_CPU
nvidia NVIDIA GPU DEVICE_TYPE_NVIDIA
qy QY 设备 DEVICE_TYPE_QY
cambricon 寒武纪 DEVICE_TYPE_CAMBRICON
ascend 昇腾 DEVICE_TYPE_ASCEND
metax MetaX DEVICE_TYPE_METAX
moore 摩尔线程 DEVICE_TYPE_MOORE
iluvatar 燧原 DEVICE_TYPE_ILUVATAR
kunlun 昆仑 DEVICE_TYPE_KUNLUN
hygon 海光 DEVICE_TYPE_HYGON

访问属性

cfg = BaseTestConfig()

# 获取基本配置
cfg.model_path      # str: 模型路径
cfg.device_name     # str: 设备名称(如 "nvidia")
cfg.device_type     # DeviceType: 设备类型枚举
cfg.ndev           # int: 设备数量
cfg.verbose        # bool: 是否启用详细输出

自定义配置类

创建自定义配置

要创建自定义配置类,继承 BaseTestConfig 并添加特有的参数:

from base_config import BaseTestConfig
import argparse

class MyCustomConfig(BaseTestConfig):
    def __init__(self):
        super().__init__()
        # 创建专门的 parser 解析特有参数
        self.custom_parser = argparse.ArgumentParser()
        self._add_custom_args()
        self.custom_args = self.custom_parser.parse_known_args()[0]

        # 设置特有参数
        self.custom_param = self.custom_args.custom_param

    def _add_custom_args(self):
        """添加自定义参数"""
        self.custom_parser.add_argument(
            "--custom-param",
            type=str,
            default="default_value",
            help="自定义参数说明"
        )

使用示例

基础使用

from base_config import BaseTestConfig

# 创建配置实例
cfg = BaseTestConfig()

# 访问配置
print(f"模型路径: {cfg.model_path}")
print(f"设备类型: {cfg.device_type}")
print(f"设备数量: {cfg.ndev}")

运行脚本

# 基础用法
python my_script.py --model_path /path/to/model --device nvidia --ndev 2

# 使用详细输出
python my_script.py --model_path /path/to/model --verbose

launch_server 使用

from base_config import BaseTestConfig

class launch_config(BaseTestConfig):
    def __init__(self):
        super().__init__()
        # 创建专门的 parser 解析 launch_server 特有参数
        self.launch_parser = argparse.ArgumentParser()
        self._add_launch_args()
        self.launch_args = self.launch_parser.parse_known_args()[0]

        # 设置 launch_server 特有参数
        self.awq = self.launch_args.awq
        self.max_batch = self.launch_args.max_batch
        self.max_tokens = self.launch_args.max_tokens

# 创建配置实例
cfg = launch_config()

# 访问所有配置
print(f"模型路径: {cfg.model_path}")
print(f"设备类型: {cfg.device_type}")
print(f"设备数量: {cfg.ndev}")
print(f"使用 AWQ: {cfg.awq}")
print(f"最大批处理: {cfg.max_batch}")
print(f"最大 Token: {cfg.max_tokens}")
# 启动服务器
python launch_server_config.py \
    --model_path /path/to/model \
    --device nvidia \
    --awq \
    --max-batch 5 \
    --max-tokens 4096

@MoringLotus MoringLotus marked this pull request as ready for review March 17, 2026 01:47
@MoringLotus MoringLotus requested a review from a team March 17, 2026 01:47
Removed sections on design patterns, error handling, and version information from the documentation.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant