Connect with us

Entwicklung & Code

Das CrowPanel Advanced 10.1″ ESP32-P4 als Smart Home Wetter-Display


Stellen Sie sich vor, Sie betreten morgens die Küche, schauen auf ein elegantes 10,1-Zoll-Display und wissen sofort: Heute gibt es Regen, die Temperatur liegt bei 14 °C, die Luft ist gut, der Wind kommt aus Südwest – und laut Kamera ist im Eingangsbereich draußen alles ruhig. Kein Griff zum Handy, kein Browser-Tab, kein Alexa-Gemurmel. Einfach pure Information, schön aufbereitet, auf einem Display, das Sie selbst programmiert haben. Genau diese Art von Anwendung erstellt der vorliegende Artikel. Das CrowPanel Advanced 10.1″ von Elecrow macht es spielend einfach – spielend deshalb, weil Anwender danach verstehen, was sie früher alles unnötig kompliziert machen mussten.

Weiterlesen nach der Anzeige

Das CrowPanel Advanced 10.1″ ESP32-P4 HMI AI Display ist kein gewöhnliches Bastel-Display. Es handelt sich vielmehr um ein vollständiges Computersystem im Displayformat – und zwar ein ernst zu nehmendes.


Michael Stal

Michael Stal

Prof. Dr. Michael Stal arbeitet seit 1991 bei Siemens Technology. Seine Forschungsschwerpunkte umfassen Softwarearchitekturen für große komplexe Systeme (Verteilte Systeme, Cloud Computing, IIoT), Eingebettte Systeme und Künstliche Intelligenz.

Er berät Geschäftsbereiche in Softwarearchitekturfragen und ist für die Architekturausbildung der Senior-Software-Architekten bei Siemens verantwortlich.

Im Zentrum steht der ESP32-P4 von Espressif: ein Dual-Core-RISC-V-Prozessor mit bis zu 400 MHz, 32 MByte OPI-PSRAM und 16 MByte Flash. Das ist deutlich mehr Rechenleistung als die meisten Embedded-Displays bieten und auch ausreichend, um Firmware für das Panel mit integrierten lokalen LLM-Modellen auszustatten.

Der offizielle Preis des Produkts beträgt 99,99 Euro, ich habe es aber schon günstiger gesehen.



Oben: Das Panel in Aktion. Unten links: Die Rückseite mit den Schnittstellen. Unten rechts: Die mitgelieferten Funkmodule, unter anderem für Wifi.

(Bild: ELECROW)

Das 10,1-Zoll-IPS-Panel mit 1024 × 600 Pixeln und kapazitivem Multi-Touch (GT911-Controller) ist scharf, blickwinkelstabil und hell genug für den Alltag. Dazu kommen ein MIPI-CSI-Kameraanschluss, I2S-Audio für externe Lautsprecher, eine microSD-Karte, USB-Typ-C und – das ist wichtig zu verstehen – kein eingebautes Wi-Fi im ESP32-P4 selbst. Stattdessen sitzt auf dem Board ein ESP32-C6 als Wi-Fi/Bluetooth-Koprozessor, der über eine interne Verbindung mit dem P4 kommuniziert. Für den Programmierer ist das vollständig transparent: Die gewohnte WiFi.h-Bibliothek funktioniert wie immer.

Weiterlesen nach der Anzeige

Warum kein Wi-Fi im P4? Espressif hat den ESP32-P4 als reinen Hochleistungs-Applikationsprozessor konzipiert – ohne Funk, dafür mit mehr Rechenleistung und Speicher. Die Funkanbindung übernimmt ein separater, mitgelieferter Chip. Das ist ein bewusster Architekturentscheid, keine Sparmaßnahme.

Und dann sind da noch die Erweiterungsmodule: Wi-Fi HaLow (802.11ah, Sub-GHz-Band) für große Reichweiten und Meshtastic über LoRa für komplett netzunabhängige Kommunikation sowie das ESP32-Modul ESP32-H2. Das macht das CrowPanel zu einem vielseitigen Embedded-Display-System.

Es ist müßig, alle Schnittstellen des Moduls theoretisch zu beschreiben. Stattdessen möchte ich ein praktisches Beispiel umsetzen.

