LM Studio: Welches Modell für Refactoring (HTML&Co)

WulfmanGER

Commander
Registriert
Juli 2005
Beiträge
2.423
Hallo in die Runde,

Ich hab LM Studio installiert und eine AMD 7900XT/20GB VRAM, 32GB RAM und nutze die ROCm-Engine

Mein Ziel ist es: für mehrere .tpl-Dateien (Template Smarty/HTML) ein refactorinig des HTML/CSS-Codes zu machen. Leider hat sich hier viel Inline-CSS eingeschlichen der a) den code enorm aufbläht und b) schwer zu warten ist. Ich möchte das CSS im ersten Step erstmal ins <styles> packen (danach in .css). Ich würde das gerne mit einem kompakten Lokalen Modell machen.

Das heißt das Modell prüft:
a) enthält <styles> Leichen?
b) inline css durch klassen ersetzen, in <styles> schieben, inline entfernen.

Mit Gemini hab ich da gute Erfahrung - bin da aber schnell am Limit und mittlerweile kann man ChatGPT und Gemini nicht mehr effektiv für Code in den free modellen nutzen :( (ChatGPT ist ganz schlimm geworden...) - in den Free Modellen bespreche ich nur was wir als nächstes Coden, wenn Thinking wieder verfügbar ist. Klappt super. Aber wie gesagt: für diese Arbeit würde ich gerne auf LOKAL umsteigen.

Welche Modelle könnt ihr dafür empfehlen? Aktuell nutze ich GPT-OSS-20b ... und das dauert ewig (ist ja auch klar - nicht gerade klein das Modell - da schießt man mit Kanonen auf Spatzen). Sollte sicher auch etwas kompakter gehen. Ist ja eigentlich ein relativ simpler Job der hier gemacht werden muss.
 
Die Cloud Modelle sind halt bei weitem besser als lokale Modelle, selbst wenn man ein sehr starkes Cluster hat.

Einfach alles in VSC packen und die Ki mal drüber schauen lassen oder schick es zu Claude Opus das ist schon sehr gut.
 
Für das, was er machen will, braucht es überhaupt keine Cloud. Ich würde auch Qwen 3.6 probieren. Mit seiner Radeon kann er sogar das Dense-Modell nehmen.
 
Scirca schrieb:
Die Cloud Modelle sind halt bei weitem besser als lokale Modelle

Dieses Vorurteil werd ich jetzt wohl 20 Jahre lang in Foren hören ☹️
 
@aluis Du kannst ja versuchen es zu entkräften. :)
 
  • Gefällt mir
