Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Jakub Štech

Stran: [1] 2 3 ... 22
1
Odkladiště / Re:Paměťová režie malých LLM
« 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ů.

2
Sítě / Re:ICANN audit - souhlas s geografickým názvem
« kdy: 25. 02. 2025, 20:04:58 »
ICANN nic prokazovat nemusí, v podmínkách gTLD je jasně uvedeno že country_name.one může být jen a pouze s výslovným souhlasem vlády dané země, nebo když se vláda dané země toho práva vzdá. OP musí mít souhlas nebo o doménu přijde. Můžeš zkusit oslovit konzulát dané země a nebo (a zároveň :D) si rovnou chystat migraci jinam.

3
Software / Re:Lokální LLM AI moduly
« kdy: 25. 02. 2025, 15:47:44 »
Fungujeme takhle už víc jak rok, s výše uvedeným postupem mi Phi 4 Q6 a Mistral Small Q4 běhají rychlostmi v desítkách slov za sekundu, v rychlosti nepoznám rozdíl oproti třeba GPT 4o. Z komerčních AI služeb používáme už jen Anthropic Claude Sonnet, protože ten je pořád naprosto bezkonkurenční na vývoj softwaru. Ne programování, na to stačí lokální modely, ale na tu architekturální designovou práci (v Aideru se systémem --architect vs --editor, kde velký model říká menšímu, co má dělat).

4
Software / Re:Lokální LLM AI moduly
« kdy: 25. 02. 2025, 15:44:28 »
Jde to i jednoduše a spolehlivě. Jsou malé ale velmi dobré modely, a jde je provozovat bez starostí typu CUDA Out of Memory jak píše kolega. I na běžném herním hardwaru.

Typicky se nováčkům doporučuje nainstalovat si Ollama a moc se neptat jak co funguje, ale to úplně nedoporučuji: Ollama je vždy pozadu (je to jen wrapper kolem llama.cpp a dalších, trvá jim měsíc udělat git pull llama.cpp a pak se chlubit cizí prací), má vlastní proprietární storage podobný Dockeru, takže není úplně triviální třeba určit, které soubory patří ke kterému modelu, když je např. chcete odsunout na NAS, a hlavně skrývá před uživatelem všechny páky, kterými z toho jde dostat mnohem vyšší výkon.

"Moje" řešení je sestavit si Llama.cpp s Vulkan backendem, a provozovat to buď přímo, nebo přes swapping proxy. Vulkan oproti CUDA (nvidia) nebo ROCm (AMD) dosahuje nižšího výkonu (o 10-20 % horší), ale je to perfektně stabilní a řeší si to paměť automaticky, takže OOM crash jako kategorie problému prostě neexistuje. Když se rostoucí kontext nevejde do GPU, tak to nehavaruje, jen to zpomalí, protože driver přesouvá buffery mezi VRAM a RAM. Navíc jde měnit backend (Mesa RADV, AMD AMDVLK, ...) a tím třeba nějaký ten extra výkon nahnat, když je potřeba.

Takže jak na to :-)

1) Sestav si llama.cpp s Vulkan backendem.

Kód: [Vybrat]
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

# SHARED_LIBS=OFF z toho udělá "semi-static" build: všechny llama.cpp knihovny se linkují staticky, dynamicky se linkují pouze
# systémové knihovny, takže výslednou binárku lze přesouvat, nezávisí na žádném dalším souboru z llama.cpp
cmake -B build -DGGML_VULKAN=1 -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF

# uprav počet vláken pokud se na 128 instancí g++ necítíš :-)
cmake --build build --config Release -- -j128

2) Stáhni nějaký model, např. Phi 4 je super. Podle velikosti dostupné VRAM si vyber vhodnou kvantizaci: na stránce modelu (bartowski je legenda která dělá kvantizace prakticky všeho) je v tabulce srozumitelně popsáno, jak velký je který quant a co za kompromisy nese. Obecně současné modely fungují dobře s nějakými 5-6 bity na parametr, čemuž odpovídají quanty Q4_K_L až Q6_K_L (číslo říká počet bitů, K je typ kvantifikace, S/M/L je small/medium/large a rozlišují se tím mezistupně, kdy se např. kvantifikuje hlavní síť ale embedding síť se nechá ve větším rozlišení).

Případně si můžeš originální *.safetensors model kvantizovat sám, v llama.cpp je na to skript, je to na pár minut pokud se model vejde do RAM (v tomhle GPU nefiguruje).

