Blog 196883

Ein Blog mit bisher 16 Einträgen.

2023-08-13: Künstliche Sprachmodelle lokal

In den letzten Monaten war es sehr interessant zu beobachten, was sich im Bereich der künstlichen Sprachmodelle (LLM, large language model) tat, insbesondere im Open-Source-Bereich. Alle paar Wochen kamen neue Modelle hinzu.

Das Training von Sprachmodellen auf dem eigenen Rechner (oder einem temporär in einer Cloud gemieteten größeren System) sorgt für Spaß am Gerät. Das Schreiben eines eigenen Programms, welches die ganzen mathematischen Berechnungen hinter solch einem Sprachmodell selbst ausführt, kann erhellend sein. In JBLOOMz ist eine Java-Implementierung zur Textgenerierung von auf BLOOM basierenden Modellen. Eine Reihe von Matrizenmultiplikationen und Vektornormierungen erzeugt Text in natürlicher Sprache. Mit 3072 × 1024 oder mehr Elementen sind die eingesetzten Matrizen auch nicht gerade klein.

2021-11-13: Künstlicher Frost

Unter https://www.ab32.de/frost/ ist der experimentelle Textgenerator „Künstlicher Frost“ aus besonderem Anlass seit heute online. Es ist ein künstliches neuronales Text basierend auf drei GRU-Layern.

2021-10-31: SteamVR-Rätsel unter Arch Linux

Der Start von SteamVR on Arch Linux resultierte in einem Absturz:

[...]
Failed to create  for shader cache (No such file or directory)---disabling.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
SteamUpdateUI: An X Error occurred
X Error of failed request:  GLXBadContext
[...]

Als Grund stellte sich nach einiger Suche (bis hin zur Analyse des bwrap-Aufrufs per lsof) heraus, dass der nvidia-Treiber im System nicht zum den flatpak-Modulen passte.

[root@host ~]# pacman -Ss nvidia
[...]
extra/nvidia 470.74-10 [Installiert]
    NVIDIA drivers for linux
[...]
[sam@sam ~]$ ls -l /var/lib/flatpak/runtime/|grep -i nvidia
drwxr-xr-x 3 root root 4096 18. Sep 2018  org.freedesktop.Platform.GL32.nvidia-396-54
drwxr-xr-x 3 root root 4096  8. Jan 2019  org.freedesktop.Platform.GL32.nvidia-415-25
[...]
drwxr-xr-x 3 root root 4096 15. Nov 2020  org.freedesktop.Platform.GL32.nvidia-455-38
drwxr-xr-x 3 root root 4096 13. Jan 2021  org.freedesktop.Platform.GL32.nvidia-460-32-03
drwxr-xr-x 3 root root 4096 23. Sep 2018  org.freedesktop.Platform.GL.nvidia-396-54
drwxr-xr-x 3 root root 4096 19. Okt 2018  org.freedesktop.Platform.GL.nvidia-410-57
[...]
drwxr-xr-x 3 root root 4096 13. Jan 2021  org.freedesktop.Platform.GL.nvidia-460-32-03
drwxr-xr-x 3 root root 4096 30. Apr 2021  org.freedesktop.Platform.GL.nvidia-460-67
[...]

Abhilfe schaffte das manuelle Installieren der passenden flatpak-Pakete:

[root@host ~]# flatpak remote-ls flathub | grep nvidia
[...]
nvidia-470-74   org.freedesktop.Platform.GL32.nvidia-470-74             1.4
[...]
[root@host ~]# flatpak install org.freedesktop.Platform.GL.nvidia-470-74
Looking for matches…

        KENNUNG                                     Zweig  Op  Remote   Download
 1. [✓] org.freedesktop.Platform.GL.nvidia-470-74   1.4    i   flathub  222,5 MB / 222,6 MB

Installation complete.
[root@host ~]# flatpak install org.freedesktop.Platform.GL32.nvidia-470-74
Looking for matches…

        KENNUNG                                     Zweig Op Remote  Download
 1. [✓] org.freedesktop.Platform.GL32.nvidia-470-74 1.4   i  flathub 270,8 MB / 270,9 MB

Installation complete.

2021-07-12: jsmud-analysis

Unter github.com habe ich jsmud-analysis veröffentlicht, eine Open-Source-Bibliothek zum Interpretieren von Java-Bytecode in einer JVM inklusive JDWP-basiertem Debugger.

2020-11-12: Ernte

Zum Herbstende werden die letzten Reste vom Neozoon gesucht.

Halsbandsittich auf Sonnenblume Halsbandsittich über Kopf
Halsbandsittich (Psittacula krameri)

Auch Eiben können interessant sein.

Katze Eichelhäher
Nachbarkatze (Felis catus) und Eichelhäher (Garrulus glandarius)

2020-08-03: Distelfink

Das vorsichtige Erhalten eines schönen Exemplars von Cirsium vulgare kann mit dem Besuch von Distelfinken belohnt werden.

Distelfink in Distel (unreif) Distelfink in Distel (reif)
Distelfink in einer Distel (Cirsium vulgare)