Reaktionen: JumpingCat
Qwen 3.6 will bei mir nicht klappen :(

Es denkt, denkt, denkt und haut dann \\\\\\\\\\\\\\\\\\\\ raus....

Oder es haut content raus und hängt in einer schleifen ... für ein "Wie mach ich eine "Hello world" in php/smarty" - hat mir qwen 3.6 über 2000 Token rausgehauen - dann hab ich abgebrochen. Hat mir mehrfach geschrieben wie ich smarty mit composer installiere usw. .... GUT vielleicht hätte ich sagen sollen das schon alles installiert ist - mein fehler für die genauigkeit ... aber trotzdem wurde das immer wiederholt :( Auch andere sachen liefen damit halt null. Auch bei 3.5 gab es das problem. 3.0 lief ohne Probleme
 
Ist dein Kontextfenster vielleicht zu klein? In den Einstellungen bei Model Defaults kannst du das anpassen oder einfach auf Model Maximum stellen.
 
Kuristina schrieb:
@aluis Du kannst ja versuchen es zu entkräften. :)
@Scirca Opus 4, irgendwas ist kein Modell, sondern ein Agent. Jeder Prompt bekommt eine eigene Sandbox, worin Befehle/Quelltext getestet werden, bevor sie dem Anwender präsentiert werden. Sowas kann man auch lokal erreichen, zB OpenClaw usw. Ja, die lokalen Modelle waren nicht leistungsfähig, genauso wie die Cloud KI vor einem Jahr. In der "lokalen Modellszene" gibt es in den letzten Wochen krasse Hypes. Einem

https://ollama.com/juilpark/Qwen3.5-27B-Claude-4.6-Opus-Reasoning-Distilled-heretic:q6_k

steht Opus 4.6 nichts nach. Ich finde die Antworten sogar teilweise besser, weil nicht nur Opus 4.6 mit zehntausenden Chats destilliert wurde, sondern auch mit Gemini und ChatGPT.

Ich lasse das Modell mit OpenClaw auf meiner 5090 laufen, was im KI Bereich unterste Hardwareschiene ist. Trotzdem sind die Antworten besser. Ein lokales Modell hat nunmal keine keine Beschränkungen mit Filtern und was noch wichtiger ist, Timeouts. Qwen3.5 ist eigentlich zum Programmieren, kennt aber trotzdem die gesamte Wikipedia (ohne externe Suche). Und was auch nicht zu verachten ist, ein 27b Modell läuft auf einem Highend-Gaming-PC/5090 schneller als in jeder Cloud.
 
  • Gefällt mir
Reaktionen: Kuristina
Kuristina schrieb:
Ist dein Kontextfenster vielleicht zu klein? In den Einstellungen bei Model Defaults kannst du das anpassen oder einfach auf Model Maximum stellen.
"Wie mach ich eine "Hello world" in php/smarty" <- wie klein muss das kontext-fenster sein damit es damit nicht klar kommt? Kontext ist auf 16384 gestellt

Refactoring gerade mit gemini versucht. Die Zeilenlimitierung für Code im Free-Modus (Thinking und Fast) wurde nochmal reduziert. Coden kann man damit bald gar nicht mehr. 200 Zeilen html + 60 zeilen <style> sind Zuviel (hab schon extra getrennt html getrennt!). Hab am Ende ~100 Zeilen html und 60 Zeilen style ... und keine funktionierende Seite mehr weil die hälfte fehlt ;)

Daher will ich das halt Lokal machen. Refactoring sollte ja wohl keine große Challenge für ein lokales modell sein? ;)

Gerade Qwen3.6-27b noch mal versucht. Winziger Prompt:
"Ich habe Smarty installiert, apache und php sind auch installiert. Was muss ich jetzt schreiben um eine "Hello World"-Ausgabe zu erstellen?" (38 Token). Gute 1800 Token nur fürs "Denken" inkl. Wiederholung. 11.32 Token/s, 2500 Token ...

gemma-3-27b: 1267 Token, 14.49 Tok/S
qwen3-v1-30b-a3b-instruct: 86.07 Tok/s - 826 Token und auch tatsächlich lesbar (kein Roman)

Irgendwie stimmt daher was mit Qwen3.5/6 nicht. Durch Winget-Updates stellt sich vulkan immer wieder ein statt rocm - mit Vulkan kommt bei qwen3.6 halt \\\\\\\\\ ... mit rocm geht es. Aber wie gesagt: das ist nicht mal mehr ein Roman - das ist schon fast eine Enzyklpädie.

Ich bleibe wie gesagt bei den Standardeinstellungen. Aber 3.5 und 3.6 wollen partout nicht klappen.

Ich teste mal ob qwen3 seinen Job gut macht. Königsdisziplin beim refactoring (gpt-20b hat total versagt, gemini hatte auch probleme) colspan zu "ignorieren" ... Colspan nutze ich als "überschrift". 6 von 7 spalten die man explizit sieht sollen zentriert werden. Keine Chance das Fehlerfrei hinzu bekommen. Erst als ich sagte: lass das nth:-Gedöns weg! Ging es... Mehr CSS, dafür funktioniert es ;)
 
