Olimpiada Națională de Inteligență Artificială – Lot 2026
Bine ai venit la Olimpiada Națională de Inteligență Artificială – Lot 2026! Acest document îți explică cum să folosești mediul de lucru pregătit pentru tine.
Pe desktop-ul tău vei găsi un folder numit ONIA. Acesta este spațiul tău principal de lucru și conține toate instrumentele necesare pentru desfășurarea probei.
Pe langă acesta pe durata competiției vă este pus la dispozițue un mediu de lucru Jupyter Notebook care are access la GPU acesibil la https://jupyter.olimpiada-ai.uvt.ro
Important
Pentru o buna functionare, salvati TOATE fiserele de care aveti nevoie in folderul ONIA, doar acesta si subdirectoarele lui pot fi accesate de Jupyter.
Cel mai bine este sa folositi path-uri relative sau daca folosit path-uri absolute, path-ul catre folderul ONIA este /home/jovyan/work de exemplu pentru fisierul test_imports.ipynb path-ul absolut este /home/jovyan/work/test_imports.ipynb
📂 Conținutul folderului ONIA
În interiorul folderului ONIA, vei găsi următoarele resurse:
- 🌐 Platforma_OAI.url
- Scurtătură către platforma oficială a concursului unde vei găsi subiectele, seturile de date și unde vei încărca soluțiile.
- 🔗 Open_Jupyter.url
- Lansează mediul de lucru Jupyter Notebook direct în browser. Acesta este locul unde vei scrie și rula codul Python.
- 💻 Open_in_VSCode.lnk
- Dacă preferi un editor mai avansat, folosește această scurtătură pentru a deschide întregul folder în Visual Studio Code.
- 📜 README.md
- Conține datele tale de conectare (Token-ul de acces pentru Jupyter) și instrucțiuni pentru configurarea proxy-ului sau depanare.
- 📓 test_imports.ipynb
- Un notebook de test pentru a verifica dacă toate bibliotecile necesare (PyTorch, Scikit-Learn, Pandas, etc.) sunt instalate corect.
🚀 Cum începi lucrul?
1. Lansarea mediului de lucru
Recomandăm folosirea Jupyter Notebook prin scurtătura Open_Jupyter.url.
- Dacă ți se cere un cod de acces (token), acesta se găsește în fișierul
README.mddin folderul ONIA. - Atenție: Asigură-te că Docker Desktop este pornit (vezi pictograma de lângă ceas) înainte de a accesa link-ul.
2. Verificarea mediului
Deschide fișierul test_imports.ipynb și rulează toate celulele (apasă Shift + Enter). Dacă mesajul final este "SUCCESS: All imports working!", ești gata de start!
3. Accesarea problemelor
Pentru a vizualiza problemele din competiție pe platformă, ți se va cere o parola de acces la subiecte. Pe aceasta o vei primi direct în sala de curs de la supraveghetori.
⚠️ Sfaturi importante
- Salvarea datelor: Toate fișierele create sau modificate de tine în folderul ONIA de pe desktop sunt persistente. Salvează-ți munca frecvent aici!
- Utilizarea VS Code: Dacă alegi să lucrezi în VS Code, asigură-te că salvezi toate fișierele (scripturi, notebook-uri, date) în interiorul folderului ONIA. Doar acest folder este accesibil din Jupyter. Îți poți crea orâte subfoldere dorești în interiorul lui pentru a-ți organiza munca.
- Kernel-ul Jupyter: Dacă Jupyter îți cere să alegi un kernel, selectează întotdeauna Python 3 (ipykernel).
Informare – Resurse NLP disponibile offline
În timpul probei nu există acces la internet. Toate modelele și resursele disponibile sunt deja instalate local și pot fi folosite direct.
1. NLTK (procesare clasică)
Sunt disponibile următoarele resurse pentru limba engleză:
- tokenizare (
punkt) - stopwords (
stopwords) - lematizare (
wordnet,omw-1.4) - POS tagging (
averaged_perceptron_tagger) - NER / chunking (
maxent_ne_chunker,words)
Se pot realiza:
- tokenizare
- eliminare stopwords
- lematizare
- POS tagging
- Named Entity Recognition (simplu)
2. spaCy
Model disponibil:
en_core_web_sm
Funcționalități:
- tokenizare
- lematizare
- POS tagging
- Named Entity Recognition
3. Reprezentări clasice (scikit-learn)
Disponibile fără restricții:
- Bag of Words (
CountVectorizer) - TF-IDF (
TfidfVectorizer) - suport pentru n-grams
Nu necesită descărcări suplimentare.
4. Word Embeddings (Gensim)
Model disponibil:
glove-wiki-gigaword-50
Se pot realiza:
- vectori pentru cuvinte
- similaritate semantică
- embeddings pentru propoziții (prin mediere)
5. fastText
Disponibil pentru:
- antrenare modele locale
Nu sunt incluse modele pretrained.
6. Transformers (Hugging Face)
Modele disponibile:
distilbert-base-uncasedMoritzLaurer--DeBERTa-v3-large-mnli-fever-anli-ling-wanliroberta-large-mnliall-MiniLM-L6-v2whisper-small
Se poate folosi pentru:
- embeddings de text
- feature extraction
Important:
- trebuie utilizat în mod offline
- nu se pot descărca alte modele
Restricții
Nu este permis:
- descărcarea de modele sau date
- folosirea altor modele decât cele menționate
- accesarea internetului sau a serviciilor externe
Încărcare modele locale cu transformers
Modelele sunt în:
BASE = "/opt/onia/offline_nlp_assets/hf_home/local_models"
Model generic
from transformers import AutoTokenizer, AutoModel
model_path = f"{BASE}/distilbert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_path, local_files_only=True)
model = AutoModel.from_pretrained(model_path, local_files_only=True)
Clasificare / MNLI
from transformers import AutoTokenizer, AutoModelForSequenceClassification
model_path = f"{BASE}/roberta-large-mnli"
tokenizer = AutoTokenizer.from_pretrained(model_path, local_files_only=True)
model = AutoModelForSequenceClassification.from_pretrained(
model_path,
local_files_only=True
)
Pentru DeBERTa:
model_path = f"{BASE}/MoritzLaurer--DeBERTa-v3-large-mnli-fever-anli-ling-wanli"
Embeddings cu all-MiniLM-L6-v2
from transformers import AutoTokenizer, AutoModel
model_path = f"{BASE}/all-MiniLM-L6-v2"
tokenizer = AutoTokenizer.from_pretrained(model_path, local_files_only=True)
model = AutoModel.from_pretrained(model_path, local_files_only=True)
Whisper
from transformers import AutoProcessor, AutoModelForSpeechSeq2Seq
model_path = f"{BASE}/whisper-small"
processor = AutoProcessor.from_pretrained(model_path, local_files_only=True)
model = AutoModelForSpeechSeq2Seq.from_pretrained(
model_path,
local_files_only=True
)
Pipeline
from transformers import pipeline
model_path = f"{BASE}/roberta-large-mnli"
classifier = pipeline(
"zero-shot-classification",
model=model_path,
tokenizer=model_path,
local_files_only=True
)
result = classifier(
"Acest text este despre sport.",
candidate_labels=["sport", "politică", "tehnologie"]
)
print(result)
Mod offline
import os
os.environ["TRANSFORMERS_OFFLINE"] = "1"
Pentru a accesa documentația pentru transformers în varianta offline puteți folosi help.
Exemplu:
from transformers import AutoTokenizer, AutoModel, pipeline
help(AutoTokenizer)
help(AutoTokenizer.from_pretrained)
help(AutoModel.from_pretrained)
help(pipeline)
Documentație permisă
Core / Limbaj
- Python
Calcul numeric și științific
- NumPy
- SciPy
- pandas
- Matplotlib
- Seaborn
Machine Learning
- scikit-learn
- CatBoost
- joblib
- FAISS
Deep Learning
- PyTorch
Procesare Limbaj Natural (NLP)
- sentence-transformers (SBERT)
- NLTK
- Gensim
Computer Vision
- OpenCV
- scikit-image
Audio
Succes la concurs! 🤖✨