Współczesna sztuczna inteligencja kojarzy się wyłącznie z ogromnymi centrami danych i gigantycznym zużyciem prądu. Grupa niezależnych inżynierów postanowiła jednak rzucić wyzwanie temu trendowi i stworzyła projekt CrankGPT. To w pełni autonomiczne, odcięte od świata zewnętrznego urządzenie, które do działania nie potrzebuje ani baterii, ani chmury. Cała energia niezbędna do uruchomienia lokalnych modeli pochodzi z siły ludzkich mięśni, a konkretnie z ręcznej korby generatora.
Raspberry Pi 5 na korbkę. Jak inżynierowie rozwiązali problem z zasilaniem?
Sercem tego niezwykłego asystenta został popularny mikrokomputer Raspberry Pi 5 w wersji z 8GB pamięci RAM, doposażony w dedykowaną nakładkę audio z dwoma mikrofonami. Największym wyzwaniem dla konstruktorów nie był jednak dobór komponentów, a stabilne zasilenie całego zestawu.
Zastosowany generator ręczny o mocy 20W potrafił drastycznie obniżyć napięcie w momentach, gdy procesor wchodził na najwyższe obroty podczas generowania odpowiedzi. Tak gwałtowne skoki poboru prądu aktywowały wewnętrzne zabezpieczenia generatora, co całkowicie odcinało zasilanie i resetowało sprzęt. Aby temu zapobiec i dać użytkownikowi chwilę wytchnienia, inżynierowie zaprojektowali dedykowaną płytkę z kondensatorami, pełniącą funkcję rezerwuaru energii na około 20 sekund.
Co ciekawe, obciążenie procesora można w tym przypadku poczuć na własnej skórze. W ułamku sekundy, gdy komputer jednocześnie przetwarza tekst i generuje mowę, opór na korbie gwałtownie rośnie, a kręcenie staje się zauważalnie cięższe. Prawdziwą zmorą twórców okazał się także czas bootowania.
Minuta spędzona na kręceniu korbą tylko po to, by załadował się system, była absolutnie nie do zaakceptowania. Konstruktorzy musieli więc odchudzić oprogramowanie do granic możliwości. Postawili na minimalistyczny system DietPi i wyłączyli wszystkie zbędne moduły, w tym łączność bezprzewodową oraz Bluetooth. Efekt? Czas ładowania samego systemu operacyjnego udało się skrócić do oszałamiających 3 sekund.
Oprogramowanie CrankGPT. Miniaturowe modele i sprytny trik z generowaniem mowy
Aby konwersacja z urządzeniem na korbkę miała jakikolwiek sens, system musiał odpowiadać bez irytujących, wielosekundowych opóźnień. To wymusiło całkowitą rezygnację z gotowych, ciężkich frameworków. Konstruktorzy od zera napisali własnego asystenta głosowego, optymalizując każdy etap kodu pod kątem pracy na zwykłym procesorze. Do rozpoznawania mowy wykorzystano system Moonshine, który okazał się bezkonkurencyjny pod względem prędkości. Co ważne, radzi sobie on świetnie nawet z mechanicznym hałasem generowanym przez obracaną tuż obok korbę.
Prawdziwym kluczem do sukcesu był jednak dobór miniaturowych modeli językowych np. Gemma 3 oraz mniejsze warianty Liquid AI. Większe modele, chociaż często promowane na rynku jako rozwiązania mobilne, na tym sprzęcie były po prostu zbyt wolne. Generowały zaledwie kilka słów na sekundę, co całkowicie rujnowało płynność rozmowy. W przypadku najmniejszych algorytmów czas potrzebny na uzyskanie pierwszej odpowiedzi udało się skrócić do niespełna sekundy.
Ostatnim elementem układanki był system syntezy mowy, w którym bezapelacyjnie zwyciężył model Piper, generujący testową wypowiedź w zaledwie pół sekundy. Aby uniknąć nienaturalnych pauz w trakcie odtwarzania głosu, inżynierowie zastosowali sprytny trik polegający na przesyłaniu tekstu strumieniowo, zdanie po zdaniu. System bardzo rygorystycznie ogranicza długość pierwszego wypowiadanego zdania, dzięki czemu użytkownik słyszy pierwsze słowa niemal natychmiast, podczas gdy komputer w tle nieprzerwanie generuje dalszą część wypowiedzi.
Oczywiście nikt nie spodziewa się, że jutro zaczniemy kręcić korbą, by sprawdzić pogodę w smartfonie. CrankGPT to przede wszystkim genialna ciekawostka i dowód na to, że przy odpowiedniej optymalizacji kodu, lokalne AI da się uruchomić dosłownie na wszystkim.
Źródło i zdjęcie otwierające: squeezlabs.github.io
