--- language: - tr license: apache-2.0 library_name: peft base_model: vngrs-ai/Kumru-2B tags: - lora - turkish - rap - lyrics - text-generation - peft - chatml pipeline_tag: text-generation --- # Kumru-2B Turkish Rap LoRA — Sagopa Kajmer & Ceza Two LoRA adapters fine-tuned on **[vngrs-ai/Kumru-2B](https://huggingface.co/vngrs-ai/Kumru-2B)** (2B param, Turkish LLM) for generating rap lyrics in the styles of **Sagopa Kajmer** and **Ceza**. ## Models | | Sagopa Kajmer | Ceza | |---|---|---| | **Base Model** | vngrs-ai/Kumru-2B | vngrs-ai/Kumru-2B | | **LoRA Rank** | 16 | 8 | | **LoRA Alpha** | 32 | 16 | | **Dropout** | 0.05 | 0.3 | | **Target Modules** | q/k/v/o_proj, gate/up/down_proj | q/k/v/o_proj, gate/up/down_proj | | **Style** | Melankolik, meditativ, felsefi metaforlar | Hızlı flow, sert punchline, agresif enerji | | **Folder** | `SagoWeights/` | `CezaWeights/` | ## Training - **Method:** SFT with PEFT/LoRA - **Base Model:** [vngrs-ai/Kumru-2B](https://huggingface.co/vngrs-ai/Kumru-2B) — 2B parameter Turkish causal LM - **Data:** ~120 Sagopa Kajmer lyrics + ~100 Ceza lyrics, manually curated and cleaned - **Format:** ChatML (`<|im_start|>user` / `<|im_end|>`) - **Framework:** Transformers + PEFT 0.18.1 - **Hardware:** Single T4 GPU (Colab) ## Usage ```python import torch from transformers import AutoModelForCausalLM, AutoTokenizer from peft import PeftModel # Load base tokenizer = AutoTokenizer.from_pretrained("vngrs-ai/Kumru-2B") base_model = AutoModelForCausalLM.from_pretrained( "vngrs-ai/Kumru-2B", torch_dtype=torch.bfloat16, device_map="auto", ) # Load LoRA (pick one) model = PeftModel.from_pretrained(base_model, "SalihHub/Kumru_2B_TurkRap", subfolder="SagoWeights") # model = PeftModel.from_pretrained(base_model, "SalihHub/Kumru_2B_TurkRap", subfolder="CezaWeights") # Generate theme = "Gece yarısı sokakların sessizliğinde kaybolan bir adam" prompt = ( "<|im_start|>user\n" "Asagidaki temada Sagopa Kajmer tarzi bir rap verse'u yaz.\n" f"{theme}\n" "<|im_end|>\n" "<|im_start|>assistant\n" ) inputs = tokenizer(prompt, return_tensors="pt").to(model.device) output = model.generate( **inputs, max_new_tokens=512, temperature=0.8, top_p=0.9, repetition_penalty=1.3, do_sample=True, ) print(tokenizer.decode(output[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)) ``` ## Example Output **Theme:** *İki kişinin zaman algısının farklılığı* **Sagopa:** > Abi beat'ler dönerken stüdyo loş ışıkta, ritim beni vuruyor gece yarısı geceye doğru. Zamanı unuttum burada, hızlı akan bir nehrin üstünde sürükleniyoruz sanki... **Ceza:** > Aslında, bu flow yavaş akan nehir gibi – bir yanda rüzgarın nefesi, öbür yanda dalgaların öfkesi var ya… Zaman aynı akmıyor be! Sen zamanın kölesisin, bense ritmin kaptanı...