예제 코드 실행시 오류

#4
by ehottl - opened

아래의 예제 코드를 사용했을때,

import os
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

model_id = 'MLP-KTLim/llama-3-Korean-Bllossom-8B'

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    device_map="auto",
)
model.eval()
LlamaForCausalLM(
  (model): LlamaModel(
    (embed_tokens): Embedding(145088, 4096)
    (layers): ModuleList(
      (0-31): 32 x LlamaDecoderLayer(
        (self_attn): LlamaSdpaAttention(
          (q_proj): Linear(in_features=4096, out_features=4096, bias=False)
          (k_proj): Linear(in_features=4096, out_features=1024, bias=False)
          (v_proj): Linear(in_features=4096, out_features=1024, bias=False)
          (o_proj): Linear(in_features=4096, out_features=4096, bias=False)
...
    )
    (norm): LlamaRMSNorm()
  )
  (lm_head): Linear(in_features=4096, out_features=145088, bias=False)
)
ROMPT = '''당신은 유용한 AI 어시스턴트입니다. 사용자의 질의에 대해 친절하고 정확하게 답변해야 합니다.
You are a helpful AI assistant, you'll need to answer users' queries in a friendly and accurate manner.'''
instruction = ""

messages = [
    {"role": "system", "content": f"{PROMPT}"},
    {"role": "user", "content": f"{instruction}"}
    ]

input_ids = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    return_tensors="pt"
).to(model.device)

terminators = [
    tokenizer.eos_token_id,
    tokenizer.convert_tokens_to_ids("<|eot_id|>")
]

outputs = model.generate(
    input_ids,
    max_new_tokens=256,
    eos_token_id=terminators,
    do_sample=True,
    temperature=0.6,
    top_p=0.9,
    repetition_penalty = 1.1
)

print(tokenizer.decode(outputs[0][input_ids.shape[-1]:], skip_special_tokens=True))

다음과 같은 오류가 발생합니다.

The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.
Setting `pad_token_id` to `eos_token_id`:144783 for open-end generation.
The following is an example of how to use the method:
MLP-LAB org

해당 오류 메세지라고 말씀하시는 것은 오류 메세지가 아닌 경고 메세지로 보입니다.
해당 경고 메세지는 pad_token 이 정의가 안되어서 그런데 이는 추론과정에서는 필요없는 토큰입니다(배치추론이 아닌이상).
만약 해당 경고 메세지가 발생하지 않게 하고싶으시다면 pad_token을 지정해주시고 attention_mask를 생성하여 함께 넣어주시면 될것같습니다!

아마 instruction 부분에 아무것도 입력하지 않아서 모델이 답변을 생성하지 않아 경고메세지를 에러메세지로 착각하신걸로 보입니다!

해당 오류 메세지라고 말씀하시는 것은 오류 메세지가 아닌 경고 메세지로 보입니다.
해당 경고 메세지는 pad_token 이 정의가 안되어서 그런데 이는 추론과정에서는 필요없는 토큰입니다(배치추론이 아닌이상).
만약 해당 경고 메세지가 발생하지 않게 하고싶으시다면 pad_token을 지정해주시고 attention_mask를 생성하여 함께 넣어주시면 될것같습니다!

아마 instruction 부분에 아무것도 입력하지 않아서 모델이 답변을 생성하지 않아 경고메세지를 에러메세지로 착각하신걸로 보입니다!

빠른 답변 감사합니다ㅎ
instruction 부분에 프롬프트를 넣어야 하는군요ㅎ

ehottl changed discussion status to closed

Sign up or log in to comment