<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Licencje — Inferownia</title><link>https://inferownia.pl/tags/licencje/</link><description>Inferownia — polski hub wiedzy o lokalnym AI: uruchamianie modeli językowych na własnym sprzęcie, kwantyzacja, inferencja, małe modele, fine-tuning i RAG.</description><language>pl-PL</language><copyright>&#169; 2026 Inferownia</copyright><lastBuildDate>Thu, 02 Jul 2026 00:00:00 +0200</lastBuildDate><atom:link href="https://inferownia.pl/tags/licencje/index.xml" rel="self" type="application/rss+xml"/><item><title>Nowy model? Na co patrzeć, zanim go ściągniesz</title><link>https://inferownia.pl/aktualnosci/nowy-model-na-co-patrzec/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0200</pubDate><category>małe-modele</category><guid>https://inferownia.pl/aktualnosci/nowy-model-na-co-patrzec/</guid><description>Świeży model wpada na Hugging Face, scena huczy, a ty już masz palec nad przyciskiem pobierania. Zanim klikniesz, przejdź tę krótką listę — oszczędzi ci wieczoru walki z czymś, co i tak nie chciało ruszyć.</description><content:encoded><![CDATA[<p>„NEW SOTA MODEL DROPPED&quot;. Wątek puchnie w oczach,
w komentarzach lawina wykrzykników, ktoś już pokazuje screena, jak model rozwiązuje
zagadkę o wilku, kozie i kapuście, a ty siedzisz i czujesz, że folder <code>models</code> zaraz
znowu spuchnie o kolejne kilka giga. Palec sam wędruje nad „Download&quot;. I to jest właśnie
ten moment, w którym warto na sekundę zdjąć rękę z myszki.</p>
<p>Bo entuzjazm sceny jest szczery, ale scena nie odpala tego modelu na twojej karcie. Ty
odpalasz. I między „premiera na Hugging Face&quot; a „gada u ciebie w terminalu tak, jak powinno&quot;
leży kilka pułapek, które regularnie kosztują ludzi wieczór. Dobra wiadomość: da się je
odhaczyć w pięć minut, jeszcze zanim cokolwiek pobierzesz. Zrobimy z tego listę — taką,
którą przejdziesz przy każdym kolejnym „SOTA&quot;, bo modeli będzie jeszcze wysyp.</p>
<h2 id="karta-modelu-czyli-tabliczka-znamionowa">Karta modelu, czyli tabliczka znamionowa</h2>
<p>Zanim cokolwiek zrobisz — otwórz kartę modelu. Na Hugging Face to nie żaden osobny dokument,
tylko plik <code>README.md</code> w repo, a na jego górze siedzi kawałek metadanych w YAML-u.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>
To jest tabliczka znamionowa: licencja, model bazowy, czasem gotowe wyniki ewaluacji.
Cała ta lista, którą zaraz przejdziemy, w dużej mierze czyta się właśnie stamtąd. Nauczysz
się rzucać okiem na te kilka pól i połowa niespodzianek znika, zanim się wydarzy.</p>
<h2 id="ile-ten-model-waży-i-w-jakim-wariancie">Ile ten model waży i w jakim wariancie?</h2>
<p>Pierwsze pytanie brutalnie praktyczne: czy to w ogóle wejdzie? Liczba parametrów (te 7B,
8B, 70B w nazwie) to grube przybliżenie apetytu na pamięć, ale w pełnej precyzji nawet
„mały&quot; 8B to kilkanaście giga. Dlatego naprawdę interesuje cię, czy istnieje wersja
skwantyzowana — a konkretnie, czy ktoś zrobił już pliki <strong>GGUF</strong>, format, którego używają
<code>llama.cpp</code> i Ollama.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
<p>Kwantyzacja to nic innego jak zapisanie tych miliardów wag ciaśniej: mniej bitów na liczbę,
mniejszy plik, mniejszy apetyt na VRAM, a jakość spada zaskakująco mało. Dokumentacja
<code>llama.cpp</code> podaje wprost skalę: Llama-3.1-8B w formacie F16 waży jakieś 14,96 GiB, a ta
sama w Q4_K_M — około 4,58 GiB.<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup> Trzy razy mniej, a <code>Q4_K_M</code> to poziom, który regularnie
pada jako rozsądny kompromis rozmiar-jakość. Co znaczą wszystkie te literki i cyferki po
<code>Q</code>, rozgryzaliśmy osobno <a href="/poradniki/nazwy-kwantyzacji-gguf/">tutaj</a>.</p>
<p>Jedno małe ostrzeżenie, żeby nie pomylić pojęć: kwantyzacja po treningu (to, co dostajesz
w GGUF-ie) to nie to samo, co trenowanie modelu od zera w niskiej precyzji. Dwie różne
rzeczy, różny wpływ na jakość. Ktoś na scenie zawsze je pomiesza — nie bądź tym kimś.</p>
<h2 id="czy-w-ogóle-wolno-ci-go-użyć">Czy w ogóle wolno ci go użyć?</h2>
<p>To pole, które ludzie przewijają najszybciej, a które potrafi najbardziej zaboleć.
W metadanych karty jest <code>license:</code> — identyfikator licencji, po którym Hub nawet pozwala
filtrować modele.<sup id="fnref1:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> I tu jest haczyk: samo to, że repo jest otwarte i pliki leżą do
pobrania, nie znaczy, że wolno ci na tym modelu zbudować cokolwiek komercyjnego.</p>
<p>Część modeli jedzie na licencjach „społecznościowych&quot; albo „research only&quot;, które
uśmiechają się otwarcie, a w treści ograniczają użycie. Gdy w polu widzisz <code>license: other</code>,
to sygnał, żeby kliknąć w <code>license_link</code> i faktycznie przeczytać, na co się piszesz — bo
identyfikator sam z siebie nic ci nie gwarantuje.<sup id="fnref2:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> Nudne? Nudne. Ale to jedyny punkt
z tej listy, który może się skończyć rozmową z prawnikiem, a nie z terminalem.</p>
<h2 id="jak-długi-kontekst-realnie-dostaniesz">Jak długi kontekst realnie dostaniesz?</h2>
<p>Model w karcie chwali się 128k kontekstu, więc bierzesz go do przełykania całych PDF-ów —
i tu wpadasz w klasyczne nieporozumienie. Deklarowane maksimum modelu to jedno, a okno,
które faktycznie ustawi ci runtime, to drugie.</p>
<p>Ollama na przykład sama dobiera domyślną długość kontekstu do tego, ile masz VRAM-u: przy
mniej niż 24 GiB da ci 4k, a dopiero przy 48 GiB i więcej sięga nawet po 256k.<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup>
Czyli twój wypasiony 128k model może po cichu chodzić na czterech tysiącach tokenów, a ty
się dziwisz, czemu „zapomina&quot; początek dokumentu. Wymusisz to zmienną <code>OLLAMA_CONTEXT_LENGTH</code>
albo parametrem <code>num_ctx</code>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">OLLAMA_CONTEXT_LENGTH</span><span class="o">=</span><span class="m">64000</span> ollama serve
</span></span></code></pre></div><p>A ustawić to okno możesz na kilka sposobów i jest wśród nich hierarchia: <code>PARAMETER num_ctx</code>
w Modelfile ustala okno na stałe dla danego modelu, a opcje podane w locie w wywołaniu API
nadpisują to, co siedzi w Modelfile.<sup id="fnref:5"><a href="#fn:5" class="footnote-ref" role="doc-noteref">5</a></sup> Tylko pamiętaj o dwóch kosztach: większe okno
to znacznie więcej pamięci — dokumentacja Ollamy mówi to wprost — a siłą rzeczy także wolniejsze
liczenie.<sup id="fnref1:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup> Do tego rozciąganie okna ponad długość, na jakiej model trenowano, potrafi
pogorszyć jakość odpowiedzi; dokładnie ten problem rozbraja mechanizm YaRN, który rozłożyliśmy
na części <a href="/naukowy/yarn-kontekst/">tu</a>. W <code>llama.cpp</code> tym samym oknem steruje flaga <code>-c</code>.</p>
<h2 id="czy-narzędzie-w-ogóle-to-obsłuży">Czy narzędzie w ogóle to obsłuży?</h2>
<p>Najboleśniejsza pułapka premierowa: model jest na Hugging Face, więc zakładasz, że od razu
odpalisz go w <code>llama.cpp</code> czy Ollamie. A to wcale nie jest automatyczne. <code>llama.cpp</code> wymaga
formatu GGUF, a jak model przychodzi w innym formacie, ktoś musi go najpierw skonwertować
skryptami <code>convert_*.py</code> z repo (Hugging Face udostępnia do tego nawet przestrzeń
„GGUF-my-repo&quot;).<sup id="fnref1:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
<p>Gorzej, gdy model przynosi <strong>nową architekturę</strong>. Wtedy wsparcia po prostu nie ma, dopóki
ktoś go nie dopisze — a to nie jest jedna linijka. Trzeba ruszyć skrypty konwersji w Pythonie
(mapowanie tensorów, <code>constants.py</code>, <code>tensor_mapping.py</code>), potem kod C++ (<code>llama-arch</code>,
<code>llama-model-loader</code>, <code>llama-model</code>, obsługa RoPE), a na koniec przetestować to na CPU, CUDA
i Metalu.<sup id="fnref:6"><a href="#fn:6" class="footnote-ref" role="doc-noteref">6</a></sup> Dlatego dzień premiery modelu i dzień pierwszego działającego GGUF-a to
często dwie różne daty. Jak śledzisz świeżynkę, sprawdź najpierw, czy w issues repo ktoś już
nie ogarnia integracji — o tym, jak w ogóle działa ten cały ekosystem wokół GGUF-a, pisaliśmy
<a href="/aktualnosci/ekosystem-gguf/">osobno</a>.</p>
<h2 id="instruct-czy-base-sprawdź-zanim-się-zdziwisz">Instruct czy base? Sprawdź, zanim się zdziwisz</h2>
<p>Widzisz w nazwie samo „Llama-3-8B&quot; bez dopisku i myślisz, że pogadasz. Odpalasz, piszesz
pytanie, a model zamiast odpowiedzieć — dopisuje kolejne pytania. Nie zepsuł się. Wziąłeś
wersję <strong>base</strong>, która tylko kontynuuje sekwencję tokenów, zamiast wersji <strong>instruct/chat</strong>,
douczonej do podążania za poleceniami i dialogiem.<sup id="fnref:7"><a href="#fn:7" class="footnote-ref" role="doc-noteref">7</a></sup></p>
<p>Różnica jest fundamentalna, a diabeł siedzi w formacie. Model czatowy oczekuje wiadomości
opakowanych w konkretne tokeny kontrolne — u jednego to <code>[INST]...[/INST]</code>, u innego
<code>&lt;|user|&gt;</code> i <code>&lt;|assistant|&gt;</code> — i co gorsza, dwa modele dotrenowane z tej samej bazy mogą mieć
zupełnie różny format czatu.<sup id="fnref1:7"><a href="#fn:7" class="footnote-ref" role="doc-noteref">7</a></sup> Podasz zły — i instruct-model, który powinien świecić,
nagle gada od rzeczy. W bibliotece <code>transformers</code> załatwia to <code>apply_chat_template</code>, który
sam skleja wiadomości w format właściwy dla danego modelu.<sup id="fnref2:7"><a href="#fn:7" class="footnote-ref" role="doc-noteref">7</a></sup> W <code>llama.cpp</code> odpowiada za
to <code>--jinja</code>. Morał krótki: zajrzyj do karty i upewnij się, który to wariant, zanim ogłosisz,
że „model jest słaby&quot;.</p>
<h2 id="benchmarki-tak-ale-z-ręką-na-sercu">Benchmarki? Tak, ale z ręką na sercu</h2>
<p>I na koniec ta tabelka, przez którą w ogóle klikasz „Download&quot; — słupki, w których nowy
model bije wszystko dookoła. Model card może nawet nieść ustrukturyzowane wyniki w polu
<code>model-index</code>, z zadaniem, datasetem, metryką i źródłem.<sup id="fnref3:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> Fajnie. Tylko traktuj to jak
deklarację producenta, nie jak wyrok.</p>
<p>Jest udokumentowany problem zwany <strong>benchmark data contamination</strong>: dane testowe benchmarku
wyciekają do zbioru treningowego modelu, przez co wynik na tym teście rośnie bez realnej
poprawy jakości.<sup id="fnref:8"><a href="#fn:8" class="footnote-ref" role="doc-noteref">8</a></sup> Model po prostu „widział odpowiedzi&quot; na egzaminie. To nie teoria
spiskowa — poświęcono temu prace przeglądowe. Dlatego liczba w tabelce mówi ci co najwyżej,
że warto sprawdzić samemu na swoim zastosowaniu, a nie że sprawa zamknięta. Najlepszy
benchmark i tak jest jeden: twój własny prompt, którego nikt nie mógł wcześniej wkuć.</p>
<h2 id="zrób-to-sam-lista-na-lodówkę">Zrób to sam: lista na lodówkę</h2>
<p>Cała ta gadka sprowadza się do sześciu spojrzeń w kartę modelu, zanim ruszysz pobieranie:</p>
<table>
	<thead>
			<tr>
					<th>Sprawdź</th>
					<th>Gdzie</th>
					<th>Czerwona flaga</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Rozmiar i wariant</td>
					<td>liczba parametrów, czy jest GGUF (np. <code>Q4_K_M</code>)</td>
					<td>tylko pełna precyzja, brak GGUF</td>
			</tr>
			<tr>
					<td>Licencja</td>
					<td>pole <code>license</code> / <code>license_link</code></td>
					<td><code>other</code> bez przeczytanej treści, „research only&quot;</td>
			</tr>
			<tr>
					<td>Kontekst</td>
					<td>deklaracja modelu vs domyślne okno runtime&rsquo;u</td>
					<td>liczysz na 128k, dostajesz 4k</td>
			</tr>
			<tr>
					<td>Wsparcie narzędzia</td>
					<td>GGUF gotowy? architektura znana <code>llama.cpp</code>?</td>
					<td>świeża architektura, brak konwertera</td>
			</tr>
			<tr>
					<td>Instruct vs base</td>
					<td>dopisek w nazwie, karta modelu</td>
					<td>base tam, gdzie chcesz rozmawiać</td>
			</tr>
			<tr>
					<td>Benchmarki</td>
					<td>tabelka wyników, metodologia</td>
					<td>same słupki bez metody, ryzyko skażenia</td>
			</tr>
	</tbody>
