昇腾社区首页
中文
注册

执行解析

  • 数据采集时会锁定落盘文件,需要等待采集结束之后才能启动解析,否则将提示报错“db is lock”。
  • 数据解析没有结束前,不可再次开启动态采集,否则可能出现降低采集性能等问题。

基础解析

执行解析命令示例:

python3 -m ms_service_profiler.parse --input-path ${PATH}/prof_dir/
表1 参数说明

参数

说明

是否必选

--input-path

指定性能数据所在路径,会遍历读取该路径下所有名为msproftx.db或ascend_service_profiler_*.db的数据库。

--output-path

指定解析后文件生成路径,默认为当前路径下的output目录。

--log-level

设置日志级别,取值为:

  • debug:调试级别。该级别的日志记录了调试信息,便于开发人员或维护人员定位问题。
  • info:正常级别。记录工具正常运行的信息。默认值。
  • warning:警告级别。记录工具和预期的状态不一致,但不影响整个进程运行的信息。
  • error:一般错误级别。
  • fatal:严重错误级别。
  • critical:致命错误级别。

--format

设置性能数据输出文件的导出格式,取值为:

  • csv:表示只导出csv格式的结果文件。一般用于原始落盘数据量过大(通常为>10G)场景,仅导出该格式文件可减少数据解析耗时,该格式文件包含每轮请求调度耗时、模型执行耗时、KVCache显存占用情况等。
  • json:表示只导出json格式的结果文件。一般用于仅需使用trace数据进行分析的场景,仅导出该格式文件可减少数据解析耗时,该格式文件包含服务化框架推理全过程Timeline图。
  • db:表示只导出db格式的结果文件。一般用于仅通过MindStudio Insight工具分析结果数据场景,该格式文件包含全量数据解析结果,可直接在MindStudio Insight中完全展示。

不使用format则默认全部导出,可以配置一个或多个参数,配置示例:--format db,--format db csv。

说明:

若数据采集时,配置acl_task_time参数值为2,则解析结果文件仅支持导出json和db格式。

多维度解析

进行基础解析的同时,对性能数据按照不同维度(request维度、batch维度、总体服务维度)进行拆解,详细参数请参见表1

目前提供如下两种不同的使用方式。且如下方式会在基础解析的基础上增加输出文件request_summary.csv、batch_summary.csv、service_summary.csv。

  • 通过安装msserviceprofiler软件使用。
    1. pip安装msserviceprofiler
      pip install -U msserviceprofiler
    2. 执行如下命令进行多维度解析。
      msserviceprofiler analyze --input-path=${PATH}/prof_dir
  • 直接拉取源码使用。
    拉取msit代码仓后在msserviceprofiler目录下执行命令。
    python3 msserviceprofiler/__main__.py analyze --input-path=${PATH}/prof_dir

细粒度拆解

可对不同batch数据进行细粒度拆解,详细参数请参见表2

目前提供如下两种不同的使用方式。
  • 通过安装msserviceprofiler软件使用。
    1. pip安装msserviceprofiler。
      pip install -U msserviceprofiler
    2. 执行细粒度拆解。
      • 拆解prefill的batch数据。
        指定prefill的batch size大小进行性能拆解。
        msserviceprofiler split --input-path=${PATH}/prof_dir --prefill-batch-size=4 --prefill-number=100

        或指定prefill的rid进行性能拆解。

        msserviceprofiler split --input-path=${PATH}/prof_dir --prefill-rid=10

        执行完毕后在结果路径下生成输出文件prefill.csv。

      • 拆解decode的batch数据。
        指定decode的batch size大小进行性能拆解。
        msserviceprofiler split --input-path=${PATH}/prof_dir --decode-batch-size=10 --decode-number=100

        或指定decode的rid进行性能拆解。

        msserviceprofiler split --input-path=${PATH}/prof_dir --decode-rid=10

        执行完毕后在结果路径下生成输出文件decode.csv。

  • 直接拉取源码使用。
    拉取msit代码仓后在msserviceprofiler目录下执行命令。
    • 拆解prefill的batch数据。
      指定prefill的batch size大小进行性能拆解。
      python3 msserviceprofiler/__main__.py split --input-path=${PATH}/prof_dir --prefill-batch-size=4 --prefill-number=100

      或指定prefill的rid进行性能拆解。

      python3 msserviceprofiler/__main__.py split --input-path=${PATH}/prof_dir --prefill-rid=10

      执行完毕后在结果路径下生成输出文件prefill.csv。

    • 拆解decode的batch数据。
      指定decode的batch size大小进行性能拆解。
      python3 msserviceprofiler/__main__.py split --input-path=${PATH}/prof_dir --decode-batch-size=10 --decode-number=100

      或指定decode的rid进行性能拆解。

      python3 msserviceprofiler/__main__.py split --input-path=${PATH}/prof_dir --decode-rid=10

      执行完毕后在结果路径下生成输出文件decode.csv。

表2 参数说明

参数

说明

是否必选

--prefill-batch-size

指定拆解的prefill batch的batch_size大小,该值可以从batch.csv中的batch_size字段中获取,默认值为0,代表不执行prefill性能拆解。

--prefill-number

指定拆解的prefill batch的数量,用于统计执行时间的最大值、最小值、平均值和标准差,默认值为1。

--prefill-rid

指定拆解的prefill batch的请求id,该值可以从request.csv中的http_rid字段中获取,默认值为-1,代表不执行prefill性能拆解。

--decode-batch-size

指定拆解的decode batch的batch_size大小,该值可以从batch.csv中的batch_size字段中获取,默认值为0,代表不执行decode性能拆解。

--decode-number

指定拆解的decode batch的数量,用于统计执行时间的最大值、最小值、平均值和标准差,默认值为1。

--decode-rid

指定拆解的decode batch的请求id,该值可以从request.csv中的http_rid字段中获取,默认值为-1,代表不执行decode性能拆解。