Dann berichte ich mal...
Wenn das hier statt einer [Kaufberatung] lieber ein [Sammelthread] wird, gerne ;-)
Ist schon ein spannedes Thema. Und irgendwie viel zu komplex für mein altes Hirn...
Das ganze hier ist ja nur eine Spielwiese zum Lernen und Spaß haben.
"Ernsthafte" Entwicklung mach ich direkt auf dem Win11-Desktop, da habe ich mehr Speicher und ne dickere GPU.
Hardware
Die Tesla M10 hat einen Maxwell GM107 Chip mit 8GB Speicher. Und davon gleich 4 auf einer Karte (zusammen dann 32GB).
Ist also von der Rechenleistung ca. 4 mal eine GTX 950, das bewegt (heute) nicht mehr so richtig die Welt.
Zum Lernen und Spaß haben habe ich mir gleich 2 davon gekauft (je 115€) um das mal zu probieren, aber hinterher ist man ja immer schlauer, eine Karte ist ja schon 4 Karten.
Ein ML310e-G8 ist quasi perfekt für
eine M10.
Alles ist irgendwie vorbereitet und passt. Incl. passendem Lüfter, Stromanschluss, etc.: Plug'n'Play !
Da ich nicht ganz so gerne schraube, ich bin eher der Softi, war ich ganz Froh einen in der Ecke stehen zu haben. Ein E3-1270V2 mit 32GB RAM.
user@hp:~$ lspci | grep -i nvidia
07:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Tesla M10] (rev a2)
08:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Tesla M10] (rev a2)
09:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Tesla M10] (rev a2)
0a:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Tesla M10] (rev a2)
user@hp:~$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 545.29.06 Thu Nov 16 01:59:08 UTC 2023
GCC version: gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)
Sehr schön ist "nvtop":
Stufe #2 wäre dann eine
zweite M10 irgendwie zum Rennen zu bringen.
Ich habe mal eine "
V010S Plus" bei eBay gekauft und meinen Sohn gebeten das [
https://www.thingiverse.com/thing:4381706/files] mal zu drucken.
Mal schauen wie ich an den 8-Pin Strom komme, im ML war nur einer.
Aber wie gesagt, 4 Karten hab ich schon laufen, dann wärens halt 8...
Evtl. macht das Sinn bei größeren Modellen, 64GB VRAM könnten dann helfen.
Evtl. kauf ich ja irgendwann doch noch eine oder zwei M10 ;-)
Software
Basis ist ein
Ubuntu Server 22.04.3 LTS (ja, genau das).
Und die
nVidia Treiber 545.29.06 (ja, genau die).
Ich hatte erst Probleme mit verschiedenen Releases, ich hatte einen Mix aus 545.23.08 und 545.29.06, wieauchimmer ich das geschafft habe.
War etwas kniffelig das genau so hinzubekommen.
user@hp:~$ nvidia-smi
Mon Feb 5 16:06:32 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.29.06 Driver Version: 545.29.06 CUDA Version: 12.3 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 Tesla M10 Off | 00000000:07:00.0 Off | N/A |
| N/A 58C P0 17W / 53W | 0MiB / 8192MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
| 1 Tesla M10 Off | 00000000:08:00.0 Off | N/A |
| N/A 62C P0 18W / 53W | 0MiB / 8192MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
| 2 Tesla M10 Off | 00000000:09:00.0 Off | N/A |
| N/A 35C P0 17W / 53W | 0MiB / 8192MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
| 3 Tesla M10 Off | 00000000:0A:00.0 Off | N/A |
| N/A 47C P0 17W / 53W | 0MiB / 8192MiB | 1% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| No running processes found |
+---------------------------------------------------------------------------------------+
Momentan spiele ich mit "llama.cpp" [
https://github.com/ggerganov/llama.cpp] rum.
Ich habe nie Python verstanden (also die Sprache selbst, und warum man sich das antut), bin froh was in c++ gefunden zu haben, das spreche ich seit fast 40 Jahren ;-)
Läuft auf Linux, Windows und Mac, und unterstützt CPU und GPU. Da es plain c++ ist läuft es eigentlich überall...
llama.cpp kann mit allen möglichen Modellen umgehen, da gibts massig auf
https://huggingface.co/ zum download.
Ich habe da inzwischen >1.5TB runtergeladen ;-)
Wenns mal jemand selbst probieren will, llama.cpp ist eigentlich recht einfach zu bedienen:
git clone https://github.com/ggerganov/llama.cpp && cd llama.cpp
Und dann einfach
make
für CPU-only.
Oder für CPU&GPU Support: im Makefile
MK_NVCCFLAGS += -arch=native
durch die eigene Architektur ersetzen, Für Maxwell ist das wohl
MK_NVCCFLAGS += -arch=compute_50
und dann
make LLAMA_CUBLAS=1 -j
Die Geschwindigkeit mit der M10 ist, naja, nicht so richtig toll.
Hier ein E3-1270-V2:
./main -m /mnt/nfs/tmp/dolphin-2.6-mistral-7b.Q8_0.gguf -p "write a random 100-word story"
llama_print_timings: load time = 771.78 ms
llama_print_timings: sample time = 90.38 ms / 179 runs ( 0.50 ms per token, 1980.44 tokens per second)
llama_print_timings: prompt eval time = 2055.01 ms / 11 tokens ( 186.82 ms per token, 5.35 tokens per second)
llama_print_timings: eval time = 64440.67 ms / 178 runs ( 362.03 ms per token, 2.76 tokens per second)
llama_print_timings: total time = 66642.72 ms / 189 tokens
Hier eine M10 (64 Layers auf der GPU, also das ganze Modell):
./main -m /mnt/nfs/tmp/dolphin-2.6-mistral-7b.Q8_0.gguf -p "write a random 100-word story" -ngl 64
llama_print_timings: load time = 2674.81 ms
llama_print_timings: sample time = 103.51 ms / 210 runs ( 0.49 ms per token, 2028.79 tokens per second)
llama_print_timings: prompt eval time = 1144.16 ms / 11 tokens ( 104.01 ms per token, 9.61 tokens per second)
llama_print_timings: eval time = 64450.40 ms / 209 runs ( 308.38 ms per token, 3.24 tokens per second)
llama_print_timings: total time = 65756.11 ms / 220 tokens
Soweit mal für heute...