Aber auch Sonnenblumen werden vom Distelfink besucht.

Distelfink untersucht eine Sonnenblume
Distelfink untersucht eine Sonnenblume

2020-06-30: Stream-Mediator

Unter https://github.com/srogmann/stream-mediator steht der Quelltext der unter www.ab32.de demonstrierten Video-Chat-Software zur Verfügung.

2020-06-01: Video-Chats per ab32.de

Unter ab32.de steht eine Demonstration von Video-Chats per WebRTC für zwei oder mehr Teilnehmer zur Verfügung. Die Anwendung hatte ich in den letzten Wochen entwickelt. Damit sind Video-Chats oder das Teilen von Fenstern möglich, benötigt wird lediglich ein aktueller Browser, keine dedizierte Software oder App. Die eigentliche Bildübertragung ist Peer-to-Peer, läuft also nicht über den Server.

2020-05-08: /sys/fs/cgroup ist leer

Aus bisher unbekannten Gründen mochte das grafische System eines Notebooks unter Arch Linux heute nicht hochfahren. Der Bootmanager erlaubte das Ergänzen des Kernel-Bootparameters systemd.debug_shell, damit stand dann auf Console Alt+F9 eine Root-Shell zur Verfügung. Eine etwas mühselige Analyse der Ausgabe von journal -xb und dem /sys-Filesystem zeigte, dass zwar alle cgroup-Filesysteme gemountet waren, aber /sys/fs/cgroup leer war – warum auch immer. Dies führte zu Meldungen wie der Folgenden.

Mai 08 10:52:32 arch001 systemd[699]: NetworkManager-wait-online.service: Failed to attach to cgroup /system.slice/NetworkManager-wait-online.service: No such file or directory
Mai 08 10:52:32 arch001 systemd[699]: NetworkManager-wait-online.service: Failed at step CGROUP spawning /usr/bin/nm-online: No such file or directory

cgroups ("control groups") sind an sich eine praktische Sache, kann doch damit der Ressourcen-Verbrauch (CPU, Speicher, ...) von Prozessen gut gesteuert werden, Freunde der Virtualisierung mögen sowas. Aber irgendwie hatten systemd und der Linux-Kernel es geschafft, dass /sys/fs/cgroup leer ist trotz gemounteter cgroup-Verzeichnisse:

tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroups gibt's mittlerweile in zwei Versionen: V1 und V2. Das systemd des Notebooks arbeitete noch im Hybrid-Modus, also mit einer Mischung von V1 und V2. Als ersten Ansatz deaktivierte ich die V1-cgroups durch das Setzen des folgenden systemd-Kernel-Parameters:
systemd.unified_cgroup_hierarchy=1
Nach dem Reboot war dann zwar nur noch ein cgroups2-Filesystem da, aber /sys/fs/cgroup/ war weiterhin leer. Da ich den Tag eigentlich anders verbringen wollte, legte ich /etc/systemd/system/repariere-cgroups.service an:
[Unit]
Description=Repariere /sys/fs/cgroups. Workaround, wegen irgendeines Problems ist /sys/fs/cgroups leer trotz gemounteter cgroup-Filesysteme, deswegen wird es nochmal gemountet.
ConditionPathIsDirectory=/sys/class/bluetooth

[Service]
Type=oneshot
ExecStart=/usr/bin/mount -t cgroup2 none /sys/fs/cgroup

[Install]
WantedBy=bluetooth.target

Damit bootete der Rechner wieder im graphischen Modus und das cgroup-Verzeichnis war wieder gefüllt!

[me@arch001 ~]$ ls -l /sys/fs/cgroup/
insgesamt 0
-r--r--r--  1 root root 0  8. Mai 16:36 cgroup.controllers
-rw-r--r--  1 root root 0  8. Mai 21:34 cgroup.max.depth
-rw-r--r--  1 root root 0  8. Mai 21:34 cgroup.max.descendants
-rw-r--r--  1 root root 0  8. Mai 16:36 cgroup.procs
-r--r--r--  1 root root 0  8. Mai 21:34 cgroup.stat
-rw-r--r--  1 root root 0  8. Mai 16:36 cgroup.subtree_control
-rw-r--r--  1 root root 0  8. Mai 21:34 cgroup.threads
-rw-r--r--  1 root root 0  8. Mai 21:34 cpu.pressure
-r--r--r--  1 root root 0  8. Mai 21:34 cpuset.cpus.effective
-r--r--r--  1 root root 0  8. Mai 21:34 cpuset.mems.effective
drwxr-xr-x  2 root root 0  8. Mai 16:36 init.scope
-rw-r--r--  1 root root 0  8. Mai 21:34 io.cost.model
-rw-r--r--  1 root root 0  8. Mai 21:34 io.cost.qos
-rw-r--r--  1 root root 0  8. Mai 21:34 io.pressure
-rw-r--r--  1 root root 0  8. Mai 21:34 memory.pressure
drwxr-xr-x 45 root root 0  8. Mai 21:50 system.slice
drwxr-xr-x  4 root root 0  8. Mai 15:37 user.slice