Der Artikel entwickelt eine Smart-Home-Wetterstation. Diese gibt regelmäßig die neuesten Wetterinformationen aus und benutzt dafür folgende Funktionen:



Die grundlegende Funktionalität der WeatherMap und woher die Information stammt

In einem echten Projekt lassen sich selbstverständlich stattdessen Wettersensoren nutzen und ablesen, zumindest für die aktuellen Wetterdaten Temperatur, Feuchtigkeit, Windgeschwindigkeit, Luftqualität, Luftdruck. Diese Mühe erspart sich der Beitrag aufgrund der zahlreichen Konfigurationsmöglichkeiten und unterschiedlichen Komponenten. Wichtiger ist allein das Verständnis der prinzipiellen Vorgehensweise.

Das UI bauen wir mit LVGL 8.3 (Light and Versatile Graphics Library) – der verbreiteten Open-Source-Grafikbibliothek für Embedded-Systeme. Die Wetterdaten stammen von OpenWeatherMap – ein kostenloser API-Key reicht für unsere Zwecke vollkommen aus (er erlaubt 60 Anfragen/Minute, wovon wir nur eine Anfrage alle 5 Minuten benötigen). Alle drei verwendeten APIs (/weather, /forecast, /air_pollution) nutzt die Anwendung im kostenlosen Tier.

Kritische Vorab-Hinweise:

  1. Die Ansteuerung des 10,1″-Panel des CrowPanel erfolgt über den RGB-Parallel-Bus des ESP32-P4. Für RGB-Parallel-Displays verwendet man die esp_lcd_rgb_panel-API aus dem ESP-IDF, die direkt in Arduino ESP32 v3.x verfügbar ist.
  2. Erst Arduino ESP32 v3.1.0 oder neuer unterstützt den ESP32. Diese Version basiert auf ESP-IDF v5.3 und bringt geänderte APIs mit sich — insbesondere für I2S und den Display-Treiber.
  3. Der Touch-Controller GT911 von Goodix hat ein komplett anderes I2C-Protokoll als etwa ein FT6336. Er benötigt eine spezifische Initialisierungssequenz und register-basierte Kommunikation über 16-Bit-Adressen.
  4. LVGL-Symbole als Icons: LVGL 8.3 enthält eine eingebaute Symbol-Schriftart (basierend auf FontAwesome 4.7). Diese Symbole sind immer verfügbar — ohne zusätzliche Konfiguration — und lassen sich für alle Icons im UI verwenden: Thermometer, Wind, Luftfeuchtigkeit, Kamera, Wi-Fi, Standort und mehr.

Um das System entwickeln zu können, benötigen Entwicklerinnen die folgenden Bibliotheken:



All you need are Libraries

Der Arduino-Boardmanager muss die Einstellungen des Boards vornehmen:



In 3 Schritten machen wir den Boardmanager der Arduino IDE mit dem CrowPanel bekannt.

Erst sollten Sie Arduino/libraries/lvgl/lv_conf_template.h nach Arduino/libraries/lv_conf.h kopieren ← eine Ebene höher als der lvgl-Ordner!

Danach nehmen Sie die im Folgenden dokumentierten Einstellungen vor:


// lv_conf.h — Konfiguration für CrowPanel Advanced 10.1" ESP32-P4

// ── SCHRITT 1: Datei aktivieren
// Diese Zeile MUSS von 0 auf 1 geändert werden!
// Solange hier 0 steht, ignoriert LVGL die gesamte Datei.
# if 1   // ← war: #if 0  ← DIESE ÄNDERUNG IST ZWINGEND ERFORDERLICH!

// ── Farbtiefe
# define LV_COLOR_DEPTH 16   // RGB565 für das RGB-Panel

// ── Auflösung
# define LV_HOR_RES_MAX 1024
# define LV_VER_RES_MAX 600

// ── Tick-Quelle: millis() verwenden
// Mit dieser Einstellung ruft LVGL intern millis() auf.
// WICHTIG: lv_tick_inc() darf dann NICHT manuell aufgerufen werden!
# define LV_TICK_CUSTOM                  1
# define LV_TICK_CUSTOM_INCLUDE          "Arduino.h"
# define LV_TICK_CUSTOM_SYS_TIME_EXPR    (millis())

// ── Speicher für LVGL intern
# define LV_MEM_SIZE (128U * 1024U)   // 128 KB

