Dokáže umelá inteligencia pomôcť pri zvýšení produktivity vývojárov?

Tím líder backendového tímu v softvérovej spoločnosti Touch4IT, Dávid Ondruš, sa v nedávnom prieskume pozrel na menej známe lokálne AI nástroje a hodnotil ako môžu byť nápomocné pri vývoji. Je na čase začať s nimi pracovať? Pozrime sa, čo ukázal prieskum.

29. 04. 2024
Zdielať článok

Tím líder backendového tímu v softvérovej spoločnosti Touch4IT, Dávid Ondruš, sa v nedávnom prieskume pozrel na menej známe lokálne AI nástroje a hodnotil ako môžu byť nápomocné pri vývoji. Je na čase začať s nimi pracovať? Pozrime sa, čo ukázal prieskum.

Úvod
Asi len ťažko nájdeme niekoho, kto ešte nepočul o AI nástrojoch alebo ich ešte nepoužil. ChatGPT, GitHub Copilot, Amazon CodeWhisperer a iné sa rýchlo stali veľmi populárnymi. Ja som si zvolil inú cestu – postavil som si úplne lokálnu, offline, bezplatnú a zväčša open-source konfiguráciu.

Už po pár dňoch používania som mal zoznam pozitívnych skúseností, ako mi lokálne bežiaci model pomohol:

navrhol doplnenia môjho kódu o:

  • podmienky “if” v správe používateľských oprávnení,
  • chybové kódy z validácie tela dopytov na server,
  • údaje v konštrukciu dátových modelov,
  • vysvetlil nezvyčajný JavaScript kód, ktorým som si nebol istý,
  • upozornil ma na možnú chybu v súvislosti so stránkovanou odpoveďou z dopytu na server, ktorú som spracovával,
  • poradil mi, ako premeniť môj algoritmus na jednoriadkový zápis,
  • pomohol mi moje technické vysvetlenie preformulovať do marketingovo ladenej podoby.

V nasledujúcich riadkoch preskúmame ako si poskladať rovnakú konfiguráciu tiež.

Aká bola moja motivácia
Prečo som sa do prieskumu pustil?
Zostávať konkurencieschopným na trhu je dôležité a stratiť sa v tomto rýchlo sa meniacom sektore nie je úplne múdre. Vývojári tvrdia, že asistenti AI zvyšujú ich produktivitu, takže nechcem zaostávať.

Prečo až teraz?
Hoci rozumiem ako dôležité je byť informovaný, používať aktuálne moderné nástroje a nezaseknúť sa v predchádzajúcom storočí, nie som človek, ktorý by okamžite skočil po nových trendoch. Obvykle pozorujem, premýšľam a ak sa mi dlhodobo pozdávajú, nájdem si k nim svoju cestu. Často sú už chyby odstránené a optimalizácie zavedené.

Prečo jednoducho nepoužiť dobre známe verejné a spoľahlivé služby?
Pracovná časť používania AI modelov je u mňa na klientskom kóde, takže dobrovoľne posielať údaje externej službe, nad ktorou nemám plnú kontrolu, je pre mňa neakceptovateľné. Napriek tomu, že väčšina z nich tvrdí, že sú v súlade so štandardom SoC2, ISO a že údaje žiadnym spôsobom nespracovávajú – neverím tomu. Na základe súdnych žalôb podaných proti technologickým gigantom v posledných rokoch mám obrovské problémy dôverovať vysoko komerčne orientovaným spoločnostiam a ich produktom, či službám.

Čo odhalil môj výskum?
Výskum súčasných možností AI ma zaviedol k veľkým jazykovým modelom (LLM). Moja pozornosť bola hlavne (ale nie výhradne) zameraná na pracovné úlohy. Výsledky ukázali, že potrebujem súbor nástrojov namiesto all-in-one riešenia.

