Programiranje: AI server na vlastitom računalu

Programiranje: AI server na vlastitom računalu

CodeProject.AI Server

Jednostavan pristup razvoju vlastitih AI aplikacija

U zadnje vrijeme svi pričaju i pišu o AI tehnologiji, ali je i koriste na različite načine. Najčešće u obliku gotovih jezičnih modela (kao što je ChatGPT) za postavljanje različitih upita na koje se očekuje inteligentan odgovor od strane AI sustava. Ili za kreiranje slika i drugih sadržaja pomoću odgovarajućih alata (AI Image Generator, Bing AI i slično). Budući da zbog korištenja takvih alata čak i povremeni korisnici računala znaju puno toga o AI-ju, jednostavno postaje neminovno i sasvim logično da o primjeni AI-ja u različitim vrstama aplikacija znaju još više njihovi programeri.

Kad je riječ o razvoju softvera koji u sebi sadrži neki od AI elemenata (ili više njih), cijeloj priči se može prići na nekoliko razina.  

 

capcut-Slika01-copy.jpg

https://www.codeproject.com/ai/docs/index.html: Adresa za besplatno preuzimanje CAS paketa

 

capcut-Slika02-copy.jpg

Korištenje Dockera: CAS možete instalirati na različite operativne sustave izravno, ili se može koristiti i uz pomoć Dockera

 

Na najnižoj, i ujedno najtežoj razini, sve se razvija ispočetka. Programeri moraju dobro poznavati različite algoritme s AI područja, a onda na temelju njih u nekom programskom jeziku napraviti odgovarajuće AI biblioteke, da bi ih kasnije mogli koristiti u „inteligentnim aplikacijama“. Očito je da to nije baš pristup za svakoga, osim ako imate ideju (i znanje) kako smisliti nekakav potpuno novi i originalni AI algoritam, koji u obliku vlastite biblioteke namjeravate prodavati drugim programerima. U protivnom, ima li uopće smisla razvijati ispočetka nešto što već postoji od prije? Pogotovo kad se to sagleda u kontekstu dostupnih financijskih i vremenskih resursa raspoloživih za razvoj.

Na sljedećoj razini ne krećete od samog početka, nego koristite neku od AI biblioteka ili frameworkova kao polaznu točku. Na primjer, TensorFlow, PyTorch, Keras i slično. Na ovaj način ćete sigurno uštedjeti mnogo vremena u razvoju, jer puno toga već imate napravljeno, testirano i optimizirano od strane drugih programera. Preostaje vam „samo“ da takve gotove stvari upotrijebite u vlastitim AI rješenjima. Što ipak zahtijeva određeno vrijeme za upoznavanje načina na koji se optimalno koristi svaki pojedini dodatni alat.

Upoznavanje svih mogućnosti i načina korištenja svakog dodatnog AI alata pri tome nije jedini izazov. Posebno ako vlastito rješenje planirate koristiti na različitim operativnim sustavima, i/ili ako u okviru njega želite kombinirati više različitih AI dodataka. Tipični problemi koji se pri tome mogu pojaviti su da određeni alat ne postoji za neku od planiranih verzija operativnog sustava, u nekom trenutku razvoja svi dodatni alati nisu međusobno usklađeni te ne rade dobro ili uopće ne rade, i tako dalje.

Da ne spominjemo to da cijeli postupak oko rekonfiguriranja svih dodatnih biblioteka treba u pravilu ponoviti kod svake pojave nove verzije nekog od AI alata ili operativnog sustava. Kao posljedicu navedenog, u praksi poprilično vremena možete potrošiti na rješavanje različitih konfiguracijskih problema, a ne na sam razvoj vlastitog AI rješenja.

 

capcut-Slika05-copy.jpg

Upravljanje instaliranim AI modulima: Također se nakon početne instalacije izvodi pomoću nadzorne ploče

 

capcut-Slika06-copy.jpg

CAE (CodeProject AI Explorer): Grafičko korisničko sučelje za izravno korištenje različitih CAS modula

 

