Amazon SageMaker Studio oferă o soluție complet gestionată pentru oamenii de știință de date pentru a construi, antrena și implementa în mod interactiv modele de învățare automată (ML). În procesul de lucru la sarcinile lor de ML, oamenii de știință de date își încep de obicei fluxul de lucru prin descoperirea surselor de date relevante și conectarea la acestea. Apoi folosesc SQL pentru a explora, analiza, vizualiza și integra date din diverse surse înainte de a le folosi în instruirea și inferența ML. Anterior, oamenii de știință de date s-au trezit adesea jongland cu mai multe instrumente pentru a sprijini SQL în fluxul lor de lucru, ceea ce a împiedicat productivitatea.
Suntem încântați să anunțăm că notebook-urile JupyterLab din SageMaker Studio vin acum cu suport încorporat pentru SQL. Oamenii de știință de date pot acum:
- Conectați-vă la servicii de date populare, inclusiv Amazon Atena, Amazon RedShift, Amazon DataZoneși Snowflake direct în caiete
- Răsfoiți și căutați baze de date, scheme, tabele și vizualizări și previzualizați datele în interfața notebook-ului
- Combinați codul SQL și Python în același blocnotes pentru explorarea și transformarea eficientă a datelor pentru utilizare în proiecte ML
- Utilizați funcții de productivitate pentru dezvoltatori, cum ar fi finalizarea comenzilor SQL, asistența pentru formatarea codului și evidențierea sintaxei pentru a ajuta la accelerarea dezvoltării codului și la îmbunătățirea productivității generale a dezvoltatorului
În plus, administratorii pot gestiona în siguranță conexiunile la aceste servicii de date, permițând oamenilor de știință să acceseze datele autorizate fără a fi nevoie să gestioneze manual acreditările.
În această postare, vă ghidăm prin configurarea acestei funcții în SageMaker Studio și vă ghidăm prin diferitele capabilități ale acestei caracteristici. Apoi, vă arătăm cum puteți îmbunătăți experiența SQL în notebook folosind capabilitățile Text-to-SQL oferite de modele avansate de limbaj mari (LLM) pentru a scrie interogări SQL complexe folosind text în limbaj natural ca intrare. În cele din urmă, pentru a permite unui public mai larg de utilizatori să genereze interogări SQL din introducerea în limbaj natural în caietele lor, vă arătăm cum să implementați aceste modele Text-to-SQL folosind Amazon SageMaker puncte finale.
Prezentare generală a soluțiilor
Cu integrarea SQL a notebook-ului SageMaker Studio JupyterLab, vă puteți conecta acum la surse de date populare precum Snowflake, Athena, Amazon Redshift și Amazon DataZone. Această nouă caracteristică vă permite să efectuați diverse funcții.
De exemplu, puteți explora vizual surse de date precum baze de date, tabele și scheme direct din ecosistemul dvs. JupyterLab. Dacă mediile dvs. de notebook rulează pe SageMaker Distribution 1.6 sau o versiune ulterioară, căutați un widget nou în partea stângă a interfeței JupyterLab. Această adăugare îmbunătățește accesibilitatea și gestionarea datelor în mediul dumneavoastră de dezvoltare.
Dacă nu vă aflați în prezent în distribuția SageMaker sugerată (1.5 sau mai mică) sau într-un mediu personalizat, consultați anexă pentru mai multe informații.
După ce ați configurat conexiunile (ilustrate în secțiunea următoare), puteți enumera conexiunile de date, puteți căuta baze de date și tabele și puteți inspecta scheme.
Extensia SQL încorporată SageMaker Studio JupyterLab vă permite, de asemenea, să rulați interogări SQL direct dintr-un notebook. Notebook-urile Jupyter pot face diferența între codul SQL și Python folosind %%sm_sql
comandă magică, care trebuie plasată în partea de sus a oricărei celule care conține cod SQL. Această comandă semnalează JupyterLab că următoarele instrucțiuni sunt comenzi SQL, mai degrabă decât cod Python. Rezultatul unei interogări poate fi afișat direct în blocnotes, facilitând integrarea perfectă a fluxurilor de lucru SQL și Python în analiza datelor.
Ieșirea unei interogări poate fi afișată vizual ca tabele HTML, așa cum se arată în următoarea captură de ecran.
Ele pot fi scrise și către a panda DataFrame.
Cerințe preliminare
Asigurați-vă că ați îndeplinit următoarele cerințe preliminare pentru a utiliza experiența SQL pentru notebook SageMaker Studio:
- SageMaker Studio V2 – Asigurați-vă că rulați cea mai recentă versiune a dvs Domeniul și profilurile de utilizator SageMaker Studio. Dacă sunteți în prezent pe SageMaker Studio Classic, consultați Migrarea de la Amazon SageMaker Studio Classic.
- Rolul IAM – SageMaker necesită un Gestionarea identității și accesului AWS (IAM) să fie atribuit unui domeniu sau unui profil de utilizator SageMaker Studio pentru a gestiona permisiunile în mod eficient. Poate fi necesară o actualizare a rolului de execuție pentru a introduce navigarea în date și caracteristica de rulare SQL. Următorul exemplu de politică permite utilizatorilor să acorde, să listeze și să ruleze AWS Adeziv, Atena, Serviciul Amazon de stocare simplă (Amazon S3), Manager de secrete AWSși resurse Amazon Redshift:
- JupyterLab Space – Aveți nevoie de acces la SageMaker Studio actualizat și JupyterLab Space cu Distribuție SageMaker v1.6 sau versiuni ulterioare de imagine. Dacă utilizați imagini personalizate pentru JupyterLab Spaces sau versiuni mai vechi ale SageMaker Distribution (v1.5 sau mai recentă), consultați anexa pentru instrucțiuni pentru a instala pachetele și modulele necesare pentru a activa această caracteristică în mediile dumneavoastră. Pentru a afla mai multe despre SageMaker Studio JupyterLab Spaces, consultați Creșteți productivitatea pe Amazon SageMaker Studio: Vă prezentăm JupyterLab Spaces și instrumentele AI generative.
- Acreditări de acces la sursa de date – Această funcție de notebook SageMaker Studio necesită acces la nume de utilizator și parolă la surse de date precum Snowflake și Amazon Redshift. Creați acces bazat pe nume de utilizator și parolă la aceste surse de date dacă nu aveți deja una. Accesul bazat pe OAuth la Snowflake nu este o caracteristică acceptată la momentul scrierii acestui articol.
- Încărcați magia SQL – Înainte de a rula interogări SQL dintr-o celulă de notebook Jupyter, este esențial să încărcați extensia SQL magics. Utilizați comanda
%load_ext amazon_sagemaker_sql_magic
pentru a activa această caracteristică. În plus, puteți rula%sm_sql?
comandă pentru a vizualiza o listă cuprinzătoare de opțiuni acceptate pentru interogare dintr-o celulă SQL. Aceste opțiuni includ setarea unei limite implicite de interogare de 1,000, rularea unei extrageri complete și injectarea parametrilor de interogare, printre altele. Această configurare permite manipularea flexibilă și eficientă a datelor SQL direct în mediul dvs. de notebook.
Creați conexiuni la baze de date
Capacitățile de navigare și execuție SQL încorporate ale SageMaker Studio sunt îmbunătățite de conexiunile AWS Glue. O conexiune AWS Glue este un obiect AWS Glue Data Catalog care stochează date esențiale, cum ar fi acreditările de conectare, șirurile URI și informații despre cloud privat virtual (VPC) pentru anumite magazine de date. Aceste conexiuni sunt folosite de crawlerele, locurile de muncă și punctele finale de dezvoltare AWS Glue pentru a accesa diferite tipuri de depozite de date. Puteți utiliza aceste conexiuni atât pentru datele sursă, cât și pentru datele țintă și chiar să reutilizați aceeași conexiune în mai multe crawler-uri sau să extrageți, să transformați și să încărcați (ETL).
Pentru a explora sursele de date SQL în panoul din stânga al SageMaker Studio, mai întâi trebuie să creați obiecte de conexiune AWS Glue. Aceste conexiuni facilitează accesul la diferite surse de date și vă permit să explorați elementele lor schematice de date.
În secțiunile următoare, vom parcurge procesul de creare a conectorilor AWS Glue specifici SQL. Acest lucru vă va permite să accesați, să vizualizați și să explorați seturi de date într-o varietate de depozite de date. Pentru informații mai detaliate despre conexiunile AWS Glue, consultați Conectarea la date.
Creați o conexiune AWS Glue
Singura modalitate de a aduce surse de date în SageMaker Studio este cu conexiunile AWS Glue. Trebuie să creați conexiuni AWS Glue cu anumite tipuri de conexiuni. În momentul scrierii acestui articol, singurul mecanism acceptat de creare a acestor conexiuni este utilizarea Interfața liniei de comandă AWS (CLI AWS).
Fișier JSON de definire a conexiunii
Când vă conectați la diferite surse de date în AWS Glue, trebuie mai întâi să creați un fișier JSON care definește proprietățile conexiunii - denumit fișier de definire a conexiunii. Acest fișier este crucial pentru stabilirea unei conexiuni AWS Glue și ar trebui să detalieze toate configurațiile necesare pentru accesarea sursei de date. Pentru cele mai bune practici de securitate, se recomandă utilizarea Secrets Manager pentru a stoca în siguranță informații sensibile, cum ar fi parolele. Între timp, alte proprietăți de conexiune pot fi gestionate direct prin conexiunile AWS Glue. Această abordare se asigură că acreditările sensibile sunt protejate, în timp ce configurația conexiunii este accesibilă și gestionabilă.
Următorul este un exemplu de definiție de conexiune JSON:
Când configurați conexiuni AWS Glue pentru sursele dvs. de date, există câteva linii directoare importante de urmat pentru a oferi atât funcționalitate, cât și securitate:
- Strinificarea proprietăților - În cadrul
PythonProperties
cheie, asigurați-vă că toate proprietățile sunt perechi cheie-valoare stringificate. Este esențial să scăpați corect de ghilimele duble folosind caracterul backslash () acolo unde este necesar. Acest lucru ajută la menținerea formatului corect și la evitarea erorilor de sintaxă în JSON. - Manipularea informațiilor sensibile – Deși este posibil să includeți toate proprietățile conexiunii în interior
PythonProperties
, este recomandabil să nu includeți detalii sensibile precum parolele direct în aceste proprietăți. În schimb, utilizați Secrets Manager pentru a gestiona informațiile sensibile. Această abordare vă securizează datele sensibile prin stocarea lor într-un mediu controlat și criptat, departe de fișierele de configurare principale.
Creați o conexiune AWS Glue folosind AWS CLI
După ce includeți toate câmpurile necesare în fișierul JSON de definire a conexiunii, sunteți gata să stabiliți o conexiune AWS Glue pentru sursa de date folosind AWS CLI și următoarea comandă:
Această comandă inițiază o nouă conexiune AWS Glue pe baza specificațiilor detaliate în fișierul dvs. JSON. Următoarea este o defalcare rapidă a componentelor comenzii:
- -regiune – Acesta specifică regiunea AWS în care va fi creată conexiunea AWS Glue. Este esențial să selectați Regiunea în care se află sursele de date și alte servicii pentru a minimiza latența și pentru a respecta cerințele de rezidență a datelor.
- –cli-input-json file:///path/to/file/connection/definition/file.json – Acest parametru direcționează AWS CLI să citească configurația de intrare dintr-un fișier local care conține definiția conexiunii dvs. în format JSON.
Ar trebui să puteți crea conexiuni AWS Glue cu comanda anterioară AWS CLI din terminalul Studio JupyterLab. Pe Fișier meniu, alegeți Nou și Terminal.
În cazul în care create-connection
comanda rulează cu succes, ar trebui să vedeți sursa de date listată în panoul browserului SQL. Dacă nu vedeți sursa de date listată, alegeți Reîmprospăta pentru a actualiza memoria cache.
Creați o conexiune Snowflake
În această secțiune, ne concentrăm pe integrarea unei surse de date Snowflake cu SageMaker Studio. Crearea conturilor Snowflake, a bazelor de date și a depozitelor nu intră în domeniul de aplicare al acestei postări. Pentru a începe cu Snowflake, consultați Ghid de utilizare fulg de zăpadă. În această postare, ne concentrăm pe crearea unui fișier JSON de definiție Snowflake și pe stabilirea unei conexiuni la sursa de date Snowflake folosind AWS Glue.
Creați un secret Secrets Manager
Vă puteți conecta la contul dvs. Snowflake fie folosind un ID de utilizator și o parolă, fie folosind chei private. Pentru a vă conecta cu un ID de utilizator și o parolă, trebuie să vă stocați în siguranță acreditările în Secrets Manager. După cum sa menționat anterior, deși este posibil să încorporați aceste informații în PythonProperties, nu este recomandat să stocați informații sensibile în format text simplu. Asigurați-vă întotdeauna că datele sensibile sunt tratate în siguranță pentru a evita potențiale riscuri de securitate.
Pentru a stoca informații în Secrets Manager, parcurgeți următorii pași:
- Pe consola Secrets Manager, alegeți Stocați un nou secret.
- Pentru Tip secret, alege Alt tip de secret.
- Pentru perechea cheie-valoare, alegeți Text simplu și introduceți următoarele:
- Introduceți un nume pentru secretul dvs., cum ar fi
sm-sql-snowflake-secret
. - Lăsați celelalte setări ca implicite sau personalizați dacă este necesar.
- Creați secretul.
Creați o conexiune AWS Glue pentru Snowflake
După cum sa discutat mai devreme, conexiunile AWS Glue sunt esențiale pentru accesarea oricărei conexiuni din SageMaker Studio. Puteți găsi o listă cu toate proprietățile de conexiune acceptate pentru Snowflake. Următorul este un exemplu de definiție de conexiune JSON pentru Snowflake. Înlocuiți valorile substituentului cu valorile corespunzătoare înainte de a le salva pe disc:
Pentru a crea un obiect de conexiune AWS Glue pentru sursa de date Snowflake, utilizați următoarea comandă:
Această comandă creează o nouă conexiune la sursa de date Snowflake în panoul browserului SQL, care poate fi navigată și puteți rula interogări SQL împotriva acesteia din celula notebook-ului JupyterLab.
Creați o conexiune Amazon Redshift
Amazon Redshift este un serviciu de depozit de date complet gestionat, la scară de petabyți, care simplifică și reduce costul analizării tuturor datelor dvs. folosind SQL standard. Procedura de creare a unei conexiuni Amazon Redshift o oglindește îndeaproape pe cea pentru o conexiune Snowflake.
Creați un secret Secrets Manager
Similar cu configurarea Snowflake, pentru a vă conecta la Amazon Redshift folosind un ID de utilizator și o parolă, trebuie să stocați în siguranță informațiile secrete în Secrets Manager. Parcurgeți următorii pași:
- Pe consola Secrets Manager, alegeți Stocați un nou secret.
- Pentru Tip secret, alege Acreditări pentru clusterul Amazon Redshift.
- Introduceți acreditările utilizate pentru a vă conecta pentru a accesa Amazon Redshift ca sursă de date.
- Alegeți clusterul Redshift asociat cu secretele.
- Introduceți un nume pentru secret, cum ar fi
sm-sql-redshift-secret
. - Lăsați celelalte setări ca implicite sau personalizați dacă este necesar.
- Creați secretul.
Urmând acești pași, vă asigurați că datele dvs. de conectare sunt gestionate în siguranță, folosind funcțiile de securitate robuste ale AWS pentru a gestiona datele sensibile în mod eficient.
Creați o conexiune AWS Glue pentru Amazon Redshift
Pentru a configura o conexiune cu Amazon Redshift folosind o definiție JSON, completați câmpurile necesare și salvați următoarea configurație JSON pe disc:
Pentru a crea un obiect de conexiune AWS Glue pentru sursa de date Redshift, utilizați următoarea comandă AWS CLI:
Această comandă creează o conexiune în AWS Glue conectată la sursa de date Redshift. Dacă comanda rulează cu succes, veți putea vedea sursa de date Redshift în blocnotesul SageMaker Studio JupyterLab, gata pentru a rula interogări SQL și pentru a efectua analize de date.
Creați o conexiune Athena
Athena este un serviciu de interogare SQL complet gestionat de la AWS care permite analiza datelor stocate în Amazon S3 folosind SQL standard. Pentru a configura o conexiune Athena ca sursă de date în browserul SQL al notebook-ului JupyterLab, trebuie să creați un exemplu de definiție de conexiune Athena JSON. Următoarea structură JSON configurează detaliile necesare pentru a vă conecta la Athena, specificând catalogul de date, directorul de staging S3 și regiunea:
Pentru a crea un obiect de conexiune AWS Glue pentru sursa de date Athena, utilizați următoarea comandă AWS CLI:
Dacă comanda are succes, veți putea accesa catalogul de date Athena și tabelele direct din browserul SQL din blocnotesul dvs. SageMaker Studio JupyterLab.
Interogați date din mai multe surse
Dacă aveți mai multe surse de date integrate în SageMaker Studio prin intermediul browserului SQL încorporat și al caracteristicii SQL pentru notebook, puteți rula rapid interogări și puteți comuta fără efort între backend-urile surselor de date în celulele ulterioare dintr-un notebook. Această capacitate permite tranziții fără întreruperi între diferite baze de date sau surse de date în timpul fluxului de lucru de analiză.
Puteți rula interogări pe o colecție diversă de backend-uri surse de date și puteți aduce rezultatele direct în spațiul Python pentru analiză sau vizualizare ulterioară. Acest lucru este facilitat de %%sm_sql
comandă magică disponibilă în notebook-urile SageMaker Studio. Pentru a scoate rezultatele interogării dvs. SQL într-un Pandas DataFrame, există două opțiuni:
- Din bara de instrumente a celulei notebook-ului, alegeți tipul de ieșire DataFrame și denumește-ți variabila DataFrame
- Adăugați următorul parametru la dvs
%%sm_sql
comanda:
Următoarea diagramă ilustrează acest flux de lucru și arată cum puteți rula fără efort interogări în diverse surse în celulele notebook-uri ulterioare, precum și să antrenați un model SageMaker utilizând joburi de antrenament sau direct în blocnotes folosind calculul local. În plus, diagrama evidențiază modul în care integrarea SQL încorporată a SageMaker Studio simplifică procesele de extracție și construcție direct în mediul familiar al unei celule de notebook JupyterLab.
Text în SQL: Utilizarea limbajului natural pentru a îmbunătăți crearea interogărilor
SQL este un limbaj complex care necesită înțelegerea bazelor de date, a tabelelor, a sintaxelor și a metadatelor. Astăzi, inteligența artificială generativă (AI) vă poate permite să scrieți interogări SQL complexe fără a necesita o experiență SQL aprofundată. Avansarea LLM-urilor a avut un impact semnificativ asupra procesării limbajului natural (NLP) bazată pe generarea SQL, permițând crearea de interogări SQL precise din descrierile în limbaj natural - o tehnică denumită Text-to-SQL. Cu toate acestea, este esențial să recunoaștem diferențele inerente dintre limbajul uman și SQL. Limbajul uman poate fi uneori ambiguu sau imprecis, în timp ce SQL este structurat, explicit și lipsit de ambiguitate. Reducerea acestui decalaj și convertirea cu acuratețe a limbajului natural în interogări SQL poate reprezenta o provocare formidabilă. Atunci când sunt furnizate cu solicitări adecvate, LLM-urile pot ajuta la reducerea acestui decalaj prin înțelegerea intenției din spatele limbajului uman și prin generarea de interogări SQL precise în consecință.
Odată cu lansarea caracteristicii de interogare SQL în notebook-uri SageMaker Studio, SageMaker Studio simplifică inspectarea bazelor de date și scheme, precum și crearea, rularea și depanarea interogărilor SQL fără a părăsi IDE-ul Jupyter pentru notebook. Această secțiune explorează modul în care capabilitățile Text-to-SQL ale LLM-urilor avansate pot facilita generarea de interogări SQL folosind limbajul natural în blocnotesurile Jupyter. Folosim modelul de ultimă oră Text-to-SQL defog/sqlcoder-7b-2
împreună cu Jupyter AI, un asistent AI generativ conceput special pentru notebook-urile Jupyter, pentru a crea interogări SQL complexe din limbaj natural. Folosind acest model avansat, putem crea fără efort și eficient interogări SQL complexe folosind limbajul natural, îmbunătățind astfel experiența noastră SQL în notebook-uri.
Prototiparea notebook-ului folosind Hugging Face Hub
Pentru a începe prototiparea, aveți nevoie de următoarele:
- Cod GitHub – Codul prezentat în această secțiune este disponibil în cele ce urmează GitHub repo iar prin referire la exemplu caiet.
- JupyterLab Space – Accesul la un spațiu JupyterLab SageMaker Studio susținut de instanțe bazate pe GPU este esențial. Pentru
defog/sqlcoder-7b-2
model, se recomandă un model cu parametri 7B, folosind o instanță ml.g5.2xlarge. Alternative precumdefog/sqlcoder-70b-alph
a saudefog/sqlcoder-34b-alpha
sunt, de asemenea, viabile pentru conversia limbajului natural în SQL, dar pot fi necesare tipuri de instanțe mai mari pentru prototipare. Asigurați-vă că aveți cota pentru a lansa o instanță susținută de GPU navigând la consola Service Quotes, căutând SageMaker și căutândStudio JupyterLab Apps running on <instance type>
.
Lansați un nou spațiu JupyterLab susținut de GPU din SageMaker Studio. Se recomandă să creați un nou JupyterLab Space cu cel puțin 75 GB de Magazin Amazon Elastic Block Stocare (Amazon EBS) pentru un model cu parametri 7B.
- Hugging Face Hub – Dacă domeniul dvs. SageMaker Studio are acces pentru a descărca modele din Hugging Face Hub, puteți utiliza funcția
AutoModelForCausalLM
clasa de la huggingface/transformatoare pentru a descărca automat modele și pentru a le fixa pe GPU-urile locale. Greutățile modelului vor fi stocate în memoria cache a mașinii locale. Vezi următorul cod:
După ce modelul a fost complet descărcat și încărcat în memorie, ar trebui să observați o creștere a utilizării GPU-ului pe computerul dvs. local. Acest lucru indică faptul că modelul utilizează în mod activ resursele GPU pentru sarcini de calcul. Puteți verifica acest lucru în propriul spațiu JupyterLab rulând nvidia-smi
(pentru o afișare unică) sau nvidia-smi —loop=1
(pentru a repeta în fiecare secundă) de la terminalul JupyterLab.
Modelele text-to-SQL excelează la înțelegerea intenției și contextului solicitării unui utilizator, chiar și atunci când limbajul folosit este conversațional sau ambiguu. Procesul implică traducerea intrărilor în limbaj natural în elementele corecte ale schemei bazei de date, cum ar fi numele tabelelor, numele coloanelor și condițiile. Cu toate acestea, un model text-to-SQL standard nu va cunoaște în mod inerent structura depozitului dvs. de date, schemele specifice bazei de date sau nu va putea interpreta cu acuratețe conținutul unui tabel pe baza exclusiv numelor de coloane. Pentru a utiliza eficient aceste modele pentru a genera interogări SQL practice și eficiente din limbajul natural, este necesar să adaptați modelul de generare de text SQL la schema dumneavoastră specifică a bazei de date de depozit. Această adaptare este facilitată prin utilizarea de solicită LLM. Următorul este un șablon de prompt recomandat pentru modelul defog/sqlcoder-7b-2 Text-to-SQL, împărțit în patru părți:
- Sarcină – Această secțiune ar trebui să specifice o sarcină de nivel înalt care trebuie îndeplinită de model. Ar trebui să includă tipul de backend al bazei de date (cum ar fi Amazon RDS, PostgreSQL sau Amazon Redshift) pentru a face modelul conștient de orice diferențe sintactice nuanțate care pot afecta generarea interogării SQL finale.
- Instrucțiuni – Această secțiune ar trebui să definească limitele sarcinilor și cunoașterea domeniului pentru model și poate include câteva exemple pentru a ghida modelul în generarea de interogări SQL reglate fin.
- Schema bazei de date – Această secțiune ar trebui să detalieze schemele bazei de date a depozitului, subliniind relațiile dintre tabele și coloane pentru a ajuta modelul să înțeleagă structura bazei de date.
- Răspunde – Această secțiune este rezervată modelului pentru a scoate răspunsul la interogarea SQL la intrarea în limbaj natural.
Un exemplu de schema și promptul bazei de date utilizate în această secțiune este disponibil în GitHub Repo.
Ingineria promptă nu înseamnă doar formarea de întrebări sau declarații; este o artă și o știință nuanțată care are un impact semnificativ asupra calității interacțiunilor cu un model AI. Modul în care creați un prompt poate influența profund natura și utilitatea răspunsului AI. Această abilitate este esențială în maximizarea potențialului interacțiunilor AI, în special în sarcini complexe care necesită înțelegere specializată și răspunsuri detaliate.
Este important să aveți opțiunea de a construi și testa rapid răspunsul unui model pentru un anumit prompt și de a optimiza promptul pe baza răspunsului. Notebook-urile JupyterLab oferă posibilitatea de a primi feedback instantaneu de la un model care rulează pe calcul local și de a optimiza promptul și de a regla răspunsul unui model în continuare sau de a schimba complet un model. În această postare, folosim un notebook SageMaker Studio JupyterLab susținut de un GPU NVIDIA A5.2G de 10 GB de la ml.g24xlarge pentru a rula inferența modelului Text-to-SQL pe notebook și pentru a construi interactiv promptul nostru până când răspunsul modelului este suficient de reglat pentru a oferi răspunsuri care sunt direct executabile în celulele SQL ale JupyterLab. Pentru a rula inferența modelului și pentru a transmite simultan răspunsurile modelului, folosim o combinație de model.generate
și TextIteratorStreamer
asa cum este definit in urmatorul cod:
Ieșirea modelului poate fi decorată cu magia SageMaker SQL %%sm_sql ...
, care permite notebook-ului JupyterLab să identifice celula ca o celulă SQL.
Găzduiește modele Text-to-SQL ca puncte finale SageMaker
La sfârșitul etapei de prototipare, am selectat LLM Text-to-SQL preferat, un format de prompt eficient și un tip de instanță adecvat pentru găzduirea modelului (fie cu un singur GPU, fie cu mai multe GPU). SageMaker facilitează găzduirea scalabilă a modelelor personalizate prin utilizarea punctelor finale SageMaker. Aceste puncte finale pot fi definite în funcție de criterii specifice, permițând implementarea LLM-urilor ca puncte finale. Această capacitate vă permite să scalați soluția la un public mai larg, permițând utilizatorilor să genereze interogări SQL din intrări în limbaj natural folosind LLM-uri personalizate găzduite. Următoarea diagramă ilustrează această arhitectură.
Pentru a vă găzdui LLM ca punct final SageMaker, generați mai multe artefacte.
Primul artefact este greutatea modelului. SageMaker Deep Java Library (DJL) Servire containerele vă permit să configurați configurații printr-un meta deservire.proprietăţi fișier, care vă permite să direcționați modul în care sunt preluate modelele, fie direct din Hugging Face Hub, fie prin descărcarea artefactelor modelului de pe Amazon S3. Dacă specificați model_id=defog/sqlcoder-7b-2
, DJL Serving va încerca să descarce direct acest model de pe Hugging Face Hub. Cu toate acestea, este posibil să suportați taxe de intrare/ieșire în rețea de fiecare dată când punctul final este implementat sau scalat elastic. Pentru a evita aceste taxe și pentru a accelera descărcarea artefactelor modelului, se recomandă să omiteți utilizarea model_id
in serving.properties
și salvați greutățile modelului ca artefacte S3 și specificați-le doar cu s3url=s3://path/to/model/bin
.
Salvarea unui model (cu tokenizer-ul său) pe disc și încărcarea lui pe Amazon S3 se poate realiza cu doar câteva linii de cod:
De asemenea, utilizați un fișier prompt al bazei de date. În această configurare, promptul bazei de date este compus din Task
, Instructions
, Database Schema
, și Answer sections
. Pentru arhitectura actuală, alocăm un fișier prompt separat pentru fiecare schemă de bază de date. Cu toate acestea, există flexibilitate de a extinde această configurare pentru a include mai multe baze de date per fișier prompt, permițând modelului să ruleze îmbinări compozite pe baze de date de pe același server. În timpul etapei noastre de prototipare, salvăm promptul bazei de date ca fișier text numit <Database-Glue-Connection-Name>.prompt
, În cazul în care Database-Glue-Connection-Name
corespunde numelui conexiunii vizibil în mediul dvs. JupyterLab. De exemplu, această postare se referă la o conexiune Snowflake numită Airlines_Dataset
, astfel încât fișierul prompt al bazei de date este numit Airlines_Dataset.prompt
. Acest fișier este apoi stocat pe Amazon S3 și ulterior citit și stocat în cache de logica noastră de servire a modelului.
În plus, această arhitectură permite oricăror utilizatori autorizați ai acestui punct final să definească, să stocheze și să genereze interogări SQL în limbaj natural fără a fi nevoie de redistribuiri multiple ale modelului. Folosim următoarele exemplu de prompt de bază de date pentru a demonstra funcționalitatea Text-to-SQL.
Apoi, generați logica de serviciu model personalizat. În această secțiune, descrieți o logică de inferență personalizată numită model.py. Acest script este conceput pentru a optimiza performanța și integrarea serviciilor noastre Text-to-SQL:
- Definiți logica de stocare în cache a fișierului prompt al bazei de date – Pentru a minimiza latența, implementăm o logică personalizată pentru descărcarea și stocarea în cache a fișierelor prompte a bazei de date. Acest mecanism se asigură că solicitările sunt disponibile cu ușurință, reducând cheltuielile generale asociate cu descărcările frecvente.
- Definiți logica de inferență a modelului personalizat – Pentru a îmbunătăți viteza de inferență, modelul nostru text-to-SQL este încărcat în formatul de precizie float16 și apoi convertit într-un model DeepSpeed. Acest pas permite un calcul mai eficient. În plus, în această logică, specificați ce parametri pot ajusta utilizatorii în timpul apelurilor de inferență pentru a adapta funcționalitatea în funcție de nevoile lor.
- Definiți logica personalizată de intrare și ieșire – Stabilirea de formate de intrare/ieșire clare și personalizate este esențială pentru o integrare ușoară cu aplicațiile din aval. O astfel de aplicație este JupyterAI, despre care vom discuta în secțiunea ulterioară.
În plus, includem și un serving.properties
fișier, care acționează ca un fișier de configurare global pentru modelele găzduite folosind servirea DJL. Pentru mai multe informații, consultați Configurații și setări.
În cele din urmă, puteți include și un requirements.txt
fișier pentru a defini modulele suplimentare necesare pentru inferență și pentru a împacheta totul într-un tarball pentru implementare.
Consultați următorul cod:
Integrați-vă punctul final cu asistentul SageMaker Studio Jupyter AI
Jupyter AI este un instrument open source care aduce AI generativă la notebook-urile Jupyter, oferind o platformă robustă și ușor de utilizat pentru explorarea modelelor AI generative. Îmbunătățește productivitatea în notebook-urile JupyterLab și Jupyter, oferind funcții precum magia %%ai pentru crearea unui loc de joacă AI generativ în interiorul notebook-urilor, o interfață de utilizare nativă de chat în JupyterLab pentru interacțiunea cu AI ca asistent conversațional și suport pentru o gamă largă de LLM de la furnizorii ca Amazon Titan, AI21, Anthropic, Cohere și Hugging Face sau servicii gestionate precum Amazon Bedrock și punctele finale SageMaker. Pentru această postare, folosim integrarea Jupyter AI ieșită din cutie cu punctele finale SageMaker pentru a aduce capacitatea Text-to-SQL în notebook-urile JupyterLab. Instrumentul Jupyter AI este preinstalat în toate spațiile SageMaker Studio JupyterLab susținute de Imagini de distribuție SageMaker; utilizatorilor finali nu li se cere să facă configurații suplimentare pentru a începe să folosească extensia Jupyter AI pentru a se integra cu un punct final găzduit de SageMaker. În această secțiune, discutăm cele două moduri de a utiliza instrumentul Jupyter AI integrat.
Jupyter AI în interiorul unui notebook folosind magie
Jupyter AI %%ai
comanda magică vă permite să vă transformați notebook-urile SageMaker Studio JupyterLab într-un mediu AI generativ reproductibil. Pentru a începe să utilizați magia AI, asigurați-vă că ați încărcat extensia jupyter_ai_magics pentru a o folosi %%ai
magie și, în plus, încărcați amazon_sagemaker_sql_magic
să utilizeze %%sm_sql
magie:
Pentru a rula un apel către punctul final SageMaker din blocnotes, utilizând %%ai
comandă magică, furnizați următorii parametri și structurați comanda după cum urmează:
- –nume-regiune – Specificați regiunea în care este implementat punctul final. Acest lucru vă asigură că solicitarea este direcționată către locația geografică corectă.
- –schema-cerere – Includeți schema datelor de intrare. Această schemă prezintă formatul și tipurile așteptate ale datelor de intrare de care modelul dvs. are nevoie pentru a procesa cererea.
- – calea de răspuns – Definiți calea în cadrul obiectului răspuns în care se află rezultatul modelului dvs. Această cale este folosită pentru a extrage datele relevante din răspunsul returnat de modelul dumneavoastră.
- -f (opțional) - Aceasta este o formatator de ieșire steag care indică tipul de ieșire returnat de model. În contextul unui blocnotes Jupyter, dacă rezultatul este cod, acest indicator ar trebui setat în mod corespunzător pentru a formata rezultatul ca cod executabil în partea de sus a celulei blocnotesului Jupyter, urmat de o zonă de introducere a textului liber pentru interacțiunea utilizatorului.
De exemplu, comanda dintr-o celulă de blocnotes Jupyter ar putea arăta ca următorul cod:
Fereastra de chat Jupyter AI
Alternativ, puteți interacționa cu punctele finale SageMaker printr-o interfață de utilizator încorporată, simplificând procesul de generare a interogărilor sau de angajare în dialog. Înainte de a începe să discutați cu punctul final SageMaker, configurați setările relevante în Jupyter AI pentru punctul final SageMaker, așa cum se arată în următoarea captură de ecran.
Concluzie
SageMaker Studio simplifică și eficientizează acum fluxul de lucru al cercetătorilor de date prin integrarea suportului SQL în notebook-urile JupyterLab. Acest lucru le permite oamenilor de știință de date să se concentreze asupra sarcinilor lor fără a fi nevoie să gestioneze mai multe instrumente. În plus, noua integrare SQL încorporată în SageMaker Studio permite persoanelor de date să genereze fără efort interogări SQL folosind text în limbaj natural ca intrare, accelerând astfel fluxul de lucru.
Vă încurajăm să explorați aceste funcții în SageMaker Studio. Pentru mai multe informații, consultați Pregătiți datele cu SQL în Studio.
Apendice
Activați browserul SQL și celula SQL pentru notebook în medii personalizate
Dacă nu utilizați o imagine de distribuție SageMaker sau nu utilizați imagini de distribuție 1.5 sau mai jos, rulați următoarele comenzi pentru a activa caracteristica de navigare SQL în mediul dvs. JupyterLab:
Mutați widgetul browser SQL
Widgeturile JupyterLab permit relocarea. În funcție de preferințele dvs., puteți muta widget-urile pe ambele părți ale panoului de widget-uri JupyterLab. Dacă preferați, puteți muta direcția widget-ului SQL în partea opusă (de la dreapta la stânga) a barei laterale cu un simplu clic dreapta pe pictograma widget-ului și alegând Comutați bara laterală.
Despre autori
Pranav Murthy este arhitect specializat în soluții AI/ML la AWS. El se concentrează pe a ajuta clienții să construiască, să antreneze, să implementeze și să migreze sarcinile de lucru de învățare automată (ML) către SageMaker. El a lucrat anterior în industria semiconductoarelor, dezvoltând modele de viziune computerizată (CV) și procesare a limbajului natural (NLP) pentru a îmbunătăți procesele semiconductoare folosind tehnici de ML de ultimă generație. În timpul liber, îi place să joace șah și să călătorească. Puteți găsi Pranav pe LinkedIn.
Varun Shah este un inginer software care lucrează la Amazon SageMaker Studio la Amazon Web Services. El se concentrează pe construirea de soluții ML interactive care simplifică procesarea datelor și călătoriile de pregătire a datelor. În timpul liber, Varun se bucură de activități în aer liber, inclusiv drumeții și schi, și este mereu pregătit să descopere locuri noi și interesante.
Sumedha Swamy este manager de produs principal la Amazon Web Services, unde conduce echipa SageMaker Studio în misiunea sa de a dezvolta IDE de alegere pentru știința datelor și învățarea automată. El și-a dedicat ultimii 15 ani construind produse pentru consumatori și întreprinderi bazate pe Machine Learning.
Bosco Albuquerque este arhitect senior de soluții partener la AWS și are peste 20 de ani de experiență în lucrul cu produse de baze de date și de analiză de la furnizorii de baze de date pentru întreprinderi și furnizorii de cloud. El a ajutat companiile de tehnologie să proiecteze și să implementeze soluții și produse de analiză a datelor.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- PlatoHealth. Biotehnologie și Inteligență pentru studii clinice. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/machine-learning/explore-data-with-ease-using-sql-and-text-to-sql-in-amazon-sagemaker-studio-jupyterlab-notebooks/
- :are
- :este
- :nu
- :Unde
- $UP
- 000
- 1
- 100
- 11
- 12
- 13
- 14
- ani 15
- 15%
- 20
- ani 20
- 23
- 24
- 7
- 75
- 8
- 9
- a
- capacitate
- Capabil
- Despre Noi
- accelera
- accelerarea
- acces
- Acces la date
- accesibilitate
- accesibil
- accesarea
- realizat
- Conform
- în consecință
- Cont
- Conturi
- precis
- precis
- recunoaște
- peste
- Acțiune
- activ
- activităţi de
- Acte
- adapta
- adaptare
- plus
- Suplimentar
- În plus,
- regla
- administratori
- avansat
- avansare
- recomandabil
- afecta
- împotriva
- AI
- Asistent AI
- Modele AI
- AI / ML
- Ajutorul
- Companii aeriene
- TOATE
- aloca
- permite
- Permiterea
- permite
- deja
- de asemenea
- alternative
- Cu toate ca
- mereu
- Amazon
- Amazon RDS
- Amazon RedShift
- Amazon SageMaker
- Amazon SageMaker Studio
- Amazon Web Services
- printre
- an
- analiză
- Google Analytics
- analiza
- analiza
- și
- anunța
- răspunde
- Antropică
- Orice
- aplicație
- aplicatii
- abordare
- adecvat
- Apps
- arhitectură
- SUNT
- ZONĂ
- Mulțime
- Artă
- Artă și știință
- artificial
- inteligență artificială
- Inteligența artificială (AI)
- AS
- alocate
- Asistență
- Asistent
- asociate
- At
- încercare
- audiență
- autor
- autorizat
- Auto
- în mod automat
- disponibil
- evita
- conştient
- gradului de conştientizare
- departe
- AWS
- AWS Adeziv
- sprijinit
- Backend
- backend-uri
- bazat
- BE
- fost
- înainte
- începe
- Început
- în spatele
- de mai jos
- CEL MAI BUN
- Cele mai bune practici
- între
- Bloca
- atât
- limitele
- Defalcarea
- POD
- punte
- aduce
- Aduce
- mai larg
- browser-ul
- Navigare
- construi
- Clădire
- construit-in
- dar
- by
- Cache
- cache
- apel
- apeluri
- CAN
- nu poti
- capacități
- capacitate
- card
- catalog
- celulă
- Celule
- contesta
- Schimbare
- caracter
- taxe
- Chat
- Şah
- alegere
- Alege
- alegere
- clasă
- clasic
- clar
- cli
- îndeaproape
- Cloud
- Grup
- cod
- colectare
- Coloană
- Coloane
- combinaţie
- cum
- vine
- comandă
- Companii
- Completă
- completare
- complex
- se conforma
- componente
- compuse
- cuprinzător
- calcul
- de calcul
- Calcula
- calculator
- Computer Vision
- concentra
- Condiții
- Configuraţie
- conjuncție
- Conectați
- Conectarea
- conexiune
- Conexiuni
- conectori
- Consoleze
- consumator
- Containere
- conține
- conţinut
- context
- controlată
- de conversaţie
- Convertire
- convertit
- de conversie a
- corecta
- corespunde
- A costat
- ambarcaţiunilor
- crea
- a creat
- creează
- Crearea
- creaţie
- scrisori de acreditare
- credit
- card de credit
- Criteriile de
- crucial
- Curent
- În prezent
- personalizat
- clienţii care
- personaliza
- personalizate
- ultima generație
- de date
- analiza datelor
- Analiza datelor
- Pregătirea datelor
- de prelucrare a datelor
- știința datelor
- om de știință de date
- Baza de date
- baze de date
- seturi de date
- dedicat
- adânc
- Mod implicit
- defini
- definit
- defineste
- definiție
- demonstra
- În funcție
- implementa
- dislocate
- desfășurarea
- descriere
- Amenajări
- proiectat
- detaliu
- detaliat
- detalii
- dezvolta
- Dezvoltator
- în curs de dezvoltare
- Dezvoltare
- diagramă
- Dialog
- diferenţele
- diferit
- distinge
- direcționa
- direcţie
- direct
- director
- direct
- descoperirea
- discuta
- discutat
- Afişa
- afișat
- distribuire
- diferit
- împărțit
- do
- domeniu
- Dont
- Descarca
- descărcat
- descărcarea
- download-uri
- în timpul
- fiecare
- Mai devreme
- uşura
- ecosistem
- efect
- Eficace
- în mod eficient
- eficient
- eficient
- efort
- oricare
- element
- încastra
- permite
- permite
- încuraja
- criptate
- capăt
- Punct final
- captivant
- inginer
- Inginerie
- spori
- sporită
- Îmbunătăţeşte
- consolidarea
- Intrați
- Afacere
- în întregime
- Mediu inconjurator
- medii
- Erori
- scăpa
- mai ales
- esenţial
- stabili
- stabilirea
- Chiar
- EVER
- Fiecare
- tot
- exemplu
- exemple
- Excel
- excitat
- captivant
- execuție
- Extinde
- de aşteptat
- experienţă
- explorare
- explora
- Explorează
- Explorarea
- extensie
- extrage
- extracţie
- Față
- facilita
- facilitat
- facilitează
- facilitând
- Falls
- fals
- familiar
- Caracteristică
- DESCRIERE
- feedback-ul
- puțini
- Domenii
- Fișier
- Fişiere
- umple
- final
- În cele din urmă
- Găsi
- First
- Flexibilitate
- flexibil
- Concentra
- concentrat
- se concentrează
- urma
- a urmat
- următor
- urmează
- Pentru
- format
- formidabil
- găsit
- patru
- fraudă
- Gratuit
- frecvent
- din
- Complet
- complet
- funcționalitate
- funcții
- mai mult
- În plus
- decalaj
- genera
- generator
- generaţie
- generativ
- AI generativă
- geografic
- obține
- dat
- Caritate
- Merge
- GPU
- unități de procesare grafică
- acordarea
- ghida
- orientări
- Manipularea
- Avea
- he
- ajutor
- a ajutat
- ajutor
- ajută
- aici
- la nivel înalt
- superior
- subliniind
- highlights-uri
- împiedicată steric
- lui
- gazdă
- găzduit
- găzduire
- carcasă
- Cum
- Cum Pentru a
- Totuși
- HTML
- http
- HTTPS
- Butuc
- uman
- i
- ICON
- ID
- identifica
- Identitate
- if
- ilustrează
- imagine
- imagini
- afectate
- Impacturi
- punerea în aplicare a
- important
- îmbunătăţi
- in
- în profunzime
- include
- Inclusiv
- Crește
- indică
- industrie
- influență
- informații
- inerent
- în mod inerent
- Initiaza
- intrare
- intrări
- în interiorul
- instala
- instanță
- clipă
- in schimb
- instrucțiuni
- integra
- integrate
- integrarea
- integrare
- Inteligență
- scop
- interacţiona
- interacționând
- interacţiune
- interacţiuni
- interactiv
- interfaţă
- interpreta
- în
- introducerea
- implică
- IT
- ESTE
- Java
- Locuri de munca
- Se alătură
- călătoriile
- jpeg
- jpg
- JSON
- doar
- Cheie
- chei
- Cunoaște
- limbă
- mare
- mai mare
- Latență
- mai tarziu
- lansa
- Conduce
- AFLAȚI
- învăţare
- cel mai puțin
- lăsând
- stânga
- Bibliotecă
- ca
- LIMITĂ
- Linie
- linii
- legate de
- Listă
- listat
- LLM
- încărca
- încărcare
- local
- situat
- locaţie
- log
- logică
- Logare
- Uite
- arată ca
- LOWER
- maşină
- masina de învățare
- magie
- Principal
- menține
- face
- FACE
- Efectuarea
- administra
- flexibil
- gestionate
- administrare
- manager
- Manipulare
- manual
- maximizarea
- Mai..
- Între timp
- mecanism
- Memorie
- menționat
- meta
- Metadata
- ar putea
- migra
- minimaliza
- Misiune
- ML
- model
- Modele
- Module
- mai mult
- mai eficient
- cele mai multe
- muta
- multiplu
- trebuie sa
- my
- nume
- Numit
- nume
- nativ
- Natural
- Procesarea limbajului natural
- Natură
- navigând
- necesar
- Nevoie
- nevoilor
- rețele
- Nou
- următor
- nlp
- Nici unul
- caiet
- acum
- nuantat
- Nvidia
- obiect
- obiecte
- observa
- of
- oferind
- de multe ori
- mai în vârstă
- on
- ONE
- afară
- deschide
- open-source
- opus
- Optimizați
- Opțiune
- Opţiuni
- or
- comandă
- Altele
- Altele
- al nostru
- schiță
- contururi
- conturând
- producție
- exterior
- peste
- global
- deasupra
- propriu
- pachet
- ofertele
- pereche
- panda
- pâine
- parametru
- parametrii
- partener
- piese
- Parolă
- Parolele
- trecut
- cale
- pentru
- Efectua
- performanță
- efectuarea
- permisiuni
- permise
- pivot
- înlocuitor
- Locuri
- Simplu
- platformă
- Plato
- Informații despre date Platon
- PlatoData
- loc de joaca
- joc
- Politica
- Popular
- posibil
- Post
- postgresql
- potenţial
- potenţial
- Practic
- practicile
- precedent
- precis
- Precizie
- Predictor
- a prefera
- preferat
- pregătire
- premise
- prezenta
- prezentat
- Anunţ
- în prealabil
- Principal
- privat
- Cheile private
- procedură
- proces
- procese
- prelucrare
- Produs
- manager de produs
- productivitate
- Produse
- Profil
- profund
- solicitări
- cum se cuvine
- proprietăţi
- protejat
- prototipuri
- furniza
- prevăzut
- furnizori
- furnizează
- furnizarea
- Piton
- calitate
- interogări
- întrebare
- întrebare
- Întrebări
- Rapid
- repede
- mai degraba
- Citeste
- uşor
- gata
- a primi
- recomandat
- reduce
- reducerea
- trimite
- corelarea
- menționat
- se referă
- regiune
- Relaţii
- eliberaţi
- repeta
- înlocui
- solicita
- necesar
- Cerinţe
- Necesită
- rezervat
- reședință
- resursă
- Resurse
- răspuns
- răspunsuri
- rezultat
- REZULTATE
- reveni
- reutilizarea
- dreapta
- Faceți clic dreapta
- Riscurile
- robust
- Rol
- dirijate
- Alerga
- funcţionare
- ruleaza
- s
- sagemaker
- acelaşi
- probă
- satisfăcut
- Economisiți
- economisire
- scalabil
- Scară
- scalate
- Ştiinţă
- Om de stiinta
- oamenii de stiinta
- domeniu
- scenariu
- fără sudură
- Caută
- căutare
- Al doilea
- Secret
- secrete
- Secțiune
- secțiuni
- în siguranță,
- Securizeaza
- securitate
- riscuri de securitate
- vedea
- selecta
- selectate
- semiconductor
- sensibil
- distinct
- serverul
- serviciu
- Servicii
- servire
- set
- instalare
- setări
- configurarea
- câteva
- să
- Arăta
- vitrine
- indicat
- parte
- semnalele
- semnificativ
- simplu
- Simplifică
- simplifica
- simplificarea
- simultan
- calificare
- netezi
- So
- Software
- Inginer Software
- Numai
- soluţie
- soluţii
- uneori
- Sursă
- Surse
- Spaţiu
- spații
- specialist
- de specialitate
- specific
- specific
- Specificaţii
- precizând
- viteză
- Etapă
- înscenare
- standard
- Începe
- început
- Stat
- Declarație
- Declarații
- Pas
- paşi
- Încă
- depozitare
- stoca
- stocate
- magazine
- stocarea
- simplu
- curent
- raționalizează
- structura
- structurat
- studio
- ulterior
- Ulterior
- de succes
- Reușit
- astfel de
- a sustine
- Suportat
- sigur
- Intrerupator
- sintaxă
- tabel
- Croitor
- Ţintă
- Sarcină
- sarcini
- echipă
- tehnică
- tehnici de
- Tehnologia
- companii de tehnologie
- șablon
- Terminal
- test
- a) Sport and Nutrition Awareness Day in Manasia Around XNUMX people from the rural commune Manasia have participated in a sports and healthy nutrition oriented activity in one of the community’s sports ready yards. This activity was meant to gather, mainly, middle-aged people from a Romanian rural community and teach them about the benefits that sports have on both their mental and physical health and on how sporting activities can be used to bring people from a community closer together. Three trainers were made available for this event, so that the participants would get the best possible experience physically and so that they could have the best access possible to correct information and good sports/nutrition practices. b) Sports Awareness Day in Poiana Țapului A group of young participants have taken part in sporting activities meant to teach them about sporting conduct, fairplay, and safe physical activities. The day culminated with a football match.
- decât
- acea
- lor
- Lor
- se
- apoi
- Acolo.
- astfel
- Acestea
- ei
- acest
- Prin
- timp
- la
- astăzi
- instrument
- Unelte
- top
- Tren
- Pregătire
- Transforma
- Transformare
- tranziții
- Traveling
- ton
- reglate
- Două
- tip
- Tipuri
- tipic
- ui
- în
- înţelegere
- până la
- up-to-data
- Actualizează
- actualizat
- Se încarcă
- us
- Locuințe din SUA
- utilizare
- utilizat
- Utilizator
- User Interface
- ușor de utilizat
- utilizatorii
- folosind
- v1
- Valori
- varietate
- diverse
- Varun
- furnizori
- verifica
- versiune
- Versiunile
- viabil
- Vizualizare
- vizualizari
- Virtual
- vizibil
- viziune
- vizualizare
- imagina
- vizual
- umbla
- Cale..
- modalități de
- we
- web
- servicii web
- BINE
- cand
- întrucât
- care
- în timp ce
- larg
- mai larg
- widget
- voi
- cu
- în
- fără
- a lucrat
- flux de lucru
- fluxuri de lucru
- de lucru
- scrie
- scris
- scris
- ani
- Tu
- Ta
- zephyrnet