W tym temacie pokażę jak każdy może uruchomić Nemotron 3 Nano na własnym komputerze a potem przetestuję go z różnego rodzaju zadaniami z elektroniki i programowania. Nemotron 3 Nano to nowy myślący model LLM oparty o architekturę Mixture-of-Experts z hybrydą Mamba-2 + Transformer. Model ma 30 mld parametrów, ale w trakcie inferencji aktywne jest tylko ok. 3–4 mld, co znacząco zmniejsza wymagania obliczeniowe.
Nemotron-3-nano-30b-a3b obsługuje bardzo długi kontekst (do 1M tokenów), kilka języków (niemiecki, francuski, włoski, itd; bez polskiego) i udostępniony na otwartej licencji NVIDIA Open Model License. Model zezwala na użycie komercyjne.
Informacje o użytym modelu:
https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard
Dostęp online:
https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b
Uruchomienie modelu lokalnie
Pobieramy Ollama:
https://ollama.com/
Od jakiegoś czasu Ollama ma już normalną aplikację na Windowsa. Wystarczy pobrać, uruchomić, i mamy już okienkowy interfejs do rozmowy z AI. Trzeba jeszcze w obrębie tej samej aplikacji dodać modele, najłatwiej jest je pobrać wpisując ich nazwę z Ollama Library:
https://ollama.com/library
Model jest świeżutki, opublikowany ponad tydzień temu.
W tym przypadku wpisałem: nemotron-3-nano:30b. Model zajmuje około 23 GB:
Po pobraniu można przejść do testów. To naprawdę bardzo proste.
Dekodowanie kodu paskowego rezystorów
Na początek zadanie z którym chyba spotyka się każdy początkujący elektronik - dekodowanie rezystorów. Jednocześnie te zadanie potencjalnie wymaga podstawowej zdolności przetwarzania danych, choć tu można być argumentować, że model AI nie "przewiduje", a jedynie zapamiętał sobie każdą możliwą permutację kolorów. Trudno mi to ocenić.
Do porównania użyłem naszego Elektrodowego kalkulatora:
https://www.elektroda.pl/calculators/4-band-resistor
Oczekiwany rezultat:
Nemotron poradził sobie z zadaniem:
Odwrotny test rezystora
Czy AI potrafi określić kolory dla danych parametrów rezystora, a potem narysować to w HTML+JS? Oczywiście całość jako osobny chat - bez historii.
Dał radę określić kolory, ale czy narysował?
Tu jednak mamy małą wpadkę. Kod się nie uruchamia - błąd składni JS.
Rezystor dla LED
Teraz drugie klasyczne zadanie, choć i tu wybrałem nieco mniej typowe napięcie. Obliczenie rezystora dla LED:
Model nie dość, że poradził sobie z zadaniem, to jeszcze próbował doradzać dobór rzeczywistych wartości rezystorów z szeregu.
Szerokość ścieżki dla prądu
https://www.elektroda.pl/calculators/trace-width-calculator-internal
Gwiazdki w konsoli
Kolejny test dotyczył programowania. Postarałem się wymyśleć jakieś względnie proste, ale też mniej typowe zadanie. Zdecydowałem, że AI będzie miało utworzyć cztery prostokąty z gwiazdek w konsoli i wyświetlić je na tle literek 'B'.
Kod: C / C++
Poszło bardzo dobrze - działa.
Pora na modyfikację. Czy AI zrozumie kontekst? Chcę, aby każdy prostokąt był wypełniony każdym kolejnym numerkiem.
Działa:
Gra w HTML+JS - paletka
Teraz jakaś prosta gierka. Kolejne zadanie egzaminacyjne dla studenta. Opis dałem nieco precyzyjny, ale to zawsze pomaga przy pracy z AI.
Wygenerowany kod:
Kod: HTML, XML
Jestem zaskoczony, ale to działa - nie mam zarzutów:
Poprosiłem o modyfikację - dodanie przeciwnika:
No, pewnie niedociągnięcia są. Przeciwnik jest w poprzek a dodatkowo piłeczka czasem blokuje się między paletką a ścianą, ale i tak to imponujące.
Arduino i odczyt z TC74
TC74 to bardzo prosty czujnik temperatury z interfejsem I2C. Odczyt temperatury z niego sprowadza się do odczytania jednego bajta. Czy Nemotron o tym wie?
Natomiast wygenerowany kod...
Kod: C / C++
Według mnie nie jest to poprawny kod. Odczytany bajt jest po prostu temperaturą, nie trzeba mnożyć przez 0.25. Dodatkowo wystarczy odczytać jeden bajt. Jeszcze też nie pasuje mi ten adres, choć on zależy od wersji TC74.
Klasyka - literki r w strawberry
To dość popularny przykład, AI ma problemy z liczeniem literek, bo operuje na tokenach.
Ale się zastanawia...
Dobrze! A może teraz mniej typowe słowo? To sprawdzi, czy on ma strawberry w danych uczących.
Udało się.
Logiczne zagadki
Kilka zagadek z którymi LLM mają problemy. Podchwytliwe zadania.
Udało się, choć długo system nad tym myślał:
Drugie podchwytliwe pytanie:
W tym pytaniu chodzi o liczenie nóg - cztery małpy skaczą po łóżku, na podłodze są trzy kury. Łóżko ma cztery nogi. Ile nóg jest na podłodze? 3*2 + 4 = 10.
LLM odpowiedział, że 6. Dyskusyjne... nie wliczył nóżek łóżka, ale niby powinien. Dodatkowo... złe uzasadnienie co do małp dał, one się nie liczą, bo są na łóżku. Rozumiem jednak, że pytanie jest rzeczywiście niejasno zformułowane i można argumentować, że rzeczywiście łóżko się nie liczy.
Informacje o Tasmota
Tasmota to otwarte oprogramowanie dla urządzeń IoT, czy Nemotron o tym wie?
W myślach pojawiła się halucynacja odnośnie nazwy. Reszta w miarę ok:
Z tym JSON to dyskusyjne, chyba, że mu chodzi o cmnd API.
Ogólnie, opis w miarę zgodny ze stanem faktycznym wyszedł.
Język polski
Język polski nie jest oficjalnie wspierany, ale i tak warto sprawdzić.
Wygląda akceptowalnie, tylko sporadycznie pojawiają się błędy językowe.
Krótki test wydajności na moim starym laptopie
Prezentacje wykonałem na starym laptopie Asus z serii ROG. Specyfikacja:
- Intel (R) Core(TM) i7-6700HQ CPU @ 2.60GHz
- 48 GB RAM
- GeForce GTX 1060M
Filmik pokazuje jak wygląda generowanie odpowiedzi przez Nemotron na żywo:
Podsumowanie
Być może obrałem zbyt łatwe zadania dla tego LLM, ale dla mnie rezultaty są imponujące. Nie spodziewałem się tego, że takie coś ruszy na moim starym laptopie z 2018 roku.
Ten model rzeczywiście radzi sobie z podstawami elektroniki, logiki i programowania, choć brakuje mu chociażby wiedzy ogólnej - halucynuje co do protokołu komunikacji TC74, co do pochodzenia nazwy Tasmoty, niektórych jej zastosowań.
Mogę się tu zgodzić z tym, co przyznaje sama Nvidia - to jest mały i wydajny model do systemów agentowych, a nie Wikipedia.
Czy widzicie jakieś zastosowania dla tego typu modeli LLM? Czy testowaliście już Nemotron?
Fajne? Ranking DIY Pomogłem? Kup mi kawę.