Documentație tehnică și ghid de utilizare

Arhitectură, instalare și separarea datelor

Cum sunt legate componentele AI Hub, cum este instalată platforma (SaaS), ce se poate rula la client (on-premise și edge) și cum sunt separate sau partajate datele între organizații, proiecte și roluri. Pagina răspunde și cerințelor rămase deschise la demonstrația din 2023.

Arhitectura logică

Utilizatori: Result User · Project Admin · Training Operator · Data Augmentator · ML Model Developer · Data Supplier · Support browser (desktop / mobil) · aplicații client (Python, PHP, Java, React, C++ edge) · dispozitive edge video Autentificare unică AI Hub (auth.onprem.ai-hub.cloud) · nginx + TLS · acces pe roluri · chei API pentru aplicații Portal AI HubData StudioMLOps (ZenML) MLflowBI (Metabase) Model Factory +Marketplace Data Augmentation– Tagging pipeline-uri deantrenare / evaluare metrici, cost, energie,registrul (Librăria) cost, calitate, audit,prognoze Backend API + Mercure (evenimente live) API de inferență (Core Stack)Aplicații practice Symfony / Sonata, roluri, audit, sincronizări HTTPS + WebSocket, 16 modele servitevideo · biometrie · senzori Date: PostgreSQL · MySQL · SQLite (aplicații) · stocare S3 (MinIO) · registry Docker · cluster k3s Calcul: server GPU (6× NVIDIA A40 48 GB) – antrenare, inferență, adaptoare de format
Arhitectura logică: un singur punct de autentificare, aplicațiile web ale celor 5 sisteme, serviciile comune și infrastructura de date și calcul.
Sistem C.4 Aplicații Pagina
Data Augmentation – Tagging Data Studio, adaptoarele de format, rapoartele BI de cost și calitate Data Augmentation
Human-Attention Marketplace sesiunile de augmentare din portal, auditul, rapoartele de atenție umană Marketplace
Training and Operating Model Factory portalul, backend-ul, MLOps, MLflow Model Factory
Core Stack autentificarea unică, API-ul de inferență, exemplele de integrare Core Stack
Librărie Algoritmi registrul MLflow, modelele, aplicațiile video, biometrie, senzori Librărie

Instalarea SaaS (cea care rulează azi)

AI Hub rulează ca serviciu (SaaS) pentru toate organizațiile: o singură instalare, accesată prin internet, cu conturi și proiecte separate.