// ── Widgets aktivieren
// Alle verwendeten Widgets müssen explizit aktiviert sein!
# define LV_USE_ARC      1   // Pflicht: Spinner hängt von Arc ab!
# define LV_USE_BAR      1   // AQI-Fortschrittsbalken
# define LV_USE_BTN      1   // Refresh-Button
# define LV_USE_LABEL    1   // Alle Textelemente
# define LV_USE_SPINNER  1   // Lade-Spinner (braucht LV_USE_ARC=1)
# define LV_USE_IMG      1   // Für zukünftige Bild-Widgets

// ── Animationen aktivieren
// Pflicht für lv_bar_set_value(..., LV_ANIM_ON) und den Spinner!
# define LV_USE_ANIMATION 1

// ── Fonts aktivieren
// Alle im Projekt verwendeten Schriftgrößen müssen hier aktiviert sein.
// Nicht aktivierte Fonts führen zu Linker-Fehlern ("undefined reference")!
# define LV_FONT_MONTSERRAT_12  1   // Status-Leiste, Vorhersage-Details
# define LV_FONT_MONTSERRAT_14  1   // Labels, Beschriftungen
# define LV_FONT_MONTSERRAT_16  1   // Wetterbeschreibung, Datum, Vorhersage
# define LV_FONT_MONTSERRAT_20  1   // Icons, AQI-Text
# define LV_FONT_MONTSERRAT_22  1   // Luftfeuchtigkeit, Wind, Luftdruck, "C"
# define LV_FONT_MONTSERRAT_28  1   // Uhrzeit in der Kopfzeile
# define LV_FONT_MONTSERRAT_48  1   // Große Temperaturanzeige (PFLICHT!)

// ── Symbol-Font
// Die eingebaute Symbol-Schriftart (FontAwesome 4.7 Subset) ist IMMER verfügbar.
// Kein zusätzliches #define nötig — LV\_SYMBOL\_\* funktioniert out-of-the-box.
// Verwendete Symbole in diesem Projekt:
//   LV_SYMBOL_HOME        → Stadtname in der Kopfzeile
//   LV_SYMBOL_GPS         → Datum / Standort
//   LV_SYMBOL_REFRESH     → Refresh-Button
//   LV_SYMBOL_TINT        → Temperatur (Thermometer-ähnlich)
//   LV_SYMBOL_VOLUME\_MAX  → Luftfeuchtigkeit / Regen-Icon
//   LV_SYMBOL_LOOP        → Wind (kreisförmige Bewegung)
//   LV_SYMBOL_UP          → Luftdruck
//   LV_SYMBOL_WIFI        → Luftqualität / Status-Leiste
//   LV_SYMBOL_IMAGE       → Kamera / Sonnig
//   LV_SYMBOL_OK          → AQI gut / Klarer Himmel
//   LV_SYMBOL_BELL        → AQI mäßig
//   LV_SYMBOL_WARNING     → AQI schlecht / Fehler
//   LV_SYMBOL_CHARGE      → Gewitter / Blitz
//   LV_SYMBOL_STOP        → Schnee
//   LV_SYMBOL_EYE_OPEN    → Nebel
//   LV_SYMBOL_EYE_CLOSE   → Bewölkt




Source link

Entwicklung & Code

AWS Emulator im Detail: Die ganze Cloud auf dem eigenen Rechner?


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Amazon Web Services (AWS) hat einen eigenen AWS Emulator veröffentlicht. Er bildet die AWS-APIs auf dem eigenen Rechner nach, AWS CLI, SDKs und Coding-Agenten schicken ihre Aufrufe an einen lokalen HTTPS-Endpunkt. Mit seinem Stolz darauf, dass der Emulator vollständig von KI-Agenten entwickelt wurde, setzte sich AWS aber direkt in die Nesseln: Die Rezeption fiel kritisch aus – wie bei hundertprozentig KI-generierter Software zurzeit üblich – und dem Vergleich mit etablierten Drittanbieter-Tools wie LocalStack hält der Emulator wohl noch nicht stand.

Weiterlesen nach der Anzeige

