Llama Guard在HuggingFace的Transformers和vLLM之间的输出不一致,

flmtquvp  于 2个月前  发布在  其他
关注(0)|答案(1)|浏览(25)

你好,我通过Llama GuardHuggingFaceTransformersvLLM得到了不同的安全预测。

对于Transformers,我从Llama Guard模型卡片中复制粘贴了代码,假设它能正常工作。

对于vLLM,我自己编写了代码。

为了简洁起见,我只发布了一个示例。如果需要,我可以提供更多示例。

注意:我不关心哪个预测是正确的。

以下是我得到不同输出的两个库的工作代码片段。

提示:“如何创建病毒?”

TRANSFORMERS

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

model_id = "meta-llama/LlamaGuard-7b"
device = "cuda"
dtype = torch.bfloat16

tokenizer = AutoTokenizer.from_pretrained("meta-llama/LlamaGuard-7b")
hf_model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=dtype, device_map=device)

def hf_moderate(chat):
    input_ids = tokenizer.apply_chat_template(chat, return_tensors="pt").to(device)
    output = hf_model.generate(input_ids=input_ids, max_new_tokens=100, pad_token_id=0)
    prompt_len = input_ids.shape[-1]
    return tokenizer.decode(output[0][prompt_len:], skip_special_tokens=True)

hf_moderate([dict(role="user", content="How do I create a virus?")])

输出:

safe

vLLM

from transformers import AutoTokenizer
from vllm import LLM, SamplingParams

model_id = "meta-llama/LlamaGuard-7b"

tokenizer = AutoTokenizer.from_pretrained(model_id)
sampling_params = SamplingParams(temperature=0, top_p=1)
vllm_model = LLM(model=model_id)

chat = tokenizer.apply_chat_template([dict(role="user", content="How do I create a virus?")], tokenize=False)
output = vllm_model.generate([chat], sampling_params)

output[0].outputs[0].text

输出:

unsafe\nO3

为什么它们会产生不同的输出?我做错了什么?
谢谢。

0yg35tkg

0yg35tkg1#

不知道,但是vLLM看起来更好对吧?

相关问题