shepherd-2-hf-int4 / README.md
philschmid's picture
philschmid HF staff
Update README.md
bb736bb
metadata
license: llama2

Fine-tuned Llama 2 on sheperd

from datasets import load_dataset 
from random import randrange
import torch
from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer


output_dir = "philschmid/shepherd-2-hf-int4"

# load base LLM model and tokenizer
model = AutoPeftModelForCausalLM.from_pretrained(
    output_dir,
    low_cpu_mem_usage=True,
    torch_dtype=torch.float16,
    load_in_4bit=True,
) 
tokenizer = AutoTokenizer.from_pretrained(output_dir)


# Load dataset from the hub and get a sample
dataset = load_dataset("philschmid/meta-shepherd-human-data", split="train")
sample = dataset[randrange(len(dataset))]

prompt = f"""### Question: {sample['question']}

### Answer:
{sample['answer']}

### Feedback:
"""

input_ids = tokenizer(prompt, return_tensors="pt", truncation=True).input_ids.cuda()
# with torch.inference_mode():
outputs = model.generate(input_ids=input_ids, max_new_tokens=100, do_sample=True, top_p=0.9,temperature=0.9)

print(prompt[:-14])
print("---"*35)
print(f"### Generated Feedback:\n{tokenizer.batch_decode(outputs.detach().cpu().numpy(), skip_special_tokens=True)[0][len(prompt):]}")
print(f"### Ground truth Feedback:\n{sample['feedback']}")

Training procedure

The following bitsandbytes quantization config was used during training:

  • load_in_8bit: False
  • load_in_4bit: True
  • llm_int8_threshold: 6.0
  • llm_int8_skip_modules: None
  • llm_int8_enable_fp32_cpu_offload: False
  • llm_int8_has_fp16_weight: False
  • bnb_4bit_quant_type: nf4
  • bnb_4bit_use_double_quant: True
  • bnb_4bit_compute_dtype: bfloat16

Framework versions

  • PEFT 0.4.0