PING hat 2025 einen KI-Server angeschafft. Er heißt cogito.ping.de und befindet sich im Rechnerraum des Gebäudes in der Joseph-von-Fraunhofer-Strasse.
Technische Daten
- CPU AMD Threadripper Pro 5955WX 16 cores 32 threads 4.5Ghz, boxed
- Mainboard Asus Pro WS WRX80E Sage SE Wifi
- 2x RAM Corsair Dominator Platinum RGB White UDIMM 64GB Kit DDR4-3600 CL18-19-19-39 (128GB gesamt)
GPU NVIDIA GeForce RTX 3090 Founders Edition 24 GB
GPU Zotac Gaming GeForce RTX 3090 Trinity OC 24 GB mit Noctua Lüftern
- Fractal Design Define 7 XL Black TG Dark Tint schallgedämmt Big-Tower
Enermax LiqTech TR4 II 280 CPU-Wasserkühlung
- Antec Neo Eco Gold Modular NE1300G m 1300W ATX 3.0 Netzteil
- 4x SSD Lexar NM790 1TB M.2 NVMe PCIe 4.0
- SSD Samsung EVO 850 500GB S-ATA
- SSD Samsung PM951 512GB M.2 NVMe
- 4x Noctua NF-P12 redux-1700 PWM 120mm Lüfter
siehe auch https://geizhals.de/wishlists/3870524
Zu dem Mainboard gehört auch eine PCIe 4.0 x16 Karte um vier PCIe 4.0 x4 NVMe SSDs anzuschließen. Dort befinden sich die 4 Lexar SSDs.
Durch die 2 GPUs stehen derzeit 48GB schnelles VRAM zur Verfügung.
Der Hauptspeicher ist auf 8 16GB-Module verteilt und nutzt so die 8 Speicherkanäle der AMD Threadripper Pro Architektur.
Software
Auf dem Rechner läuft derzeit Ubuntu 24.04 LTS.
Das Konzept sieht vor, die Dienste als Docker Container laufen zu lassen. Die compose Dateien liegen in Unterverzeichnissen unter /opt.
Mit nvtop kann der Status der GPUs angezeigt werden.
Über das Script /usr/local/bin/set-gpu-power.sh sind die GPUs aktuell auf 280W gedrosselt. Das führt zu nur sehr geringen Leistungseinbußen.
Storage
Die 4 Lexar NMVe SSDs bilden ein RAID0 das unter /opt eingehängt ist. Dadurch können große LLMs schnell in den Speicher geladen werden.
Die S-ATA SSD ist unter /var/local eingehängt.
Die PM951 NVMe SSD dient als Bootlaufwerk und enthält auch das OS.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 465.8G 0 disk
└─sda1 8:1 0 465.8G 0 part /var/local
nvme0n1 259:0 0 953.9G 0 disk
└─md0 9:0 0 3.7T 0 raid0 /opt
nvme1n1 259:1 0 953.9G 0 disk
└─md0 9:0 0 3.7T 0 raid0 /opt
nvme3n1 259:2 0 953.9G 0 disk
└─md0 9:0 0 3.7T 0 raid0 /opt
nvme2n1 259:3 0 953.9G 0 disk
└─md0 9:0 0 3.7T 0 raid0 /opt
nvme4n1 259:8 0 476.9G 0 disk
├─nvme4n1p1 259:9 0 1G 0 part /boot/efi
├─nvme4n1p2 259:10 0 2G 0 part /boot
└─nvme4n1p3 259:11 0 473.9G 0 part
└─ubuntu--vg-ubuntu--lv 252:0 0 445G 0 lvm /
$ blkid
/dev/nvme0n1: UUID="ebe75b1c-af8f-5e3a-aa0f-9464c3951451" UUID_SUB="1d5de863-0634-7dd3-0e97-7dec7f076aea" LABEL="cogito:0" TYPE="linux_raid_member"
/dev/nvme3n1: UUID="ebe75b1c-af8f-5e3a-aa0f-9464c3951451" UUID_SUB="440d89df-a9d1-bfc9-3634-e57bd579023e" LABEL="cogito:0" TYPE="linux_raid_member"
/dev/md0: LABEL="RAID" UUID="f57d1a53-8b0c-4119-a02b-e06632c7933d" BLOCK_SIZE="4096" TYPE="ext4"
/dev/nvme2n1: UUID="ebe75b1c-af8f-5e3a-aa0f-9464c3951451" UUID_SUB="eb15293d-d63b-c940-841d-a918a0ea0cba" LABEL="cogito:0" TYPE="linux_raid_member"
/dev/mapper/ubuntu--vg-ubuntu--lv: UUID="98bd9894-3827-42bb-a0f4-d92931530cab" BLOCK_SIZE="4096" TYPE="ext4"
/dev/nvme1n1: UUID="ebe75b1c-af8f-5e3a-aa0f-9464c3951451" UUID_SUB="797f9137-3a34-2689-5d0b-a294ee05c9e4" LABEL="cogito:0" TYPE="linux_raid_member"
/dev/sda1: LABEL="ssd500" UUID="c57d324d-3c4f-4f5d-90ca-3859ca87f550" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="ssd500" PARTUUID="48cd0c6a-827f-4882-ad1a-74e38e473d6b"
/dev/nvme4n1p3: UUID="XbVKNc-zwqt-qe2c-fj2e-8MRA-p8e0-XDQdsz" TYPE="LVM2_member" PARTUUID="5f6534ab-7909-40c3-b0b3-4865c7f90e5b"
/dev/nvme4n1p1: UUID="7006-F657" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="f57a2cbc-da3a-4322-8921-42b86e1fc564"
/dev/nvme4n1p2: UUID="8256bdab-088d-437e-a82b-b94470729f4c" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="6a4a7fc5-0f1a-4c23-8591-414239e1ebd8"
$ cat /proc/mdstat
Personalities : [raid0] [linear] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid0 nvme3n1[3] nvme2n1[2] nvme0n1[0] nvme1n1[1]
4000288768 blocks super 1.2 512k chunks
unused devices: <none>
Ollama mit Open-WebUI
Für Inferenz läuft i.d.R ein Ollama Server. Als WebUI gibt es dafür ein open-webui.
Für das Umwandeln von Office Dokumenten (zum Beispiel ODT) läuft Apache Tika.
Das Docker compose file liegt unter /opt/ollama/
Auf buero.ping.de läuft ein nginx der open-webui unter https://buero.ping.de erreichbar macht. Für den Login nutzt bitte unser Single Sign-On.
Im Model-Selektor von Open-WebUI erscheint ein grüner Punkt neben den LLMs, die derzeit im GPU Speicher sind.
Der Ollama Server ist auch aus dem Internet erreichbar. Details dazu findet ihr unter Ollama-Brave-Leo-AI
Das Script /usr/local/bin/ollama-nogpu.sh ist dafür da den Ollam Container neu zu starten falls dieser mal wieder die GPUs nicht erkennt.
ComfyUI
ComfyUI (primär für KI-Bildergenerierung) ist noch nicht fertig installiert, es liegt unter /opt/comfyui und kann bei Bedarf gestartet werden. Vorher sollte ollama gestoppt werden, weil nicht genügend GPU VRAM für beide Dienste gleichzeitig vorhanden ist.
