>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Python

Jak wprowadzić AI do inteligentnych okularów bez szaleństwa z powodu opóźnień

Wyobraź sobie, że tworzysz oprogramowanie do inteligentnych okularów lub zegarka. Potrzebujesz, aby urządzenie rozumiało polecenia głosowe: "zgaś światło", "jaka będzie pogoda jutro w Petersburgu?" lub "zarezerwuj stolik." Zazwyczaj wywoływałbyś API dużych modeli językowych, takich jak Gemini czy GPT-4. Ale wtedy zaczynają się problemy: kilka sekund opóźnienia niszczy całe wrażenia użytkownika, a rachunki za tokeny rosną szybciej niż liczba użytkowników.

Zespół w Cactus Compute postanowił pójść inną drogą. Przenieśli wiedzę z ogromnego Gemini 1.5 do miniaturowego modelu o nazwie Needle, który ma zaledwie 26 milionów parametrów. Dla porównania: to setki razy mniej niż popularne „małe" modele jak Llama-3-8B czy nawet Qwen-0.5B.

Logo

Co potrafi ten miniaturowy model

Needle nie jest chatbotem, który będzie z tobą dyskutować o sensie życia. To wąsko wyspecjalizowane narzędzie do Function Calling. Przyjmuje zapytanie użytkownika w języku naturalnym i zamienia je na strukturalny JSON, który Twój kod jest w stanie przetworzyć.

Główną cechą jest tutaj szybkość. Na własnej infrastrukturze model osiąga zawrotne 6000 tokenów na sekundę podczas prefill i 1200 podczas generowania. Ale nawet jeśli uruchomisz go lokalnie na zwykłym MacBooku, działa praktycznie natychmiast.

Oto kilka rzeczy, które czynią Needle interesującym projektem:

  • Model był trenowany na 200 miliardach tokenów. To poważna ilość jak na jego rozmiar.
  • Jest zoptymalizowany pod kątem edge computingu — telefonów, urządzeń noszonych i IoT.
  • Zawiera wygodny Playground, gdzie możesz dostroić model pod kątem swoich konkretnych narzędzi w zaledwie kilka kliknięć.

Jak to działa w środku

Architektura nazywa się Simple Attention Network. Jeśli spojrzysz na diagram, który autorzy zostawili w repozytorium, zobaczysz dość eleganckie rozwiązanie.

Model składa się z 12-warstwowego enkodera i 8-warstwowego dekodera. Co ciekawe, enkoder nie ma tradycyjnych sieci Feed-Forward (FFN) — zawiera tylko Self-Attention i Gated Residual connections. To oszczędza dużo pamięci i zasobów obliczeniowych. Wagi embeddingów i wyjściowej warstwy liniowej są współdzielone, co również jest standardowym trikiem pozwalającym zmniejszyć rozmiar modelu bez utraty jakości.

Autorzy uczciwie przyznają: Needle to eksperyment. Przewyższa FunctionGemma-270m i Qwen-0.6B w zadaniach function calling, ale ustępuje im w zwykłych rozmowach. Małe modele mają małą „pamięć" świata, więc łatwo je zbić z tropu złożonym pytaniem off-topic.

Szybki start i dostrajanie

Wdrożenie projektu jest banalnie proste. Po sklonowaniu repozytorium i uruchomieniu skryptu setup, polecenie needle playground otwiera interfejs webowy. Możesz tam od razu przetestować model na własnych przykładach.

Jeśli potrzebujesz osadzić Needle w projekcie Python, kod wygląda znajomo:

from needle import SimpleAttentionNetwork, load_checkpoint, generate, get_tokenizer

# Загружаем веса и конфиг
params, config = load_checkpoint("checkpoints/needle.pkl")
model = SimpleAttentionNetwork(config)
tokenizer = get_tokenizer()

# Просим модель вызвать функцию
result = generate(
    model, params, tokenizer,
    query="Сколько градусов сейчас в Сочи?",
    tools='[{"name":"get_weather","description":"Узнать погоду в городе.","parameters":{"location":{"type":"string","description":"Название города."}}}]'
)
print(result)
# [{"name":"get_weather","arguments":{"location":"Сочи"}}]

Najcenniejsze jest to, jak proste jest dostrajanie. Jeśli masz konkretne API, możesz „wytrenować" Needle na nich. Autorzy zalecają przygotowanie co najmniej 120 przykładów na narzędzie, aby uniknąć overfittingu. W repozytorium jest nawet skrypt do generowania takich danych przy użyciu „starszego" Gemini.

Kto powinien spróbować

Widzę Needle w projektach, gdzie prywatność i praca offline są kluczowe. Na przykład w systemie smart home, który nie powinien wysyłać Twoich rozmów do chmury, lub w aplikacji mobilnej do sterowania złożonym interfejsem głosem.

Oczywiście 26 milionów parametrów nakłada ograniczenia. Nie będziesz w stanie poprosić go o napisanie eseju czy tłumaczenie złożonego tekstu technicznego. Ale jeśli Twoim zadaniem jest zrozumienie, co użytkownik chce „przyciszyć

Powiązane projekty