Paměťová režie malých LLM

Paměťová režie malých LLM
« kdy: 05. 04. 2025, 20:24:29 »
Mám otázku k paměťové režii malých LLM, tedy o kolik víc VRAM si model vezme, než je jeho fyzická velikost (velikost souboru). Na netu jsem někde zahlédl, že má být 1 až 5 GB, ale bez uvedení velikosti souboru. Dá se to někde najít, nebo dopočítat? Děkuji.


Re:Paměťová režie malých LLM
« Odpověď #1 kdy: 06. 04. 2025, 08:45:35 »
Pro upřesnění, jde mě o lokální spouštění na GK. Jde o to, že 8b model má velikost do 5GB a na 8GB VRAM jde spustit bez problémů. 11b model má 8GB a zřejmě už se nevleze, a takový 14b model má 9GB a tam je potřeba větší VRAM. Pokud tedy je potřeba připočítat nějakou režii paměti, vlezou se 11b a14b modely do 10GB VRAM? Do 12GB se předpokládám vlezou.

a12

Re:Paměťová režie malých LLM
« Odpověď #2 kdy: 06. 04. 2025, 09:59:49 »
llama-cli.cpp vulkan (amd 5600G APU):

Kód: [Vybrat]
ls -la Qwen2.5-Coder-14B-Q6_K.gguf
-rw-r--r-- 1 root root 12124684320 lis 11 19:07 Qwen2.5-Coder-14B-Q6_K.gguf
Kód: [Vybrat]
print_info: file size   = 11,29 GiB (6,56 BPW)

Kód: [Vybrat]
load_tensors: offloaded 49/49 layers to GPU
load_tensors:   CPU_Mapped model buffer size =   609,08 MiB
load_tensors:      Vulkan0 model buffer size = 10948,23 MiB

Kód: [Vybrat]
"fdinfo": {
        "10049": {
          "name": "llama-cli",
          "usage": {
            "CPU": {
              "unit": "%",
              "value": 0
            },
            "Compute": {
              "unit": "%",
              "value": 0
            },
            "DMA": {
              "unit": "%",
              "value": 0
            },
            "Decode": {
              "unit": "%",
              "value": 0
            },
            "Encode": {
              "unit": "%",
              "value": 0
            },
            "GFX": {
              "unit": "%",
              "value": 0
            },
            "GTT": {
              "unit": "MiB",
              "value": 12770
            },
            "Media": {
              "unit": "%",
              "value": 0
            },
            "VRAM": {
              "unit": "MiB",
              "value": 8
            }
          }
        },

Wasper

  • ***
  • 161
    • Zobrazit profil
    • E-mail
Re:Paměťová režie malých LLM
« Odpověď #3 kdy: 06. 04. 2025, 10:41:06 »
Pro upřesnění, jde mě o lokální spouštění na GK. Jde o to, že 8b model má velikost do 5GB a na 8GB VRAM jde spustit bez problémů. 11b model má 8GB a zřejmě už se nevleze, a takový 14b model má 9GB a tam je potřeba větší VRAM. Pokud tedy je potřeba připočítat nějakou režii paměti, vlezou se 11b a14b modely do 10GB VRAM? Do 12GB se předpokládám vlezou.
Depends. Těch proměnných je tam víc.
1. Záleží, jak je to celé napsané, už jsem se třeba potkal s tím, že něco po sobě tu VRAM neuklízelo a model se nahrával dvakrát. (nechci kecat, už je to déle, tuším u Januse)
2. Accelerate má možnost přesouvat mezi VRAM a DRAM (a diskem), někdy i dynamicky, a dá se mu říct, kolik VRAM smí maximálně použít. Tak nějak jsem dospěl k závěru, že ono maximum VRAM je spíš velmi volné doporučení.
3. CUDA jako taková má něco jménem Unified memory (v podstatě pagging na GPU), ne všechny knihovny přes to umí.

Ale ve finále, přesvědčit to nakonec půjde (kupodivu dost dobře poradí i oblíbený chatbot), ale tak nějak platí, že úsili vložené je nepřímo úměrné VRAM. +samozřejmě kopírování giga dat mezi DRAM a VRAM není nejrychlejší

Re:Paměťová režie malých LLM
« Odpověď #4 kdy: 06. 04. 2025, 16:33:28 »
Můžu potvrdit, že velikost VRAm není omezující věc. Na vyzkoušení jsem malý LLM rozjel i na notebooku s integrovanou GK - tedy bez VRAM.
Rychlost odpovědí cca 1 slovo/sec.


Re:Paměťová režie malých LLM
« Odpověď #5 kdy: 06. 04. 2025, 18:11:06 »
Tak na procesoru si spustím i třeba qwen2.5 72b, ale ta rychlost nic moc, to je tak spustit, jít něco dělat na zahradu a potom si to přečíst. Větší model se mě nechtělo stahovat, protože pomalá linka. Menší modely i na tom procesoru se dají.

Re:Paměťová režie malých LLM
« Odpověď #6 kdy: 06. 04. 2025, 18:16:32 »
Nebo spíš tak, nemám GK, na které bych si něco mohl spustit. Také jsem četl, že některé modely lze v LM studiu spustit, i když nedostačuje velikost VRAM, ale klesá rychlost v závislosti na tom, kolik z toho modelu se do VRAM vleze.

Wasper

  • ***
  • 161
    • Zobrazit profil
    • E-mail
Re:Paměťová režie malých LLM
« Odpověď #7 kdy: 06. 04. 2025, 22:44:32 »
Nebo spíš tak, nemám GK, na které bych si něco mohl spustit. Také jsem četl, že některé modely lze v LM studiu spustit, i když nedostačuje velikost VRAM, ale klesá rychlost v závislosti na tom, kolik z toho modelu se do VRAM vleze.
Kouknete treba sem https://medium.com/data-science-in-your-pocket/how-to-run-llms-in-less-gpu-and-cpu-memory-6989e6ec5621 nebo https://huggingface.co/blog/lyogavin/airllm 

Re:Paměťová režie malých LLM
« Odpověď #8 kdy: 08. 04. 2025, 00:43:41 »
Rezidentní velikost transformeru je dána jeho fyzickou velikostí (cca jako soubor) krát jeho rozlišení (kolik má bitů na parametr, Q4_K jsou mezi 4 a 5 bpp, Q6_K jsou 6-7 bpp, Q8 je 1 byte na parametr atd.), plus KV cache ("kontext"), jehož cena je opět závislá na modelu, ale řádově okolo 1 MiB/token (přesně je to počet attention heads krát velikost embedding vektoru krát velikost datového typu krát dvě).

Qwen2.5-Coder-14B-Q6_K.gguf z předchozího příkladu má cca 11 GiB model plus 820 KiB na token, takže cca dalších 780 MiB VRAM na tisíc tokenů.

Re:Paměťová režie malých LLM
« Odpověď #9 kdy: 08. 04. 2025, 06:30:38 »
Pánové děkuji za nakopnutí.

Re:Paměťová režie malých LLM
« Odpověď #10 kdy: 08. 04. 2025, 10:27:53 »
Tady je ta zmínka o režii modelu. Cca 13,5GB model (Gemma 2 27b Q4) zabere až 19GB VRAM.

https://blogs.nvidia.com/blog/ai-decoded-lm-studio/