Razina više u odnosu na prethodnu je korištenje usluga nekog (obično cloud) servisa, gdje vlasnik servisa nudi automatsko rješavanje svih problema oko instalacije, konfiguriranja i međusobnih nesuglasica različitih AI biblioteka i operativnih sustava ponuđenih u okviru servisa. U pravilu nema nikakvih problema ni oko rekonfiguriranja svih alata kod pojave njihove novije verzije. Kod ovakvog pristupa doista je najlakše i najbrže krenuti u razvoj vlastitog AI rješenja na različitim područjima, ali za to morate plaćati podršku i/ili korištenje različitih resursa vlasniku servisa.

U slučaju korištenja velike količine resursa (zbog toga što je vaše rješenje postalo popularno među korisnicima) to se može pretvoriti u prilično ozbiljne financijske iznose. Kad spominjemo naplatu korištenja resursa, tu ne mislimo samo na cijenu korištenja različitih AI servisa, nego i na cijene prijenosa podataka na cloud platformu te njihovo privremeno, odnosno trajno spremanje. U slučaju velike količine podataka, to može generirati zbilja poprilične iznose.

Drugim riječima, ovakav pristup ima smisla primijeniti samo u slučajevima kad ste dobro isplanirali kako ćete naplaćivati svoje AI rješenje kako biste mogli poplaćati sve troškove korištenog servisa. Ili ste osigurali odgovarajuću financijsku podršku od nekog ulagača.

 

capcut-Slika03-copy.jpg

Podrazumijevana instalacija: Veći broj AI modula nije označen za instalaciju, pa to morate napraviti sami

 

capcut-Slika04-copy.jpg

CAS nadzorna ploča: Prikazuje različite informacije o trenutnom djelovanju

 

A gdje se u tu priču uklapa CodeProject.AI Server (u nastavku teksta CAS)? CAS bi u pogledu jednostavnosti korištenja trebao nalikovati zadnjoj (najjednostavnijoj) od nabrojenih razina korištenja AI alata, ali bi pri tome korištenje alata trebalo biti besplatno. Istina, CAS trebate nakon besplatnog preuzimanja sami instalirati na svoje računalo (na neki od podržanih operativnih sustava), ali je to posao koji ne bi trebao izazivati previše stresova prosječnom programeru.

Također, budući da je za CAS dostupan i izvorni kod, možete vidjeti i analizirati puno toga napravljenog „u pozadini“, odnosno iskoristiti alat za učenje različitih AI segmenata niže razine. Na prvi pogled je to idealno rješenje – sve što trebate dostupno je izravno „iz kutije“ i to besplatno. Spomenimo na kraju pisanja početnih hvalospjeva o CAS-u da se problem pojave novijih verzija različitih modula uključenih u CAS rješava tako da se na računalo jednostavno instalira nova verzija.

Uz ponuđenu mogućnost brisanja prethodne verzije ili njezinog ostavljanja na računalu zbog potencijalnih problema oko kompatibilnosti.Ipak, ni CAS nije bez mana. One se prije svega odnose na njegovo ozbiljno komercijalno korištenje.

Pretpostavimo da ste pomoću CAS-a napravili zbilja genijalno AI rješenje s velikim potencijalom korištenja, a možda čak i naplate od krajnjeg korisnika. U tom slučaju, morate se sami pobrinuti kako ćete osigurati infrastrukturu preko koje će CAS osigurati mogućnost istovremene obrade AI zahtjeva od nekoliko tisuća istovremenih korisnika.

Što uključuje i „sitnice“ poput osiguravanja 24/7 djelovanja servera, arhiviranja (backupa) osjetljivih podataka ako se spremaju na server i drugih sličnih „trivijalnosti“. Također, u uvjetima vrlo ozbiljnog komercijalnog korištenja CAS-a može se dogoditi da morate platiti i korištenje određenih komponenti u pozadini CAS-a.

 

capcut-Slika10-copy-12.jpg

Analiza tekstova Primjer analize proveden na početnom dijelu teksta objavljenog na adresi: https://www.yahoo.com/news/polls-show-11-days-biden-234839618.html

 

Slika09-copy12.jpg

Prepoznavanje lica: I ovo radi bez ikakvih problema

 

