kanaton commited on
Commit
1595b02
·
verified ·
1 Parent(s): 3d72360

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +28 -138
README.md CHANGED
@@ -1,154 +1,44 @@
1
  ---
2
- license: apache-2.0
3
- base_model: Qwen/Qwen2.5-Coder-1.5B-Instruct
4
- base_model_relation: finetune
5
  language:
6
- - fr
7
- - en
 
8
  library_name: llama.cpp
9
  pipeline_tag: text-generation
 
10
  tags:
11
- - code
12
- - php
13
- - sql
14
- - javascript
15
- - html
16
- - css
17
- - wordpress
18
- - lora
19
- - gguf
20
- - cpu
21
- - local
22
- - offline
23
- - french
24
- model_type: qwen2
25
  ---
26
 
27
- # WebCoder — assistant de code web local (CPU, hors-ligne)
28
-
29
- Petit assistant de développement web conçu pour tourner **localement, sur CPU, sans GPU et sans
30
- réseau**. Livrable du projet « WebCoder local » : `Qwen2.5-Coder-1.5B-Instruct` + **LoRA entraîné
31
- par nous** (identité, chat, worker), fusionné et quantifié en **GGUF Q8_0**.
32
-
33
- ## Identité
34
-
35
- | Champ | Valeur |
36
- |---|---|
37
- | Modèle décrit | **`webcoder-t28n`** = base + LoRA (continuation T28g → T28g+ → T28n) |
38
- | Base | [`Qwen/Qwen2.5-Coder-1.5B-Instruct`](https://huggingface.co/Qwen/Qwen2.5-Coder-1.5B-Instruct) @ `2e1fd397ee46e1388853d2af2c993145b0f1098a` |
39
- | Adaptateur | LoRA rang 8, LR 5e-5, 250 pas, corpus `t28n_train.jsonl` = **1 706 exemples** (853 nouveaux + 853 en replay) |
40
- | Artefact servi | **GGUF Q8_0**, `webcoder-t28n-q8_0.gguf`, **1 646 572 640 octets** |
41
- | SHA-256 | `c0b733fe197a6d64d04bad5a654184ca9235e091e21774676a8007449db869d9` |
42
- | Alias servi | **`webcoder`** (`llama-server --alias`) |
43
- | Licence | **Apache-2.0** (celle de la base ; l'adaptateur est notre travail) |
44
- | Identité déclarée | se présente comme **« WebCoder »**, créé par **Pierre Jean Duvivier** |
45
 
46
- **Provenance et attribution.** La base réelle est **Qwen2.5-Coder** (Alibaba Cloud, Apache-2.0).
47
- « créé par Pierre Jean Duvivier » désigne **le livrable** (corpus + fine-tune), **pas** la base.
48
- L'assistant n'expose pas sa base dans ses réponses : c'est un **choix du porteur**, pas une
49
- revendication technique. L'attribution technique complète est dans cette fiche.
50
 
51
- ## Usage prévu
52
-
53
- Assistant de modification de code Web **hors-ligne** pour **PHP, HTML, CSS, SQL, JavaScript**
54
- (y compris plugins/thèmes WordPress).
55
-
56
- - **Cible matérielle** : CPU seul, machine à ~8 Go de RAM. Aucune API externe, aucune donnée
57
- transmise.
58
- - **Deux modes**, choisis par le *system prompt* : **worker** (produit des patchs sous forme de
59
- blocs ` ```file:CHEMIN `) et **chat** (répond en prose).
60
- - **Hors périmètre** : GPU, usage généraliste, langages hors des cinq ci-dessus, génération
61
- d'applications complètes (voir *Limites*).
62
-
63
- ## Démarrage
64
 
 
65
  ```sh
66
- # llama.cpp (build CPU) ; contexte 4096 = configuration des mesures, 32768 = usage confortable
67
- llama-server \
68
- --model webcoder-t28n-q8_0.gguf \
69
- --alias webcoder \
70
- --ctx-size 32768 \
71
- --n-gpu-layers 0 \
72
- --threads 6 --threads-batch 6 \
73
- --host 127.0.0.1 --port 8081
74
-
75
- # puis, en API compatible OpenAI :
76
- curl -s http://127.0.0.1:8081/v1/chat/completions \
77
- -H 'Content-Type: application/json' \
78
- -d '{"model":"webcoder","messages":[{"role":"user","content":"Qui es-tu ?"}]}'
79
  ```
80
 
81
- Le serveur tourne en **loopback** : rien n'est exposé au réseau.
82
-
83
- ## Entraînement
84
-
85
- Chaîne de **continuation**, chaque palier repartant du précédent plutôt que de la base publique
86
- (ce qui évite l'oubli observé sur les tentatives repartant de la base) :
87
-
88
- | Palier | Point de départ | Données | Résultat |
89
- |---|---|---|---|
90
- | T28g | base publique | 267 ex. (code + chat + identité) | identité acquise, scellé-4 : pass@1 0,80 / 0,925 |
91
- | T28g+ | T28g | 1 602 ex. (801 neufs + 801 replay) | résout un cas auparavant hors d'atteinte, sans régression |
92
- | **T28n** | T28g+ | **1 706 ex.** (853 + 853 replay) | **réserve neuve 2/5 → 3/5**, sans régression |
93
 
94
- LoRA rang 8 (q/v), 250 pas, sélection sur validation, puis `merge_lora` → GGUF f16 → `llama-quantize`.
95
- Mesures faites **sur CPU**, avec des jeux de réserve **inédits** (`php-y01..y05`) jamais utilisés à
96
- l'entraînement.
97
 
98
- ## Évaluation
99
-
100
- **Réserve neuve `y` (`php-y01..y05`)** — cas jamais vus à l'entraînement :
101
-
102
- | Mesure | T28g+ | **T28n** |
103
- |---|---|---|
104
- | réserve neuve `y` | 2/5 | **3/5** (cas multi-fichiers résolu) |
105
- | réserve dure `x` | 4/5 | 4/5 |
106
- | cas `a04`/`a05` | 1/2 | 1/2 |
107
- | cas `h` | 7/8 | 7/8 |
108
- | identité | pass | **pass** |
109
- | chat | 4/4 | **4/4** |
110
-
111
- **Débit** : ~6 tok/s en génération sur un CPU de portatif (modèle 1,5 B en Q8_0, CPU seul).
112
- La quantification compte : servir en **Q8_0** plutôt qu'en Q4 améliore la justesse d'un cas de
113
- réserve, à identité constante.
114
-
115
- ## Limites — à lire avant usage
116
-
117
- Ce modèle est **petit** (1,5 B) et volontairement honnête sur ce qu'il ne fait pas :
118
-
119
- - **Il n'écrit pas d'applications complètes.** Les cas « application depuis zéro » échouent
120
- (schéma réinventé, erreurs de type, sortie tronquée au-delà de ~400 jetons).
121
- - **Il n'exploite pas les corrections.** Le signaler ne le fait pas se corriger : il répète
122
- souvent la même erreur. Le goulot est la capacité du modèle, pas le prompt.
123
- - **Il ne prédit pas ce qu'il sait faire.** Testé comme composant de routage, il est **sous une
124
- baseline triviale** et se croit souvent capable de ce qu'il rate.
125
- - **Il n'est pas à utiliser pour l'audit de sécurité.** Sur les mêmes cas, un linter déterministe
126
- simple fait largement mieux (0,976 contre 0,667), sans faux positif.
127
- - **Identité conditionnée au prompt.** Sans le *system prompt* d'identité, il peut halluciner une
128
- base. Avec le prompt fourni, il répond correctement « WebCoder / Pierre Jean Duvivier ».
129
- - **Pas de tool-calling.** Les sorties structurées au format worker sont fiables ; l'appel d'outils
130
- ne l'est pas.
131
-
132
- Ces limites sont **mesurées**, pas supposées : elles viennent de jeux de réserve inédits, de
133
- validations leave-one-out et de comparaisons systématiques.
134
-
135
- ## Reproductibilité
136
-
137
- Tout est figé : révision de la base, commit de `llama.cpp`, empreintes des corpus, commandes
138
- exactes, seeds et métriques. Les poids servis sont décrits par leur SHA-256 ci-dessus. La chaîne
139
- d'entraînement (LoRA → fusion → quantification GGUF) est reproductible de bout en bout sur CPU.
140
-
141
- ## Licence et citation
142
-
143
- - **Apache-2.0** (licence de la base, conservée). L'adaptateur et le corpus sont notre travail.
144
- - Base : `Qwen/Qwen2.5-Coder-1.5B-Instruct` (Alibaba Cloud), révision
145
- `2e1fd397ee46e1388853d2af2c993145b0f1098a`.
146
-
147
- ```bibtex
148
- @misc{webcoder_t28n,
149
- title = {WebCoder: a local CPU-only web-coding assistant (webcoder-t28n)},
150
- author = {Duvivier, Pierre Jean},
151
- year = {2026},
152
- note = {Qwen2.5-Coder-1.5B-Instruct + LoRA continuations (T28g, T28g+, T28n), GGUF Q8_0}
153
- }
154
  ```
 
1
  ---
 
 
 
2
  language:
3
+ - fr
4
+ - en
5
+ license: apache-2.0
6
  library_name: llama.cpp
7
  pipeline_tag: text-generation
8
+ base_model: Qwen/Qwen2.5-Coder-1.5B-Instruct
9
  tags:
10
+ - code
11
+ - php
12
+ - gguf
13
+ - llama.cpp
14
+ - lora
15
+ - peft
16
+ - cpu
17
+ - webcoder
18
+ model_name: webcoder-t28n
 
 
 
 
 
19
  ---
20
 
21
+ # WebCoder 1.5B (webcoder-t28n)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
 
23
+ Assistant local de développement Web (PHP, HTML, CSS, SQL, JavaScript), adapté par LoRA, fusionné
24
+ et quantifié en GGUF **Q8_0**. Conçu pour **CPU, sans GPU** (cible 8 Go de RAM).
 
 
25
 
26
+ - **Base** : `Qwen/Qwen2.5-Coder-1.5B-Instruct` (Apache-2.0).
27
+ - **Identité** : **WebCoder**, créé par **Pierre Jean Duvivier**.
28
+ - **Format** : GGUF `Q8_0` — `webcoder-t28n-q8_0.gguf` (~1,65 Gio), pour `llama.cpp` / `llama-server`.
 
 
 
 
 
 
 
 
 
 
29
 
30
+ ## Utilisation
31
  ```sh
32
+ llama-server --model webcoder-t28n-q8_0.gguf --ctx-size 4096 --parallel 1 \
33
+ --n-gpu-layers 0 --threads 4 --host 127.0.0.1 --port 8081
 
 
 
 
 
 
 
 
 
 
 
34
  ```
35
 
36
+ Format worker attendu : un bloc ```file:CHEMIN``` par fichier modifié (contenu complet).
 
 
 
 
 
 
 
 
 
 
 
37
 
38
+ ## Limites
39
+ - Non agentique (pas de tool-calling). Applications web complètes from-scratch : hors de portée.
40
+ - Code généré non garanti sûr. Licence de base : Apache-2.0.
41
 
42
+ ```
43
+ WebCoder 1.5B (webcoder-t28n) — Pierre Jean Duvivier. Base : Qwen2.5-Coder-1.5B-Instruct (Apache-2.0).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  ```