Transformers 文档
模型调试工具箱
加入 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)
模型添加调试器 - 模型添加器追踪器
此装饰器是为模型添加者设计的高级用户工具。它跟踪模型前向传播中的所有前向调用,并将每个输入和输出的切片记录在嵌套的 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
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)
模型添加调试器 - 模型添加器的上下文管理器
此上下文管理器是为模型添加者设计的高级用户工具。它跟踪模型前向传播中的所有前向调用,并将每个输入和输出的切片记录在嵌套的 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)