Mám tady 16GB Radeon 7800XT, tak si volím Q5_K_M s 10.6 GiB velikostí. Kromě statického těla modelu (těch 10.6 G) se do VRAM ještě musí vejít kontext (KV cache), tedy text, na který model vidí. Ten postupně roste, a bývá docela prostorově náročný: každý token textu je (v každé attention head zvlášť) reprezentován dvěma embedding vektory (K pro "otázku", V pro "odpověď"). V případě Phi 4 má embedding vektor 5120 prvků, model má 40 attention heads, a je reprezentován datovým typem F16 (2 bajty). Jeden token má tedy 2 * 5120 * 40 * 2 = 819.2 KiB. V 16GB GPU mi ~11G zabere model, ~2G si chci nechat pro sebe, takže ~3G mám na kontext sotva 3800 tokenů. Pokud mi to nestačí, můžu zvolit menší quant (třeba Q4), snížit rozlišení KV cache, nebo se spokojím se zpomalením, až začne Vulkan swapovat.

Kód: [Vybrat]
cd ..
wget "https://huggingface.co/bartowski/phi-4-GGUF/resolve/main/phi-4-Q5_K_M.gguf?download=true" -O phi-4-Q5_K_M.gguf

3) Spustím jednu z mnoha llama- binárek. Pro první vyzkoušení že mi všechno funguje llama-cli, což je jednoduchý REPL v konzoli. Užitečné parametry jsou:

--ctx-size N omezí velikost kontextu na N tokenů systémem FIFO, tj. nejstarší tokeny začnou odtékat mimo context window
--n-gpu-layers N udává, kolik vrstev neuronové sítě chci přesunout do GPU. Zadáním vysokého čísla řeknu, že chci všechny. Modely mají typicky pár desítek vrstev.
--cache-type-k, --cache-type-v ovlivní datový typ KV cache. Default je f16, pro úsporu VRAM pro kontext můžu zvolit třeba q8_0 nebo q4_1, ale má to velký vliv na kvalitu výstupu i rychlost (pokud se na dané GPU netrefí alignment).

a dále parametry sampleru, které ovlivní chování modelu:

--temp N temperature, zvyšuje náhodnost; blíž k 0 pro technické úkoly, >1 pro prózu nebo ERP :-)
--top-k N omezí počet tokenů, co jdou do sampleru
--top-p N do sampleru půjdou jen tokeny, které mají v součtu tuto pravděpodobnost
--min-p N minimální pravděpodobnost tokenu

V praxi ale krom --n-gpu-layers nic z toho nenastavuju.

Kód: [Vybrat]
./llama.cpp/build/bin/llama-cli --n-gpu-layers 999 --model phi-4-Q5_K_M.gguf

V tuhle chvíli už chatuješ s lokálním LLM a nikdo tě nezastaví.

Další fáze je spustit OpenAI API server, aby jazykový model mohly využívat další aplikace. Jen spustíš jinou binárku:

Kód: [Vybrat]
./llama.cpp/build/bin/llama-server --n-gpu-layers 999 --model phi-4-Q5_K_M.gguf --port 12345

a za pár sekund můžeš prohlížečem na http://localhost:12345/ do celkem slušného webového chatu, který si pamatuje předchozí konverzace v localStorage. Na tuto URL můžeš nasměrovat i další aplikace, protože tam je endpoint kompatibilní s OpenAI API.

Z aplikací, které používám, jsou to:

- https://openwebui.com/ - asi nejznámější webové rozhraní pro LLM, integruje pěkně vektorové databáze a agentickou práci, takže umí např. úlohy jako "najdi mi v tomhle PDF jak se konfiguruje baud rate na USART" nebo udělá ozdrojovanou rešerši vyhledáváním na webu
- https://www.librechat.ai/ - podobné jako Open WebUI, ale umí to pěkně "Artifacts", tj. necháš LLM něco programovat a hned vidíš výsledek v okně... web, webGL, atd.
- smartcat nebo shell_gpt v konzoli, na úlohy typu man ffmpeg | sc sh "convert all videos to h265 and opus, normalize audio in two passes, fix subtitle encoding using iconv"
- automatické klasifikátory v aplikacích typu Hoarder, Linkwarden
- programování v Neovimu s CodeCompanionem
- AI v novém firefoxu, všechny ty kontextové úlohy typu "vysvětli mi toto" nebo "přelož to"

Praktické je před llama-server posadit llama-swap, což je OpenAI API proxy, která automaticky spustí příslušný llama-server v závislosti na tom, co si klient vybere. Jednak mi potom nesedí v GPU něco, co zrovna nevyužívám, a jednak můžu mít nakonfigurovánu spustu modelů, od malých data minerů (třeba nuextract je super na "tady máš pět let e-mailů, udělej mi z nich CSV s těmito sloupci: ...") přes specialisty na programování (Qwen Coder 2.5) až po větší generalisty (Phi 4, Mistral Small, v EU nelegální Llama 3.3).