Entwickler könnte er dennoch interessieren: AWS-Anwendungen lassen sich ohne Deployment lokal testen, CI/CD-Pipelines brauchen keine AWS-Zugangsdaten mehr und – was AWS besonders unterstreicht – Coding-Agenten können schneller und risikoärmer Ressourcen anlegen und Ergebnisse prüfen. AWS bringt also agentisch entwickelte Software für die Entwicklung mit Agenten. Es fällt keine Servicegebühr an, ein AWS-Konto braucht es nicht und der Quellcode steht unter der CC0-Lizenz auf GitHub.

iX-plore ist die Online-Serie des iX-Magazins für alle, die neue Tools und Technologien entdecken möchten. In kurzen Beiträgen stellen wir vor, was sie können, wofür sie sich eignen und warum sich ein genauerer Blick lohnen könnte.

Der Emulator ist in Rust geschrieben, die Dienste erzeugt AWS aus denselben API-Modellen, aus denen auch die SDKs entstehen. Kommt ein Dienst oder eine API hinzu, tauchen sie im Emulator auf. Alle Dienste, für die ein Modell im öffentlichen Repository AWS API Models liegt, werden auch unterstützt.

Wie genau der Emulator AWS nachbildet, misst AWS mit Fidelity-Tests. Jeder Test ist ein kurzes Python-Programm, das über das AWS-SDK boto3 einen Ablauf durchspielt, etwa ein Objekt zu speichern, zu lesen und wieder zu löschen. Die Abläufe werden dann gegen die echte Cloud geprüft, als Referenz dient die Region US West (Oregon), während globale Dienste in US East (N. Virginia) geprüft werden. Der Emulator besteht einen Test nur, wenn bei jedem Aufruf Statuscode, Antwort, Fehlercode und Fehlermeldung mit der Cloud übereinstimmen, dasselbe gilt für die Ressourcen und Daten, die der Ablauf erzeugt. Die Testsuite umfasst Zehntausende Tests, ist öffentlich und enthält auch die, die noch scheitern. Mit dem Python-Programm fidelity_tests_runner können Nutzer die Tests lokal gegen den Emulator laufen lassen.

Trotz der hohen API-Abdeckung hat die Emulation aber bewusste Grenzen: Für Sicherheitstests eignet sich das Tool laut AWS nicht, da es weder IAM- noch ressourcenbasierte Richtlinien wie die echte Cloud auswertet. Auch Cross-Account- und Cross-Region-Szenarien bildet es nicht ab, sämtliche Aufrufe laufen unter einer festen Dummy-Konto-ID.

Jede Instanz des Emulators bekommt einen eigenen Port, eigene Schlüssel und einen eigenen Zustand im Arbeitsspeicher. Mehrere Agenten oder CI-Jobs teilen sich also keine Buckets, Tabellen oder Queues und arbeiten parallel, ohne sich gegenseitig Ressourcen zu überschreiben. Nutzer des AWS SDK for Rust können den Emulator außerdem im Embedded-Modus betreiben, wobei er direkt ins Test-Binary kompiliert wird. Er läuft dann im selben Prozess und der Test übergibt dem SDK einen HTTP-Client des Emulators statt des Netzwerk-Connectors. Auch hier sind die Instanzen voneinander isoliert, sodass Tests parallel laufen können.

Weiterlesen nach der Anzeige

Coding-Agenten können den Emulator mit dem Skill aws-emulator direkt installieren, starten und verbinden, dafür braucht es allerdings die AWS CLI ab Version 2.35.0. Solche Skills sind im Prinzip Markdown-Anleitungen, die der Agent bei Bedarf lädt. Der Befehl aws agent-toolkit add-skill in der AWS CLI installiert sie für alle Agenten, die es auf dem Rechner findet. Unter Linux gibt es RPM- und Debian-Pakete, unter Windows und macOS einen Docker-Container. Ein fertiges Docker-Image gibt es nicht, das müssen Nutzer aus einem kurzen Dockerfile aus der Dokumentation zusammenbauen. Standardmäßig sendet der Emulator anonymisierte Nutzungsdaten an AWS, was sich jedoch per Start-Flag oder Umgebungsvariable abschalten lässt.

