0

I want to create small adapter for asking llama model about my abstract game, but when I query it afterward, it doesn't seem to know anything about game. What might be the problem?

This is text of for train dataset.

[
    {
        "input": "Karapulkatanus is pc game?",
        "output": "Karapulkatanus is an action-adventure survival game developed and published by MyHomeAbstractGames."
    },
    ...
]

this is my code for creating adapter

from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments
from peft import LoraConfig, get_peft_model, TaskType
from datasets import Dataset
access_token='hf_xxxx' #my token from huggingface
# Open and read the JSON file
with open('training_data.json', 'r') as file:
    data = json.load(file)

dataset = Dataset.from_list(data)

model_name = "meta-llama/Llama-3.2-1B-Instruct"

tokenizer = AutoTokenizer.from_pretrained(model_name,token=access_token)
tokenizer.pad_token = tokenizer.eos_token  
model = AutoModelForCausalLM.from_pretrained(model_name,token=access_token)


def preprocess_function(examples):
    inputs = tokenizer(
        examples["input"], max_length=512, truncation=True, padding="max_length"
    )
    outputs = tokenizer(
        examples["output"], max_length=512, truncation=True, padding="max_length"
    )
    inputs["labels"] = outputs["input_ids"]
    inputs["loss_weights"] = [2.0 if token == tokenizer.encode("Karapulkatanus")[0] else 1.0 for token in inputs["input_ids"]]
    return inputs

tokenized_dataset = dataset.map(preprocess_function, batched=True)


lora_config = LoraConfig(
    task_type=TaskType.CAUSAL_LM,
    inference_mode=False,
    r=8,
    lora_alpha=32,
    lora_dropout=0.05,
)


model = get_peft_model(model, lora_config)


training_args = TrainingArguments(
    output_dir="./llama_with_adapter",
    per_device_train_batch_size=1,
    num_train_epochs=3,
    save_steps=500,
    logging_dir="./logs",
    gradient_accumulation_steps=8,
    eval_strategy="no",
    learning_rate=5e-5,  
    weight_decay=0.01,
    logging_steps=10,
)


from transformers import Trainer

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized_dataset,
    tokenizer=tokenizer,
)

trainer.train()

model.save_pretrained("./llama_with_adapter")

script will make folder llama_with_adapter with files after that I will ask model about this game. And model don't know anything about this game.

from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
import os


base_model_path = "meta-llama/Llama-3.2-1B-Instruct" 
adapter_path = "./llama_with_adapter" 


offload_dir = "./offload"
os.makedirs(offload_dir, exist_ok=True)


tokenizer = AutoTokenizer.from_pretrained(base_model_path)

tokenizer.pad_token = tokenizer.eos_token

base_model = AutoModelForCausalLM.from_pretrained(
    base_model_path,
    device_map="cpu",         
    offload_folder=offload_dir 
)


model = PeftModel.from_pretrained(base_model, adapter_path)


model.eval()
example_input = "Karapulkatanus is pc game?"
input_ids = tokenizer(example_input, return_tensors="pt").input_ids.to(model.device)
outputs = model.generate(input_ids, max_length=500)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.