Die Lösung ist aber nur ein Workaround. Interessant zu wissen wäre, warum das cgroups-Verzeichnis seit gestern leer war.

2020-05-10, Update

Beim Problem vom 08.05.2020 handelt es sich um eine Race-Condition, der Workaround half nicht immer bzw. nur teilweise. Deswegen gingen auch hier heute ein paar weitere Stunden Recherche ins Land wegen systemd und dhcpcd. Unter stackexchange.com wird in einem Beitrag von ähnlichen Bootproblemen berichtet. Dort war DHCPCD 9.0.1 der Auslöser:

Auf dem betroffenen Notebook war jedoch bereits der DHCPCD 9.0.2. Aber in DHCPCD 9.0.2 gibt es das Hook-Skript /lib/dhcpcd/dhcpcd-hooks/00-linux:

# setup chroot mounts

if [ "$reason" = CHROOT ] && [ -n "$chroot" ]; then
        # Special case /dev/log
        if [ -h /dev/log ]; then
                devlogdir=$(dirname $(readlink /dev/log))
        else
                devlogdir=
        fi
        for d in /dev /proc /sys /run/udev $devlogdir; do
                [ -d "$d" ] || continue
                if ! mountpoint -q "$chroot$d"; then
                        mkdir -p "$chroot$d"
                        mount --bind $d "$chroot$d"
                fi
        done

Dieses Skript mountete unter anderem /sys neu und damit ging /sys/fs/cgroup kaputt. Systemd arbeitet nicht mehr mit chroot sondern mit systemd-nspawn, laut systemd-Autor „awesome“. Meine Meinung nach Stunden der teilweise recht mühseligen Recherche: Systemd beschleunigt den Boot-Vorgang, aber das Prädikat „awesome“ verdient dieses komplexe Werk nicht.

Das Hook-Skript 00-linux deaktivierte ich per Ergänzung von /etc/dhcpcd.conf:

nohook 00-linux

Überhaupt scheint systemd das Fehlschlagen von dhcpcd derzeitig übel zu nehmen. Erst als ich per systemctl disable dhcpcd@enp113s0.service den DHCP-Dienst von der nicht eingestecken Ethernet-Netzwerkkarte entfernte, klappte auch das Netzwerk des Notebooks per WLAN wieder.

2020-04-19: WebRTC

Seit geraumer Zeit wird WebRTC (Web Real-Time Communication) von den üblichen Browsern (Chrome, Firefox, ...) unterstützt. Dies ermöglicht browser-basierte Übertragung von Videodaten (Videochat, ...). Das Thema ist ein wenig komplex, aber es gibt allerhand Dokumentation, beispielsweise im MDN, und Beispiele, z.B. in Github (samples-server). Ein browserbasierter Videochat zwischen einem stationären Notebook und einem per OpenVPN für Android angebundenen Mobilgerät ist damit ohne fremden Server im Internet möglich. Im stationären LAN kann dann bereits ein Raspberry als vermittelnder Videoserver dienen.

2020-04-16

nicht klicken: Nach fast 20 Jahren Java-Applet jetzt stattdesssen mit JavaScript.

2020-04-13, Ostermontag

Vögel und Nagetiere sind unterwegs im Namen des Frühlings.

Amsel mit Moos im Schnabel
Ohne Moos nix los.
Meise auf der Kokosmatte
Meisen sind keine Pinguine.
Eichhörnchen mit Walnuss im Himbeertopf
Eichhörnchen vergessen nicht alles: Ein Eichhörnchen hüpfte ohne Nuss in den Himbeertopf und mit Walnuss wieder heraus – wo auch immer diese dort versteckt war.

2020-04-07

Zitat aus Das Virus, die Menschen und das Leben von Ellis E. Huber: Psychosozialer Stress, Ängste, Einsamkeit oder Ausgrenzung schwächen das individuelle und erst recht auch das soziale Immunsystem.

2020-04-03

David Kriesel: Corona-Plots und Interpretationshilfen, garantiert unaufgeregt.

2020-03-29

Logarithmische Darstellung von Fallzahlen des rki zu COVID-19. Zu sehen ist ein streckenweise exponentielles Wachstum, es nimmt im Laufe der Zeit leicht ab. Eine weitergehende Interpretation dieser Fallzahlen ist schwierig.

Diagramm mit Fallzahlen
Fallzahlen des rki (Stand 29.03.2020)
Diagramm mit Fallzahlen
Logarithmische Darstellung von Fallzahlen der Morgenpost.

2020-02-22

Im Gegensatz zur deutschsprachigen Wikipedia wird der SUV-Kritik in der englischsprachigen Wikipedia eine eigene Seite gewidmet (Stand: 13.04.2020).

Fabia Combi auf Parkplatz zwiscen zwei SUVs
Ein Fabia Combi (ein Kombi!) auf einem Einkaufsparkplatz im Februar 2020.

Kolophon

怪兽月光理论: Es ist 196883 = 47 · 59 · 71 = 196884 − 1.

Sascha Rogmann 
Letzte Änderung: 2023-08-13