Wer den Emulator selbst kompiliert, braucht Linux auf x86_64 oder aarch64, eine Rust-Toolchain, einen C-Compiler und mindestens 100 GByte freien Speicherplatz für die Build-Artefakte. Jeder emulierte Dienst ist ein eigenes Rust-Paket (Crate), weshalb schon ein Debug-Build sehr groß wird. Das gilt auch für den Embedded-Modus, denn der erste cargo test-Lauf kompiliert sämtliche Service-Crates des Emulators mit. AWS empfiehlt, das Build-Verzeichnis in der CI zu cachen und den Emulator auf einen Release-Commit festzulegen.

Matthew Goldberg, Senior Principal Engineer im Developer-Tools-Team von AWS, setzt mit dem Emulator eine KI-Duftnote: Nicht nur ist die Software vor allem auf das schnelle Testen von agentischer KI zugeschnitten, sondern sie ist laut Amazons Firmenblog auch ausschließlich von autonomen Agenten geschrieben. Das Team hat den Code weder verfasst noch geprüft. Goldberg beschreibt, wie ihn der autonome Bau eines C-Compilers von Agenten dazu inspirierte und der Emulator aus einem simplen Wochenendprojekt hervorging. Ein Team von Agenten pflegt die Testsuite, ein zweites sucht Abweichungen von der echten Cloud, ein drittes setzt die Korrekturen um. Jede Änderung muss zudem vor dem Merge ein automatisiertes Quality Gate passieren, an dem weitere Agenten unter anderem die Sicherheit des Codes kontrollieren.

Die autonome Entwicklung lässt sich in den Repository-Verzeichnissen issues/things-that-now-work und issues/things-that-do-not-work nachvollziehen, in die die Agenten hineinschreiben. Menschliche Hilfe von außen ist dabei nicht vorgesehen: Zwar können Nutzer auf GitHub Fehler melden, Pull-Requests nimmt AWS für das Projekt aber nicht an. Ganz unabhängig von dem Tool an sich ist hier also anschaulich zu sehen, in welche Richtung Softwareentwicklung gerade steuert – und wie die großen Systemhäuser versuchen, Vibe-Coding sinnvoll anzugehen.


(kki)



Source link

Weiterlesen

Entwicklung & Code

Gestohlene Token: Secret-Stealer in Tausenden GitHub-Repositories


Mit gestohlenen Zugriffstoken für GitHub-Konten schleusen unbekannte Angreifer seit Dienstag Schadcode in Repositories ein, der die Secrets aus GitHub Actions und Cloudzugangsdaten abgreift.

Weiterlesen nach der Anzeige

Das Sicherheitsunternehmen Aikido zählt im Rahmen der auf den Namen wfx-loot getauften Kampagne bereits 4837 übernommene Konten, über die die Angreifer 61.764 Repositories attackiert haben. In mehr als 1800 Fällen sollen Workflows den Schadcode bereits ausgeführt haben.

Die Angreifer nutzen anscheinend keine Lücke in GitHub Actions aus, sondern missbrauchen die Schreibrechte gestohlener Token. Woher diese stammen, ist nur teilweise geklärt. Laut Fly.io wurden Token seiner GitHub-App missbraucht, die aus öffentlich erreichbaren .git/config-Dateien stammten; der Hoster widerruft sie. Eine Stellungnahme von GitHub liegt noch nicht vor.

Das Sicherheitsunternehmen SafeDep hat Schadcode-Commits bereits in über 8000 öffentlichen Repositories gefunden. Noch am Donnerstagmittag listete die GitHub-Suche mehr als 66.000 der typischen Test-Pull-Requests, rund 4300 davon vom selben Tag.

Ähnlich wie zuletzt beim Wurm testmetest erreichen Angreifer laut Aikido über Mitwirkenden- und Organisationsrechte mit über 10.000 Test-Pull-Requests auch Repositories, die den übernommenen Konten nicht selbst gehören. Damit können auch Organisationen betroffen sein, deren eigene Zugangsdaten gar nicht gestohlen wurden. Dürfen die Workflows eines Repositorys auf AWS oder Azure zugreifen, nutzt der Schadcode die erbeuteten Zugänge, um Hintertüren in den Cloudkonten einzurichten.

Die Angreifer lassen ihren Opfern kaum Zeit zu reagieren. Sie öffnen zunächst einen Pull Request, um die Schreibrechte zu bestätigen. Dann folgt der eigentliche Schadcode: ein Shellskript, das die Angreifer in einen bestehenden Workflow einfügen, als neuen Workflow ablegen oder in npm-Projekten bei jeder Installation starten lassen.

