bladealex commited on
Commit
f4a645d
·
verified ·
1 Parent(s): 08e3452

Upload folder using huggingface_hub

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - es
4
+ - guc
5
+ license: gemma
6
+ base_model: google/translategemma-4b-it
7
+ tags:
8
+ - translation
9
+ - low-resource-language
10
+ - indigenous-languages
11
+ - language-preservation
12
+ - wayuunaiki
13
+ - arawak
14
+ - spanish
15
+ - putchi
16
+ - translategemma
17
+ pipeline_tag: translation
18
+ ---
19
+
20
+ # 🪶 Pütchi — Traductor y Guardián del Wayuunaiki (v0.2)
21
+
22
+ > **El tercer pilar del ecosistema MARDUK** · Justicia (TutelaBot) → Seguridad (VulnSentinel) → **Lengua y Cultura (Pütchi)**
23
+
24
+ **Pütchi** («la palabra» en wayuunaiki) es un modelo de traducción **Español ↔ Wayuunaiki** (ISO 639-3
25
+ `guc`, familia Arawak, pueblo Wayúu de La Guajira), afinado con LoRA sobre
26
+ [`google/translategemma-4b-it`](https://huggingface.co/google/translategemma-4b-it) (Gemma 3) y pensado
27
+ para correr **100% offline** en hardware modesto, respetando la soberanía de datos de las comunidades.
28
+
29
+ ## ⚠️ Estado honesto: borrador v0.2 — sin validar por hablantes
30
+
31
+ Pütchi v0.2 es un **fraseario**, **no un traductor profesional**:
32
+
33
+ - ✅ Traduce el **léxico que aprendió** en ambas direcciones y **se detiene correctamente** (no degenera).
34
+ - ⚠️ **No generaliza** a vocabulario o frases nuevas (en pares reservados/held-out el exact-match es 0%).
35
+ - ⚠️ El lexicón fue **minado de fuentes publicadas y aún no validado por hablantes patrimoniales**.
36
+
37
+ No debe usarse como autoridad única en contextos ceremoniales, jurídicos o de salud. Es un **obsequio
38
+ comunitario en construcción**, en el marco del Decenio Internacional de las Lenguas Indígenas 2022–2032.
39
+
40
+ ## 📊 Benchmark (34 ítems, vs base TranslateGemma)
41
+
42
+ | Métrica | BASE | v0.1 | **v0.2** |
43
+ |---|:---:|:---:|:---:|
44
+ | Exact-match global | 2.9 % | 41.2 % | **73.5 %** |
45
+ | chrF global | 7.3 | 15.1 | **76.9** |
46
+ | Degeneración global | 2.9 % | 58.8 % | **0.0 %** |
47
+ | EM español→wayuunaiki | 6.2 % | 18.8 % | **81.2 %** |
48
+ | EM wayuunaiki→español | 0 % | 68.8 % | **75.0 %** |
49
+
50
+ v0.2 corrige la señal de fin de turno (EOS) que hacía a v0.1 generar texto sin parar (run-on) en
51
+ español→wayuunaiki.
52
+
53
+ ## 🚀 Uso
54
+
55
+ **Ollama (GGUF, recomendado):**
56
+ ```bash
57
+ ollama run bladealex/putchi
58
+ ```
59
+
60
+ **Transformers (safetensors de este repo):**
61
+ ```python
62
+ from transformers import AutoModelForCausalLM, AutoTokenizer
63
+ import torch
64
+
65
+ tok = AutoTokenizer.from_pretrained("bladealex/putchi")
66
+ model = AutoModelForCausalLM.from_pretrained("bladealex/putchi", torch_dtype=torch.bfloat16)
67
+ msgs = [{"role": "user", "content": "Traduce del wayuunaiki al español: wiin"}]
68
+ inputs = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt", return_dict=True)
69
+ print(tok.decode(model.generate(**inputs, max_new_tokens=32)[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
70
+ # → agua
71
+ ```
72
+
73
+ Ejemplos que funcionan: `wiin→agua`, `siki→fuego`, `tepichi→niño`, `pütchi→palabra`,
74
+ `¿Cómo se dice «agua» en wayuunaiki?` → `wiin`.
75
+
76
+ ## 🌿 Particularidades respetadas
77
+ Vocal central alta `ü`, cierre glotal (saltillo `'`) como fonema pleno, género proyectado por el
78
+ hablante (`-kai`/`-kalü`/`-kana`), sintaxis verbo-inicial, voz pasiva morfológica, dialectos
79
+ arribero/abajero.
80
+
81
+ ## 🤝 Ética y gobernanza
82
+ Adopta principios de gobernanza de datos indígenas (CARE / OCAP). No reemplaza a hablantes
83
+ patrimoniales, maestros EIB ni al *pütchipü'ü*. Se busca activamente la validación comunitaria antes
84
+ de cualquier uso oficial.
85
+
86
+ ## 🔗 Recursos
87
+ - 💻 Código, pipeline reproducible y documentación completa: **https://github.com/bladealex9848/gemma-tuner**
88
+ - 🦙 GGUF listo para usar: **https://ollama.com/bladealex/putchi**
89
+ - 🧰 Skill experto en wayuunaiki (traductor asistido por reglas que **marca lo que no sabe**): en el repo de GitHub.
90
+
91
+ ---
92
+
93
+ **Autor:** Alexander Oviedo Fadul ([@bladealex9848](https://github.com/bladealex9848)) · Ingeniero de
94
+ Sistemas, arquitecto del Ecosistema MARDUK · Colombia.
95
+
96
+ > *Pütchi es un obsequio para el pueblo wayúu y para quienes defienden las lenguas originarias. Solo
97
+ > pide que la palabra —pütchi— se use con respeto.*
added_tokens.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "<image_soft_token>": 262144
3
+ }
config.json ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_sliding_window_pattern": 6,
3
+ "attention_bias": false,
4
+ "attention_dropout": 0.0,
5
+ "attn_logit_softcapping": null,
6
+ "bos_token_id": 2,
7
+ "dtype": "bfloat16",
8
+ "eos_token_id": 1,
9
+ "final_logit_softcapping": null,
10
+ "head_dim": 256,
11
+ "hidden_activation": "gelu_pytorch_tanh",
12
+ "hidden_size": 2560,
13
+ "initializer_range": 0.02,
14
+ "intermediate_size": 10240,
15
+ "layer_types": [
16
+ "sliding_attention",
17
+ "sliding_attention",
18
+ "sliding_attention",
19
+ "sliding_attention",
20
+ "sliding_attention",
21
+ "full_attention",
22
+ "sliding_attention",
23
+ "sliding_attention",
24
+ "sliding_attention",
25
+ "sliding_attention",
26
+ "sliding_attention",
27
+ "full_attention",
28
+ "sliding_attention",
29
+ "sliding_attention",
30
+ "sliding_attention",
31
+ "sliding_attention",
32
+ "sliding_attention",
33
+ "full_attention",
34
+ "sliding_attention",
35
+ "sliding_attention",
36
+ "sliding_attention",
37
+ "sliding_attention",
38
+ "sliding_attention",
39
+ "full_attention",
40
+ "sliding_attention",
41
+ "sliding_attention",
42
+ "sliding_attention",
43
+ "sliding_attention",
44
+ "sliding_attention",
45
+ "full_attention",
46
+ "sliding_attention",
47
+ "sliding_attention",
48
+ "sliding_attention",
49
+ "sliding_attention"
50
+ ],
51
+ "max_position_embeddings": 131072,
52
+ "model_type": "gemma3_text",
53
+ "num_attention_heads": 8,
54
+ "num_hidden_layers": 34,
55
+ "num_key_value_heads": 4,
56
+ "pad_token_id": 0,
57
+ "query_pre_attn_scalar": 256,
58
+ "rms_norm_eps": 1e-06,
59
+ "rope_parameters": {
60
+ "full_attention": {
61
+ "factor": 8.0,
62
+ "rope_theta": 1000000,
63
+ "rope_type": "linear"
64
+ },
65
+ "sliding_attention": {
66
+ "rope_theta": 10000,
67
+ "rope_type": "default"
68
+ }
69
+ },
70
+ "sliding_window": 1024,
71
+ "tie_word_embeddings": true,
72
+ "use_bidirectional_attention": false,
73
+ "use_cache": true,
74
+ "vocab_size": 262208,
75
+ "architectures": [
76
+ "Gemma3ForCausalLM"
77
+ ]
78
+ }
generation_config.json ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cache_implementation": "hybrid",
3
+ "do_sample": true,
4
+ "eos_token_id": [
5
+ 1,
6
+ 106
7
+ ],
8
+ "top_k": 64,
9
+ "top_p": 0.95,
10
+ "transformers_version": "5.5.3"
11
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0e63a3851f30243bcd645181f1dfbb06bc55e79c9217ba308529549bd5b6e037
3
+ size 7760578120
special_tokens_map.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "boi_token": "<start_of_image>",
3
+ "bos_token": {
4
+ "content": "<bos>",
5
+ "lstrip": false,
6
+ "normalized": false,
7
+ "rstrip": false,
8
+ "single_word": false
9
+ },
10
+ "eoi_token": "<end_of_image>",
11
+ "eos_token": {
12
+ "content": "<eos>",
13
+ "lstrip": false,
14
+ "normalized": false,
15
+ "rstrip": false,
16
+ "single_word": false
17
+ },
18
+ "image_token": "<image_soft_token>",
19
+ "pad_token": {
20
+ "content": "<pad>",
21
+ "lstrip": false,
22
+ "normalized": false,
23
+ "rstrip": false,
24
+ "single_word": false
25
+ },
26
+ "unk_token": {
27
+ "content": "<unk>",
28
+ "lstrip": false,
29
+ "normalized": false,
30
+ "rstrip": false,
31
+ "single_word": false
32
+ }
33
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:daab2354f8a74e70d70b4d1f804939b68a8c9624dd06cb7858e52dd8970e9726
3
+ size 33384567
tokenizer.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1299c11d7cf632ef3b4e11937501358ada021bbdf7c47638d13c0ee982f2e79c
3
+ size 4689074
tokenizer_config.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "backend": "tokenizers",
3
+ "boi_token": "<start_of_image>",
4
+ "bos_token": "<bos>",
5
+ "clean_up_tokenization_spaces": false,
6
+ "eoi_token": "<end_of_image>",
7
+ "eos_token": "<eos>",
8
+ "image_token": "<image_soft_token>",
9
+ "is_local": false,
10
+ "mask_token": "<mask>",
11
+ "model_max_length": 1000000000000000019884624838656,
12
+ "model_specific_special_tokens": {
13
+ "boi_token": "<start_of_image>",
14
+ "eoi_token": "<end_of_image>",
15
+ "image_token": "<image_soft_token>"
16
+ },
17
+ "pad_token": "<pad>",
18
+ "padding_side": "left",
19
+ "processor_class": "Gemma3Processor",
20
+ "sp_model_kwargs": null,
21
+ "spaces_between_special_tokens": false,
22
+ "tokenizer_class": "GemmaTokenizer",
23
+ "unk_token": "<unk>",
24
+ "use_default_system_prompt": false
25
+ }