Forum: Offtopic Grafikkarte für KI reservieren?


von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Wir sind gerade dabei, einen weiteren PC für Versuche mit lokaler KI 
(GPT4All) zu konfigurieren. Dazu haben wir eine quasi 
"noname"-Grafikkarte für den Bildschirm eingebaut und eine RTX3060 als 
Hirn-Booster für die KI. Das System kommt damit immerhin auf ca. 15 
Token/s (gegen 3...5 Token/s mit i7-CPU only).

Wie kann ich nun sicherstellen, dass die 12GB der RTX ausschließlich für 
die KI genutzt werden und nicht (zumindest teilweise) für irgendwelche 
Desktops des OS, die dort niemand braucht, weil gar kein Monitor 
angeschlossen?

Oder regelt sich das von selbst, eben weil kein Monitor angeschhlossen 
ist?

OS ist Ubuntu 22.x ...

: Bearbeitet durch User
von Icke ®. (49636b65)


Lesenswert?

frag doch einfach die KI...

von Rbx (rcx)


Lesenswert?

Frank E. schrieb:
> Oder regelt sich das von selbst, eben weil kein Monitor angeschhlossen
> ist?

Nein, ..vielleicht doch, kommt drauf an, könntest du das Setup mit dem 
Monitor noch einmal genauer beschreiben?

Wenn Konflikte auftauchen, dann kann man die mit Konsolebefehlen 
angehen. Außerdem könnte kann man auch die Interne CPU-Grafik nutzen, 
oder soll die mitrechnen? Du hättest dann praktisch 3 "Motoren".

von A. S. (rava)


Lesenswert?

1
nvidia-smi
 zeigt dir an, welche prozesse wie viel GPU-Speicher reserviert haben. 
Unter Linux ist die Ausgabe auch einigermaßen vernünftig.

Siehst du da Probleme?

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Rbx schrieb:
> Frank E. schrieb:
>> Oder regelt sich das von selbst, eben weil kein Monitor angeschhlossen
>> ist?
>
> Nein, ..vielleicht doch, kommt drauf an, könntest du das Setup mit dem
> Monitor noch einmal genauer beschreiben?

Das schien mir eigentlich recht einfach und deutlich beschrieben: Der 
Monitor hängt an der 0815-Graka (wo auch brav der Ubuntu-Desktop 
erscheint, der Rechner bedient wird) und an den Anschlüssen der RTX 
steckt nix, die soll nur rechnen.

: Bearbeitet durch User
von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

A. S. schrieb:
> nvidia-smi
>  zeigt dir an, welche prozesse wie viel GPU-Speicher reserviert haben.
> Unter Linux ist die Ausgabe auch einigermaßen vernünftig.
>
> Siehst du da Probleme?

Hab ich noch nicht probiert, mangels Kenntnis. Werde ich aber tun ..

von Rbx (rcx)


Lesenswert?

Frank E. schrieb:
> Das schien mir eigentlich recht einfach und deutlich beschrieben: Der
> Monitor hängt an der 0815-Graka (wo auch brav der Ubuntu-Desktop
> erscheint, der Rechner bedient wird) und an den Anschlüssen der RTX
> steckt nix, die soll nur rechnen.

Ja ok, wenn es danach geht, brauchst du eigentlich gar keinen Desktop. 
Der wird ja bei mehr Konsole-orientierten Linuxen erst aus der Konsole 
gestartet. So ähnlich wie früher seine Mails in DOS angesehen hat, und 
dann Windows per Konsolebefehl gestartet hatte.