Meist schon innerhalb einer Minute machen die Angreifer die Änderungen rückgängig und löschen den Workflow-Lauf samt Logs. Oft weist nur eine fehlende Laufnummer auf den Angriff hin. Eine Branch-Protection für vorgeschriebene Status-Checks kann das Skript mit gefälschten Erfolgsmeldungen aushebeln. Aikido zufolge setzt das Skript solche gefälschten Status-Checks tatsächlich ab; in den von SafeDep untersuchten Proben war diese Funktion dagegen nicht aktiviert.


Mit einem gestohlenen Token testen die Angreifer zuerst ihre Schreibrechte, bevor sie den Stealer auf einem von drei Wegen einschleusen und die Änderung wieder zurücknehmen.

Mit einem gestohlenen Token testen die Angreifer zuerst ihre Schreibrechte, bevor sie den Stealer auf einem von drei Wegen einschleusen und die Änderung wieder zurücknehmen.

Mit einem gestohlenen Token testen die Angreifer zuerst ihre Schreibrechte, bevor sie den Stealer auf einem von drei Wegen einschleusen und die Änderung wieder zurücknehmen.

(Bild: SafeDep)

Neben Token für KI-Dienste wie OpenAI, Anthropic oder Cursor fischt das eingeschleuste Skript insbesondere die Secrets aus GitHub Actions ab, außerdem Zugangsdaten für Clouddienste, Container-Umgebungen, Paketregister und SSH.

Weiterlesen nach der Anzeige

Haben die Bedrohungsakteure erst einmal Zugang zu Sitzungen bei AWS, Google Cloud und Azure, geht der Angriff weiter: Bei AWS öffnet das Skript eine IAM-Rolle für jedes AWS-Konto, in Azure trägt es zusätzliche Anmeldewege für Workflows aus dem kompromittierten Repository ein. Erbeutete Daten schickte das Skript laut Aikido in dieser Kampagne per HTTP an Server der Angreifer. SafeDep fand in untersuchten Payloads zudem eine Exfiltration über Telegram.

Entwicklerinnen und Entwickler, die seit Dienstag einen Branch wfx-docs, den Pull-Request docs: dependency audit notes oder Commits wie ci: refresh build cache, chore: add ci helper und chore: add dependency audit workflow in ihren Repositories finden, sollten das zugehörige Konto als kompromittiert ansehen, auch wenn noch kein Schadcode folgte. Verdächtig sind laut den Sicherheitsforschern von Aikido zudem kurzlebige Branches, die mit chore/ beginnen und auf acht Zufallszeichen enden. Betroffene sollten Token, OAuth-Freigaben und SSH-Schlüssel ihres Kontos widerrufen.

Wurde bereits Schadcode ausgeführt, müssen Betroffene neben dem Austausch der Secrets auch die Hintertüren eigens entfernen, etwa AWS-Rollen, die jedem Konto vertrauen, oder in Azure Federated Credentials mit dem Präfix wfx-ci-. Wer npm install auf einem betroffenen Commit ausgeführt hat, muss auch den eigenen Rechner als kompromittiert betrachten.

Der Schadcode gelangte auch in Paketdistributionen. Aikido nennt das Packagist-Paket digitalelvis/neuronai-studio 3.14.3 sowie die Go-Modul-Versionen github.com/onuragtas/docker-env v1.0.278 und v1.0.280. SafeDep führt darüber hinaus github.com/onuragtas/redock, eine weitere docker-env-Version und eine über den Go-Modul-Proxy verfügbare Pseudo-Version von github.com/vkuznet/gocurl auf. Bei den Go-Modulen liegt der Schadcode in einer GitHub-Actions-Workflow-Datei; ein gewöhnlicher Go-Build führt diese nicht aus. Wer ein solches Modul lediglich als Go-Abhängigkeit einbindet, ist dadurch wahrscheinlich nicht betroffen.


(mro)



Source link

Weiterlesen

Entwicklung & Code

