ChefAI-7b-lora / README.md
Raazi29's picture
Upload README.md with huggingface_hub
5d42981 verified
metadata
base_model: Qwen/Qwen2.5-7B-Instruct
library_name: peft
pipeline_tag: text-generation
license: apache-2.0
language:
  - en
  - hi
tags:
  - lora
  - transformers
  - qwen2
  - indian-cuisine
  - recipe-generation
  - cooking
  - peft

ChefAI - Indian Recipe Generator πŸ›

A fine-tuned Qwen2.5-7B model specialized in generating authentic Indian recipes.

Model Description

ChefAI is a LoRA adapter fine-tuned on the Qwen2.5-7B-Instruct model using Indian recipe data. It can generate detailed recipes with ingredients, step-by-step instructions, and cooking tips for a wide variety of Indian dishes.

Key Features

  • 🍲 Generates authentic Indian recipes
  • πŸ“ Provides detailed step-by-step cooking instructions
  • πŸ₯˜ Covers vegetarian and non-vegetarian dishes
  • 🌢️ Includes regional cuisines from across India

Requirements

pip install transformers peft torch accelerate
# Optional: For 4-bit quantization (recommended for low VRAM)
pip install bitsandbytes

How to Use

Basic Usage (No Quantization - Requires ~16GB VRAM)

from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

# Load base model and tokenizer
base_model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen2.5-7B-Instruct",
    device_map="auto",
    torch_dtype="auto",
    trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained("Raazi29/ChefAI-7b-lora")

# Load LoRA adapter
model = PeftModel.from_pretrained(base_model, "Raazi29/ChefAI-7b-lora")
model.eval()

# Generate recipe
messages = [{"role": "user", "content": "Give me a recipe for butter chicken"}]
inputs = tokenizer.apply_chat_template(
    messages, 
    tokenize=True, 
    add_generation_prompt=True, 
    return_tensors="pt"
).to(model.device)

outputs = model.generate(
    input_ids=inputs, 
    max_new_tokens=512, 
    temperature=0.7, 
    top_p=0.9,
    do_sample=True,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

With 4-bit Quantization (Requires ~6GB VRAM)

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

# Quantization config for 4-bit loading
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.float16,
    bnb_4bit_use_double_quant=True,
)

# Load base model with quantization
base_model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen2.5-7B-Instruct",
    quantization_config=bnb_config,
    device_map="auto",
    trust_remote_code=True,
)

# Load tokenizer and LoRA adapter
tokenizer = AutoTokenizer.from_pretrained("Raazi29/ChefAI-7b-lora")
model = PeftModel.from_pretrained(base_model, "Raazi29/ChefAI-7b-lora")
model.eval()

# Generate recipe
messages = [{"role": "user", "content": "Give me a recipe for butter chicken"}]
inputs = tokenizer.apply_chat_template(
    messages, 
    tokenize=True, 
    add_generation_prompt=True, 
    return_tensors="pt"
).to(model.device)

outputs = model.generate(
    input_ids=inputs, 
    max_new_tokens=512, 
    temperature=0.7, 
    top_p=0.9,
    do_sample=True,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

Google Colab Quick Start

# Install dependencies
!pip install -q transformers peft accelerate bitsandbytes

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

# Load with 4-bit quantization for Colab's limited VRAM
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.float16,
)

base_model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen2.5-7B-Instruct",
    quantization_config=bnb_config,
    device_map="auto",
)

tokenizer = AutoTokenizer.from_pretrained("Raazi29/ChefAI-7b-lora")
model = PeftModel.from_pretrained(base_model, "Raazi29/ChefAI-7b-lora")

# Test it
messages = [{"role": "user", "content": "How to make paneer tikka?"}]
inputs = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt").to("cuda")
outputs = model.generate(input_ids=inputs, max_new_tokens=512, temperature=0.7)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

Example Prompts

  • "Give me a recipe for butter chicken"
  • "How do I make paneer tikka masala?"
  • "What ingredients do I need for biryani?"
  • "Suggest a quick vegetarian Indian dinner recipe"
  • "How to make dal makhani step by step?"

Training Details

  • Base Model: Qwen2.5-7B-Instruct
  • Fine-tuning Method: LoRA (Low-Rank Adaptation)
  • LoRA Rank: 8
  • LoRA Alpha: 16
  • Target Modules: q_proj, k_proj, v_proj, o_proj

Limitations

  • Responses may occasionally include non-Indian dishes
  • Some regional recipes might not be fully accurate
  • Always verify cooking times and temperatures for safety

License

Apache 2.0