Istovremeno, vlastita odgovornost za infrastrukturu na kojoj se izvodi CAS ima još jednu potencijalnu prednost u odnosu na standardna cloud rješenja. Budući da vam je sve pod kontrolom, možete garantirati da eventualno osjetljivi podaci koje koristite u AI modelima, neće završiti na nekom čudnom mjestu (na primjer, drugom kontinentu) jer niste nešto dobro definirali kod pripreme servisa. Pogotovo to vrijedi kad sve razvijate na vlastitom lokalnom računalu. U slučaju korištenja CAS-a, o svemu brinete sami, ali to istovremeno znači da sami možete napraviti i greške. Na primjer, organizirati preslabu zaštitu pred napadom hakera.

 

1. Kako zapravo djeluje i kako se instalira CAS?

Način na koji djeluje CAS najjednostavnije je objasniti na temelju analogije s nekim od poznatih sustava za upravljanje bazom podataka, kao što su Oracle Database XE, Microsoft SQL Server, Maria DB ili MongoDB. Nakon instalacije nekog od takvih sustava, sustav za upravljanje bazom podataka djeluje kao servis u pozadini te kao takav može obrađivati različite vrste upita na bazu podataka (SQL ili noSQL što ovisi o vrsti baze).

Na sličan način djeluje i CAS, samo što su ovaj put upiti postavljeni na „AI razini“. CAS se nakon instalacije također izvodi kao servis u pozadini i omogućava obradu različitih „AI upita“ (kao što su zahtjevi za analizom slika ili tekstova) postavljenih pomoću odgovarajućeg API poziva. Ponovno prema analogiji s bazama podataka - baš kao što osnovne SQL ili noSQL upite možete pripremati i slati na izvođenje u različitim programskim jezicima, tako i CAS nudi brojne mogućnosti u pogledu odabira razvojnih alata za pripremu AI upita. Od svima poznatog JavaScripta i različitih pratećih nadogradnji kao što je jQuery i slično, preko Pythona (kao jednog od najčešćih izbora programskih jezika na AI području) do različitih .NET kompatibilnih programskih jezika. Popis podržanih operativnih sustava je popriličan, tako da bi svi potencijalni korisnici CAS-a u njemu trebali pronaći nešto što odgovara njihovim potrebama: Windows, macOS, macOS-arm64, Ubuntu, Debian, Raspberry Pi, Orange Pi, Jetson, Nano, te naravno, Docker. Uz pretpostavku da najveći broj čitatelja časopisa svakodnevno koristi Windowse kao osnovni operativni sustav, u nastavku teksta ćemo se usredotočiti na instalaciju i korištenje CAS-a na Windowsima 11.

Sama instalacija u Windows okruženju ide vrlo jednostavno, baš kao i instalacija bilo kojeg drugog Windows paketa, tako da tu ne bi trebalo biti nekih posebnih problema. Iako autor teksta nije isprobao instalaciju na svim dostupnim operativnim sustavima, velika je vjerojatnost da ni kod ostalih sustava nećete imati nešto što bi pokvarilo jednostavnost instalacije.

Jedino na što treba pripaziti kod instalacije odnosi se na pregled i potvrđivanje AI modula koji se na računalo instaliraju u okviru CAS-a. U podrazumijevanom stanju, dosta podržanih AI modula nije automatski aktivirano. Što znači da trebate sami ručno uključiti te dodatne module, kako ne biste ostali uskraćeni za njihove mogućnosti.

Nakon instalacije na Windows računalo, CAS postaje servis koji se automatski pokreće kod podizanja operativnog sustava (što, naravno, možete isključiti ako vam nije potrebno). Za pregled njegovog djelovanja koristi se posebna nadzorna ploča u nekom od preglednika. Dovoljno je da na svojem lokalnom računalu u pregledniku otvorite sljedeću adresu: http://localhost:32168/

Tijekom instalacije, program za instalaciju u okviru početnog izbornika Start automatski priprema odgovarajuću ikonu za pokretanje preglednika i otvaranje spomenute adrese. Tako da ne morate brinuti hoćete li se je sjetiti kasnije.

Problemi kod instalacije

Tijekom instalacije CAS-a na „čisto računalo“, zbog potrebe priprema teksta kojeg upravo čitate, pojavile su se manje komplikacije. Zapravo je sama instalacija prošla bez ikakvih problema, ali je zato bilo dosta nerviranja prilikom početnog preuzimanja samog instalacijskog paketa s CodeProject web servera.

