Transformers 文档

模型调试工具箱

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

模型调试工具箱

此页面列出了库使用的所有调试和模型添加工具,以及为其提供的实用函数。

如果您正在库中添加新模型,那么其中大多数工具才有用。

模型添加调试器

模型添加调试器 - 模型添加器的上下文管理器

此上下文管理器是为模型添加者设计的高级用户工具。它跟踪模型前向传播中的所有前向调用,并将每个输入和输出的切片记录在嵌套的 Json 中。请注意,此上下文管理器强制执行 torch.inference_mode()

原理

因为当将模型移植到 transformers 时,即使是从 python 到 python,模型添加者通常也必须执行大量手动操作,包括保存和加载张量、比较 dtypes 等。这个小工具希望能节省一些时间。

用法

按如下方式添加此上下文管理器以调试模型

import torch
from PIL import Image
import requests
from transformers import LlavaProcessor, LlavaForConditionalGeneration
torch.random.manual_seed(673)

# load pretrained model and processor
model_id = "llava-hf/llava-1.5-7b-hf"
processor = LlavaProcessor.from_pretrained(model_id)
model = LlavaForConditionalGeneration.from_pretrained(model_id, low_cpu_mem_usage=True)

# create random image input
random_image = Image.fromarray(torch.randint(0, 256, (224, 224, 3), dtype=torch.uint8).numpy())

# prompt
prompt = "<image>Describe this image."

# process inputs
inputs = processor(text=prompt, images=random_image, return_tensors="pt")

# call forward method (not .generate!)
with model_addition_debugger_context(model, "optional_path_to_your_output_file.json"):
    output = model.forward(**inputs)

transformers.model_addition_debugger

< >

( )

模型添加调试器 - 模型添加器追踪器

此装饰器是为模型添加者设计的高级用户工具。它跟踪模型前向传播中的所有前向调用,并将每个输入和输出的切片记录在嵌套的 Json 中。请注意,此装饰器强制执行 torch.inference_mode()

用法

将装饰器添加到您的模型类

from ...modeling_utils import model_addition_debugger

@model_addition_debugger
class MyModel(nn.Module) # Can inherit from PreTrainedModel too
    # ... nothing else changes
然后,在一个单独的脚本中(示例是针对 Llava 的)
import torch
from PIL import Image
import requests
from transformers import LlavaProcessor, LlavaForConditionalGeneration
torch.random.manual_seed(673)

# load pretrained model and processor
model_id = "llava-hf/llava-1.5-7b-hf"
processor = LlavaProcessor.from_pretrained(model_id)
model = LlavaForConditionalGeneration.from_pretrained(model_id, low_cpu_mem_usage=True)

# create random image input
random_image = Image.fromarray(torch.randint(0, 256, (224, 224, 3), dtype=torch.uint8).numpy())

# prompt
prompt = "<image>Describe this image."

# process inputs
inputs = processor(text=prompt, images=random_image, return_tensors="pt")

# call forward method (not .generate!)
with torch.no_grad():
    output = model.forward(**inputs)

transformers.model_addition_debugger_context

< >

( model debug_path: str = None )

模型添加调试器 - 模型添加器的上下文管理器

此上下文管理器是为模型添加者设计的高级用户工具。它跟踪模型前向传播中的所有前向调用,并将每个输入和输出的切片记录在嵌套的 Json 中。请注意,此上下文管理器强制执行 torch.inference_mode()

用法

将上下文管理器添加到要调试的模型

import torch
from PIL import Image
import requests
from transformers import LlavaProcessor, LlavaForConditionalGeneration
torch.random.manual_seed(673)

# load pretrained model and processor
model_id = "llava-hf/llava-1.5-7b-hf"
processor = LlavaProcessor.from_pretrained(model_id)
model = LlavaForConditionalGeneration.from_pretrained(model_id, low_cpu_mem_usage=True)

# create random image input
random_image = Image.fromarray(torch.randint(0, 256, (224, 224, 3), dtype=torch.uint8).numpy())

# prompt
prompt = "<image>Describe this image."

# process inputs
inputs = processor(text=prompt, images=random_image, return_tensors="pt")

# call forward method (not .generate!)
with model_addition_debugger_context(model):
    output = model.forward(**inputs)
< > 在 GitHub 上更新