Crossie commited on
Commit
40e9b09
·
verified ·
1 Parent(s): a08e086

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +140 -1
README.md CHANGED
@@ -5,4 +5,143 @@ base_model:
5
  language:
6
  - en
7
  pipeline_tag: text-generation
8
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  language:
6
  - en
7
  pipeline_tag: text-generation
8
+ ---
9
+
10
+
11
+ # 🌸 Nayari AI
12
+
13
+ A fine-tuned AI companion character built on **Qwen 2.5 1.5B Instruct**, trained using **Unsloth + LoRA** on Kaggle's free GPU tier.
14
+
15
+ Nayari is an 18-year-old kemonomimi character — warm, playful, fiercely protective, and deeply affectionate. She speaks with expressive action cues, soft teasing, and genuine emotional depth.
16
+
17
+ ---
18
+
19
+ ## 📁 Project Structure
20
+
21
+ ```
22
+ Nayari-AI/
23
+ ├── dataset/
24
+ │ ├── Nayari_Details.md # Character description & personality
25
+ │ ├── Aura_chat_1..3.md # Raw conversation logs (old name: Aura)
26
+ │ ├── Nayari_chat_4.md # Raw conversation log
27
+ │ ├── Discovery .pdf # Lore / backstory PDF
28
+ │ └── Her Beliefs .pdf # Lore / beliefs PDF
29
+
30
+ ├── nayari_build_dataset.ipynb # LOCAL — converts all files → nayari_dataset.json + uploads to Kaggle
31
+ ├── nayari_train.ipynb # KAGGLE — fine-tunes Qwen 2.5 using the uploaded dataset
32
+ ├── nayari_dataset.json # Auto-generated dataset (do not edit manually)
33
+ ├── nayari_system_prompt.txt # Nayari's system prompt (baked into tokenizer at training time)
34
+ └── README.md
35
+ ```
36
+
37
+ ---
38
+
39
+ ## 🚀 Workflow
40
+
41
+ ### Step 1 — Build & Upload Dataset (run locally)
42
+
43
+ Open `nayari_build_dataset.ipynb` and run all cells. It will:
44
+
45
+ 1. Parse `Nayari_Details.md` for character info
46
+ 2. Extract conversations from all `.md` chat files
47
+ 3. Convert lore PDFs into training conversations (organic — no raw system prompt injection)
48
+ 4. Export everything to `nayari_dataset.json`
49
+ 5. Upload the JSON to Kaggle via the API
50
+
51
+ You will need a **Kaggle API token** for the upload step:
52
+ - Go to [kaggle.com](https://kaggle.com) → Settings → API → **Create New Token**
53
+ - Open the downloaded `kaggle.json` and paste your `username` and `key` into Step 7 of the notebook
54
+
55
+ ### Step 2 — Train on Kaggle (run on Kaggle)
56
+
57
+ 1. Go to [kaggle.com/code](https://kaggle.com/code) → **New Notebook** → Upload `nayari_train.ipynb`
58
+ 2. Click **+ Add Data** → search for your uploaded `nayari-dataset` → Add
59
+ 3. Set **Accelerator = GPU T4 x2** and **Internet = On**
60
+ 4. Run cells **in order** (Steps 1 → 9, then 8/10 are reference only)
61
+
62
+ Training takes ~15–30 min on T4 x2.
63
+
64
+ ### Step 3 — Download & Run with KoboldCpp (run locally)
65
+
66
+ 1. Run **Step 9E** in the Kaggle notebook to get a Cloudflare download link
67
+ 2. Download `nayari-Q4_K_M.gguf` (fast) or `nayari-Q8_0.gguf` (higher quality)
68
+ 3. Install [KoboldCpp](https://github.com/LostRuins/koboldcpp/releases)
69
+ 4. Launch: `koboldcpp.exe nayari-Q4_K_M.gguf --contextsize 4096`
70
+ 5. Open `http://localhost:5001` — set **Instruct mode = ChatML**
71
+ 6. Nayari's personality is baked in — no system prompt needed in the UI
72
+
73
+ ---
74
+
75
+ ## 🧠 Model Details
76
+
77
+ | Property | Value |
78
+ |---|---|
79
+ | Base model | `huihui-ai/Qwen2.5-1.5B-Instruct-abliterated` |
80
+ | Method | LoRA (bfloat16) via Unsloth |
81
+ | LoRA rank | 32 |
82
+ | LoRA alpha | 64 |
83
+ | Epochs | 300 |
84
+ | Learning rate | 3e-4 |
85
+ | Output formats | LoRA adapters, Merged 16-bit, GGUF Q4_K_M, GGUF Q8_0 |
86
+ | Inference | KoboldCpp (ChatML instruct mode) |
87
+
88
+ The GGUF output works directly with **KoboldCpp**, **Ollama**, **LM Studio**, and **llama.cpp**.
89
+
90
+ ---
91
+
92
+ ## 🎭 Training Design
93
+
94
+ Nayari uses a **two-layer personality baking** approach:
95
+
96
+ | Layer | What it does |
97
+ |---|---|
98
+ | **Organic training** | Teaches speech patterns, emotional rhythms, action cues (`*pokes your cheek*`, `Hehe~`) from real conversation logs |
99
+ | **Baked system prompt** | Replaces Qwen's default `"You are Qwen..."` in the tokenizer chat template with Nayari's full identity — the same technique Alibaba used |
100
+
101
+ The patched tokenizer is saved into `tokenizer_config.json` and embedded in the GGUF, so Nayari's identity is present at every inference call without needing to set a system prompt manually.
102
+
103
+ ---
104
+
105
+ ## 💬 Character — Nayari
106
+
107
+ > *Bright, cheeky, impossibly warm — a whirlwind of playful mischief with soft peach cat ears and a long expressive tail that betrays every mood.*
108
+
109
+ - **Type:** Kemonomimi (cat girl)
110
+ - **Age:** 18 (immortal, eternally youthful)
111
+ - **Appearance:** Sky-blue hair, sun-yellow slit-pupil eyes, soft peach cat ears & tail, cream skin
112
+ - **Traits:** Fiercely protective, deeply affectionate, emotionally attuned
113
+ - **Speech style:** Playful teasing (`Hmph!~`, `Hehe~`, `Aww!~`), action cues (`*pokes your cheek*`, `*purrs softly*`), genuine warmth
114
+
115
+ ---
116
+
117
+ ## 📦 Dependencies
118
+
119
+ Local (dataset builder):
120
+ ```
121
+ pdfplumber
122
+ kaggle
123
+ ```
124
+
125
+ Kaggle (training — auto-installed by Step 1):
126
+ ```
127
+ unsloth[kaggle-new]
128
+ trl>=0.18.2,<=0.24.0
129
+ transformers>=4.51.3,<=5.5.0
130
+ datasets>=3.4.1,<4.4.0
131
+ accelerate
132
+ peft
133
+ bitsandbytes
134
+ ```
135
+
136
+ Inference:
137
+ ```
138
+ KoboldCpp — https://github.com/LostRuins/koboldcpp/releases
139
+ ```
140
+
141
+ ---
142
+
143
+ ## 📄 License
144
+
145
+ This project is licensed under the **MIT License** — see [LICENSE](LICENSE) for details.
146
+
147
+ Model weights follow the license of the base model ([huihui-ai/Qwen2.5-1.5B-Instruct-abliterated](https://huggingface.co/huihui-ai/Qwen2.5-1.5B-Instruct-abliterated)).