Nachtrag 29.10.26: Die Nvidiakarte am AG03 wird tatsächlich am WTR Max erkannt, wenn man ein Oculinkkabel verwendet 😁
Bevor ich mich weiter mit dem Thema Vane beschäftigen kann, muss zuerst die Hardware richtig funktionieren. Leider war der Start etwas holpriger als gedacht. Aktuell läuft Vane mit 24 GB (abgeknapst vom RAM), beschleunigt durch die iGPU des WTR Max. Das hat den entscheidenden Vorteil, dass ich auch größere Sprachmodelle in den RAM laden kann, da ich so deutlich mehr RAM der iGPU und damit ollama zuweisen kann. Nachteil ist das Tempo, denn der normale RAM ist wesentlich langsamer als der VRAM einer Grafikkarte. Die NVIDIA 1650 habe ich nur zu Bastelzwecken aufgehoben, sie hat lediglich 4 GB VRAM. Der VRAM der NVIDIA-Karte ist zwar doppelt so schnell wie der normale RAM, dieser Vorteil ist aber sofort dahin, sobald ein Sprachmodell geladen wird, das größer als 4 GB ist und neben dem VRAM auch in den normalen RAM ausgelagert werden muss. In diesem Fall rechnet die CPU die Teile des Modells, die nicht mehr in den VRAM passen, und das Gesamttempo sinkt Richtung CPU-only. Eine Kombination aus iGPU und NVIDIA-Karte unterstützt ollama dabei praktisch nicht. Für Modelle, die komplett in 4 GB passen, wäre die 1650 zwar schneller, für die größeren Modelle, um die es mir geht, ist die iGPU unterm Strich aber vermutlich die bessere Wahl als die Dockingstation mit der ollen 1650er. Ich wollte mit der alten Karte sowieso nur einen PoC machen, bevor ich mehr Geld in das Thema stecke. Ohne iGPU, also CPU-only, komme ich bei ollama derzeit auf ca. 10 Token/s, mit zugeschalteter iGPU auf ca. 30 bis 35 Token/s (gemessen mit qwen3:30b-a3b). Das ist aber leider immer noch quälend langsam für KI-Anwendungen. Gerade bei Vane bremst dabei weniger die eigentliche Textgenerierung als vielmehr das Einlesen der Suchergebnisse, also die Verarbeitung langer Prompts.
Sollte hier jemand mitlesen, warne ich außerdem dringend davor, die AG03 per USB4 am WTR Max betreiben zu wollen. In der Anleitung der AG03 wird explizit erwähnt, dass die Dockingstation nicht mit dem WTR Max kompatibel ist! Ich habe mir allerdings gedacht, dass die Anleitung auch explizit von Windows 11 und Thunderbolt 4/5 bzw. USB4 spricht. OCuLink ist dagegen ein sehr hardwarenahes Durchschleifen eines PCIe-Ports (man sollte daher auch keinesfalls im laufenden Betrieb das OCuLink-Kabel abziehen oder anschließen!). Ich gehe daher weiterhin davon aus, dass eine OCuLink-Verbindung die externe GPU in Proxmox bringen dürfte (als echtes PCIe-Device). Mit dem beigelegten USB4-Kabel an den beiden USB-C-Ports des WTR Max wird jedenfalls nur die Dockingstation erkannt, nicht aber die 1650er. Das bedeutet, dass die Dockingstation aktuell (und vermutlich auch in Zukunft) nicht via USB an das WTR Max angeschlossen werden kann. Das war aber ohnehin nie mein Plan, denn die Anbindung via OCuLink ist schneller und weniger fehleranfällig als mit einer Thunderbolt-Zwischenschicht. Leider liegt der Dockingstation kein OCuLink-Kabel bei, und ich habe schlicht übersehen, dass kein solches Kabel dabei ist. Ein passendes Kabel kostet ca. 25 € und kommt nicht mehr vor nächster Woche. Ich lasse den Artikel daher vorerst so, wie er ist, und ergänze ihn, sobald das Kabel da ist und ich ganz sicher weiß, dass man mit dieser Dockingstation eine eGPU an das WTR Max durchreichen kann.
Ich habe noch folgenden Eintrag bei den Q&A auf der Aoostar Homepage gefunden
das bestärkt mich in meiner Vermutung, dass sich eine eGPU via OcuLink durchreichen lassen sollte ;) (Ja klappt, siehe folgende Screenshots)
Info: Der Artikel wurde am bereits am 21.10.26 angelegt, aber erst am 23.10.26 veröffentlicht. Man kann das Datum bei Flatpress nachträglich leider nicht ohne Weiteres ändern.
Mein Voronprojekt muss leider noch etwas warten. Ich bin derzeit noch mit dem Inhaber von meltbro.de in Kontakt wegen einiger Zusätze, daher wurde mein Bausatz noch nicht versendet. Ich kann den Laden weiterhin nur sehr empfehlen, der Inhaber ist ein supernetter Typ, der sich speziell mit den Voron Druckern perfekt auskennt. Besser hätte ich es nicht treffen können. Er scheint nahezu alles alleine zu machen, daher sollte man etwas Geduld mitbringen. Das stört mich allerdings überhaupt nicht, dafür bekomme ich einen maßgeschneiderten “bleeding edge 3D-Drucker”. Der Tisch ist eh noch nicht ganz grade und mit dem Prusa kann ich ja weiterhin drucken, wenngleich im Schneckentempo (verglichen mit dem Voron).
Parallel habe ich mir für meinen Betrieb ein weiteres NAS angeschafft. In diesem Fall ein AOOSTAR WTR MAX Ryzen 7 PRO. Es soll eine lokale KI hosten und als zusätzliches Backupziel für PBS dienen. Das Gerät verfügt über einen Oculink Port, für diesen habe ich zusätzlich eine AOOSTAR AG03 eGPU Dockstation bestellt. Mit einer potenten Grafikkarte sollte eine lokale KI (nicht SI und auch nicht Lake America) ganz gut darauf laufen. Als Software Unterbau soll wieder das gut eingespielte Team Proxmox/Truenas VM dienen. Um, meine lokale KI anzutreiben werde ich vorerst zu Testzwecken eine uralte Nvidia 1650 nutzen. Der RAM ist derzeit derart teuer, dass ich mich zähneknirschend für 2×24GB DDR5 entschieden habe, 2×32GB waren mir einfach viiiiel zu teuer. Als HDDs habe ich wieder 2 TB Hitachi bei Amazon genommen, das Stück für 79,- die werden per PCI Passthrough an die Truenas VM durchgereicht. Ich habe beim letzten NAS ebenfalls diese Platten gekauft und obwohl die Platten laut Aufkleber bereits viele Jahre alt sind, handelt es sich erneut um Lagerware, die noch keine Sekunde gelaufen ist. Für den Promox Host nehme ich eine 500 GB SSD NVME. Zusätzlich 2×1TB für den ZFS Mirror der die LXCs und VMs beherbergen wird.
Über den physischen Zusammenbau gibt es nicht viel zu sagen, erwähnenswert ist jedoch, dass man beim Abheben des Bodenblechs unbedingt vorsichtig walten lassen sollte, damit man das Lüfterkabel nicht abreißt. Das wäre mit beinahe passiert.
Im Bios habe ich TPM und Secureboot deaktiviert und die Option nach einem Stromausfall immer automatisch hochzufahren aktiviert. Die übrigen Einstellungen lasse ich alle auf “Auto”.
Da bei mir kein ECC RAM (ECC wird explizit unterstützt!) verbaut ist, habe ich sicherheitshalber vorab erfolgreich Memtest86 durchlaufen lassen. Der Speicher scheint in Ordnung zu sein.
Die Proxmox Installation läuft problemlos durch, die 500 GB NVME habe ich (wie immer) mit ext4 partitioniert und aus den beiden 1 TB NVMEs habe ich über die Proxmox GUI einen ZFS Mirror für die LXCs und VMs erstellt. Vorher habe ich noch GPT bei den beiden NVMEs aktiviert, braucht man vermutlich nicht, ich mache das aber trotzdem so gut wie immer.
Jetzt kommt der coole Teil 😃 Bei den Community Scripts gibt es seit Kurzem ein Testing Paket namens Vane. Vane ist der Nachfolger von Perplexica, einer lokalen! KI Internetrecherche ähnlich wie bei Google und Co. Die Suche läuft im Hintergrund über searxng, eine Cloud KI oder eine lokale KI über ollama wertet die Suche aus und generiert eine passende Antwort. Das Paket ist derzeit als “testing” markiert und ich habe mich derzeit scheinbar als Einziger für Tests gemeldet. (Natürlich nicht, hätte mich auch gewundert. Die Kommunikation läuft bei GitHub zusammen nicht bei Discord) Mal schauen wie sich das noch entwickelt. Ich werde Vane in einem Proxmox Setup einen eigenen Artikel widmen, da das aus meiner Sicht der absolute Knaller ist 😎 Vorher muss ich das aber erst noch ausführlich testen und optimieren, Aktuell läuft Vane (genauer gesagt ollama) bei mir noch zu 100% über die CPU
Der Screenshot ist kurz nach Installation aufgenommen, ollama hat aktuell 12 Kerne zugeteilt bekommen und 28GB RAM, andernfalls würde da nichts passieren. Die iGPU scheint (noch) nicht korrekt durchgereicht zu werden und DHL hat die GPU Dockingstation noch nicht geliefert (sollte hoffentlich heute ankommen). Eine einfache Suche, die den Internetzugriff testet, hat aber bereits funktioniert 😁
nachdem ich ein bisschen mit den Komponenten herumgespielt habe funktioniert nun auch die Abfrage über meine separate searxng Instanz (mehr zur Einrichtung folgt im Artikel zu Vane). Ich habe eine wiederkehrende Scherzfrage, mit der ich KI Recherchen gerne teste. Es geht um eine Anekdote über Helmut Kohl. Viele KIs in der Cloud sträuben/weigern sich darüber Auskunft zu erteilen oder scheitern sogar daran. Es ist übrigens kein Gerücht, die Geschichte wurde immerhin von Göran Persson, dem ehemaligen PM von Schweden kolportiert ;)
Ich habe den halben Samstag damit verplempert die Einzelteile des Voron bei einem Schraubenversender, Dold, Amazon etc. zusammenzuklicken. Vorab mein Fazit: Das lohnt sich kaum, aufgrund des erheblichen Zeitinvests für die Suche nach den Teilen! Es gibt diverse Onlineshops die Bausätze anbieten. Ich habe mich für einen Shop mit Sitz in Bonn entschieden. Dieser Shop betreibt auch einen Discordkanal und ich werde dort vermutlich sogar Hilfe erhalten, sollte dies notwendig werden. Die Preise sind außerdem, zumindest nach meiner Einschätzung, sehr fair, das Filament ist hier ebenfalls billiger als bei Prusa. Das Beste an dem Shop ist aber definitiv der Name 😉 –> Meltbro.de
Aktuell steht mein Prusa Drucker auf einem Ikea Lack Tisch. Da ich immer älter werde und ich keine Lust habe jedes Mal auf die Knie zu gehen, werde ich heute einen höheren Tisch für die beiden Drucker bauen. Das Ergebnis poste ich dann bildlich hier. Die Tischplatte (Spanplatte), die ich verwenden werde steht aktuell auf 4 Metallfüßen und hängt daher maximal durch. Ich muss also für eine plane Fläche einen Rahmen aus Balken bauen und die Rahmenteile irgendwie miteinander verbinden. Hoffentlich lässt sich die Tischplatte so wieder zurückbiegen, darauf wäre genug Platz für beide Drucker, die dann zusätzlich in einer ergonomischeren Höhe wären.
Ich habe mich während des Bauprozesses des Rahmens, für eine Teilverschraubung der Balken entschieden. Ich bin eigentlich ein Fan von Leim und Holzdübeln, allerdings möchte ich den Rahmen zerlegbar haben, sonst kriege ich ihn später ggf. nicht mehr durch die Tür oder das Treppenhaus.
Natürlich habe ich beim Bauen vergessen die Klötzchen, die für die Verschraubung in den Rahmen eingeleimt werden müssen, ebenfalls abzurichten und zu hobeln. Ich musste das Abricht/Hobelsetup nochmal aufbauen, was leider sehr viel Zeit gefressen hat und so der komplette Nachmittag für das Projekt draufgegangen ist.
Ablängen
Grob zuschneiden
Mit dem “Finger Remover” an zwei Seiten rechteckig machen, dann die Abrichte in einen Dickenhobel umbauen und die anderen beiden Seiten bei allen Bauteilen auf die gleiche Höhe bringen. Da die Balken aus dem Baumarkt nur grade aussehen, habe ich beim Hobeln, wie immer, ziemlich viel Material verloren. Ursprünglich hatten die Balken 7,4 cm x 5,4 cm, am Ende bin ich bei 6,9 cm x 5,1 cm rausgekommen
Für die Schrauben passende Klötzchen anleimen
Die Tischplatte hängt massiv durch, sowohl die Füße als auch die Platte sind von Ikea. Ich meine, dass das so vorgesehen war, in diesem Fall einfach nur Crap!
Irgendwann steht das Ding jedenfalls, das präzise Arbeiten hat sich gelohnt, wie man an den beiden Wasserwaagen sieht. Die Höhe erscheint mir ebenfalls sehr gut, mein Rücken wird es mir in Zukunft vermutlich danken.
Ich habe allerlei Krempel als Gewicht auf die Plattenenden gelegt. Ich hoffe, dass dieser kleine Spin im Laufe der nächsten Tage wieder verschwindet. Ich würde gerne an diesem, Tisch den Voron aufbauen und ein permanentes Wegrollen der Schrauben wird mich vermutlich in den Wahnsinn treiben. Evtl. muss ich den Rückbiegeprozess mit ein paar Klemmen beschleunigen, jetzt lasse ich es erst mal so.
Ich habe bereits seit einigen Jahren einen 3D-Drucker von Prusa. Der Drucker (MKS3+) gilt als robustes Arbeitspferd, ist aber technisch inzwischen etwas in die Jahre gekommen.
Die Druckqualität und das Tempo ließen sich durch ein Upgrade mit hochauflösenden NEMA Steppermotoren noch etwas verbessern, aber grundsätzlich ist bei dieser Modellreihe irgendwann Schluss. Außerdem bleibt der Druckraum bei maximal 25 x 21 x 22 cm begrenzt, neue Motoren hin oder her. Obwohl ich Prusa als Unternehmen mit Sitz in Europa (nähe Prag, schöne Stadt, nebenbei bemerkt!) sehr schätze, ist mir das Highendsegment mit einem größeren Druckraum für meine Hobbyanwendungen einfach zu teuer. Ein fertiger Drucker aus China wäre zwar dtl. billiger als ein fertiger Drucker von Prusa, kommt aber wegen nachträglich eingeführtem Cloud(Klau)zwang und möglichem/wahrscheinlichem Diebstahl geistigen Eigentums nicht infrage. Drucker von Bambu Lab stechen hier besonders negativ hervor.
Zum Glück gibts da eine Opensource Alternative, namens Voron. Die Baupläne werden von Hobbyisten gepflegt und weiterentwickelt, die Einzel- und Ersatzteile sind überall gut verfügbar und werden es auch in Zukunft bleiben und der Preis ist bei so einem Eigenbau aus Standardkomponenten natürlich unschlagbar. Zusätzlich belegen Vorondrucker bei Tests regelmäßig Spitzenplätze und halten derzeit (Stand meines Wissens) auch den Geschwindigkeitsrekord beim FDM 3D-Druck. So schnell wie in dem Video (inzwischen schaffen manche Enthusiasten den Benchy in unter 1 Minute!!!) muss es gar nicht sein mir würde die 1/5-1/10 der Geschwindigkeit (je nach Projekt) bereits ausreichen. Bei so einem Drucker ist man natürlich auch zu 100% auf sich alleine gestellt, da es keine Firma gibt, deren Support man mit seinen Fragen terrorisieren könnte.
Es stehen mehrere Modelle bei Voron zur Auswahl und ich dachte mir, wenn ich den Aufwand schon betreibe, dann lasse ich mir natürlich das Deluxe Modell Voron 2.4 mit 35×35x35cm Bauraum raus ;) Praktischerweise gibt es auf der Homepage von Voron einen Konfigurator der, je nach Größe, eine passende Einkaufsliste (inklusive möglicher Bezugsquellen) generiert. Die Einkaufsvorschläge für die Komponenten sind für Deutschland meist nicht optimal, daher werde ich hier in einem der nächsten Beiträge u.a. festhalten, wo ich welche Komponenten gekauft habe. Ich stehe mit keinem der Läden in Kontakt oder werde hierfür bezahlt. Ich habe auch keine der Einzelteile umsonst bekommen. Es ist daher auch nicht unbedingt als Empfehlung zu verstehen, sondern dient primär mir als Gedächtnisstütze. Falls es manche Einzelteile woanders billiger gibt, wäre daher ein Hinweis sehr nett. Theoretisch gib es bei der Größe kein Limit, wie bereits der großartige Ivan Miranda gezeigt hat. Die KI Claude kalkuliert für das Projekt mit 35×35x35cm ca. 1100-1900 € und ich hoffe, dass ich mich eher im unteren Bereich bewegen werde.
Ich habe mir vor ein paar Jahren mal eine kleine CNC für einen Dremel gebaut. Das hat anfangs sogar funktioniert… allerdings habe ich beim Abrichten einer Holzplatte nicht bedacht, dass der Dremel vielleicht durch Überforderung zu brennen beginnen könnte.
Der Dremel hat sich schließlich bei der Hälfte des Jobs mit einem Rauchwölkchen verabschiedet und ich habe das CNC-Gerät seitdem nicht mehr angefasst. Für eine größere Spindel ist das Ding einfach viel zu windig, für einen Laser nicht präzise genug und die meiste Freude hatte ich eh durch den Lerneffekt beim Zusammenbau. Die Reste kann ich nun gut für den Voron verwerten. Damit ich ein Andenken an den CNC Bau nach den Plänen von Nikodem Bartnik behalte, lasse ich das Foto in diesem Beitrag stehen.
Ich habe mir nun die Workflows angesehen. Sie sind aktuell (noch) etwas rudimentär, da wird sich aber vermutlich zukünftig noch was tun. Aktuell sind Workflows jedenfalls gut geeignet, um die Ausführung verschiedener Playbooks aneinanderzureihen.
Der große Vorteil so einer Kette ist, dass man dann das Ausführen eines nachfolgenden Playbooks an die Bedingung knüpfen kann, dass das vorherige Playbook ohne Fehler durchgelaufen ist. Bisher habe ich alle Playbooks zeitversetzt per cron aufgerufen, da ist die neue Methode per Workflow doch wesentlich besser.
Die Bedingungen wann/ob das nächste verknüpfte Playbook ausgeführt wird, musste ich erst suchen. Diese Einstellungsmöglichkeit versteckt sich hinter der Verbindungslinie zwischen zwei Tasks.
Scheinbar gibt es derzeit noch keine Möglichkeit so einen Workflow per Schedule in Semaphore anzustoßen. Bei “Schedule” kann man in Semaphore nur Tasks aber keine Workflows als Cronjob eintragen. Das kann man jedoch mit einem kleinen Trick umgehen. Dazu stoße ich den Workflow per http API Call mit einem neu erstellten Bashskript an. Das Bash Skript kann ich als “Task” bei Schedules in Semaphore eintragen. Ich erstelle in meinem Playbook Verzeichnis im LXC mit Semaphore eine neue .sh Datei z. B. trigger-sync-standorta.sh. Anschließend noch per chmod 755 ausführbar machen. Folgender Inhalt –>
#!/bin/bash
set -euo pipefail
curl -sf -X POST
-H "Authorization: Bearer ${SEMAPHORE_API_TOKEN}"
-H "Content-Type: application/json"
"http://localhost:3000/api/project/2/workflows/1/run"
speichern und per git committen, damit das Skript auch in Semaphore zur Verfügung steht. Das SSH Plugin für VSCodium macht solche Aktionen superkomfortabel. Das lästige committen auf der CLI entfällt hiermit.
Es scheint als würden die Workflows einfach durchnummeriert. Ein zweiter Workflow hätte die Adresse
(man beachte die “2” nach ../workflows) die Autorisierung läuft über ein Token, das ich zuerst in der Semaphore GUI neu anlegen musste.
Das neu erstellte Token trage ich ebenfalls in die altbekannte Variablendatei ein.
“passwords” o. ä. wäre ein besserer Name für diese Variablendatei gewesen, das ändere ich evtl. im Verlauf noch. Als nächstes unter Templates ein neues Bashskript einrichten. Hier die o.g. Variablendatei mit angeben sonst klappt die Authentifizierung nicht.
Das neu angelegte Template kann man nun bei Schedules als Cronjob eintragen. Das läuft seit 2 Tagen ausgezeichnet. Theoretisch kann man mit solchen Bashskripten am Anfang und Ende solcher Ketten auch Aufzweigungen, Schleifen usw. basteln. Ich bin aber ziemlich sicher, dass die Workflows noch erweitert werden, daher werde ich von solchen Bastellösungen eher Abstand nehmen.