답변을 하는 척하다가 중간부터 의미없는 말을 생성합니다.
답변을 하는 척하다가 중간부터 의미없는 말을 생성합니다. 아래는 답변의 예입니다.
가명처리와 가명정보처리의 차이점이 뭐야?
Answer: 가명처리란 개인정보를 삭제, 대체 등의 방법으로 처리하여 추가정보와 결합해도 원래의 개인정보를 확인할 수 없도록 하는 것을 말합니다. 가명정보란 개인정보를 가명처리한 정보로, 추가정보와 결합해도 원래의 개인정보를 확인할 수 없도록 처리한 정보를 말합니다. Q 2 가명처리에 대한 이해 가명처리란 개인정보를 삭제, 대체 등의 방법으로 처리하여 추가정보와 결합해도 원래의 개인정보를 확인할 수 없도록 하는 것을 말합니다. Q 3 가명처리 절차 가명처리의 절차를 알아보겠습니다. ① 목적설정 가명처리의 목적을 설정합니다. ② 사전준비 가명처리를 위한 사전준비를 합니다. ③ 가명처리 개인정보를 가명처리합니다. ④ 적정성 검토 가명처리한 정보가 목적에 부합하는지 여부를 검토합니다. ⑤ 안전한 관리 가명처리한 정보를 안전하게 관리합니다. ⑥ 위험성 검토 가명처리한 정보가 목적에 부합하는지 여부를 검토합니다. ⑦ 부록 가명처리한 정보를 목적에 부합하는지 여부를 검토합니다. Q 4 가명처리 절차에 대한 이해 가명처리 절차에 대해 자세히 알아보겠습니다. ① 목적설정 가명처리의 목적을 설정합니다. ② 사전준비 가명처리를 위한 사전준비를 합니다. ③ 가명처리 개인정보를 가명처리합니다. ④ 적정성 검토 가명처리한 정보가 목적에 부합하는지 여부를 검토합니다. ⑤ 안전한 관리 가명처리한 정보를 안전하게 관리합니다. ⑥ 위험성 검토 가명처리한 정보가 목적에 부합하는지 여부를 검토합니다. ⑦ 부록 가명처리한 정보를 목적에 부합하는지 여부를 검토합니다. Q 5 가명처리 절차에 대한 이해 가명처리 절차에 대해 자세히 알아보겠습니다. ① 목적설정 가명처리의 목적을 설정합니다. ② 사전준비 가명처리를 위한 사전준비를 합니다. ③ 가명처리 개인정보를
위와 같이 제대로 된 답을 하다가 이상한 말을 합니다. 다른 질문을 하더라도 처음에는 제대로 답변하는 듯 하다가 이상한 말을 계속 덧붙입니다.
아래는 소스 코드입니다.
def __init__(self, model_id: str = "saltlux/Ko-Llama3-Luxia-8B", device="cuda"):
self.tokenizer = AutoTokenizer.from_pretrained(
model_id, cache_dir=CACHE_DIR
)
quantization_config = BitsAndBytesConfig(
load_in_4bit=True, bnb_4bit_compute_dtype=torch.bfloat16
)
self.model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
quantization_config=quantization_config,
cache_dir=CACHE_DIR
)
self.model.generation_config.pad_token_id = self.model.generation_config.eos_token_id
self.model.eval()
self.chat = []
self.device = device
def generate(self, question: str, context: str = None, max_new_tokens: int = 512):
terminators = [
self.tokenizer.eos_token_id,
self.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
if context == None or context == "":
prompt = f"""Give a detailed answer to the following question. Question: {question}"""
else:
prompt = f"""Using the information contained in the context, give a detailed answer to the question.
Context: {context}.
Question: {question}"""
chat = [{"role": "user", "content": prompt}]
formatted_prompt = self.tokenizer.apply_chat_template(
chat,
tokenize=False,
add_generation_prompt=True
)
print("formatted_prompt : ", formatted_prompt)
inputs = self.tokenizer.encode(
formatted_prompt,
add_special_tokens=True,
return_tensors="pt"
).to(self.device)
with torch.no_grad():
outputs = self.model.generate(
input_ids=inputs,
max_new_tokens=max_new_tokens,
do_sample=True,
temperature=0.6,
top_p=0.9,
eos_token_id=terminators
)
response = outputs[0][inputs.shape[-1]:]
response = self.tokenizer.decode(response)
안녕하세요.
본 모델은 사전학습 모델입니다.
예시에 있는 질의에 대한 적절한 응답을 받기 위해 Instruct-tuning 이후 사용해보시길 권장드립니다.
추가적으로 입력 간 텍스트 맨 앞 부분에 "<|begin_of_text|>"라는 bos_token을 토큰을 추가적으로 붙혀서 추론하시는 것을 추천드립니다. :)
추가적으로 입력 간 텍스트 맨 앞 부분에 "<|begin_of_text|>"라는 bos_token을 토큰을 추가적으로 붙혀서 추론하시는 것을 추천드립니다. :) <---- 이 부분은 어떻게 코딩하면 되나요?
그리고 추가를 하면 어떤 효과가 있나요?