htop für die Grafikkarte: GPU Taskman leuchtet den Grafikspeicher aus


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Mit GPU Taskman hat Microsoft-Vizepräsident und Softwareentwickler Scott Hanselman einen quelloffenen Task-Manager für Grafikkarten veröffentlicht. Das auf GitHub entwickelte Programm läuft unter Windows, Linux einschließlich WSL und macOS auf Apple Silicon. Seine Terminaloberfläche verbindet eine Prozessliste mit Gerätedaten zu Speicherbelegung, Auslastung, Temperatur, Leistungsaufnahme und Taktraten. Zu einzelnen Prozessen liefert es außerdem Hinweise auf erkannte Runtimes und Modelle. Welche Messwerte verfügbar sind, hängt von Betriebssystem, GPU, Treiber und Zugriffsrechten ab.

Weiterlesen nach der Anzeige

GPU Taskman liest dafür nicht beliebige Inhalte des Grafikspeichers aus, sondern kombiniert mehrere Informationsquellen. Unter Windows stammen die prozessbezogenen Speicher- und Aktivitätswerte aus den Performance-Countern des Betriebssystems, Nvidias NVML und AMDs ADL ergänzen Gerätedaten. Geladene Bibliotheken geben Hinweise auf die Runtime. Per Memory-Mapping eingebundene Dateien und Kommandozeilenargumente helfen bei der Modellerkennung. Unterstützte lokale Server-APIs liefern zusätzliche Angaben.

Bei Modellen im GGUF-Format kann das Programm unter anderem Modellname, Parameterzahl und Quantisierung anzeigen sowie den Speicherbedarf von Gewichten und KV-Cache abschätzen. Der KV-Cache hält bereits berechnete Key- und Value-Vektoren der Attention-Schichten vor. Ein größeres Kontextfenster kann deshalb mehr Speicher erfordern, obwohl die Modellgewichte unverändert bleiben. GPU Taskman stellt solche Schätzungen dem gemessenen Speicherverbrauch des Prozesses gegenüber.

Dabei kennzeichnet das Tool die Herkunft seiner Angaben: Messungen, Schlussfolgerungen, Schätzungen und Angaben einer Laufzeitumgebung sind nicht gleichzusetzen. Eine Modelldatei auf der Festplatte beweist beispielsweise noch nicht, dass ein Prozess sie gerade verwendet. Nicht verfügbare Zähler erscheinen als unbekannt, nicht als null Speicherverbrauch. In Summen gehen nur gemessene Speicherwerte ein.

Laut den Release Notes ergänzte Version 0.3.5 die Unterstützung für Intel-GPUs unter Linux mit den Treibern i915 und xe. Hinzu kamen eine Übersicht für CPU- und RAM-Auslastung sowie entsprechende Spalten je Prozess. Der Befehl gputaskman record zeichnet in regelmäßigen Abständen JSON-Snapshots auf. Damit lässt sich zum Beispiel verfolgen, wie sich die Speicherbelegung während eines Testlaufs verändert.

Version 0.4.0 ergänzt unter Linux weitere Intel-Messwerte: die Auslastung der GPU und ihrer Video-Engine sowie die Leistungsaufnahme integrierter Intel-GPUs. Für diese zusätzlichen Messwerte benötigt das Programm unter Linux Root-Rechte. Ohne sie zeigt es die betreffenden Werte als nicht verfügbar an und nennt den Grund. Außerdem bringt das jüngste Update ein Linux-Backend für Huaweis Ascend-NPUs vom Typ 310P. Über npu-smi erfasst es jetzt Geräte- und Prozessspeicher sowie Aktivitätsdaten der KI-Beschleuniger.

GPU Taskman ist in Python geschrieben und steht unter der MIT-Lizenz. Für die Installation als Python-Paket setzt es Python 3.11 oder neuer voraus. Mit uv tool install gputaskman oder pipx install gputaskman lässt es sich in einer isolierten Umgebung installieren. Anschließend startet es mit gputaskman oder gtm.

Weiterlesen nach der Anzeige

Für Windows bietet das Projekt außerdem portable ZIP-Pakete für x64 und ARM64, die keine separate Python-Installation benötigen. Beim Entpacken muss das vollständige Paket einschließlich des Verzeichnisses _internal erhalten bleiben. Die Entwickler bezeichnen das Programm ausdrücklich als frühe, experimentelle Software – insbesondere die Modellzuordnungen und berechneten Speicheraufteilungen sind keine direkten Messungen.


(fo)



Source link

Weiterlesen

Beliebt