BaseTestConfig 是 InfiniLM 项目的统一配置基类,为各个测试脚本提供通用的命令行参数解析和配置管理功能。
- 统一参数管理: 提供所有测试脚本共用的基础参数
- 设备类型映射: 支持多种硬件设备的自动类型转换
- 灵活扩展: 使用
parse_known_args()容错处理,允许脚本添加特定参数 - 类型安全: 自动将设备字符串转换为对应的
DeviceType枚举
| 设备名称 | DeviceType 枚举值 |
|---|---|
cpu |
DEVICE_TYPE_CPU |
nvidia |
DEVICE_TYPE_NVIDIA |
qy |
DEVICE_TYPE_QY |
cambricon |
DEVICE_TYPE_CAMBRICON |
ascend |
DEVICE_TYPE_ASCEND |
metax |
DEVICE_TYPE_METAX |
moore |
DEVICE_TYPE_MOORE |
iluvatar |
DEVICE_TYPE_ILUVATAR |
kunlun |
DEVICE_TYPE_KUNLUN |
hygon |
DEVICE_TYPE_HYGON |
| 参数 | 类型 | 是否必需 | 默认值 | 说明 |
|---|---|---|---|---|
--model_path |
str | ✓ 是 | - | 模型文件路径 |
--device |
str | 否 | cpu |
目标设备类型(见上表) |
--ndev |
int | 否 | 1 |
使用的设备数量 |
--verbose |
flag | 否 | False |
启用详细输出模式 |
python scripts/base_config.py --model_path /path/to/modelfrom base_config import BaseTestConfig
class MyTestConfig(BaseTestConfig):
def __init__(self):
super().__init__()
# 添加脚本特定参数
self.parser.add_argument("--my_param", type=int, default=10)
self.my_param = self.args.my_param
# 使用
cfg = MyTestConfig()
print(f"模型路径: {cfg.model_path}")
print(f"设备类型: {cfg.device_type}")
print(f"自定义参数: {cfg.my_param}")python your_script.py --model_path ./models/llama2python your_script.py --model_path ./models/llama2 --device nvidia --ndev 2python your_script.py --model_path ./models/llama2 --device qy --verbosepython your_script.py --model_path ./models/llama2 --device nvidia --ndev 4 --batch_size 32初始化后可访问的属性:
model_path(str): 模型路径ndev(int): 设备数量verbose(bool): 详细输出开关device_name(str): 设备名称(原始输入)device_type(DeviceType): 设备类型枚举值args(Namespace): 解析后的参数命名空间extra(list): 未解析的额外参数
修改 _get_device_type 方法中的 DEVICE_TYPE_MAP:
DEVICE_TYPE_MAP = {
# ... 现有映射 ...
"new_device": DeviceType.DEVICE_TYPE_NEW,
}修改 _add_common_args 方法:
def _add_common_args(self):
# ... 现有参数 ...
self.parser.add_argument("--new_param", type=str, default="default")- 参数顺序: 命令行参数顺序不影响解析结果
- 类型转换:
--ndev等整数参数会自动验证类型 - 参数覆盖: 后出现的参数会覆盖前面的同名参数
- 帮助信息: 使用
--help查看所有可用参数
scripts/jiuge_config.py: 九格评测配置scripts/jiuge_ppl_config.py: 九格 PPL 配置scripts/jiuge.py: 九歌评测主脚本