Preuzimanje instalacijske datoteke je jednostavno „puklo“ veći broj puta, kao da je server bio previše opterećen, ili kao da na toj strani nešto nije bilo u redu s Internet vezom.

Možda je to sve bio samo privremeni problem (iako se ponavljao dva dana za redom), ali svakako nemojte odustati na ovom početnom koraku, jer ćete nakon određenog broja pokušaja sigurno uspjeti s preuzimanjem instalacijskog paketa.

2. Što sve nudi CAS?

U CAS su ugrađeni moduli s ugrađenom podrškom za različite algoritme s AI područja. Zainteresirani programer ih prvo može isprobati preko odgovarajućeg grafičkog sučelja da se upozna s time kako funkcioniraju, a nakon toga ih početi ugrađivati u vlastita rješenja. Budući da je uz module dostupan i izvorni kod, može se puno toga naučiti i o tome kako se razvijaju slični AI moduli.

Ugrađeni moduli obuhvaćaju:

  1. detekciju objekata na slici
  2. prepoznavanje i uspoređivanje lica na slici
  3. naprednu obradu slika kao što je uklanjanje ili zamućivanje pozadine, poboljšavanje postojeće rezolucije slika te pretvaranje slika u karikature
  4. analizu tekstova i pripremu sažetaka
  5. treniranje AI modela na temelju različitih skupova podataka
  6. analizu zvukova itd.

Bitno je spomenuti kako se u CAS kontinuirano dodaju novi AI projekti i tehnologije, tako da se prethodni popis širi sa skoro svakom novom verzijom. Kao što smo to već spomenuli, određeni problem predstavlja to što kod podrazumijevane instalacije CAS-a sve nabrojene mogućnosti nisu automatski uključene, nego to morate napraviti sami. Ako to slučajno zaboravite napraviti tijekom početnog postupka instalacije, ipak to možete korigirati i naknadno korištenjem nadzorne ploče.

Budući da kod različitih AI projekata procesorske snage u pravilu nikad nema previše, spomenimo kako brojni AI moduli uključeni u CAS za povećanje performansi rada znaju iskoristiti i NVIDIA grafički procesor, ako takav postoji na računalu. Naravno, i ako je pravilno konfiguriran. Konfiguriranje NVIDIA procesora prelazi okvire ovog teksta, ali ako ga već imate ugrađenog u računalu, vjerojatno ga onda i koristite optimalno. U budućim verzijama CAS-a planira se ugradnja podrške i za druge grafičke procesore.

 

capcut-Slika07-copy.jpg

Modul Object Detection (YOLOv5 6.2): Primjer detekcije različitih objekata na slici

 

3. Kako se CAS koristi preko sučelja

Početno mjesto za nadzor korištenja CAS-a je otvaranje nadzorne ploče u nekom pregledniku, kao što smo to već spomenuli tijekom dijela teksta o instalaciji u Windows okruženje. Kod prvog pokretanja nadzorne ploče, automatski se preuzima još dosta dodatnih modula, tako da može potrajati neko vrijeme dok CAS ne postigne punu funkcionalnost na vašem lokalnom računalu. Pomoću nadzorne ploče možete pregledati sve instalirane AI module, napraviti dodatnu instalaciju ili uklanjanje nekih od njih, pregledati log datoteku s eventualnim problemima kod korištenja i izvoditi druge slične administrativno orijentirane zadatke.

Osim nadzorne ploče, možete pokrenuti i poseban preglednik (CodeProject AI Explorer, ili skraćeno CAE) za brzu demonstraciju korištenja ugrađenih AI modula. Nakon instalacije CAS-a, spomenuti preglednik je automatski dostupan na adresi: http://localhost:32168/explorer.html

Kao i kod nadzorne ploče, tijekom instalacije automatski je pripremljena i odgovarajuća ikona za pokretanje u okviru izbornika Start.

Kako radi preglednik (zapravo AI moduli u pozadini), najbolje je da isprobate sami. Slike priložene uz tekst služe prije svega kao motivacija da biste zaista instalirali CAS te isprobali to o čemu pišemo. Na slikama je prikazano kako se CAS moduli preko CAE dodatka mogu koristiti za analizu slika, prepoznavanje lica ili pripremu sažetaka tekstova na engleskom jeziku.

 