Dann noch: Wenn du schon 2 Grafikkarten hast, kannst du die doch 
zusammenrechnen lassen und für den Konsolebildschirm die CPU-interne 
Grafik nutzen. Bei weiteren Hintergründen (z.B. CUDA/MPI) kann es 
natürlich komplexer werden, je nachdem - und man muss sich genauer (auch 
länger) einarbeiten.
Prinzipiell müsste auch in deinen Unterlagen stehen, wie was 
einzurichten ist.
(https://github.com/KomputeProject/kompute)

von Daniel A. (daniel-a)


Lesenswert?

Ich hab nur die interne Grafikkarte, daher kann ich das alles nicht 
testen.

Bei nicht-proprietären Treibern, also Mesa Treibern, gibt es die 
DRI_PRIME Environment Variablen: 
https://docs.mesa3d.org/envvars.html#envvar-DRI_PRIME_DEBUG

Anwendungen können manchmal aber auch selbst entscheiden, welches Device 
sie nutzen wollen, statt das Mesa zu überlassen. Vermutlich wird das bei 
Vulkan öfter gemacht werden, weil da alles sehr low level ist.

In der regel gibt es /dev/dri/render* und /dev/dri/card* Device Files 
für die Karten. Die Render Nodes können auf der GPU rendern. Das 
beinhaltet auch das anlegen von Buffer Objects per GBM, (sowas ähnliches 
wie Texturen), die auch in anderen Nodes importiert / verwendet werden 
können (das ist DRM Prime).
Die card Nodes enthalten KMS (kernel mode setting) Funktionalität. 
Auflösungen setzen, Sachen anzeigen, das ist da drin. Aus historischen 
gründen beinhalten die oft zusätzlich auch das render node Zeugs, haben 
aber wegen dem Modeswitching ein paar Limitationen. Die meisten GPUs 
haben eine Card und eine Render Node.
(Auf mobilen Geräten (z.B: Smartphones) gibt es es aber oft, das card 
Nodes nur KMS können, weil sie direkt z.B. Display Pannel 
repräsentieren, und die GPU davon nichts weiss, und nur eine render Node 
hat. Mesa importiert dann einen DRM dumb buffer (auch nur ein bo) von 
der Card node in eine Render node und rendert dort. Das ist auch einfach 
DRM Prime).

Bei XOrg kann man in der Config angeben, welche Card Node(s) verwendet 
werden sollen. Bei wayland weiss ich nicht, wie man das macht.

Was man eventuell versuchen könnte, ist einfach zu verhindern, das ein 
Programm eine card/render node sieht / darauf zugreifen kann. In der 
theorie sollte das gehen, musst du aber schauen, ob die Programme da mit 
machen.
Du kannst solche Nodes mit Containern sharen. Render nodes sollten 
unproblematisch sein. Programme die KMS nutzen und card nodes brauchen, 
brauchen möglicherweise noch /sys/class/drm/.

Eventuell könnte man auch schauen, was passiert, wenn man den Nodes 
unterschiedliche Gruppen oder ACLs gibt, und die Berechtigungen mit ACLs 
einschränkt, vielleicht reicht das ja auch schon.

Wobei da aber logind (genauso wie früher auch console kit, und ich nehme 
an auch seatd), bei den Card Nodes auch ACLs vergeben, fürs Seat 
Managemant, was aus sicherheitstechnischer Sicht kompletter Blödsinn ist 
(sobald man eine Datei geöffnet hat, hat man einen Filedescriptor, 
danach spielen die Berechtigungen der Datei keine rolle mehr, auch wenn 
das ACL wieder entfernt wird).

von Jörg E. (jackfritt)


Lesenswert?

A. S. schrieb:
>
1
nvidia-smi
 zeigt dir an, welche prozesse wie viel
> GPU-Speicher reserviert haben. Unter Linux ist die Ausgabe auch
> einigermaßen vernünftig.
>

Dahinter noch den Parameter dmon
Und er zeigt dir laufend den Stromverbrauch etc. Bei ruhendem Desktop 
sinds bei mir 16-20W.
Starte deine KI Anwendung und die Leistungsaufnahme steigt entsprechend.
Läuft wirklich so einfach…

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Manchmal nehmen die Dinge Wendungen, die man nicht vermutet: Weil wir 
ständig mit Treiber-Konflikten zu kämpfen hatten, eine Verzweiflungstat: 
Ausschließlich die RTX3060, AUCH für den Bildschirm ...

Und siehe da: GPT4All antwortet nun mit sensationellen 50 Token pro 
Sekunde.

Nun gut, was solls, hauptsache verwendbar. :-)

von Sheeva P. (sheevaplug)


Lesenswert?

Frank E. schrieb:
> Manchmal nehmen die Dinge Wendungen, die man nicht vermutet: Weil wir
> ständig mit Treiber-Konflikten zu kämpfen hatten, eine Verzweiflungstat:
> Ausschließlich die RTX3060, AUCH für den Bildschirm ...

Wozu dient eigentlich der Bildschirm? :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.