Summarization
PEFT
Safetensors
Ukrainian
dpo
SGaleshchuk's picture
Update README.md
b6ffd4b verified
metadata
library_name: peft
tags:
  - dpo
base_model: SGaleshchuk/Llama-2-13b-hf_uk_rank-32_ft
model-index:
  - name: Llama-2-13b-summarization_uk_dpo
    results: []
license: apache-2.0
datasets:
  - SGaleshchuk/XL_SUM_ukr_synthetic_hallucinations
  - csebuetnlp/xlsum
language:
  - uk
metrics:
  - rouge
pipeline_tag: summarization

Llama-2-13b-summarization_uk_dpo

This model is a fine-tuned version of SGaleshchuk/Llama-2-13b-hf_uk_rank-32_ft on summarization dataset.

Set-up step description

  • Fine-tune Llama-2 model on training data
  • Generate summaries using fine-tuned Llama-2 model on validation set
  • Corrupt generated summaries by adding information not given in input text
  • Align fine-tuned Llama-2 with golden summaries to choose and reject noisy synthetic text
  • Apply both fine-tuned and aligned versions on test set
  • Assess level of faithfulness hallucinations in generated texts using GPT-4 and Rouge-L, and human evaluation on a small subset

Intended uses & limitations

# tested with colab+A100 GPU
!pip install -q -U peft transformers==4.30
!pip install flash-attn --no-build-isolation
!pip install einops bitsandbytes accelerate
# unpatch flash attention
import torch
from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer

model_id = "SGaleshchuk/Llama-2-13b-summarization_uk_dpo"

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

tokenizer = AutoTokenizer.from_pretrained(model_id)

def prepare_instruction(text):


    prompt = """The article to summarize in maximum 100 words:{text}. Summary:""" # adapt to your needs

    return prompt.format(
        text=text,
    )
def summarization(text):
    instruction = prepare_instruction(text)
    input_ids = tokenizer(instruction, return_tensors="pt", truncation=True).input_ids.cuda()
    with torch.inference_mode():
      outputs = model.generate(
              input_ids=input_ids,
              max_new_tokens=128,
              do_sample=True,
              top_p=0.9,
              temperature=1e-2,
            )
      result = tokenizer.batch_decode(outputs.detach().cpu().numpy(), skip_special_tokens=True)[0]
      result = result[len(instruction) :]
      print(result)
      return result

text = """your text here to summarize"
result = summarization(text)

Training procedure

Training hyperparameters

The following hyperparameters were used during training:

  • learning_rate: 2e-06
  • train_batch_size: 1
  • eval_batch_size: 8
  • seed: 42
  • optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  • lr_scheduler_type: cosine
  • num_epochs: 10

Training results

Framework versions

  • PEFT 0.9.0
  • Transformers 4.38.2
  • Pytorch 2.2.1+cu121
  • Datasets 2.19.1
  • Tokenizers 0.15.2