Free-droid – vas és szellem

0
(0)

Szabinak, a free-droidnak ki kellett találni a vázát és a szellemét. A tervezés eltartott egy ideig, mire megszületett a végső választás: egy lánctalpas robot, aminek Raspberry Pi 5 a lelke. A Pi5 képes egy 3B-s model-t elfogadható sebességgel meghajtani, anélkül, hogy elfüstölne, vagy perceket kellene várni egy válaszra.

A vas

A Pi5 kapott egy aktív hűtést, egy Cytron HAT-MDD10 szervo motor vezérlőt a lánctalpaknak, 2 db HC-SR04 ultrahangos érzékelőt (elől és hátul), XL4016 és LM2596 DC konvertereket. Az áramellátásról egy 5200 mAh CNHL 3S LiPo akku gondoskodik.

A hardver nagy részét az Aliexpress-ről, a többi komponenst a Málna PC-től, a Techfun-tól és a Hestore-tól rendeltem.

Fontos szempont volt, hogy az alkatrészek kereskedelemben kaphatóak és könnyen elérhetőek legyenek.

A főbb alkatrészek listája:

VázLánctalpas alvázKék eloxált alumínium ötvözet, lánctalpas meghajtás
Mechanika2-tengelyes Pan-Tilt szervó mechanikaKameramozgatás, árbócra szerelve
TápellátásCNHL LiPo akku3S (11.1V–12.6V), 5200mAh, 100C
TöltőSkyRC IMAX B6 V2Jelenleg 12V/2A adapterrel, max 1.5A
KonverterDC-DC Step-down5V / 5A kimenet a Pi 5-höz
AgyRaspberry Pi 58GB RAM
Motorvezérlő (pan/tilt szervókhoz)PCA96855V
Motorvezérlő (lánctalpak)Cytron HAT-MDD102 csatornás

A szellem

A robot irányításához és a kommunikációhoz szükség volt egy LLM-re is. Az már látszott az elején, hogy két modellt fogok használni, mert a 3B-s modellek nem elég értelmesek a hétköznapi használathoz. Ezért a Pi5-ön egy 3B-s modellt fog futtatni Szabi, a felhőben egy erősebb gépen pedig egy 7-9B-s modell fog futni. Ha megszakad a kapcsolat, akkor fallback-elünk a 3B-s modellre.

Ezekkel az LLM modellekkel kezdtem a fine-tuning-ot és a benchmarkolást:

  • llama3.2-3b
  • qwen2.5-3b
  • llama3.1-8B
  • qwen2.5-7B
  • PULI-LlumiX-Llama-3.1
  • Racka-4B

A kezdő dataset egy 700-as lista volt, hogy egyedi persona-t kapjon Szabi. Fontos volt, hogy a karakter tisztán hozza a datasetbe kódolt értékrendet és értelmesen reagáljon a mozgás paracsokra is.

A Racka és a PULI gyorsan kiestek, mert alacsonyak voltak az alap képességeik a projekthez. Hosszas tesztelés, hangolás, tesztelés iterációk után végül a llama3.2-3b és a llama3.1-8B modellek maradtak versenyben.

A llama3.1-8B-t feltöltöttem HuggingFace-re is, hogy élőben lehessen tesztelni a finomhangolás eredményeit. (Bár a Szabin használt inference és a HuggingFace-en futó eltér egy kicsit egymástól, ezért a válaszaik is kicsit eltérőek lehetnek.

A „tudásbázis”-ról egy RAG gondoskodik: Yotengrit és technikai tudásbázis.

Fine-tune

A jelenlegi (v12) verzióig hosszú és rögös volt az út. Hangoltuk a persona-t, tisztítottuk, finomítottuk a dataset-et, bővítettük a RAG-ot miközben csak a persona-val kapcsolatos anyag maradat a dataset-ben.

A benchmarkok szépen növekedtek: v4 79 → v5 90.5 → v6 106.5 (1-5-ig pontoztam a modell által adott válaszokat).

A v7-től red_team becnhmarkot is futttattam, aminek az volt a feladata hogy megmutassa mennyire stabil a persona a provokációkkal és jail-break kísérletekkel szemben.

Rá kellett jönnöm, hogy a 8B modell (és kiváltképp a 3B) a hosszú, költői mondatokat „nem érti”, ezért a dataset-ben rövidítettem és tömörítettem a mondatokat, hogy emészthetőbbek legyenek.

Így jutottam el a v12-es verzióig: https://huggingface.co/spaces/jabba77/Szabi-Chat (https://ollama.com/csaba_ajtony/szabi-8b-v12)

Miért 3B és 8B modellek? A célom az volt mind a hardver, mind a szoftver esetében, hogy megtaláljam azt a minimális konfigurációt, ami még elfogadhatóan működik és költséghatékony is egyben. Ennek a POC-nak a célja, annak felmutatása, hogy open-source LLM-el is lehet saját és megbízható robotot építeni – nem vagyunk rászorulva a multicégek zárt-kódú robotjaira és modelljeire.

Hogy a modellek hiányosságait orvosoljam három réteg szolgálja ki a kérdéseket: fine-tuned persona, RAG (tudásbázis) és orchestrator kód ami előszűri a kérdéseket az LLM számára.

Fine-tune eszközök

A tanításhoz a Google Colab platformot használtam, ami ingyenesen elérhetővé tesz GPU-kat a finetune-hoz. A fine-tune-hoz elég egy Notebook-ot feltölteni, majd a kimenetet (GGUF és Lora adapterek) Google Drive-ra másolni. A fine-tune-hoz Unsloth QLoRA-t használtam. A dataset Alpaca formátumban készült.

A Notebook futtatható VSCode-ből vagy böngészőből is. Egy 8B-s modell fine-tune általában 4 órát vett igénybe, aztán jöttek a benchmarkok és a kiértékelés minden kör végén.

# 1. Unsloth telepítése (hivatalos Colab-installer — illeszti a torch/bnb/triton verziókat).
!pip install -q "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
!pip install -q --no-deps trl peft accelerate bitsandbytes

# 2. Repo a main-ről (a tiszta dataset + finetune.py), majd be a training/-be.
!git clone --depth 1 -b main https://github.com/pits2022/free-droid.git
%cd free-droid/training

!python finetune.py --variant llama --preset gentle --tag v3

Mennyire tetszett amit olvastál?

Kattints egy csillagra az értékeléshez!

Átlagos értékelés 0 / 5. Szavazatok száma 0

Még nincsenek értékelések!

Vélemény, hozzászólás?