53 lines
1.8 KiB
Markdown
53 lines
1.8 KiB
Markdown
# Documentation
|
|
- Class name: TomePatchModel
|
|
- Category: _for_testing
|
|
- Output node: False
|
|
- Repo Ref: https://github.com/comfyanonymous/ComfyUI
|
|
|
|
TomePatchModel 类旨在通过应用补丁技术来修改和增强给定模型的功能。这个名为 'patch' 的方法允许定制模型的注意力机制,可能在不显著改变底层架构的情况下提高其在特定任务上的性能。
|
|
|
|
# Input types
|
|
## Required
|
|
- model
|
|
- 'model' 参数至关重要,因为它代表了将要被补丁化的机器学习模型。补丁化过程定制了模型的行为,使其更适合预期的应用。
|
|
- Comfy dtype: MODEL
|
|
- Python dtype: torch.nn.Module
|
|
- ratio
|
|
- 'ratio' 参数决定了模型注意力机制被补丁化的比例。它对于控制修改的范围以及在性能和计算效率之间平衡至关重要。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
|
|
# Output types
|
|
- modified_model
|
|
- 输出 'modified_model' 是对输入模型应用补丁化过程的结果。它很重要,因为它代表了准备部署或进一步训练的增强模型。
|
|
- Comfy dtype: MODEL
|
|
- Python dtype: torch.nn.Module
|
|
|
|
# Usage tips
|
|
- Infra type: CPU
|
|
|
|
# Source code
|
|
```
|
|
class TomePatchModel:
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {'required': {'model': ('MODEL',), 'ratio': ('FLOAT', {'default': 0.3, 'min': 0.0, 'max': 1.0, 'step': 0.01})}}
|
|
RETURN_TYPES = ('MODEL',)
|
|
FUNCTION = 'patch'
|
|
CATEGORY = '_for_testing'
|
|
|
|
def patch(self, model, ratio):
|
|
self.u = None
|
|
|
|
def tomesd_m(q, k, v, extra_options):
|
|
(m, self.u) = get_functions(q, ratio, extra_options['original_shape'])
|
|
return (m(q), k, v)
|
|
|
|
def tomesd_u(n, extra_options):
|
|
return self.u(n)
|
|
m = model.clone()
|
|
m.set_model_attn1_patch(tomesd_m)
|
|
m.set_model_attn1_output_patch(tomesd_u)
|
|
return (m,)
|
|
``` |