5
Distribuce / Re:GrapheneOS - dostupnost aplikací
« kdy: 05. 01. 2024, 10:02:47 »
Ták, dnes jsem dostal verzi 20240104 ve které se mi už nově otevře Android Auto nastavovací aplikace, což je zlepšení oproti 20231231. Pořád mám ale comm error 22. Auto je Mustang Mach-E, s OnePlus 11 to funguje normálně.


6
Distribuce / Re:GrapheneOS - dostupnost aplikací
« kdy: 05. 01. 2024, 01:09:25 »
Zatím je to jen v Alpha release channelu, pokud tomu rozumím dobře. Teď jsem to zkoušel se standardním Stable channelem a chová se to stejně (červená obrazovka s connection error 22).

7
Distribuce / Re:GrapheneOS - dostupnost aplikací
« kdy: 25. 12. 2023, 01:06:34 »
Za asi dva roky používání jsem narazil jen na tři aplikace, co nešly:
  • FaceApp (mají v tom jakési extra DRM)
  • Android Auto, které nejde a nepůjde, protože je to zakořeněné do systému a nejde to izolovat
  • Google Pay

Jinak bez problémů... banky, různé aplikace od EV nabíječek a aut (Ford, Tesla, VW), pojišťoven, různých investičních nástrojů, nikdo problémy nedělá.

8
Software / Re:Nejde navázat odchozí SSH spojení - nikam
« kdy: 09. 12. 2023, 23:45:57 »
Díky za odpovědi, máme pokrok!

Na localhost ssh se připojím. Když si socatem udělám proxy, připojím se přes ni i kamkoliv ven.

Alternativním klientem (putty) se připojím.

Pozorováním odchozích paketů jsem vypozoroval, že:
- nefunkční (z openssh klienta) paket má zapnutý DiffServ flag AF21, funkční (putty, nebo openssh přes proxy) nemá
- paket neopustí stroj (trace na routeru ani v cíli nic nezachytí)

Souvisí to tedy s IP QoS. Zkusil jsem:
Kód: [Vybrat]
$ ssh -o IPQoS=none example.cz

a připojilo mě to. Workaround ❤️

Mám tedy někde, v něčem, rozbitou konfiguraci QoS a po nějaké tomu se nelíbící míře aktivity (přesun hodně dat nebo ifup/ifdown tunelu) mě to beze slova odřízne.

9
Software / Nejde navázat odchozí SSH spojení - nikam
« kdy: 09. 12. 2023, 16:31:57 »
Potřeboval bych nasměrovat ke způsobům, jak tohle vůbec začít debugovat.

Po startu systému je všechno normální, SSH funguje jak má, spravuju systémy několika firmám. Po nějakých akcích se ale něco stane a od té doby nemůžu z toho počítače navázat SSH spojení kamkoliv. Mezi ty akce patří:

- nahození a shození Wireguard tunelu (obvyklě několikrát po sobě)
- přenesení několika desítek GB přes rsync+ssh

SSH klient skončí timeoutem vždy tady:
Kód: [Vybrat]
ssh -vvv example.cz
OpenSSH_9.5p1, OpenSSL 3.1.4 24 Oct 2023
debug1: Reading configuration data (...)
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug2: resolving "example.cz" port 22
debug3: resolve_host: lookup example.cz:22
debug3: ssh_connect_direct: entering
debug1: Connecting to example.cz [47.555.1.1] port 22.
debug3: set_sock_tos: set socket 3 IP_TOS 0x48

Podle `strace` to skutečně stojí na connect() volání.

Co zatím vím:

Není to per-user. Problém můžu vyvolat jedním uživatelem, ale ochromí to ssh celé mašině (i rootovi).

Není to na úrovni TCP. Spojení s SSH serverem se naváže bez problémů a okamžitě:
Kód: [Vybrat]
$ nc -v example.cz 22
Connection to example.cz (47.555.1.1) 22 port [tcp/ssh] succeeded!
SSH-2.0-OpenSSH_9.4

Není to nic v síti nebo u ISP. Když přestane SSH fungovat, můžu laptop sbalit a odvézt jinam, a ani tam mi to fungovat nebude.

Nebude to regrese v OpenSSH. Stejně to dělá ve verzích 9.3, 9.4, 9.5.

Asi to nesouvisí s Wireguardem. Zkompiloval jsem si kernel bez něj, a děje se to taky.

Firewall mám, ale nepoužívám:
Kód: [Vybrat]
# iptables-save
# Generated by iptables-save v1.8.10 on Sat Dec  9 16:23:42 2023
*filter
:INPUT ACCEPT [339349:459048520]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [55068:6356188]
COMMIT
# Completed on Sat Dec  9 16:23:42 2023