</table>
<p>Wydrukuj, przyklej nad biurkiem, albo po prostu zapamiętaj rytm: waga, licencja, kontekst,
wsparcie, wariant, benchmarki. Przy trzecim nowym modelu przejdziesz to odruchowo.</p>
<p>Bo świeży model to trochę jak używane auto z ogłoszenia: zdjęcia lśnią, opis zachwala, scena
piszczy z zachwytu. Ale to ty siadasz za kierownicą i to ty potem stoisz na poboczu, jak się
okaże, że pod maską nie ma silnika pasującego do twojej karty. Pięć minut zaglądania pod
maskę — kartę modelu — kosztuje mniej niż wieczór klikania w „czemu to nie działa&quot;.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Hugging Face Hub docs — Model Cards (metadane: <code>license</code>, <code>license_name</code>/<code>license_link</code>, <code>base_model</code>/<code>base_model_relation</code>, <code>model-index</code>), <a href="https://huggingface.co/docs/hub/en/model-cards">huggingface.co/docs/hub/en/model-cards</a>.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref1:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref2:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref3:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>llama.cpp — wymóg formatu GGUF, konwersja skryptami <code>convert_*.py</code>, przestrzeń „GGUF-my-repo&quot;, <a href="https://github.com/ggml-org/llama.cpp/blob/master/README.md">README repo ggml-org/llama.cpp</a>.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref1:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>llama.cpp — poziomy kwantyzacji GGUF (IQ*, Q2_K–Q8_0, F16) oraz przykład Llama-3.1-8B: F16 ≈ 14,96 GiB, Q4_K_M ≈ 4,58 GiB, <a href="https://github.com/ggml-org/llama.cpp/blob/master/tools/quantize/README.md">tools/quantize/README.md</a>.&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p>Ollama docs — Context length: domyślne dobieranie okna kontekstu do VRAM (poniżej 24 GiB → 4k, 24–48 GiB → 32k, od 48 GiB → 256k), zmienna <code>OLLAMA_CONTEXT_LENGTH</code> oraz uwaga o rosnącym koszcie pamięci, <a href="https://docs.ollama.com/context-length">docs.ollama.com/context-length</a>.&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref1:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:5">
<p>Ollama docs — <code>PARAMETER num_ctx</code> (okno kontekstu modelu) w Modelfile oraz nadpisywanie parametrów Modelfile opcjami podanymi w locie przez API, <a href="https://github.com/ollama/ollama/blob/main/docs/modelfile.mdx#valid-parameters-and-values">docs/modelfile.mdx</a>.&#160;<a href="#fnref:5" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:6">
<p>llama.cpp — kroki dodania wsparcia nowej architektury (skrypty konwersji w Pythonie + kod C++ + testy CPU/CUDA/Metal), <a href="https://github.com/ggml-org/llama.cpp/blob/master/docs/development/HOWTO-add-model.md">docs/development/HOWTO-add-model.md</a>.&#160;<a href="#fnref:6" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:7">
<p>Hugging Face transformers docs — Chat templating: różnica base vs instruct/chat, tokeny kontrolne, <code>apply_chat_template</code>, ryzyko złego formatu promptu, <a href="https://huggingface.co/docs/transformers/en/chat_templating">huggingface.co/docs/transformers/en/chat_templating</a>.&#160;<a href="#fnref:7" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref1:7" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref2:7" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:8">
<p>„Benchmark Data Contamination of Large Language Models: A Survey&quot;, przegląd problemu przecieku danych ewaluacyjnych do zbioru treningowego, <a href="https://arxiv.org/abs/2406.04244">arXiv:2406.04244</a>.&#160;<a href="#fnref:8" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item></channel></rss>