>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Python

Zo pas je AI in smartglasses in zonder gek te worden van de lag

Stel je voor dat je software bouwt voor smartglasses of een smartwatch. Je hebt nodig dat het apparaat spraakopdrachten begrijpt: "doe het licht uit", "wat wordt het weer morgen in Sint-Petersburg?" of "boek een tafel." Meestal zou je API's aanroepen van grote taalmodellen zoals Gemini of GPT-4. Maar dan beginnen de problemen: enkele seconden latentie doodt de hele gebruikerservaring, en de rekeningen voor tokens groeien sneller dan je gebruikersaantal.

Het team van Cactus Compute besloot een andere aanpak te nemen. Ze hebben de kennis van de enorme Gemini 1.5 "overgezet" naar een klein model genaamd Needle, dat slechts 26 miljoen parameters groot is. Ter vergelijking: dat is honderden keren kleiner dan populaire "kleine" modellen zoals Llama-3-8B of zelfs Qwen-0.5B.

Logo

Wat dit kleine model kan doen

Needle is geen chatbot die met je zal discussiëren over de zin van het leven. Het is een smal-doel gereedschap voor Function Calling. Het neemt een verzoek van een gebruiker in natuurlijke taal en zet het om in gestructureerde JSON die je code kan begrijpen.

Het belangrijkste kenmerk hier is snelheid. Op hun eigen infrastructuur levert het model een razendsnelle 6.000 tokens per seconde op prefill en 1.200 op generatie. Maar zelfs als je het lokaal draait op een gewone MacBook, werkt het praktisch instant.

Hier zijn een paar dingen die Needle tot een interessant project maken:

  • Het model is getraind op 200 miljard tokens. Dat is een serieuze hoeveelheid voor zijn formaat.
  • Het is geoptimaliseerd voor edge computing — telefoons, wearables en IoT-apparaten.
  • Het wordt geleverd met een handige Playground waar je het model in slechts een paar klikken kunt fijnafstellen voor je specifieke tools.

Hoe het van binnen werkt

De architectuur heet Simple Attention Network. Als je naar het diagram kijkt dat de auteurs in de repository hebben achtergelaten, kun je een vrij elegante oplossing zien.

Het model bestaat uit een 12-laags encoder en een 8-laags decoder. Interessant is dat de encoder geen traditionele Feed-Forward networks (FFN) heeft — het heeft alleen Self-Attention en Gated Residual connections. Dit bespaart veel geheugen en rekenresources. De embedding-gewichten en de weights van de output linear layer zijn gekoppeld, wat ook een standaard truc is voor het verkleinen van het modelformaat zonder kwaliteitsverlies.

De auteurs zeggen eerlijk: Needle is een experiment. Het presteert beter dan FunctionGemma-270m en Qwen-0.6B in functieaanroeptaken, maar blijft achter in normale conversaties. Kleine modellen hebben weinig "geheugen" van de wereld, dus het is gemakkelijk om ze te verwarren met een complexe off-topic vraag.

Snelle start en fijnafstellen

Het deployen van het project is kinderlijk eenvoudig. Na het klonen van de repository en het uitvoeren van het setup-script opent commando needle playground de webinterface. Daar kun je het model onmiddellijk testen met je eigen voorbeelden.

Als je Needle in een Python-project wilt embedden, ziet de code er bekend uit:

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":"Сочи"}}]

Het waardevolste is de eenvoud van fijnafstellen. Als je specifieke API's hebt, kun je Needle erop "trainen". De auteurs raden aan om minstens 120 voorbeelden per tool voor te bereiden om overfitting te voorkomen. De repository heeft zelfs een script voor het genereren van dergelijke data met behulp van het "oudere" Gemini.

Voor wie is het de moeite waard om te proberen

Ik zie Needle in projecten waar privacy en offline werking cruciaal zijn. Bijvoorbeeld in een smart home-systeem dat je gesprekken niet naar de cloud zou moeten sturen, of in een mobiele app voor het besturen van een complexe interface met je stem.

Natuurlijk brengen 26 miljoen parameters beperkingen met zich mee. Je zult er geen essay mee kunnen laten schrijven of complexe technische tekst mee kunnen vertalen. Maar als je taak is om te begrijpen wat de gebruiker wil met "zet het zachter" of "plan een vergadering voor donderdag," zal Needle het sneller en goedkoper afhandelen dan elk ander model.

Het project is open source, de weights staan op Hugging Face, en de MIT-licentie staat toe dat je het in commerciële producten gebruikt. Als je op zoek was naar een manier om AI toe te voegen aan een microcontroller of een oude smartphone — dit is een geweldige kandidaat om te testen.

Gerelateerde projecten