Edit model card

Model Card raicrits/Llama3_ChangeOfTopic

LoRa adapters for meta-llama/Meta-Llama-3-8B-Instruct obtained through a finetuning process (using LoRA technique) aimed at making the model capable of detecting a change of topic in a given text.

Model Description

The model resulting from the application of the adapters in this repository to the base model meta-llama/MMeta-Llama-3-8B-Instruct is optimized to perform the specific task of detecting a change of topic in a given text. Given a text the model answers with "1" in the case that it detects a change of topic and "0" otherwise. The training has been done using the chapters in the Youtube videos contained in the train split of the dataset raicrits/YouTube_RAI_dataset. Because of the finetuning process it is important to respect the prompt template in order to get good results.

Uses

The model can be used to check if in a given text occurs a change of topic or not.

Bias, Risks, and Limitations

As any other LLM it is possible that the model generates content which does not correspond to the reality as well as wrong, biased, offensive and inappropriate answers.

How to Get Started with the Model

Use the code below to get started with the model.

Usage: Use the code below to get started with the model.

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
from peft import PeftModel

model_id = "meta-llama/Meta-Llama-3-8B"
lora_id = "raicrits/Llama3_ChangeOfTopic"

quantization_config = BitsAndBytesConfig(
           load_in_8bit=True)

base_model = AutoModelForCausalLM.from_pretrained(model_id, 
                                            quantization_config=quantization_config, 
                                            device_map=device)
model = PeftModel.from_pretrained(base_model, lora_id)


tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"

terminators = [
   tokenizer.eos_token_id,
   tokenizer.convert_tokens_to_ids("<|eot_id|>")
]

messages = [
   {"role": "system", "content": "You are an AI assistant able to detect change of topics in given texts."},
   {"role": "user", "content": f"""Analyze the following text written in italian and in case you detect a change of topic answer just with "1", otherwise, if the topic remains the same within all the given text answer just "0". do not add further text.
   
Text: {'<text>'}"""
]

input_ids = tokenizer.apply_chat_template(
   messages,
   add_generation_prompt=True,
   return_tensors="pt").to(model.device)

with torch.no_grad():        
   outputs = model.generate(
       input_ids,
       max_new_tokens=1,
       eos_token_id=terminators,
       do_sample=True,
       temperature=0.2
       )
   response = outputs[0][input_ids.shape[-1]:]
print(tokenizer.decode(response, skip_special_tokens=False))

Training Details

Training Data

Chapters in the Youtube videos contained in the train split of the dataset raicrits/YouTube_RAI_dataset

Training Procedure

The fine-tuning procedure was done using LoRA approach.

Training setting:

  • train epochs=1,

  • learning_rate=2e-05

  • mixed precision training: int8

LoRA configuration:

  • r= 8

  • lora_alpha=16

  • target_modules=["q_proj", "k_proj", "v_proj", "o_proj"]

  • lora_dropout=0.1

  • bias="none"

  • task_type=CAUSAL_LM

Environmental Impact

Carbon emissions can be estimated using the Machine Learning Impact calculator presented in Lacoste et al. (2019).

  • Hardware Type: 1 NVIDIA A100/40Gb
  • Hours used: 45
  • Cloud Provider: Private Infrastructure
  • Carbon Emitted: 4.86kg eq. CO2

Model Card Authors

Stefano Scotta (stefano.scotta@rai.it)

Model Card Contact

stefano.scotta@rai.it

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference API
Inference API (serverless) does not yet support transformers, peft models for this pipeline type.

Dataset used to train raicrits/Llama3_ChangeOfTopic