Definoval som nasledujúce očakávania a požiadavky:

    • Jednoduchosť použitia, ideálne s grafickým rozhraním a minimálnym alebo žiadnym terminálom/konzolou,
    • Integrácia s IDE (bez potreby opustiť jeho okno),
    • Dokončenie kódu,
    • Akcie pri selekcii kódu, vrátane aspoň bežných, ako sú vysvetlenie, písanie testov a hľadanie chýb,
    • Voľné chatovanie, ideálne s podporou médií (obrázkov),
    • Sloboda voľby akéhokoľvek LLM,
    • Nefiltrovaný výstup informácií.

    Moja lokálna konfigurácia:
    IDE a OS: JetBrains WebStorm IDE bežiace na operačnom systéme Windows 10

    Hardware: i7-6700HQ, 32 GB RAM, GTX 1070 8 GB VRAM

    Polovica toho, čo mám, je postačujúca, takže sa neobávajte, ak váš stroj nemá toľko pamäte – viac znamená len viac možností. Taktiež vôbec nepotrebujete rovnaké IDE a ani operačný systém, nástroje podporujú takmer všetko.

    Všetko spúšťam priamo a natívne – bez WSL2, bez Dockera. Pre najväčšie modely môžem dosiahnuť využitie hardvéru 31,8/32 GB RAM a 7,8/8 GB VRAM – použitie je plynulé a stabilné po celý deň. V prostredí Dockera bolo problematické sfunkčniť GPU offloading a potenciál hardvérových zdrojov nebol naplnený v prostredí virtualizácie.

    Softvér, ktorý momentálne používam:
    Toto sú mnou používané nástroje. Ak vás zaujíma všetko, čo som vyskúšal, nájdete to v závere článku.

    LM Studio (https://lmstudio.ai/) – Zatiaľ najlepší all-in-one GUI. EXE súbor inštaluje všetko – grafické rozhranie aj s backendom. Pracuje bezchybne, je veľmi jednoduchý na použitie, podporuje text aj obrázky, používa iba formát modelu GGUF, poskytuje bezproblémové využitie GPU a obsahuje lokálny server (API kompatibilné s OpenAI), takže sa k nemu môžu pripojiť iné softvérové nástroje.

    Napriek tomu, že je lokálny, bezplatný a s dôrazom na súkromie, telemetria bola niečo, čo som chcel vylúčiť, pretože nie je open source. Vytvoril som si Man-In-The-Middle lokálnu proxy, nasmeroval som cez neho všetko z tohto procesu a sledoval som prevádzku, aby som potvrdil, že žiadne údaje neodchádzajú von – nesklamalo to, diali sa len kontroly nových verzií. Pre ešte väčšiu istotu by niekto mohol chcieť blokovať vonkajšiu prevádzku vo firewalle.

    Pre IDE pluginy používam kombináciu niekoľkých možností:
    CodeGPT
    (https://github.com/carlrobertoh/CodeGPT) – Tento výkonný open-source plugin sa pripája k lokálnemu serveru (musí spĺňať rozhranie OpenAI), keď je nakonfigurovaný s lokálnou adresou hostiteľa a falošným API kľúčom. Zatiaľ čo v čase písania neposkytuje dokončenie kódu, vyniká vo vykonávaní operácií na selekcii kódu a ponúka jednoduchý chat v rámci IDE.

    Full Line Code Completion (https://plugins.jetbrains.com/plugin/14823-full-line-code-completion) – Tento plugin využíva učenie sa na lokálnom stroji a poskytuje neuveriteľne rýchle návrhy, ktoré fungujú na CPU. JavaScript, ktorý používam najčastejšie, je stále experimentálny a nie je natrénovaný ako Python, ale som spokojný s výstupmi a plugin je pod aktívnym vývojom.

    Tabby (https://github.com/TabbyML/tabby) – Open-source plugin na dokončenie kódu s veľkým potenciálom, používa lokálne modely, ale môže byť náročné ho spustiť. Moja spokojnosť s jeho výstupmi je nižšia v porovnaní s vyššie uvedeným pluginom JetBrains. Najlepšie fungoval s jeho predvoleným modelom (StarCoder) lebo môj obľúbený Deepseek Coder podával nekvalitné návrhy alebo vôbec nefungoval. Páči sa mi, ale potrebuje ešte nejakú prácu.

    Modely:
    Pokiaľ ide o modely, rozsiahla otvorená knižnica modelov na adrese https://huggingface.co/ ponúka všetko, čo by ste mohli potrebovať. Väčšinou sťahujem kvantizované modely od „The Bloke“. Existuje GGUF verzia takmer všetkého – vyberám 4 bitový variant (Q4_K_M). 

    Medzi moje obľúbené základné modely v rôznych oblastiach patria:
    Malý a spoľahlivý model pre programovanie: https://huggingface.co/deepseek-ai/deepseek-coder-6.7b-instruct
    Všeobecný model: https://huggingface.co/mistralai/Mixtral-8x7B-Instruct-v0.1
    Necenzúrovaný všeobecný a pokročilý programovací model: https://huggingface.co/cognitivecomputations/dolphin-2.7-mixtral-8x7b (alebo jeho staršie verzie 2.5 a 2.6)


    Je dôležité si uvedomiť, že správne prompty robia zázraky, pričom prvý je najdôležitejší – systémový prompt alebo pre-prompt definuje charakter a správanie modelu.

    Softvér, ktorý som vyskúšal, ale momentálne nepoužívam:
    Upozornenie: Informácie nižšie odrážajú iba moju subjektívnu skúsenosť v čase písania. Vzhľadom na aktívny vývoj týchto nástrojov sa situácia môže veľmi rýchlo meniť.

    Ollama (https://github.com/jmorganca/ollama) – Najpopulárnejší terminál/konzola nástroj pre lokálny beh LLM, čoskoro má dostať podporu pre natívny Windows (okrem WSL2, ktorý je už podporovaný). Vyžaduje však samostatné GUI.

    Oobabooga Text Generation Web UI (https://github.com/oobabooga/text-generation-webui) – Napriek tomu, že ide o najpopulárnejšie GUI, mal som negatívnu skúsenosť pri pokuse o jeho spustenie kvôli neustálym chybám prevažne súvisiacich s Pythonom. Tiež nie je tak používateľsky prívetivý ako LM Studio.

    GPT4All (https://github.com/nomic-ai/gpt4all) – Bolo náročné ho spustiť a používateľská skúsenosť nebola dobrá. Načítanie základného modelu spôsobilo okamžitý pád aplikácie bez akýchkoľvek informácií.

    LoLLMs-WebUI (https://github.com/ParisNeo/LoLLMs-WebUI) – Aj keď podporuje širokú škálu formátov, vrátane obrázkov a zvukov, pre mňa nefungoval dobre a bežal iba na CPU, napriek podpore GPU. Tiež bol náročný na použitie, podobne ako Text Generation Web UI. 

    Faraday (https://faraday.dev) – Špecializovaný na AI charaktery. Podobný ako LM Studio, ale s viac chybami. Pravidelne sa zasekáva počas operácií a vyžaduje reštart. 

    Codeium (https://plugins.jetbrains.com/plugin/20540-codeium-ai-autocomplete-and-chat-for-python-js-ts-java-go) – Vyžaduje prihlásenie a používa online služby.

    CodiumAI (https://plugins.jetbrains.com/plugin/21206-codiumai–integrity-agent-powered-by-gpt-3-5-4) – Vyžaduje prihlásenie a používa online služby.

    Sourcery (https://plugins.jetbrains.com/plugin/12631-sourcery) – Sľubuje obmedzenú funkcionalitu pre open-source kód bez online služieb, ale nepodarilo sa mi ho použiť bez prihlásenia vôbec.

    Záver
    Napriek tomu, že aktívne nepoužívam žiadne komerčné nástroje typu ChatGPT, ich sprístupnenie verejnosti vnímam pozítívne. Myslím si, že to prirodzene viedlo k rozšíreniu komunity zaujímajúcej sa o otvorené modely, v ktorej je každý deň pretekmi vytrénovať najlepší model.

    Keďže samotný výskum a nastavenie lokálnej konfigurácie mi zabralo niekoľko dní a nocí, verím, že niekto môže opätovne použiť moju konfiguráciu, alebo aspoň sa v nej inšpirovať. Je ešte príliš skoro na to, aby som zhodnotil dopad používania na moju produktivitu, no zatiaľ považujem moju skúsenosť za veľmi sľubnú. Nezabúdajte však držať krok s inováciami a skúšať ich aj vy sami!

    O spoločnosti
    Touch4IT je softvérová spoločnosť zameraná na špičkový dizajn a vývoj digitálnych produktov, s viac ako 10 rokmi skúseností a hlbokou expertízou v moderných technológiách ako AR/VR, BI či softvérových riešeniach na mieru. V portfóliu má viac ako 300 úspešných projektov v 24 krajinách a jeden dokonca vo vesmíre. Pôsobí ako dlhodobý technologický partner pri tvorbe inovatívnych technologických riešení, s fokusom na najlepší dizajn, vývoj, konzistentné riadenie a spoľahlivý prístup.

    #bratislava #codecon #inspiration #partners
    Autor článku
    Touch4IT

    Nezmeškaj aktuálne info o CODECON