|
--- |
|
license: llama2 |
|
--- |
|
## Fine-tuned Llama 2 on sheperd |
|
|
|
```python |
|
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 |