llmcompressor.modifiers.utils.hooks
类
-
HooksMixin–用于管理钩子注册、禁用和移除的 Mixin。
HooksMixin
基类:BaseModel
用于管理钩子注册、禁用和移除的 Mixin。Modifiers 应使用 self.register_hook(module, hook, hook_type) 进行钩子注册,并使用 self.remove_hooks() 进行移除。
实现钩子的 Modifiers 应使用 self.register_..._hook(module, hook) 进行注册,而不是通常的 module.register_..._hook(hook)。Modifiers 应使用 self.remove_hooks() 进行移除。
钩子可以应用于模块或参数。
典型示例
modifier.register_forward_hook(module, hook) with HooksMixin.disable_hooks(): model.forward(...) modifier.remove_hooks()
激活特定钩子子集的示例
hooks = [modifier.register_forward_hook(module, hook) for module in ...] with HooksMixin.disable_hooks(keep=hooks): model.forward(...) modifier.remove_hooks(hooks)
方法
-
disable_hooks–禁用所有 Modifiers 中的所有钩子。组合多个上下文等同于
-
register_hook–在指定的模块/参数上注册一个钩子,并可以选择禁用它。
-
remove_hooks–移除此 Modifier 注册的钩子。
disable_hooks classmethod
禁用所有 Modifiers 中的所有钩子。组合多个上下文等同于 keep 参数的并集。
参数
-
(keepSet[RemovableHandle], default:frozenset()) –可选的要保持启用的句柄集合。
源文件位于 llmcompressor/modifiers/utils/hooks.py
register_hook
register_hook(
target: Union[Module, Parameter],
hook: Callable[[Any], Any],
hook_type: str,
**kwargs,
) -> RemovableHandle
在指定的模块/参数上注册一个钩子,并可以选择使用 HooksMixin.disable_hooks() 禁用它。
参数
-
(targetUnion[Module, Parameter]) –应注册钩子的模块或参数。
-
(hookCallable[[Any], Any]) –要注册的钩子。
-
(hook_typestr) –要注册的钩子类型,对应于 torch.nn.Module 上的
register_{hook_type}_hook属性。例如:"forward", "forward_pre", "full_backward", "state_dict_post", "" -
–kwargs要传递给 register hook 方法的关键字参数。
源文件位于 llmcompressor/modifiers/utils/hooks.py
remove_hooks
移除此 Modifier 注册的钩子。
参数
-
(handlesOptional[Set[RemovableHandle]], default:None) –可选的要移除的句柄列表,默认为此 Modifier 注册的所有钩子。