Organizații client browser: portal și instrumente aplicații proprii: cheie APIdispozitive edge videoservere proprii de date(extensia AI Hub) CDN Firebase portalul onprem.ai-hub.cloud (static) Serverul AI Hub (Ubuntu 22.04, 56 nuclee, 503 GB RAM, 6× A40) · firewall: doar 22, 80, 443, 2022 nginx: TLS (Let's Encrypt) pe fiecare subdomeniu + verificarea sesiunii la serviciul de autentificare Servicii web (127.0.0.1)DateGPU-uri (alocare fixă) backend PHP, SSO, Data Studio,ZenML, MLflow, Metabase, API,video, bio, senzori PostgreSQL, MySQL (Docker)MinIO S3 + registry (k3s)SQLite per aplicație 0 OCR + detecție · 1 față, bio2 senzori, video · 3 Data Studio4 rezervă · 5 API de inferență Antrenare: containere Docker pe GPU (imagini din registry), pipeline-uri ZenML rezultatele în MLflow (metrici, cost) și MinIO / disc (modele mari)
Instalarea SaaS actuală: portalul pe CDN, toate serviciile pe serverul GPU, publicate doar prin nginx cu TLS.
Strat Ce rulează Detalii
Acces nginx cu TLS pe fiecare subdomeniu; serviciile ascultă doar pe 127.0.0.1 firewall: porturile 22, 80, 443, 2022
Autentificare serviciul SSO (cookie pe .onprem.ai-hub.cloud), JWT pentru API-ul backend, chei API pentru API-ul de inferență Autentificare unică
Aplicații backend Symfony (php-fpm), Data Studio, ZenML, MLflow, Metabase, API de inferență, video, bio, senzori containere Docker (docker-compose)
Date PostgreSQL (backend, Data Studio, MLflow), MySQL (ZenML), MinIO S3 și registry Docker în k3s, SQLite în aplicațiile demo secretele de acces sunt doar pe server, într-un fișier cu acces restricționat
Calcul 6× NVIDIA A40 48 GB, alocate pe servicii (tabelul din diagramă) antrenările rulează ca containere pe GPU-ul alocat

Instalarea la client (on-premise) și procesarea la margine (edge)

Ce există azi pentru rularea în afara instalării SaaS:

Variantă Ce rulează la client Ce rămâne în AI Hub Stare
Edge video clientul edge: detecție SSDlite pe CPU, urmărire, regula de linie, potrivirea specimenelor primite din cloud primește doar evenimente și embedding-uri (nu cadre video), le publică și le caută funcțional demonstrat (dispozitivul edge-demo-01)
Biometrie pe dispozitiv detecția, embedding-ul și potrivirea feței, în browser; cheia dispozitivului doar hash-ul șablonului și verificarea semnăturii funcțional (fluxurile cu camera netestate cu cameră reală)
Modele la client modelele din librărie (inclusiv Whisper RO v5 și Gemma 3 4B pentru extracție) rulate de API-ul de inferență pe serverul clientului; modelele antrenate la client rămân la client nimic funcțional incluse în pachetul on-premise: 16 modele servite și librăria MLflow (20 de modele, 30 de versiuni)
Aplicațiile clientului exemplele Core Stack (Python, PHP, Java, C++) în infrastructura clientului API-ul de inferență, apelat cu cheie API funcțional
Date la furnizor setul de date rămâne pe serverul furnizorului, cu extensia AI Hub (link semnat, contorizarea traficului, raport către AI Hub) metadatele setului, accesul pe proiect și traseul datelor funcțional demonstrat cu supplier-demo.onprem.ai-hub.cloud, un server de furnizor simulat (găzduit tot pe serverul AI Hub)
Platforma întreagă la client toate serviciile, pe serverul clientului, instalate offline din pachet nimic funcțional pachetul de instalare on-premise, testat pe un server separat (detalii mai jos)

Pachetul de instalare on-premise

Pachetul on-premise instalează toată platforma pe un singur server cu GPU, fără să descarce nimic din internet: portalul, API-ul platformei, autentificarea unică, Data Studio, MLOps (ZenML), MLflow cu librăria de modele, BI (Metabase), API-ul de inferență cu cele 16 modele, analiza video, identificarea biometrică, senzorii, re-antrenarea automată, joburile programate (anonimizarea GDPR a încărcărilor, prognoza atenției umane) și această documentație.

Conținut Detalii
Imagini Docker 25 de imagini în 4 arhive (platformă, aplicații, antrenare, joburi), încărcate local
Cod și site-uri serviciile AI Hub, portalul (build-ul de producție), dashboard-ul MLOps, documentația
Modele modelele servite de API-ul de inferență, modelele aplicațiilor (față, video, senzori), modelele de bază pentru antrenare (Whisper, TrOCR, CLIP, Gemma 3 1B)
Baze de date schema platformei cu datele de referință (roluri, permisiuni, tipuri de date), schema rapoartelor BI; fără date ale clienților SaaS
Conținut dashboard-urile BI (5 dashboard-uri, 26 de întrebări), librăria MLflow (20 de modele, 30 de versiuni, cu metricile de evaluare)
Integritate MANIFEST.sha256 cu sumele de control ale celor peste 1.400 de fișiere, verificat la fiecare instalare

Dimensiunea pachetului: 38 GB. Cerințe: Linux x86-64, Docker ≥ 24 cu pluginul compose, driver NVIDIA și NVIDIA Container Toolkit, 1–3 GPU (48 GB recomandat), minim 64 GB RAM, DNS pentru domeniul ales și subdomeniile lui.

Instalarea (sudo ./install.sh aihub.conf) se face în 9 pași, fiecare verificat:

  1. verificarea cerințelor (Docker, GPU, memorie, spațiu, porturi) și a integrității pachetului;
  2. copierea fișierelor și adaptarea codului și a site-urilor la domeniul clientului;
  3. încărcarea imaginilor și testul GPU din containere;
  4. generarea tuturor parolelor și cheilor (doar pe serverul clientului), a certificatelor TLS (CA intern sau certificatul clientului) și a configurației;
  5. bazele de date (PostgreSQL, MySQL) și stocarea S3 (MinIO), cu utilizatori separați pe servicii;
  6. pornirea platformei;
  7. conturile inițiale (câte unul pentru fiecare rol), dashboard-urile BI, librăria de modele și stack-ul MLOps;
  8. aplicațiile (API de inferență, video, biometrie, senzori, re-antrenare) și joburile programate;
  9. verificarea cap-coadă (aihubctl check).

Conturile inițiale sunt scrise doar pe server, într-un fișier cu acces restricționat. Re-rularea instalării păstrează datele și secretele, deci același pachet servește și la actualizare. Operarea curentă se face cu aihubctl (status, check, logs, train, jobs, start, stop).

Ce rămâne la client: toate datele (baze de date, fișiere încărcate, seturi de date, artefacte, modele antrenate) sunt în directorul instalării, pe serverul clientului. Instalarea nu comunică cu AI Hub SaaS.

Testul de instalare

Testul s-a făcut pe un server „client” separat: un sistem Ubuntu 22.04 cu propriul Docker (29) și NVIDIA Container Toolkit, fără nicio imagine sau configurare AI Hub, cu 2 GPU A40 (unul pentru inferență, unul pentru aplicații și antrenare). Domeniul clientului: onprem.onprem.ai-hub.cloud, cu certificatele emise de CA-ul intern al instalării și un reverse proxy în fața serverului, ca într-o rețea de firmă.

Verificare Rezultat
Instalare pe serverul gol, din pachet (2 GPU, onprem.onprem.ai-hub.cloud) 22 / 22 verificări automate trecute: servicii prin TLS, login, autentificare unică pe roluri, 5 baze de date, 5 dashboard-uri, 16 modele servite, inferență pe GPU. Erorile găsite la această primă instalare au fost corectate în pachet
Actualizare peste instalarea existentă (re-rulare cu pachetul final) 17 minute, 22 / 22 verificări; proiectele, seturile de date și rulările MLflow au rămas neatinse
A doua instalare de la zero, fără nicio intervenție, cu pachetul final (1 GPU pentru tot, alt domeniu: aihub.client2.test) 22 / 22 verificări, în 2 h 19 min; din acestea, 78 de minute încărcarea imaginilor și 49 de minute migrările inițiale Metabase, pe un disc folosit în paralel de instalarea SaaS și de primul server de test
Proiect nou în portal (Result User) proiectul „Transcriere vocală RO – instalare on-premise”, cu echipa invitată și ținta WER ≤ 20%
Antrenare pe GPU-ul clientului Whisper small, 300 de pași, 8,9 minute; WER 25,84% (FLEURS), 17,24% (Common Voice), 16,95% (VoxPopuli), media 20,01%; rularea apare în MLflow-ul și în ZenML-ul clientului, legată de proiect
Încărcare set de date (Data Supplier) și anonimizare GDPR automată 14 imagini, 26 de fețe estompate, GPS eliminat din 6 imagini, raport în BI; jobul programat (la fiecare 10 minute) a procesat singur setul nou
Autentificare unică pe domeniul clientului portal, Data Studio, MLflow, BI, MLOps deschise cu contul AI Hub al clientului
Portalul AI Hub pe domeniul clientului
Portalul AI Hub pe domeniul clientului
Proiect nou creat de Result User pe instalarea clientului
Proiect nou creat de Result User pe instalarea clientului
Autentificarea unică a instalării clientului
Autentificarea unică a instalării clientului
Librăria de modele (MLflow) la client: 20 de modele, 30 de versiuni
Librăria de modele (MLflow) la client: 20 de modele, 30 de versiuni
Rularea de antrenare Whisper făcută pe GPU-ul clientului, cu metricile și costul
Rularea de antrenare Whisper făcută pe GPU-ul clientului, cu metricile și costul
MLOps (ZenML) la client: pipeline-urile de antrenare și anonimizare
MLOps (ZenML) la client: pipeline-urile de antrenare și anonimizare
Încărcarea unui set de date de către Data Supplier, la client
Încărcarea unui set de date de către Data Supplier, la client
Raportul de anonimizare GDPR în BI, la client
Raportul de anonimizare GDPR în BI, la client

Limitări

  • Testul a folosit un server „client” găzduit pe aceeași mașină fizică (container cu propriul Docker și 2 GPU dedicate), nu hardware separat.
  • Prima instalare durează: încărcarea imaginilor (30–80 de minute) și migrările inițiale ale bazelor Metabase și ZenML (până la o oră pe discuri încărcate) se fac o singură dată; o actualizare durează în jur de 20 de minute.
  • Metabase își păstrează propriul ecran de login pentru link-urile directe la dashboard-uri; intrarea prin metabase.<domeniu>/ folosește autentificarea unică.
  • MinIO e construit din sursele oficiale (licență AGPL-3.0), pentru că imaginile oficiale nu mai sunt publice.

Separarea și partajarea datelor între organizații (tenanți)

În AI Hub, o organizație client corespunde unor conturi cu roluri și proiectelor create de ele. Separarea se face pe proiecte și roluri, nu pe instanțe separate ale serviciilor.

Proiectul A (organizația A) • Result User A (creator)• Project Admin, Training Operator,ML Model Developer invitați și acceptați• Data Augmentator cu contract • set propriu încărcat (privat)• seturi închiriate / sugerate și acceptate• cereri, sesiuni, modele ML, chat vizibile doar membrilor• proiectele Data Studio ale seturilor: doar membrii proiectului Partajat (marketplace și librărie) • catalogul de seturi (Marketplace):nume, tip, preț, licență• conținutul unui set: doar furnizorulși proiectele care l-au închiriat • registrul de modele (MLflow) șiAPI-ul de inferență• rapoartele BI agregate• Team Search: profilurile publiceale augmentatorilor și dezvoltatorilor Proiectul B (organizația B) • alt Result User, altă echipă• aceleași reguli ca la proiectul A• un augmentator sau dezvoltatorpoate lucra în ambele proiecte,dar vede doar ce i s-a dat în fiecare • poate închiria același set dinMarketplace (cumularea datelor)
Separarea datelor între organizații: totul este privat la nivel de proiect, iar partajarea se face explicit prin Marketplace (seturi) și prin librăria de modele.
Obiect Cine îl vede Mecanism
Proiect (descriere, buget, echipă, cereri, chat) creatorul și membrii invitați care au acceptat invitații pe roluri; fiecare rol are rute API proprii (/api/v1/{rol}/…)
Set de date – fișa din catalog utilizatorii care caută în Marketplace câmpurile publice: nume, tip, preț, licență, tip Public / Privat
Set de date – conținutul și etichetele furnizorul și membrii proiectelor care l-au închiriat sau acceptat Data Studio afișează doar proiectele în care utilizatorul e membru; membrii se sincronizează din portal (creator, invitați acceptați, augmentatori cu contract; set încărcat, sugerat și acceptat, închiriat, din sesiuni). Arhivele nu mai sunt publice: descărcarea se face doar prin link semnat (15 minute), după verificarea accesului prin proiect, și se înregistrează în traseul datelor. La încheierea închirierii accesul se retrage
Sesiune de augmentare, time log-uri Training Operator, Project Admin, Result User, augmentatorul contractat contract pe sesiune
Model ML din portal membrii proiectului căruia i-a fost propus și creatorul cerere de model pe proiect; editare doar de creator
Rulări și registru MLflow, pipeline-uri ZenML rolurile cu acces la instrument (Training Operator, ML Model Developer, Project Admin la MLflow) acces pe rol prin SSO; rulările au tag-ul aihub_project_id
Rapoarte BI Project Admin, Training Operator, Support Specialist acces pe rol prin SSO
Date biometrice doar utilizatorul șablon criptat legat de contul lui; ștergere la cerere
Tichete de suport autorul și specialistul asignat rute dedicate, acces doar la tichetele proprii

Limitări

  • MLflow, ZenML și Metabase sunt instanțe comune: separarea este pe rol, nu pe proiect. Un utilizator cu acces la MLflow vede toate experimentele, inclusiv ale altor proiecte.
  • La încheierea unei închirieri, AI Hub retrage accesul în portal, la link-urile de descărcare și în Data Studio (sincronizare automată în câteva minute). Evenimentul este înregistrat în traseul datelor.
  • Câteva proiecte Data Studio noi (163, 164) au id-uri care se suprapun cu proiecte șterse anterior, astfel că unele conturi vechi de test au acces la ele.
  • Platforma nu are instanțe separate per organizație (multi-tenancy la nivel de bază de date).

Securitate și protecția datelor

Măsură Unde
HTTPS pe toate subdomeniile, servicii interne doar pe 127.0.0.1 nginx, firewall
Autentificare unică, acces pe roluri la fiecare instrument auth.onprem.ai-hub.cloud, auth_request în nginx
Audit automat al acțiunilor, cu mascarea parolelor, token-urilor și cookie-urilor request_logs, BI dashboard-ul 4
Chei și parole doar pe server, într-un fișier cu acces restricționat; niciodată în cod sau în documentație server
Biometrie procesată pe dispozitiv, șablon criptat, dreptul la ștergere, dezvăluire minimă prin avatari bio.onprem.ai-hub.cloud
Anonimizare GDPR la încărcare: fețe pixelate și estompate (YuNet) în imagini și cadre video, EXIF/GPS eliminat; CNP, IBAN, telefoane, e-mail, IP și nume mascate în text (NER românesc + reguli) Data Studio, gdpr_anonymization_pipeline, BI
Seturi de date: arhive ne-publice, link semnat de 15 minute, traseul datelor pentru furnizor portal, extensia de server a furnizorului
Video: fețe estompate în miniaturi, scopul prelucrării obligatoriu, retenție 30 de zile, jurnal de utilizare video.onprem.ai-hub.cloud
Senzori: modelele nu folosesc locația sensors.onprem.ai-hub.cloud
API: limite de rată, identitatea în jurnal ca amprentă, CORS fără credențiale api.onprem.ai-hub.cloud

Limitări

Nu există o evaluare formală de conformitate GDPR. Anonimizarea la încărcare nu acoperă numerele de înmatriculare și vocile. Câteva înregistrări vechi din jurnalul de audit (dinainte de introducerea mascării) nu au fost mascate retroactiv; nu apar în rapoarte, iar curățarea lor așteaptă acordul proprietarului datelor. Cheile API sunt statice, fără rotație automată.