capcut-Slika11-copy.jpg

Interna struktura: Pregled dijelova od kojih se sastoji CAS

 

4. A kako u programskom kodu?

Sve do sada prikazano zapravo je bilo namijenjeno krajnjim korisnicima kako bi na jednostavan i slikovit način mogli otkriti što sve nudi CAS izravno „iz kutije“. Postavlja se pitanje kako njegovo korištenje izgleda sa strane onih zbog kojih je zapravo i nastao današnji tekst, a to su programeri.

Evo prvo primjera u JavaScriptu koji bi u kodu trebao prepoznati sadržaj slike (scene). Naravno, rezultati i njihova kvaliteta ovise o tome kakvu ste sliku predali na analizu.

 

HTML
<html>
<body>
Detect the scene in this file: <input id=”image” type=”file” />
<input type=”button” value=”Detect Scene” on-click=”detectScene(image)” />

 

<script>
function detectScene(fileChooser) {
 var formData = new FormData();
 formData.append(‘image’, fileChooser.files[0]);

 

 fetch(‘http://localhost:5000/v1/vision/detect/scene’, {
  method: “POST”,
  body: formData
 })
 .then(response => {
  if (response.ok) response.json().then(data => {
   console.log(`Scene is ${data.label}, ${data.confidence} confidence`)
     });
  });
}
</script>
</body>
</html>

 

Ne izgleda pretjerano komplicirano za korištenje, zar ne? Primijetite da se glavni dio koda odnosi na poziv jedne od dostupnih CAS API adresa (u POST obliku), tako da taj dio samo treba „prepisati“ u neki drugi programski jezik, ako se ne želi koristiti JavaScript.

Cjelokupan popis dostupnih AI API poziva je popriličan, ali je ujedno i dobro dokumentiran. Evo primjera kako izgledaju upute za API namijenjen klasifikaciji zvučnih zapisa.

Adresa za poziv i način poziva:

POST: http://localhost:32168/v1/sound/classify

Parametri poziva u JSON obliku:

 

{
 “success”: (Boolean) // True if successful.
 “label”: (Text) // The classification label of the sound.
 “confidence”: (Float) // The confidence in the classification in the range of
0.0 to 1.0.
 “inferenceMs”: (Integer) // The time (ms) to perform the AI inference.
 “processMs”: (Integer) // The time (ms) to process the image (includes inference
and image manipulation operations).
 “moduleId”: (String) // The Id of the module that processed this request.
 “moduleName”: (String) // The name of the module that processed this request.
 “command”: (String) // The command that was sent as part of this request. Can
be detect, list, status.
 “executionProvider”: (String) // The name of the device or package handling the
inference. eg CPU, GPU, TPU, DirectML.
 “canUseGPU”: (Boolean) // True if this module can use the current GPU if one is
present.
 “analysisRoundTripMs”: (Integer) // The time (ms) for the round trip to the analysis module
and back.
}

 

Primjer korištenja u JavaScript kodu:

 

// Assume we have a HTML INPUT type=file control with ID=fileChooser
var formData = new FormData();
formData.append(‘sound’, fileChooser.files[0]);
formData.append(“min_confidence”, 0.4);
var url = ‘http://localhost:32168/v1/sound/classify’;
fetch(url, { method: “POST”, body: formData})
 .then(response => {
  if (response.ok) {
   response.json().then(data => {
    console.log(“success: “ + data.success)
    console.log(“label: “ + data.label)
    console.log(“confidence: “ + data.confidence.toFixed(2))
    console.log(“inferenceMs: “ + data.inferenceMs)
    console.log(“processMs: “ + data.processMs)
    console.log(“moduleId: “ + data.moduleId)
    console.log(“moduleName: “ + data.moduleName)
    console.log(“command: “ + data.command)
    console.log(“executionProvider: “ + data.executionProvider)
    console.log(“canUseGPU: “ + data.canUseGPU)
    console.log(“analysisRoundTripMs: “ + data.analysisRoundTripMs)
   })
  }
 });
 .catch (error => {
   console.log(‘Unable to complete API call: ‘ + error);
});

 

