你好,我通过Llama Guard
和HuggingFace
的Transformers
和vLLM
得到了不同的安全预测。
对于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
为什么它们会产生不同的输出?我做错了什么?
谢谢。
1条答案
按热度按时间0yg35tkg1#
不知道,但是vLLM看起来更好对吧?