10
Hardware / Re:Riziko archivace na HDD - bit rot
« kdy: 14. 10. 2023, 19:57:30 »
DLL může ležet rok beze změny ale filesystem může dělat třeba online defragmentaci, raid rebalancovat, atd. takže její data skutečně skrz sběrnice a RAM projdou, a tam se ten bit může otočit.

@OP, koukni se po "cloudových" storage systémech s S3 kompatibilní API, např. Minio nebo Garage. Z principu je to resistentní vůči bit-rotu (soubory jsou adresovány podle hashe), výpadku disku nebo celých serverů, je to rychlé a škáluje to (nainstaluješ na cokoliv s diskem). Minio je víc enterprise, Garage se snadno nasazuje a je mnohem rychlejší. Spousta běžně používaných aplikací s tím pracuje přímo, a na ostatní se to přimountuje normálně do filesystemu.

11
Distribuce / Re:Co mám špatně s ebuildem
« kdy: 22. 09. 2023, 19:43:14 »
Co je to za software? Protože ten výstup není z Portage. Když tam vepíšu EAPI 9, tak `ebuild flexibee*ebuild digest` vypíše

Kód: [Vybrat]
!!! Unable to do any operations on 'app-office/flexibee-2023.4.4', since
!!! its EAPI is higher than this portage version's. Please upgrade to a
!!! portage version that supports EAPI '9'.

to tvoje @filbarcz vypadá jinak

12
Hardware / Re:Rádioamatérská vývojová deska s ESP32
« kdy: 06. 09. 2023, 15:38:38 »
I 433 MHz v EU není problém, má to výrazně lepší penetraci do non-LOS prostředí, třeba do sklepů. Používáme to na odečty vodo- a plynoměrů.

Pokud máte vlastní infrastrukturu (gateway), tak není problém přenášet i "větší" objemy typu pár fotek denně nebo downlink firmwaru do zařízení. Veřejné sítě (třeba TTN) mají na objem (počet zpráv/duty cycle) omezení. Dá se i přenášet hlas v skoro-reálném čase (speex nebo GSM kodeky).

13
To je pravda, že to není ideální řešení, ale běžně se používá.

Pics or it didn't happen, jak se říká. Ukažte nějakou referenci. Pracuju v oboru už nějakou tu dekádu, myslím že bych na "běžně" aspoň jednou narazil. Ty ventily mají tak příšerné výrobní tolerance, že nejde předpovědět rychlost zavření ani na tomtéž kusu - jednou píst zajede rychle, jindy se chytne za nějakou rýhu nebo grot a musí chladnout minuty, než překoná odpory a zapadne dovnitř. Řídit to PIDem uzavřeným na teplotě vzduchu mísnosti je absurdní, tam máte cyklickou reakční dobu ve vyšších desítkách minut, k regulaci ventilu který se otvírá minutu je to k ničemu.

Proto se používají ty 0-10V ventily, co odkazujete. V nich je pravítko a PID regulátor, smyčka se uzavírá přímo v nich, ale cena odpovídá.

@David, koukněte na pohon Siemens STP63. Je to termoelektrický pohon s řízením 0-10 V, na trhu je dobře k dostání za rozumnou cenu. Ten vídám nejčastěji ve veřejných budovách.

@Tomáš G., tyhle servopohony slyšet nejsou, má to blíž k hodinovému strojku než k nějakým motorům. Časy přejezdu jsou dlouhé a na servisech máme kolikrát problém při diagnostice poznat, jestli se to hýbe nebo ne.

14
:-D ne, to ani náhodou, termoelektrické ventily nejsou lineární ani konzistentní, rychlost aktivace a hlavně deaktivace (vychladnutí) je řádově odlišná kus od kusu, a silně závisí na teplotě vody a okolního vzduchu. Mám tu ventily ze stejné šarže a není problém u jednoho mít časy aktuace 5-20 s a u jiného 10-150 s. Na tom by nějaké mezistavy šlo dosáhnout jen s průtokoměrem a PID regulátorem :)

15
Hardware / Re:Doporučte hobby mikropáječku
« kdy: 27. 07. 2023, 13:33:32 »
Jdou mi trochu oči křížem... pozitivní termistor jako topné tělísko? Topení a termostat monoliticky v jednom :-)

Tohle je běžná praxe, ve vzduchotechnice se používají mnoha-kilowattové PTC ohřívače. Má to výhodu zpětné vazby (měřením odporu) a bezpečnosti (při selhání regulátoru se to nepřehřeje).

Stran: [1] 2 3 ... 22