Evo i nešto složenijeg primjera korištenja CAS-a za usporedbu dvaju lica na fotografijama. Ponovno je sve prilično jednostavno, jedino je ovaj put potrebno koristiti dvije datoteke s polaznim podacima.

 

// Assume we have a HTML INPUT type=file control with ID=fileChooser
var formData = new FormData();
formData.append(‘image1’, fileChooser.files[0]);
formData.append(‘image2’, fileChooser.files[1]);

 

var url = ‘http://localhost:32168/v1/vision/face/match’;

 

fetch(url, { method: “POST”, body: formData})
 .then(response => {
  if (response.ok) {
   response.json().then(data => {
    console.log(“success: “ + data.success)
    console.log(“similarity: “ + data.similarity.toFixed(2))
    console.log(“inferenceMs: “ + data.inferenceMs)
    console.log(“processMs: “ + data.processMs)
    console.log(“moduleId: “ + data.moduleId)
    console.log(“moduleName: “ + data.moduleName)
    console.log(“command: “ + data.command)
    console.log(“executionProvider: “ + data.executionProvider)
    console.log(“canUseGPU: “ + data.canUseGPU)
    console.log(“analysisRoundTripMs: “ + data.analysisRoundTripMs)
   })
  }
});
  .catch (error => {
    console.log(‘Unable to complete API call: ‘ + error);
});

 

capcut-Slika12-copy.jpg

Interna struktura (detaljnije): Način obrade AI zahtjeva na najnižoj razini

 

Ovisno o tome kakvu vrstu AI rješenja razvijate, u njemu možete kombinirati veći broj različitih CAS API poziva, te po potrebi rezultate pripremljene u jednom od njih prosljeđivati u drugi poziv.

Kako CAS zapravo djeluje „u pozadini“, prikazano je na dvije prateće slike uz tekst. Aplikacija razvijena od strane klijenta (ili programski primjer koji se dobije sa sustavom) izvodi API poziv prema CAS-u. Interno CAS prepoznaje upit dobiven od strane klijenta, pa ga prosljeđuje odgovarajućem modulu (na primjer, modulu za prepoznavanje lica) na dodatnu obradu, ponovno kao interni API poziv. Kad interni modul obradi takav zahtjev, vraća rezultat u JSON obliku prema CAS-u, a onda ga CAS vraća do aplikacije od koje je krenuo početni zahtjev.

U još detaljnijoj raščlambi djelovanja, vidljivo je da se svaki interni modul sastoji od adaptera namijenjenog komunikaciji između servera i AI modula, samog modula, te jednog ili više izvršnih modula pripremljenih za izvođenje na različitim verzijama Python ili .NET infrastrukture.

Kad apetiti malo porastu, a u glavi se pojave nove AI ideje, uz dovoljno ambicije možete krenuti i u razvoj vlastitih modula za CAS. Ako stvar napravite zbilja kvalitetno, možda vaš modul postane dio nekakve buduće distribucije. Detaljne upute o tome što sve treba pripremiti i na koji način, možete pronaći na adresi:
https://www.codeproject.com/AI/docs/devguide/module_examples/adding_new_modules.html

Ako želite prvo pogledati i razumjeti kako su drugi napravili svoje module, to možete pogledati u izvornom kodu dostupnom na adresi: https://github.com/codeproject/CodeProject.AI-Server

 

capcut-Slika13-copy.jpg

Primjer uputa za API pozive: Primjer uputa za prepoznavanje lica na slici

 

Zaključak

CAS predstavlja odlično polazište za upoznavanje različitih koncepata i tehnologija na AI području. Uz preuzimanje vlastite odgovornosti za odgovarajuću infrastrukturu, možete ga iskoristiti čak i u komercijalnim projektima.

Također, razvojem vlastitih modula možete doprinositi daljnjem razvoju CAS-a i dodatno proširivati mogućnosti primjene. U svakom slučaju, riječ je o alatu vrijednom pažnje, ako se mislite baviti AI područjem i razvojem vlastitih rješenja na tom području.

Ocijeni sadržaj
(0 glasova)

// možda će vas zanimati

Newsletter prijava


Kako izgleda naš posljednji newsletter pogledajte na ovom linku.

Copyright © by: VIDI-TO d.o.o. Sva prava pridržana.