WulfmanGER schrieb:
"Wie mach ich eine "Hello world" in php/smarty" <- wie klein muss das kontext-fenster sein damit es damit nicht klar kommt?
Da kommt ja nicht nur dein Prompt rein, sondern auch "Denken" und Antwort der KI. Und alles was eventuell schon vorher im Chat steht. War nur ein spontaner Gedanke, weil ich ein ähnliches Problem mal hatte.
 
Ich verzweifel mit qwen3 :(

Das teil kann ein einfaches "ausschneiden", "einfügen" nicht :(

Aufgabe:

Guck dir bitte diesen DIV-Block an (es ist nur ein Auszug)
<div .......> .... </div>
Hier sind div. CSS-Klassen gesetzt.
Die Klassen sind hier deklariert:
<style>
....
</style>

Mache jetzt folgendes
1) Ermitteln die CSS-Klasse aus dem HTML-Auszug.
2) Erstelle im <style>-Block aus diesen gefunden Klassen einen extra Bereich am ENDE des <style>
3) lösche die Klassen aus ihrer alten Position. Damit wir keine duplikate haben.

=> Das Ergebnis ist Haarsträubend. Der gewünschte Block kommt mitten in <style> ... zudem sind da CSS-Klassen enthalten die im DIV nicht erwähnt wurden. Andere Klassen fehlen und stehen da wo sie vorher standen.

Hab dan 2-3 umgewandelt:
2) Erstelle mir einen zweiten <style>-Block. Füge nur die gefundenen CSS-Klassen dort ein.
3) Lösche die gefundenen CSS-Klassen aus dem ersten block
Das ganze ist ein Workaround - das man 2x <style> weiß ich.

=> table wird erkannt, table th/td nicht.
Das Problem ist hier in der tat eine Tabelle die ich eigentlich auslagern möchte (kommt in mehreren Templates vor).

Aber alleine schon das "suche inline-css/inline-styles im htmlcode - extrahiere diesen, erstelle mir css-klassen und füge die entsprechend in <style> und im html-code ein" war ein horror. Gemini hat ständig Zeilen gelöscht. Qwen erfindet ständig neuen, noch besseren Code dazu (auch explizite aussage: das der css-code 1:1 übernommen weden soll - helfen nicht) oder vergisst 3/4 des inline-css und meint das ich jetzt alle style="" selber löschen kann. Schreibt mir aber im html nicht die class="" rein.

