数据结构
模块:polygraphy.comparator
- class IterationResult(outputs=None, runtime=None, runner_name=None)[source]
基类:
Interface
一个有序字典,包含运行 runner 单次迭代的结果。
此字典将输出名称映射到数组,并保留来自 runner 的输出顺序。
注意:可以设置
POLYGRAPHY_ARRAY_SWAP_THRESHOLD_MB
环境变量以启用将数组交换到磁盘。还包括其他字段,指示生成输出的 runner 的名称,以及执行此操作所需的时间。
- 参数:
outputs (Dict[str, Union[np.array, torch.Tensor]]) – 此迭代的输出,映射到其名称。
runtime (float) – 此迭代所需的时间,以秒为单位。仅用于日志记录目的。
runner_name (str) – 生成此输出的 runner 的名称。如果省略,则会生成默认名称。
- class RunResults(lst=None)[source]
基类:
Interface
将 runner 映射到每次迭代的输出(以
List[IterationResult]
的形式)。例如,如果
results
是RunResults()
的实例,那么要访问来自指定 runner 的第一次迭代的输出,请执行iteration = 0 runner_name = "trt-runner" outputs = results[runner_name][iteration] # `outputs` is a `Dict[str, np.ndarray]`
注意:从技术上讲,这是一个
List[Tuple[str, List[IterationResult]]]
,但包含使其行为类似于可以包含重复项的 OrderedDict 的助手。- update(other)[source]
更新存储在此实例中的结果。
- 参数:
other (Union[Dict[str, List[IterationResult]], RunResults]) – 用于更新此实例的字典或 RunResults 实例。
- add(out_list, runtime=None, runner_name=None)[source]
一个助手,用于创建
List[IterationResult]
并将其映射到指定的 runner_name。此方法不能用于修改现有条目。
调用此方法等效于
results[runner_name] = [] for out in out_list: results[runner_name].append(IterationResult(out, runtime, runner_name))
- 参数:
out_list (List[Dict[str, np.array]]) – 一个或多个输出集,其中每个输出都是输出名称映射到 NumPy 数组的字典。
runtime (float) – 此迭代所需的时间,以秒为单位。仅用于日志记录目的。
runner_name (str) – 生成此输出的 runner 的名称。如果省略,则会生成默认名称。
- static from_json(src)
解码 JSON 对象并创建此类的实例。
- 参数:
src (str) – 对象的 JSON 表示形式
- 返回:
解码后的实例
- 返回类型:
- 引发:
PolygraphyException – 如果 JSON 无法解码为 RunResults 的实例
- static load(src)
从 JSON 文件加载此类的实例。
- 参数:
src (Union[str, file-like]) – 要从中读取的路径或类似文件的对象。
- 返回:
解码后的实例
- 返回类型:
- 引发:
PolygraphyException – 如果 JSON 无法解码为 RunResults 的实例
- save(dest)
将此实例编码为 JSON 对象并将其保存到指定的路径或类似文件的对象。
- 参数:
dest (Union[str, file-like]) – 要写入的路径或类似文件的对象。
- to_json()
将此实例编码为 JSON 对象。
- 返回:
此实例的 JSON 表示形式。
- 返回类型:
str
- class AccuracyResult(dct=None)[source]
基类:
Interface
一个有序字典,包括有关
Comparator.compare_accuracy
结果的详细信息。更具体地说,它是一个
OrderedDict[Tuple[str, str], List[OrderedDict[str, bool]]]
,它将 runner 对(包含两个 runner 名称的元组)映射到布尔字典列表(或可以转换为布尔值的任何内容,例如OutputCompareResult
),指示相应迭代的输出中是否存在匹配项。List[OrderedDict[str, bool]]
是从compare_accuracy
中的compare_func
返回的字典构建的。例如,要查看
runner0
和runner1
在名为output0
的输出的第一次迭代期间是否存在匹配项runner_pair = ("runner0", "runner1") iteration = 0 output_name = "output0" match = bool(accuracy_result[runner_pair][iteration][output_name])
如果存在不匹配项,您可以从
Comparator.run()
的结果中检查输出,此处假定为run_results
runner0_output = run_results["runner0"][iteration][output_name] runner1_output = run_results["runner1"][iteration][output_name]
- __bool__()[source]
所有输出是否在每次迭代中都匹配。您可以使用此函数来避免手动检查每个输出。例如
if accuracy_result: print("All matched!")
- 返回:
bool