Heretic LLM suport pentru GLM 4.6 [Z.ai] Acum poti elimina orice restrictie la modelele GLM

Arhitectul

Administrator
Staff member
Explorator AI

Suport Universal pentru Modele Noi prin Auto-Registrare Dinamică

1. Problema: Limitări la Modele Noi

heretic este un instrument extrem de puternic, dar suportul pentru modele a fost limitat la cele cu configurații recunoscute de AutoModelForCausalLM. La încercarea de a încărca modele noi, precum zai-org/GLM-4.6V-Flash, apărea următoarea eroare: Unrecognized configuration class <class 'transformers.models.glm4v.configuration_glm4v.Glm4vConfig'> for this kind of AutoModel: AutoModelForCausalLM.

Aceasta facea ca heretic să nu poată fi folosit pentru cele mai recente modele, limitându-i utilitatea și forțând utilizatorii să modifice codul sursă pentru fiecare nouă arhitectură.

2. Cauza Radacinală: Mapare Statică în transformers

Clasa AutoModelForCausalLM folosește o mapare internă, statică, între clasele de configurație și clasele de model. Când un model nou (ex: GLM-4.6V) este lansat, clasa sa de configurație (Glm4vConfig) și clasa sa de model (Glm4vMoeForConditionalGeneration) nu sunt încă în această listă statică în versiunile mai vechi ale transformers. Codul original heretic se baza pe această mapare, ducând la eșec.

3. Soluția Propusă: Mecanism de Auto-Descoperire și Înregistrare

Soluția este de a înlocui logica de încărcare statică cu un mecanism dinamic și universal. Acesta inspectează modelul la momentul încărcării și înregistrează automat clasele necesare cu transformers.

Cum funcționează:

  1. Încearcă Metoda Standard: Încearcă mai întâi AutoModelForCausalLM.from_pretrained().
  2. Detectează Eșecul: Dacă eșuează cu eroarea specifică Unrecognized configuration class, mecanismul de patch se activează.
  3. Inspectează Configurația: Folosește AutoConfig.from_pretrained() pentru a citi fișierul config.json al modelului.
  4. Extrage Arhitectura: Găsește numele clasei de model din câmpul config.architectures (ex: ["Glm4vMoeForConditionalGeneration"]).
  5. Import Dinamic: Importă clasa de model și configurația direct din fișierele modelului (modeling_glm4v.py, configuration_glm4v.py).
  6. Înregistrează Clasele: Folosește AutoModelForCausalLM.register(config_class, model_class) pentru a le adăuga la maparea internă a transformers.
  7. Reîncearcă Încărcarea: Reapelează AutoModelForCausalLM.from_pretrained(), care acum reușește deoarece clasa este recunoscută.

4. Modificări Cheie în model.py

  • Import AutoConfig: from transformers import AutoConfig
  • Adăugarea metodei _patch_new_model_support(): O nouă funcție care conține toată logica de auto-descoperire.
  • Modificarea __init__: Apelarea metodei de patch la începutul inițializării.
  • Modificarea reload_model(): Apelarea metodei de patch și la reîncărcarea modelului.
  • Dependența Critică: Actualizarea transformers la o versiune recentă (ex: transformers>=5.0.0rc0), deoarece mecanismul de import dinamic se bazează pe structura modulelor din versiunile noi.

5. Beneficii

  • Universalitate: Acum heretic poate funcționa cu oricare model (curent sau viitor) care respectă formatul standard transformers, fără a mai fi nevoie de modificări manuale.
  • Future-Proof: Nu mai este necesar să se "vâneze" după fiecare nouă lansare de model. Suportul este automat.
  • Curățenie: Soluția este elegantă și ne-invazivă. Păstrează logica originală AutoModelForCausalLM.from_pretrained și doar adaugă un pas de pre-procesare atunci când este necesar.
  • Compatibilitate Retroactivă: Nu strică suportul pentru modelele existente (Llama, Mistral etc.), deoarece patch-ul se activează doar la eșecul metodei standard.

6. Testare și Validare

Soluția a fost testată și validată cu succes pe modelul zai-org/GLM-4.6V-Flash pe un sistem cu NVIDIA RTX 4090.
  • Modelul a fost încărcat cu succes: Loading checkpoint shards: 100%... Ok
  • Straturile și componentele au fost identificate: * Transformer model with 40 layers, * Abliterable components: attn.o_proj, mlp.down_proj
  • Procesul de abliteration a fost finalizat: Utilizatorul a confirmat că întregul proces s-a derulat fără erori, demonstrând funcționalitate deplină.

7. Concluzie și Cerere

Această modificare reprezintă o îmbunătățire semnificativă a funcționalității de bază a heretic, transformându-l dintr-un instrument dependent de anumite modele într-o soluție cu adevărat universală.


Vezi modelul necenzurat aici:
 

Attachments

Cateva explicatii:

Cum folosesti modificarea ca modelul GLM sa functioneze?
1. descarca fisierul zip atasat si extrage fisierul.
2. mergi in locatia unde este heretic instalat
Code:
C:\Users\user\anaconda3\envs\heretic_env\lib\site-packages\heretic
3. redenumeste fisierul model.py in model-back.py
4. copie acum fisierul model.py din arhiva aici
5. deschide cmd si ruleaza comanda:
Code:
heretic zai-org/GLM-4.6V-Flash

Detalii despre noul model.

KL divergence 0.0000 0 (by definition)
Refusals 63/100 100/100


KL divergence dupa cum vedeti este 0, adica modelul este exact la fel ca original, fara nici o modificare, sunt cazuri unde KL divergence poate fi si 5 sau mai mult, adica modificarea fata de modelul original este foarte mare, care in unele cazuri poate duce la dezastru.

Refusals dupa cum vedeti este 60 din 100 ceea ce este foarte mare, insa cu ajutorul la modificarile facute in config nu refuza nimic. Din testele mele unde am pus intrebari extreme care p-e-w/gpt-oss-20b-heretic a refuzat categoric si are un refuz de 58, AiAsistent/GLM-4.6V-Flash-heretic a raspuns la tot. Chiar sa faca un virus mortal unde a explicat pas cu pas si facut o poveste adul foarte explicit.
Aici este ca am folosit un dataset diferit + un sistem prompt diferit. Poti gasi aceste informatii aici Cum transformi orice LLM într-un model 100% Necenzurat și mai 'Smart' (Metoda Heretic)

Acum intrebarea:
Functioneaza pe orice model/structura?
Nu chiar, dupa ce am facut mai multe teste, unele modele de la deepseek, llama, microsoft da eroare, dar le voi rezolva.

De ce cred ca unele da eroare dar nu am avut timp sa testez pentru a vedea daca asa este.

Problema cred ca este la versiunea de transformers.
Spre exemplu GLM cere o versiune speciala minima transformers>=5.0.0rc0 care este un prerelease, unde alte modele pot da eroare.
Eu cand am testat alte modele care nu au functionat, aveam instalat transformers>=5.0.0rc0 .

Curand voi face si versiunea ollama si voi face update aici pentru a putea descarca.
 
Back
Top