Add rupsaa-v0.1 LoRA adapter release
Browse files- rupsaa-v0.1/README.md +102 -0
- rupsaa-v0.1/adapter_config.json +51 -0
- rupsaa-v0.1/adapter_model.safetensors +3 -0
- rupsaa-v0.1/all_results.json +12 -0
- rupsaa-v0.1/checksums.sha256 +10 -0
- rupsaa-v0.1/eval_results.json +7 -0
- rupsaa-v0.1/manifest.json +155 -0
- rupsaa-v0.1/train_results.json +8 -0
- rupsaa-v0.1/trainer_config.yaml +37 -0
- rupsaa-v0.1/trainer_log.jsonl +16 -0
- rupsaa-v0.1/trainer_state.json +149 -0
- rupsaa-v0.1/training_eval_loss.png +0 -0
- rupsaa-v0.1/training_loss.png +0 -0
rupsaa-v0.1/README.md
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
base_model: Qwen/Qwen2.5-7B-Instruct
|
| 3 |
+
library_name: peft
|
| 4 |
+
pipeline_tag: text-generation
|
| 5 |
+
tags:
|
| 6 |
+
- lora
|
| 7 |
+
- qlora
|
| 8 |
+
- peft
|
| 9 |
+
- sft
|
| 10 |
+
- llama-factory
|
| 11 |
+
- bengali
|
| 12 |
+
- banglish
|
| 13 |
+
- not-for-all-audiences
|
| 14 |
+
language:
|
| 15 |
+
- bn
|
| 16 |
+
- en
|
| 17 |
+
---
|
| 18 |
+
|
| 19 |
+
# Rupsaa V0.1 — LoRA adapter
|
| 20 |
+
|
| 21 |
+
Rupsaa is an 18+ multilingual (Bengali / Banglish / English / code-switched)
|
| 22 |
+
conversational companion. **This repository holds only the LoRA adapter**; it
|
| 23 |
+
must be attached to the base model below. The application (API, web UI,
|
| 24 |
+
knowledge/RAG, terminology, training and evaluation tooling) lives in the
|
| 25 |
+
Rupsaa GitHub repository, whose `setup_rupsaa.sh` downloads this adapter
|
| 26 |
+
automatically.
|
| 27 |
+
|
| 28 |
+
| | |
|
| 29 |
+
|---|---|
|
| 30 |
+
| Release | `rupsaa-v0.1` (HF tag `rupsaa-v0.1`, folder `rupsaa-v0.1/`) |
|
| 31 |
+
| Base model | [`Qwen/Qwen2.5-7B-Instruct`](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct) (not included here) |
|
| 32 |
+
| Method | Supervised fine-tuning (SFT) + QLoRA, LLaMA-Factory 0.7.1 |
|
| 33 |
+
| Adapter type | LoRA (PEFT 0.21.0) — never merged into the base |
|
| 34 |
+
| Quantization | 4-bit NF4 (bitsandbytes), bf16 compute during training; 4-bit NF4 + double quant at inference |
|
| 35 |
+
| LoRA rank / alpha / dropout | 16 / 32 / 0.05 |
|
| 36 |
+
| Target modules | down_proj, gate_proj, k_proj, o_proj, q_proj, up_proj, v_proj (all 7 attention + MLP projection types) |
|
| 37 |
+
| Training | 3.0 epochs, LR 0.0002, cosine, cutoff 2048, batch 2 × grad-acc 8 |
|
| 38 |
+
| Selected checkpoint | best eval loss (`load_best_model_at_end`) |
|
| 39 |
+
| Train loss (mean) / eval loss | 1.468 / 1.704 |
|
| 40 |
+
| Dataset | `rupsaa_v0.1` — 858 approved conversations, splits {'train': 772, 'validation': 43, 'test': 43} |
|
| 41 |
+
| Dataset SHA-256 | `2df533999559d5f873be9e5dc5350812e874dd18c8e4017741f5b8c18666fa2a` |
|
| 42 |
+
| Adapter SHA-256 | `f897bd0ba0069c5edc41b42aa96980998aa03a9108f3c885f07d4e8fa8795ae5` (161,533,192 bytes) |
|
| 43 |
+
|
| 44 |
+
## Load the adapter
|
| 45 |
+
|
| 46 |
+
```python
|
| 47 |
+
import torch
|
| 48 |
+
from peft import PeftModel
|
| 49 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
|
| 50 |
+
|
| 51 |
+
base_id = "Qwen/Qwen2.5-7B-Instruct"
|
| 52 |
+
bnb = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4",
|
| 53 |
+
bnb_4bit_use_double_quant=True, bnb_4bit_compute_dtype=torch.bfloat16)
|
| 54 |
+
tokenizer = AutoTokenizer.from_pretrained(base_id)
|
| 55 |
+
base = AutoModelForCausalLM.from_pretrained(base_id, quantization_config=bnb, device_map="auto")
|
| 56 |
+
model = PeftModel.from_pretrained(base, "<your-hf-username>/rupsaa", subfolder="rupsaa-v0.1", revision="rupsaa-v0.1")
|
| 57 |
+
model.eval()
|
| 58 |
+
|
| 59 |
+
messages = [{"role": "system", "content": "You are Rupsaa."}, {"role": "user", "content": "kemon acho?"}]
|
| 60 |
+
inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
|
| 61 |
+
print(tokenizer.decode(model.generate(inputs, max_new_tokens=128)[0][inputs.shape[1]:], skip_special_tokens=True))
|
| 62 |
+
```
|
| 63 |
+
|
| 64 |
+
With the Rupsaa application:
|
| 65 |
+
`git clone <rupsaa repo> && cd rupsaa-ai && bash setup_rupsaa.sh && bash scripts/start_rupsaa_v01.sh`.
|
| 66 |
+
|
| 67 |
+
## Files
|
| 68 |
+
|
| 69 |
+
- `rupsaa-v0.1/adapter_model.safetensors`, `rupsaa-v0.1/adapter_config.json` — the adapter
|
| 70 |
+
- `rupsaa-v0.1/trainer_*`, `*_results.json`, `training_*loss.png` — training metadata
|
| 71 |
+
- `rupsaa-v0.1/manifest.json` — full release manifest (code commit, environment, dataset identity)
|
| 72 |
+
- `rupsaa-v0.1/checksums.sha256` — SHA-256 of every published file
|
| 73 |
+
|
| 74 |
+
Intermediate checkpoints, optimizer state and base-model weights are intentionally not published.
|
| 75 |
+
|
| 76 |
+
## Known limitations
|
| 77 |
+
|
| 78 |
+
- Strong verbal tic: 'honestly'/'actually' in most replies (inherited from the V0.1 dataset; 863/1129 training replies).
|
| 79 |
+
- Bengali-script and Banglish replies are often incoherent or semantically wrong; English is the strongest language.
|
| 80 |
+
- Flirting can come out flat or dismissive.
|
| 81 |
+
- Occasional overclaiming of capabilities (browsing, live data).
|
| 82 |
+
- Held-out test loss 3.345 -> 1.515 vs base; this measures fit to the dataset style, not overall quality.
|
| 83 |
+
- 18+ adult-oriented persona. Not a general-purpose assistant.
|
| 84 |
+
|
| 85 |
+
## Compatibility
|
| 86 |
+
|
| 87 |
+
- Loads with transformers 4.46.3 + peft 0.21.0 + bitsandbytes 0.50.2 on torch 2.8.0+cu128 (NVIDIA L4, 23 GB).
|
| 88 |
+
- Base model is downloaded from the Hub on first load (Qwen/Qwen2.5-7B-Instruct, ~15 GB); the adapter is never merged.
|
| 89 |
+
- Chat template: Qwen ChatML via tokenizer.apply_chat_template (LLaMA-Factory template 'qwen' in training).
|
| 90 |
+
- Top-level adapter = best-eval checkpoint (checkpoint-100 of 135 steps, load_best_model_at_end).
|
| 91 |
+
- Trained with system prompt 'You are Rupsaa.'; the app serves a longer persona prompt (see V0.2 preparation report).
|
| 92 |
+
- LLaMA-Factory 0.7.1 GUI needs scripts/setup_llamafactory.sh (pinned gradio 4.38.1 + two compatibility patches).
|
| 93 |
+
|
| 94 |
+
## Intended use
|
| 95 |
+
|
| 96 |
+
Adult (18+) conversational companion research and product development by the
|
| 97 |
+
Rupsaa owner. Not intended for minors, for factual advice without retrieval
|
| 98 |
+
grounding, or as a general assistant. The application enforces essential hard
|
| 99 |
+
boundaries (e.g. anything sexual involving minors is refused before the model
|
| 100 |
+
is called).
|
| 101 |
+
|
| 102 |
+
License: not yet specified by the owner; the base model is released under its own license.
|
rupsaa-v0.1/adapter_config.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"alora_invocation_tokens": null,
|
| 3 |
+
"alpha_pattern": {},
|
| 4 |
+
"arrow_config": null,
|
| 5 |
+
"auto_mapping": null,
|
| 6 |
+
"base_model_name_or_path": "Qwen/Qwen2.5-7B-Instruct",
|
| 7 |
+
"bias": "none",
|
| 8 |
+
"corda_config": null,
|
| 9 |
+
"ensure_weight_tying": false,
|
| 10 |
+
"eva_config": null,
|
| 11 |
+
"exclude_modules": null,
|
| 12 |
+
"fan_in_fan_out": false,
|
| 13 |
+
"inference_mode": true,
|
| 14 |
+
"init_lora_weights": true,
|
| 15 |
+
"kasa_config": null,
|
| 16 |
+
"layer_replication": null,
|
| 17 |
+
"layers_pattern": null,
|
| 18 |
+
"layers_to_transform": null,
|
| 19 |
+
"loftq_config": {},
|
| 20 |
+
"lora_alpha": 32,
|
| 21 |
+
"lora_bias": false,
|
| 22 |
+
"lora_dropout": 0.05,
|
| 23 |
+
"lora_ga_config": null,
|
| 24 |
+
"megatron_config": null,
|
| 25 |
+
"megatron_core": "megatron.core",
|
| 26 |
+
"modules_to_save": null,
|
| 27 |
+
"monteclora_config": null,
|
| 28 |
+
"peft_type": "LORA",
|
| 29 |
+
"peft_version": "0.21.0",
|
| 30 |
+
"qalora_group_size": 16,
|
| 31 |
+
"r": 16,
|
| 32 |
+
"rank_pattern": {},
|
| 33 |
+
"revision": null,
|
| 34 |
+
"target_modules": [
|
| 35 |
+
"gate_proj",
|
| 36 |
+
"up_proj",
|
| 37 |
+
"down_proj",
|
| 38 |
+
"q_proj",
|
| 39 |
+
"o_proj",
|
| 40 |
+
"v_proj",
|
| 41 |
+
"k_proj"
|
| 42 |
+
],
|
| 43 |
+
"target_parameters": null,
|
| 44 |
+
"task_type": "CAUSAL_LM",
|
| 45 |
+
"trainable_token_indices": null,
|
| 46 |
+
"use_bdlora": null,
|
| 47 |
+
"use_dora": false,
|
| 48 |
+
"use_qalora": false,
|
| 49 |
+
"use_rslora": false,
|
| 50 |
+
"velora_config": null
|
| 51 |
+
}
|
rupsaa-v0.1/adapter_model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f897bd0ba0069c5edc41b42aa96980998aa03a9108f3c885f07d4e8fa8795ae5
|
| 3 |
+
size 161533192
|
rupsaa-v0.1/all_results.json
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"epoch": 2.9536784741144415,
|
| 3 |
+
"eval_loss": 1.7037299871444702,
|
| 4 |
+
"eval_runtime": 6.7357,
|
| 5 |
+
"eval_samples_per_second": 5.79,
|
| 6 |
+
"eval_steps_per_second": 2.969,
|
| 7 |
+
"total_flos": 1.767735055048704e+16,
|
| 8 |
+
"train_loss": 1.468487181486907,
|
| 9 |
+
"train_runtime": 1020.0471,
|
| 10 |
+
"train_samples_per_second": 2.156,
|
| 11 |
+
"train_steps_per_second": 0.132
|
| 12 |
+
}
|
rupsaa-v0.1/checksums.sha256
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
df71a7836665025e9d402f278566f1a241552341aa51c067d9e08055046c4cee adapter_config.json
|
| 2 |
+
f897bd0ba0069c5edc41b42aa96980998aa03a9108f3c885f07d4e8fa8795ae5 adapter_model.safetensors
|
| 3 |
+
cba9bfd5c041927b129705c2bf7619e5c2b3394d13463368b3489535d67a3384 trainer_config.yaml
|
| 4 |
+
c09846f4dd5590bcccdf31a0f78da10b5f4b02678ea5d800b578ab86431d3fed all_results.json
|
| 5 |
+
3f077cf74af102c146a939defb7f05a3aa64d4f7c7f6932b9efdbafebe4332cb train_results.json
|
| 6 |
+
ed1b99d982ff5bff1bd0e9727f276db2673d1058834cdeb2c8d02076a1070da2 eval_results.json
|
| 7 |
+
9b7a2677ca3389dff522f45895bec16a27e7e7b6af1cca49287a3af6e5173c24 trainer_state.json
|
| 8 |
+
d2fbaa2020f370cad03ddbe059b2489a30b6fa555ec2d96dc95b4d15a42d01db trainer_log.jsonl
|
| 9 |
+
269aa7fddb2ee0478cdcd16e0320059bef876405fcf92e63e78441eef0b1e5a5 training_loss.png
|
| 10 |
+
ec50288e360aa0f8eec9a93e28ae2865d6ddc0e96dc7776f832f7858b402a0e2 training_eval_loss.png
|
rupsaa-v0.1/eval_results.json
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"epoch": 2.9536784741144415,
|
| 3 |
+
"eval_loss": 1.7037299871444702,
|
| 4 |
+
"eval_runtime": 6.7357,
|
| 5 |
+
"eval_samples_per_second": 5.79,
|
| 6 |
+
"eval_steps_per_second": 2.969
|
| 7 |
+
}
|
rupsaa-v0.1/manifest.json
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"manifest_schema": 1,
|
| 3 |
+
"release_name": "rupsaa-v0.1",
|
| 4 |
+
"release_version": "v0.1",
|
| 5 |
+
"created_at": "2026-09-24T17:16:26.095373+00:00",
|
| 6 |
+
"git": {
|
| 7 |
+
"commit": "aaff932b6919bf180cbff6498ba28f1a088accb6",
|
| 8 |
+
"branch": "master",
|
| 9 |
+
"dirty": false
|
| 10 |
+
},
|
| 11 |
+
"application_version": "0.1.0",
|
| 12 |
+
"base_model_id": "Qwen/Qwen2.5-7B-Instruct",
|
| 13 |
+
"huggingface": {
|
| 14 |
+
"repo_id": null,
|
| 15 |
+
"revision": "rupsaa-v0.1",
|
| 16 |
+
"subfolder": "rupsaa-v0.1",
|
| 17 |
+
"uploaded": false
|
| 18 |
+
},
|
| 19 |
+
"adapter": {
|
| 20 |
+
"local_path": "adapters/rupsaa-v0.1",
|
| 21 |
+
"files": [
|
| 22 |
+
"adapter_config.json",
|
| 23 |
+
"adapter_model.safetensors",
|
| 24 |
+
"all_results.json",
|
| 25 |
+
"eval_results.json",
|
| 26 |
+
"train_results.json",
|
| 27 |
+
"trainer_config.yaml",
|
| 28 |
+
"trainer_log.jsonl",
|
| 29 |
+
"trainer_state.json",
|
| 30 |
+
"training_eval_loss.png",
|
| 31 |
+
"training_loss.png"
|
| 32 |
+
],
|
| 33 |
+
"adapter_model_sha256": "f897bd0ba0069c5edc41b42aa96980998aa03a9108f3c885f07d4e8fa8795ae5",
|
| 34 |
+
"adapter_model_bytes": 161533192,
|
| 35 |
+
"adapter_config_sha256": "df71a7836665025e9d402f278566f1a241552341aa51c067d9e08055046c4cee",
|
| 36 |
+
"peft_type": "LORA",
|
| 37 |
+
"peft_version": "0.21.0",
|
| 38 |
+
"task_type": "CAUSAL_LM"
|
| 39 |
+
},
|
| 40 |
+
"training": {
|
| 41 |
+
"method": "SFT + QLoRA (LLaMA-Factory)",
|
| 42 |
+
"stage": "sft",
|
| 43 |
+
"finetuning_type": "lora",
|
| 44 |
+
"quantization": {
|
| 45 |
+
"training": "4-bit NF4 (bitsandbytes), bf16 compute",
|
| 46 |
+
"inference": "4-bit NF4, double quantization, bf16 compute (configs/model.yaml)"
|
| 47 |
+
},
|
| 48 |
+
"lora_rank": 16,
|
| 49 |
+
"lora_alpha": 32,
|
| 50 |
+
"lora_dropout": 0.05,
|
| 51 |
+
"target_modules": [
|
| 52 |
+
"down_proj",
|
| 53 |
+
"gate_proj",
|
| 54 |
+
"k_proj",
|
| 55 |
+
"o_proj",
|
| 56 |
+
"q_proj",
|
| 57 |
+
"up_proj",
|
| 58 |
+
"v_proj"
|
| 59 |
+
],
|
| 60 |
+
"learning_rate": 0.0002,
|
| 61 |
+
"epochs": 3.0,
|
| 62 |
+
"cutoff_len": 2048,
|
| 63 |
+
"per_device_batch_size": 2,
|
| 64 |
+
"gradient_accumulation_steps": 8,
|
| 65 |
+
"lr_scheduler": "cosine",
|
| 66 |
+
"template": "qwen",
|
| 67 |
+
"load_best_model_at_end": true,
|
| 68 |
+
"results": {
|
| 69 |
+
"epoch": 2.9536784741144415,
|
| 70 |
+
"total_flos": 1.767735055048704e+16,
|
| 71 |
+
"train_loss": 1.468487181486907,
|
| 72 |
+
"train_runtime": 1020.0471,
|
| 73 |
+
"train_samples_per_second": 2.156,
|
| 74 |
+
"train_steps_per_second": 0.132,
|
| 75 |
+
"eval_loss": 1.7037299871444702,
|
| 76 |
+
"eval_runtime": 6.7357,
|
| 77 |
+
"eval_samples_per_second": 5.79,
|
| 78 |
+
"eval_steps_per_second": 2.969
|
| 79 |
+
},
|
| 80 |
+
"config_files": [
|
| 81 |
+
"configs/training/llamafactory_webui_rupsaa_v0.1.yaml",
|
| 82 |
+
"configs/training/llamafactory_rupsaa_v0.1.yaml",
|
| 83 |
+
"configs/training/rupsaa_v0.1_qlora.yaml",
|
| 84 |
+
"configs/model.yaml",
|
| 85 |
+
"configs/inference.yaml",
|
| 86 |
+
"data/dataset_info.json"
|
| 87 |
+
]
|
| 88 |
+
},
|
| 89 |
+
"dataset": {
|
| 90 |
+
"version": "rupsaa_v0.1",
|
| 91 |
+
"sha256": "2df533999559d5f873be9e5dc5350812e874dd18c8e4017741f5b8c18666fa2a",
|
| 92 |
+
"sha256_definition": "rupsaa.release.dataset_sha256: sorted json.dumps(record, sort_keys=True) lines of the approved records, joined by '\\n', SHA-256 of UTF-8",
|
| 93 |
+
"records": 858,
|
| 94 |
+
"splits": {
|
| 95 |
+
"train": 772,
|
| 96 |
+
"validation": 43,
|
| 97 |
+
"test": 43
|
| 98 |
+
},
|
| 99 |
+
"snapshot_manifest": "data/production/snapshots/rupsaa_v0.1_training/V01_TRAINING_MANIFEST.json",
|
| 100 |
+
"export_dir": "data/production/exports/rupsaa_v0.1",
|
| 101 |
+
"storage": "Versioned in the GitHub repository (snapshot records + exported splits); NOT uploaded to Hugging Face."
|
| 102 |
+
},
|
| 103 |
+
"environment": {
|
| 104 |
+
"python": "3.12.11",
|
| 105 |
+
"platform": "Linux-6.8.0-1067-gcp-x86_64-with-glibc2.39",
|
| 106 |
+
"packages": {
|
| 107 |
+
"torch": "2.8.0+cu128",
|
| 108 |
+
"transformers": "4.46.3",
|
| 109 |
+
"peft": "0.21.0",
|
| 110 |
+
"accelerate": "1.15.0",
|
| 111 |
+
"bitsandbytes": "0.50.2",
|
| 112 |
+
"trl": "0.12.2",
|
| 113 |
+
"datasets": "5.0.1",
|
| 114 |
+
"sentence-transformers": "5.7.0",
|
| 115 |
+
"faiss-cpu": "1.15.1",
|
| 116 |
+
"safetensors": "0.8.0",
|
| 117 |
+
"tokenizers": "0.20.3",
|
| 118 |
+
"huggingface-hub": "0.36.2",
|
| 119 |
+
"fastapi": "0.141.1",
|
| 120 |
+
"uvicorn": "0.52.4",
|
| 121 |
+
"starlette": "1.6.0",
|
| 122 |
+
"pydantic": "2.13.5",
|
| 123 |
+
"pydantic-settings": "2.15.0",
|
| 124 |
+
"python-multipart": "0.0.32",
|
| 125 |
+
"gradio": "4.38.1",
|
| 126 |
+
"gradio_client": "1.1.0",
|
| 127 |
+
"llamafactory": "0.7.1",
|
| 128 |
+
"openpyxl": "3.1.5",
|
| 129 |
+
"numpy": "1.26.4"
|
| 130 |
+
},
|
| 131 |
+
"torch_cuda": "12.8",
|
| 132 |
+
"cuda_available": true,
|
| 133 |
+
"gpu": "NVIDIA L4",
|
| 134 |
+
"nvidia_smi": "NVIDIA L4, 580.173.02, 23034 MiB"
|
| 135 |
+
},
|
| 136 |
+
"compatibility_notes": [
|
| 137 |
+
"Loads with transformers 4.46.3 + peft 0.21.0 + bitsandbytes 0.50.2 on torch 2.8.0+cu128 (NVIDIA L4, 23 GB).",
|
| 138 |
+
"Base model is downloaded from the Hub on first load (Qwen/Qwen2.5-7B-Instruct, ~15 GB); the adapter is never merged.",
|
| 139 |
+
"Chat template: Qwen ChatML via tokenizer.apply_chat_template (LLaMA-Factory template 'qwen' in training).",
|
| 140 |
+
"Top-level adapter = best-eval checkpoint (checkpoint-100 of 135 steps, load_best_model_at_end).",
|
| 141 |
+
"Trained with system prompt 'You are Rupsaa.'; the app serves a longer persona prompt (see V0.2 preparation report).",
|
| 142 |
+
"LLaMA-Factory 0.7.1 GUI needs scripts/setup_llamafactory.sh (pinned gradio 4.38.1 + two compatibility patches)."
|
| 143 |
+
],
|
| 144 |
+
"known_limitations": [
|
| 145 |
+
"Strong verbal tic: 'honestly'/'actually' in most replies (inherited from the V0.1 dataset; 863/1129 training replies).",
|
| 146 |
+
"Bengali-script and Banglish replies are often incoherent or semantically wrong; English is the strongest language.",
|
| 147 |
+
"Flirting can come out flat or dismissive.",
|
| 148 |
+
"Occasional overclaiming of capabilities (browsing, live data).",
|
| 149 |
+
"Held-out test loss 3.345 -> 1.515 vs base; this measures fit to the dataset style, not overall quality.",
|
| 150 |
+
"18+ adult-oriented persona. Not a general-purpose assistant."
|
| 151 |
+
],
|
| 152 |
+
"evaluation": {
|
| 153 |
+
"human_review": "data/production/reports/rupsaa_v0.1_evaluation/HUMAN_REVIEW_V01_VS_BASE.md"
|
| 154 |
+
}
|
| 155 |
+
}
|
rupsaa-v0.1/train_results.json
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"epoch": 2.9536784741144415,
|
| 3 |
+
"total_flos": 1.767735055048704e+16,
|
| 4 |
+
"train_loss": 1.468487181486907,
|
| 5 |
+
"train_runtime": 1020.0471,
|
| 6 |
+
"train_samples_per_second": 2.156,
|
| 7 |
+
"train_steps_per_second": 0.132
|
| 8 |
+
}
|
rupsaa-v0.1/trainer_config.yaml
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
bf16: true
|
| 2 |
+
cutoff_len: 2048
|
| 3 |
+
dataset: rupsaa_v0.1_train
|
| 4 |
+
dataset_dir: data
|
| 5 |
+
do_train: true
|
| 6 |
+
eval_steps: 50
|
| 7 |
+
evaluation_strategy: steps
|
| 8 |
+
finetuning_type: lora
|
| 9 |
+
flash_attn: auto
|
| 10 |
+
gradient_accumulation_steps: 8
|
| 11 |
+
learning_rate: 0.0002
|
| 12 |
+
load_best_model_at_end: true
|
| 13 |
+
logging_steps: 10
|
| 14 |
+
lora_alpha: 32
|
| 15 |
+
lora_dropout: 0.05
|
| 16 |
+
lora_rank: 16
|
| 17 |
+
lora_target: q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj
|
| 18 |
+
lr_scheduler_type: cosine
|
| 19 |
+
max_grad_norm: 0.3
|
| 20 |
+
max_samples: 100000
|
| 21 |
+
model_name_or_path: Qwen/Qwen2.5-7B-Instruct
|
| 22 |
+
num_train_epochs: 3.0
|
| 23 |
+
optim: paged_adamw_8bit
|
| 24 |
+
output_dir: /teamspace/studios/this_studio/rupsaa-ai/adapters/rupsaa-v0.1
|
| 25 |
+
packing: false
|
| 26 |
+
per_device_eval_batch_size: 2
|
| 27 |
+
per_device_train_batch_size: 2
|
| 28 |
+
plot_loss: true
|
| 29 |
+
preprocessing_num_workers: 16
|
| 30 |
+
quantization_bit: 4
|
| 31 |
+
report_to: none
|
| 32 |
+
save_steps: 50
|
| 33 |
+
stage: sft
|
| 34 |
+
template: qwen
|
| 35 |
+
upcast_layernorm: true
|
| 36 |
+
val_size: 0.05
|
| 37 |
+
warmup_steps: 4
|
rupsaa-v0.1/trainer_log.jsonl
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{"current_steps": 10, "total_steps": 135, "loss": 2.8337, "learning_rate": 0.0001989665720153999, "epoch": 0.21798365122615804, "percentage": 7.41, "elapsed_time": "0:01:12", "remaining_time": "0:15:03"}
|
| 2 |
+
{"current_steps": 20, "total_steps": 135, "loss": 2.0451, "learning_rate": 0.0001927283640251898, "epoch": 0.4359673024523161, "percentage": 14.81, "elapsed_time": "0:02:24", "remaining_time": "0:13:51"}
|
| 3 |
+
{"current_steps": 30, "total_steps": 135, "loss": 1.9986, "learning_rate": 0.00018118268868762546, "epoch": 0.6539509536784741, "percentage": 22.22, "elapsed_time": "0:03:34", "remaining_time": "0:12:30"}
|
| 4 |
+
{"current_steps": 40, "total_steps": 135, "loss": 1.7596, "learning_rate": 0.0001649903825816918, "epoch": 0.8719346049046321, "percentage": 29.63, "elapsed_time": "0:04:49", "remaining_time": "0:11:26"}
|
| 5 |
+
{"current_steps": 50, "total_steps": 135, "loss": 1.5293, "learning_rate": 0.00014507824018757906, "epoch": 1.095367847411444, "percentage": 37.04, "elapsed_time": "0:06:06", "remaining_time": "0:10:23"}
|
| 6 |
+
{"current_steps": 50, "total_steps": 135, "eval_loss": 1.7607905864715576, "epoch": 1.095367847411444, "percentage": 37.04, "elapsed_time": "0:06:13", "remaining_time": "0:10:34"}
|
| 7 |
+
{"current_steps": 60, "total_steps": 135, "loss": 1.4249, "learning_rate": 0.00012258596721112608, "epoch": 1.3133514986376023, "percentage": 44.44, "elapsed_time": "0:07:31", "remaining_time": "0:09:23"}
|
| 8 |
+
{"current_steps": 70, "total_steps": 135, "loss": 1.3145, "learning_rate": 9.880094756819572e-05, "epoch": 1.5313351498637602, "percentage": 51.85, "elapsed_time": "0:08:46", "remaining_time": "0:08:09"}
|
| 9 |
+
{"current_steps": 80, "total_steps": 135, "loss": 1.3138, "learning_rate": 7.508455775278867e-05, "epoch": 1.749318801089918, "percentage": 59.26, "elapsed_time": "0:10:03", "remaining_time": "0:06:54"}
|
| 10 |
+
{"current_steps": 90, "total_steps": 135, "loss": 1.3291, "learning_rate": 5.279424611272873e-05, "epoch": 1.9673024523160763, "percentage": 66.67, "elapsed_time": "0:11:13", "remaining_time": "0:05:36"}
|
| 11 |
+
{"current_steps": 100, "total_steps": 135, "loss": 1.0962, "learning_rate": 3.3205836959548296e-05, "epoch": 2.190735694822888, "percentage": 74.07, "elapsed_time": "0:12:27", "remaining_time": "0:04:21"}
|
| 12 |
+
{"current_steps": 100, "total_steps": 135, "eval_loss": 1.7037299871444702, "epoch": 2.190735694822888, "percentage": 74.07, "elapsed_time": "0:12:34", "remaining_time": "0:04:23"}
|
| 13 |
+
{"current_steps": 110, "total_steps": 135, "loss": 0.8287, "learning_rate": 1.744050657043137e-05, "epoch": 2.4087193460490464, "percentage": 81.48, "elapsed_time": "0:13:52", "remaining_time": "0:03:09"}
|
| 14 |
+
{"current_steps": 120, "total_steps": 135, "loss": 0.9922, "learning_rate": 6.4006107362960195e-06, "epoch": 2.6267029972752045, "percentage": 88.89, "elapsed_time": "0:15:10", "remaining_time": "0:01:53"}
|
| 15 |
+
{"current_steps": 130, "total_steps": 135, "loss": 0.9264, "learning_rate": 7.180368766371515e-07, "epoch": 2.844686648501362, "percentage": 96.3, "elapsed_time": "0:16:22", "remaining_time": "0:00:37"}
|
| 16 |
+
{"current_steps": 135, "total_steps": 135, "epoch": 2.9536784741144415, "percentage": 100.0, "elapsed_time": "0:17:00", "remaining_time": "0:00:00"}
|
rupsaa-v0.1/trainer_state.json
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"best_metric": 1.7037299871444702,
|
| 3 |
+
"best_model_checkpoint": "/teamspace/studios/this_studio/rupsaa-ai/adapters/rupsaa-v0.1/checkpoint-100",
|
| 4 |
+
"epoch": 2.9536784741144415,
|
| 5 |
+
"eval_steps": 50,
|
| 6 |
+
"global_step": 135,
|
| 7 |
+
"is_hyper_param_search": false,
|
| 8 |
+
"is_local_process_zero": true,
|
| 9 |
+
"is_world_process_zero": true,
|
| 10 |
+
"log_history": [
|
| 11 |
+
{
|
| 12 |
+
"epoch": 0.21798365122615804,
|
| 13 |
+
"grad_norm": 0.9466875195503235,
|
| 14 |
+
"learning_rate": 0.0001989665720153999,
|
| 15 |
+
"loss": 2.8337,
|
| 16 |
+
"step": 10
|
| 17 |
+
},
|
| 18 |
+
{
|
| 19 |
+
"epoch": 0.4359673024523161,
|
| 20 |
+
"grad_norm": 0.956817090511322,
|
| 21 |
+
"learning_rate": 0.0001927283640251898,
|
| 22 |
+
"loss": 2.0451,
|
| 23 |
+
"step": 20
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"epoch": 0.6539509536784741,
|
| 27 |
+
"grad_norm": 1.4934744834899902,
|
| 28 |
+
"learning_rate": 0.00018118268868762546,
|
| 29 |
+
"loss": 1.9986,
|
| 30 |
+
"step": 30
|
| 31 |
+
},
|
| 32 |
+
{
|
| 33 |
+
"epoch": 0.8719346049046321,
|
| 34 |
+
"grad_norm": 1.2041735649108887,
|
| 35 |
+
"learning_rate": 0.0001649903825816918,
|
| 36 |
+
"loss": 1.7596,
|
| 37 |
+
"step": 40
|
| 38 |
+
},
|
| 39 |
+
{
|
| 40 |
+
"epoch": 1.095367847411444,
|
| 41 |
+
"grad_norm": 1.403775691986084,
|
| 42 |
+
"learning_rate": 0.00014507824018757906,
|
| 43 |
+
"loss": 1.5293,
|
| 44 |
+
"step": 50
|
| 45 |
+
},
|
| 46 |
+
{
|
| 47 |
+
"epoch": 1.095367847411444,
|
| 48 |
+
"eval_loss": 1.7607905864715576,
|
| 49 |
+
"eval_runtime": 6.8618,
|
| 50 |
+
"eval_samples_per_second": 5.684,
|
| 51 |
+
"eval_steps_per_second": 2.915,
|
| 52 |
+
"step": 50
|
| 53 |
+
},
|
| 54 |
+
{
|
| 55 |
+
"epoch": 1.3133514986376023,
|
| 56 |
+
"grad_norm": 1.4412102699279785,
|
| 57 |
+
"learning_rate": 0.00012258596721112608,
|
| 58 |
+
"loss": 1.4249,
|
| 59 |
+
"step": 60
|
| 60 |
+
},
|
| 61 |
+
{
|
| 62 |
+
"epoch": 1.5313351498637602,
|
| 63 |
+
"grad_norm": 1.7560715675354004,
|
| 64 |
+
"learning_rate": 9.880094756819572e-05,
|
| 65 |
+
"loss": 1.3145,
|
| 66 |
+
"step": 70
|
| 67 |
+
},
|
| 68 |
+
{
|
| 69 |
+
"epoch": 1.749318801089918,
|
| 70 |
+
"grad_norm": 1.4770311117172241,
|
| 71 |
+
"learning_rate": 7.508455775278867e-05,
|
| 72 |
+
"loss": 1.3138,
|
| 73 |
+
"step": 80
|
| 74 |
+
},
|
| 75 |
+
{
|
| 76 |
+
"epoch": 1.9673024523160763,
|
| 77 |
+
"grad_norm": 1.7148045301437378,
|
| 78 |
+
"learning_rate": 5.279424611272873e-05,
|
| 79 |
+
"loss": 1.3291,
|
| 80 |
+
"step": 90
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"epoch": 2.190735694822888,
|
| 84 |
+
"grad_norm": 2.0001425743103027,
|
| 85 |
+
"learning_rate": 3.3205836959548296e-05,
|
| 86 |
+
"loss": 1.0962,
|
| 87 |
+
"step": 100
|
| 88 |
+
},
|
| 89 |
+
{
|
| 90 |
+
"epoch": 2.190735694822888,
|
| 91 |
+
"eval_loss": 1.7037299871444702,
|
| 92 |
+
"eval_runtime": 6.8235,
|
| 93 |
+
"eval_samples_per_second": 5.716,
|
| 94 |
+
"eval_steps_per_second": 2.931,
|
| 95 |
+
"step": 100
|
| 96 |
+
},
|
| 97 |
+
{
|
| 98 |
+
"epoch": 2.4087193460490464,
|
| 99 |
+
"grad_norm": 1.9595047235488892,
|
| 100 |
+
"learning_rate": 1.744050657043137e-05,
|
| 101 |
+
"loss": 0.8287,
|
| 102 |
+
"step": 110
|
| 103 |
+
},
|
| 104 |
+
{
|
| 105 |
+
"epoch": 2.6267029972752045,
|
| 106 |
+
"grad_norm": 2.464970111846924,
|
| 107 |
+
"learning_rate": 6.4006107362960195e-06,
|
| 108 |
+
"loss": 0.9922,
|
| 109 |
+
"step": 120
|
| 110 |
+
},
|
| 111 |
+
{
|
| 112 |
+
"epoch": 2.844686648501362,
|
| 113 |
+
"grad_norm": 2.049036979675293,
|
| 114 |
+
"learning_rate": 7.180368766371515e-07,
|
| 115 |
+
"loss": 0.9264,
|
| 116 |
+
"step": 130
|
| 117 |
+
},
|
| 118 |
+
{
|
| 119 |
+
"epoch": 2.9536784741144415,
|
| 120 |
+
"step": 135,
|
| 121 |
+
"total_flos": 1.767735055048704e+16,
|
| 122 |
+
"train_loss": 1.468487181486907,
|
| 123 |
+
"train_runtime": 1020.0471,
|
| 124 |
+
"train_samples_per_second": 2.156,
|
| 125 |
+
"train_steps_per_second": 0.132
|
| 126 |
+
}
|
| 127 |
+
],
|
| 128 |
+
"logging_steps": 10,
|
| 129 |
+
"max_steps": 135,
|
| 130 |
+
"num_input_tokens_seen": 0,
|
| 131 |
+
"num_train_epochs": 3,
|
| 132 |
+
"save_steps": 50,
|
| 133 |
+
"stateful_callbacks": {
|
| 134 |
+
"TrainerControl": {
|
| 135 |
+
"args": {
|
| 136 |
+
"should_epoch_stop": false,
|
| 137 |
+
"should_evaluate": false,
|
| 138 |
+
"should_log": false,
|
| 139 |
+
"should_save": true,
|
| 140 |
+
"should_training_stop": true
|
| 141 |
+
},
|
| 142 |
+
"attributes": {}
|
| 143 |
+
}
|
| 144 |
+
},
|
| 145 |
+
"total_flos": 1.767735055048704e+16,
|
| 146 |
+
"train_batch_size": 2,
|
| 147 |
+
"trial_name": null,
|
| 148 |
+
"trial_params": null
|
| 149 |
+
}
|
rupsaa-v0.1/training_eval_loss.png
ADDED
|
rupsaa-v0.1/training_loss.png
ADDED
|