# logging **Repository Path**: aisbench/logging ## Basic Information - **Project Name**: logging - **Description**: AISBench工具配套打点组件,用于在模型负载中进行打点,记录模型运行数据。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 2 - **Created**: 2024-02-29 - **Last Updated**: 2025-08-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 打点组件logging使用说明 本仓库只提供logging发行版,不提供源码。 ## 工具介绍 ### 工具概述 AISBench打点组件logging(后简称logging工具)提供标准化接口,用于在模型负载中进行打点,记录模型运行数据。并且提供汇总上报功能,将多卡数据汇总上报给Stubs程序。logging工具可以和Stubs搭配使用,也可以单独用于脚本中的打点。 ### 名词定义 |名词|定义| | --- | --- | |点事件|模型训练、推理过程中,瞬间发生的事件或是对某些值的记录。| |持续事件|模型训练、推理过程中,会持续一段时间的事件。| |Stubs程序|执行标准AI测试时,被测试者运行的用于拉起模型负载的控制程序。| ### 工具依赖 - OS:Linux - Python版本:Python 3.7及以上版本 ## 安装和卸载 ### 安装logging 1. 从[logging发行版](https://gitee.com/aisbench/logging/releases/)获取whl包,`ais_bench_logging--py3-none-linux_.whl`, 通过`pip install`命令安装: ```bash pip install ais_bench_logging--py3-none-linux_.whl --force-reinstall ``` 2. 执行`pip show ais_bench_logging`确认安装完成,输出结果如下: ```bash Name: ais-bench-logging Version: 2.1 Summary: ais_bench logging Home-page: Author: Author-email: License: Location: /xxxx/site-packages Requires: Required-by: ``` ### 卸载logging 卸载logging可以使用如下命令: ```bash pip uninstall ais_bench_logging ``` ## logging python API使用方法 ### 调用示例 确保ais_bench logging工具已安装,调用API方法如下: ```python from ais_bench.logging import ``` 其中`some function`表示对应的接口函数。 ### API使用介绍 #### init(初始化) - 功能说明 用于初始化。初始化失败,则在后续的打点中只会执行打屏,不会执行落盘。 - 函数原型 ```python init(task_type: str, log_dir:str) ``` - 参数说明 | 参数 | 说明 | | --------- | ------------------------------------------------------------ | | task_type | 本次记录的模型运行任务的类型,可取值:"training"或"inference"。 | | log_dir | 落盘文件的目录。 | #### start(持续事件开始打点) - 功能说明 用于记录持续事件的开始,传入的事件名称如果不是规定字段,则只会进行打屏,不会对此打点做记录。 - 函数原型 ```python start(event_name: str, sample_num: int) ``` - 参数说明 | 参数 | 说明 | | ---------- | ---------- | | event_name | 事件名称。 | | sample_num | 样本数量。 | #### end(持续事件结束打点) - 功能说明 用于记录持续事件的结束,传入的事件名称如果不是规定字段,则只会进行打屏,不会对此打点做记录。 - 函数原型 ```python end(event_name: str, sample_num: int) ``` - 参数说明 | 参数 | 说明 | | ---------- | ---------- | | event_name | 事件名称。 | | sample_num | 样本数量。 | #### event(点事件打点) - 功能说明 用于记录点事件的取值,传入的事件名称如果不是规定字段,则只会进行打屏,不会对此字段对应的值做记录。 - 函数原型 ```python event(event_name: str, value: str) ``` - 参数说明 | 参数 | 说明 | | ---------- | -------------- | | event_name | 事件名称。 | | value | 事件对应的值。 | #### finish(后处理) - 功能说明 和init配套使用,在所有打点完成之后调用,实现数据的落盘。 - 函数原型 ```python finish() ``` #### collect_report(汇总上报) - 功能说明 用于从指定目录中获取指定任务类型的性能数据文件,并将其上报给Stubs程序。多次使用需要注意清理历史json文件。 - 函数原型 ```python collect_report(task_type: str, log_dirs: List[str]) ``` - 参数说明 | 参数 | 说明 | | --------- | ------------------------------------------- | | task_type | 任务类型,可取值:"training"或"inference"。 | | log_dirs | 数据文件目录的列表。 | ### AISBench 1.0 风格的API(兼容使用loadgen场景) #### set_result(直接给stubs上报单一字段参数) - 功能说明 用于用于上报单个规定字段的值给Stubs程序。 - 函数原型 ```python set_result(mode: str, key: str, value: str) ``` - 参数说明 | 参数 | 说明 | | --------- | ------------------------------------------- | | mode | 任务类型,可取值:"training"或"inference"。 | | key | 需要上报的规定字段。 | | value | 需要上报的规定字段的取值。 | #### 规定字段(key) ##### 推理 ```cpp "result", // 结果 "reason", // 原因 "total_latency", // 推理总延时 "e2e_latency", // 端到端推理延时 "query_sending_latency", // 样本发送延时 "result_sending_latency", // 结果发送延时 "dispatch_latency", // 任务分派延时 "preprocess_latency", // 预处理延时 "infer_latency", // 推理延时 "post_latency", // 后处理延时 "sample_process_latency", // 样本处理延时 "latencyConstrainPercentile", // 超时比例 "sample_dispatch_and_process_latency", // 分派处理延时 "average_power", "max_power", // 平均功率 最大功率 "throughput_ratio", "resource_util_ratio", // 吞吐率 资源利用率 "energy_consumption", "efficientcy", "accuracy", // 能效 效率 准确率 "elasticity", // 弹性 "resilience_on_pressure" // 承压力 ``` ##### 训练 ```cpp "result", // 结果 "reason", // 原因 "total_start_time", "total_end_time", // 总体训练开始时间 总体训练结束时间 "prepare_start_time", "prepare_end_time", // 准备开始时间 准备结束时间 "proc_start_time", "proc_end_time", // 处理开始时间 总处理结束时间 "dataload_start_time", "dataload_end_time", // 数据读入开始时间 数据读入结束时间 "train_launch_start_time", "train_launch_end_time", // 训练启动开始时间 训练结束开始时间 "train_start_time", "train_end_time", // 训练开启时间 训练结束时间 "model_format_start_time", "model_format_end_time", // 模型格式转换开始时间 模型格式转换结束时间 "model_persistence_start_time", "model_persistence_end_time", // 模型持久化开始时间 模型持久化结束时间 "nodes_communication_start_time", "nodes_communication_end_time", // 节点间通信时延开始时间 节点间通信时延结束时间 "average_power", // 平均功率 "max_power", // 最大功率 "throughput_ratio", // 吞吐率 "throughput_per_step", // 平均每个step的吞吐率 "resource_util_ratio", // 资源利用率 "energy_consumption", // 能效 "efficientcy", // 效率 "accuracy" // 准确率 ``` ### 附录 #### 调试方法 设置日志等级,以获取调试信息。1表示debug,2表示info,3表示warning,4表示error。 ```shell export AISBENCH_LOG_LEVEL=1 ``` #### 整体打点规则 当logging模块和Stubs配合使用时,对于训练和推理都需要记录"result"点事件。 #### 训练任务持续事件规定字段(start和end打点接口只能先后调用一次) "dataload", // 数据读入 "train_launch", // 训练启动 "train", // 训练 "prepare", // 准备 "proc", // 处理 "model_format", // 模型格式转换 "model_persistence", // 模型持久化 "nodes_communication", // 节点间通信 #### 训练任务多重持续事件规定字段(start和end打点可以连续循环调用) "train_per_step", // 训练,按每个step打点,默认忽略前2个step的打点结果(认为是warm up) #### 训练任务点事件规定字段 "result", // 结果 "reason", // 原因 "average_power", // 平均功率 "max_power", // 最大功率 "resource_util_ratio", // 资源利用率 "energy_consumption", // 能效 "efficientcy", // 效率 "accuracy" // 准确率 #### 推理任务持续事件规定字段 "total", // 总体 "e2e", // 端到端推理 "query_sending", // 样本发送 "result_sending", // 结果发送 "dispatch", // 任务分派 "preprocess", // 预处理 "infer", // 推理 "post", // 后处理 "sample_process", // 样本处理 "sample_dispatch_and_process", // 分派处理 #### 推理任务点事件规定字段 "result", // 结果 "reason", // 原因 "latencyConstrainPercentile", // 超时比例 "average_power", // 平均功率 "max_power", // 最大功率 "resource_util_ratio", // 资源利用率 "energy_consumption", // 能效 "efficientcy", // 效率 "accuracy", // 准确率 "elasticity", // 弹性 "resilience_on_pressure" // 承压力 #### 环境变量说明 1. `AISBENCH_LOGGING_WARM_UP_STEPS_COUNT`,在使用"train_per_step"字段进行每个训练step的性能打点前默认认为前2个step为warm up,此环境变量存在时,warm up的step次数以环境变量设置的为准。例如: ```bash # 会认为前5个step为warm up,不会计入性能统计。 export AISBENCH_LOGGING_WARM_UP_STEPS_COUNT=5 ``` **注意**: AISBENCH_LOGGING_WARM_UP_STEPS_COUNT的取值范围为[0, 2^64 - 1],超出此范围或者是非法字符warm up的step次数维持默认值2。如果AISBENCH_LOGGING_WARM_UP_STEPS_COUNT的次数大于等于实际对step前后打点的次数,最终将不会统计出steps的吞吐率