Daher kommen wir zur Ausgangsfrage zurück: Welches KI-Modell eignet sich für ein refactoring von CSS/HTML am besten? ChatGPT, Gemini, Mistral, Qwen3, GPT-20b - haben alle versagt :( Wusste nicht das CSS die Königsklasse für KIs ist :( Ich bekomme leichter ein komplettes Web-UI mit php, smarty erstellt als css von a nach b zu verschieben...
 
https://unsloth.ai/docs/models/qwen3.6

Ich habe das gerade mal per CPU gestartet auf meinem Server Zuhause.

Hab mal 20 Kerne hereingeworfen und 100 GB RAM

1777131724144.png



Aktuell nutzt er nur 14 GB mit samt OS
Bash:
cat start-qwen.sh
#!/bin/bash
cd /root/llama.cpp
exec ./llama-server \
  --model /srv/llama/models/Qwen3.6-35B-A3B-GGUF/Qwen3.6-35B-A3B-UD-Q4_K_XL.gguf \
  --mmproj /srv/llama/models/Qwen3.6-35B-A3B-GGUF/mmproj-F16.gguf \
  --alias "unsloth/Qwen3.6-35B-A3B" \
  --ctx-size 32768 \
  -t 20 \
  --host 0.0.0.0
  --port 8001 \
  --temp 0.7 \
  --top-p 0.8 \
  --top-k 20 \
  --min-p 0.00 \
  --presence_penalty 1.5 \
  --chat-template-kwargs '{"enable_thinking":false}'


eine GUI habe ich, auch wenn ich möchte, ich bekomme so 12.7 t/s raus, klar das ist jetzt nicht extrem schnell. Zum antesten schon ok.


Ich hab ihm ein Bash Skript gegeben und er hat es dann umgeschrieben.


1777132205746.png
 
WulfmanGER schrieb:
leichter ein komplettes Web-UI NEU erstellt als css von a nach b zu verschieben...
Das ist völlig normal, und du solltest präziser formulieren. Generell ist KI eben keine Wunderwaffe, ein anderes Model wird sich beim gleichen Input auch nicht viel anders verhalten.
 
@aluis
Ich glaube du schmeißt da Dinge durcheinander.
Opus 4.6 ist ein Modell, kein Agent. Dass man es in Agenten-Architekturen einsetzen kann ist was anderes. Das gilt für praktisch jedes frontier-Modell. Claude Code hingegen ist ein Agent. Darin kann man auch lokale Modelle nutzen.
Und ein destilliertes 27B-Modell steht in nichts nach? Destillation heißt, das Modell lernt von Outputs größerer Modelle. Es erbt damit auch deren Grenzen und verliert Generalität.
5090 als unterste Hardwareschiene im KI-Bereich ist auch etwas komisch formuliert. Das ist die schnellste Consumer-GPU für LLM-Inference, nicht die schwächste. Was limitiert, ist der Speicher. Und schneller als jede Cloud? Anthropic betreibt Cluster mit hunderten H100/H200 und hochoptimierten Inference-Stacks. Ein einzelner Gaming-PC toppt das nicht. Nicht mal ein mittlerer DGX Spark Cluster sieht da Land.
Ein destilliertes 27B-Modell mit einem 500B+-Modell zu vergleichen ist halt auch Äpfel und Birnen.
 
  • Gefällt mir
Reaktionen: konkretor
JumpingCat schrieb:
Wieso hast du 0.7 gesetzt für Coding?
Wieso nicht? :-)
Oder anders gefragt: Was wäre ein besserer Wert und warum?

Immerhin steht doch auf der von ihm verlinkten Seite als Wert temperature = 0.7 für den von ihm auch so konfigurierten non-thinking-Mode (--chat-template-kwargs <span>'{"enable_thinking":false}').

Von daher würde ich jetzt annehmen, das man damit zumindest nichts grob falsch macht.

JumpingCat schrieb:
Bei welchem Kontext?
Meinst Du die Größe des Kontextfensters? Steht doch da: 32768 (sprich: --ctx-size 32768)

JumpingCat schrieb:
Wie verhält sich das bei 16k oder 128k Kontext?
Ich hab mal spaßenshalber getestet. Aber mit dem größeren Modell (Qwen3.6-35B-A3B-UD-Q8_K_XL) und hab ihm auch nur 8 Kerne gegeben für die cpu-only-Inference.
Context-Window: 128k
Und bekomme stabil >15 Tokens pro Sekunde
Das finde für den Hausgebrauch vollkommen ok.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: JumpingCat
Für Coding stellt man die Temperatur eigentlich auf Null. Das gibt stabilere Antworten. Für Kreativität drehst du das hoch.

Ja das Kontextfenster war gemeint. Das frisst auch RAM und Geschwindigkeit.
 
JumpingCat schrieb:
Für Coding stellt man die Temperatur eigentlich auf Null.
Naja.
Also ja. Der temperature-Wert gibt so ein bisschen an, wie kreativ das Modell ist. Umso größer der Wert, umso kreativer und desto kleiner der Wert desto deterministischer.
Welchen Impact aber ein konkreter Wert hat, hängt sehr vom Modell ab so das es schwierig ist, da einen konkreten Wert (der pauschal für jegliche Modelle gilt) anzugeben.

Ich würde daher immer mit dem loslaufen, was der default bzw. die Empfehlung ist und dann, wenn ich mit den Ergebnissen nicht ganz zufrieden bin, nachjustieren.
 
Zurück
Oben