Refitter¶
- class tensorrt.Refitter(self: tensorrt.tensorrt.Refitter, engine: tensorrt.tensorrt.ICudaEngine, logger: tensorrt.tensorrt.ILogger)¶
更新
ICudaEngine
中的权重。- 变量:
error_recorder –
IErrorRecorder
应用程序实现的 TensorRT 对象错误报告接口。logger –
ILogger
创建 refitter 时提供的 logger。max_threads –
int
Refitter
可以使用的最大线程数。weights_validation –
bool
指示是否在重拟合过程中验证权重的标志。
- 参数:
engine – 要重拟合的引擎。
logger – 要使用的 logger。
- __del__(self: tensorrt.tensorrt.Refitter) None ¶
- __init__(self: tensorrt.tensorrt.Refitter, engine: tensorrt.tensorrt.ICudaEngine, logger: tensorrt.tensorrt.ILogger) None ¶
- 参数:
engine – 要重拟合的引擎。
logger – 要使用的 logger。
- get_all(self: tensorrt.tensorrt.Refitter) Tuple[List[str], List[tensorrt.tensorrt.WeightsRole]] ¶
获取所有可以重拟合的权重的描述。
- 返回:
具有可重拟合权重的层的名称,以及这些权重的角色。
- get_all_weights(self: tensorrt.tensorrt.Refitter) List[str] ¶
获取所有可以重拟合的权重的名称。
- 返回:
可重拟合权重的名称。
- get_dynamic_range(self: tensorrt.tensorrt.Refitter, tensor_name: str) tuple ¶
[已弃用] 在 TensorRT 10.1 中已弃用。已被显式量化取代。
获取张量的动态范围。如果从未设置动态范围,则返回校准期间计算的范围。
- 参数:
tensor_name – 要检索其动态范围的张量的名称。
- 返回:
Tuple[float, float]
包含动态范围的 [最小值,最大值] 的元组。
- get_missing(self: tensorrt.tensorrt.Refitter) Tuple[List[str], List[tensorrt.tensorrt.WeightsRole]] ¶
获取缺失权重的描述。
例如,如果已设置某些权重,但引擎以组合权重的方式进行了优化,则组合中任何未提供的权重都被认为是缺失的。
- 返回:
具有缺失权重的层的名称,以及这些权重的角色。
- get_missing_weights(self: tensorrt.tensorrt.Refitter) List[str] ¶
获取缺失权重的名称。
例如,如果已设置某些权重,但引擎以组合权重的方式进行了优化,则组合中任何未提供的权重都被认为是缺失的。
- 返回:
缺失权重的名称,未命名权重为空字符串。
- get_named_weights(self: tensorrt.tensorrt.Refitter, weights_name: str) tensorrt.tensorrt.Weights ¶
获取与给定名称关联的权重。
如果从未设置权重,则返回空权重,并向 refitter errorRecorder 报告错误。
- 参数:
weights_name – 要重拟合的权重的名称。
- 返回:
与给定名称关联的权重。
- get_tensors_with_dynamic_range(self: tensorrt.tensorrt.Refitter) List[str] ¶
[已弃用] 在 TensorRT 10.1 中已弃用。已被显式量化取代。
获取所有具有可重拟合动态范围的张量的名称。
- 返回:
具有可重拟合动态范围的张量的名称。
- get_weights_location(self: tensorrt.tensorrt.Refitter, weights_name: str) tensorrt.tensorrt.TensorLocation ¶
获取与给定名称关联的权重的存储位置。
如果从未设置权重,则返回 TensorLocation.HOST,并向 refitter errorRecorder 报告错误。
- 参数:
weights_name – 要重拟合的权重的名称。
- 返回:
与给定名称关联的权重的存储位置。
- get_weights_prototype(self: tensorrt.tensorrt.Refitter, weights_name: str) tensorrt.tensorrt.Weights ¶
获取与给定名称关联的权重原型。
权重原型的数据类型和大小与用于引擎构建的权重相同。当权重名称为 None 或与任何可重拟合权重不对应时,权重原型的大小为 -1。
- 参数:
weights_name – 要重拟合的权重的名称。
- 返回:
与给定名称关联的权重原型。
- refit_cuda_engine(self: tensorrt.tensorrt.Refitter) bool ¶
重拟合关联的引擎。
如果返回
False
,则可能已重拟合部分权重。如果引擎有待处理的排队工作,则行为未定义。CPU 或 GPU 上提供的权重可以在 refit_cuda_engine 返回后取消设置和释放,或更新。
与引擎关联的 IExecutionContexts 在之后仍然有效可用。无需为多次重拟合调用重复设置相同的权重,因为可以直接更新权重内存。
- 返回:
成功时返回
True
,如果新权重验证失败或在调用之前 get_missing_weights() != 0,则返回False
。
- refit_cuda_engine_async(self: tensorrt.tensorrt.Refitter, stream_handle: int) bool ¶
在给定的流上排队关联引擎的权重重拟合。
如果返回
False
,则可能已重拟合部分权重。如果引擎在与提供的流不同的流上有待处理的排队工作,则行为未定义。CPU 上提供的权重可以在 refit_cuda_engine_async 返回后取消设置和释放,或更新。GPU 上提供的权重的释放或更新可以在 refit_cuda_engine_async 返回后在同一流上排队。
与引擎关联的 IExecutionContexts 在之后仍然有效可用。无需为多次重拟合调用重复设置相同的权重,因为可以直接更新权重内存。权重更新任务应使用与重拟合调用相同的流。
- 参数:
stream – 用于排队权重更新任务的流。
- 返回:
成功时返回
True
,如果新权重验证失败或在调用之前 get_missing_weights() != 0,则返回False
。
- set_dynamic_range(self: tensorrt.tensorrt.Refitter, tensor_name: str, range: List[float]) bool ¶
[已弃用] 在 TensorRT 10.1 中已弃用。已被显式量化取代。
更新张量的动态范围。
- 参数:
tensor_name – 要更新其动态范围的张量的名称。
range – 新范围。
- 返回:
成功时返回
True
,否则返回False
。
如果不存在从该名称的网络张量派生的 Int8 引擎张量,则返回 false。如果成功,则
get_missing()
可能会报告需要提供一些权重。
- set_named_weights(*args, **kwargs)¶
重载函数。
set_named_weights(self: tensorrt.tensorrt.Refitter, name: str, weights: tensorrt.tensorrt.Weights) -> bool
指定给定名称的新权重。拒绝的可能原因是
权重名称为空或与任何可重拟合权重不对应。
权重的大小与使用相同名称调用
get_weights_prototype()
返回的大小不一致。权重的数据类型与使用相同名称调用
get_weights_prototype()
返回的数据类型不一致。
在
refit_cuda_engine()
或refit_cuda_engine_async()
返回之前修改权重将导致未定义的行为。- arg name:
要重拟合的权重的名称。
- arg weights:
要与名称关联的新权重。
- returns:
成功时返回
True
,如果新权重被拒绝,则返回False
。
set_named_weights(self: tensorrt.tensorrt.Refitter, name: str, weights: tensorrt.tensorrt.Weights, location: tensorrt.tensorrt.TensorLocation) -> bool
指定给定名称的指定设备上的新权重。拒绝的可能原因是
权重名称为空或与任何可重拟合权重不对应。
权重的大小与使用相同名称调用
get_weights_prototype()
返回的大小不一致。权重的数据类型与使用相同名称调用
get_weights_prototype()
返回的数据类型不一致。
允许在 CPU 上提供一些权重,而在 GPU 上提供另一些权重。在
refit_cuda_engine()
或refit_cuda_engine_async()
返回之前修改权重将导致未定义的行为。- arg name:
要重拟合的权重的名称。
- arg weights:
指定设备上的新权重。
- arg location:
新权重的存储位置(主机 vs. 设备)。
- returns:
成功时返回
True
,如果新权重被拒绝,则返回False
。
- set_weights(self: tensorrt.tensorrt.Refitter, layer_name: str, role: tensorrt.tensorrt.WeightsRole, weights: tensorrt.tensorrt.Weights) bool ¶
为给定名称的层指定新权重。拒绝的可能原因是
不存在具有该名称的层。
该层没有具有指定角色的权重。
权重的大小与该层的原始规格不一致。
在
refit_cuda_engine()
或refit_cuda_engine_async()
返回之前修改权重将导致未定义的行为。- 参数:
layer_name – 层的名称。
role – 权重的角色。有关更多信息,请参阅
WeightsRole
。weights – 要重拟合的权重。
- 返回:
成功时返回
True
,如果新权重被拒绝,则返回False
。
- unset_named_weights(self: tensorrt.tensorrt.Refitter, weights_name: str) bool ¶
取消设置与给定名称关联的权重。
在释放权重之前取消设置权重。
- 参数:
weights_name – 要重拟合的权重的名称。
- 返回:
如果权重从未设置,则返回
False
,否则返回True
。