Ο πλήρης τεχνικός οδηγός για τα μεγάλα γλωσσικά μοντέλα — από το πώς το ακατέργαστο κείμενο γίνεται αριθμοί, μέσα από την αρχιτεκτονική transformer και τον μηχανισμό attention, έως την εκπαίδευση, την ευθυγράμμιση, το inference, το RAG και την ανάπτυξη σε παραγωγή. Χωρίς ασάφειες· πραγματικές εξισώσεις και πραγματικός κώδικας.
Ένα μεγάλο γλωσσικό μοντέλο (LLM) είναι ένα νευρωνικό δίκτυο εκπαιδευμένο να προβλέπει το επόμενο token σε μια ακολουθία κειμένου. Αυτός ο μοναδικός στόχος — η πρόβλεψη του επόμενου token — αποδεικνύεται εξαιρετικά ισχυρός: για να προβλέψει καλά, το μοντέλο πρέπει να μάθει γραμματική, γεγονότα, μοτίβα συλλογισμού, σύνταξη κώδικα και πολλά άλλα.
Το «μεγάλο» αναφέρεται στον αριθμό παραμέτρων (δισεκατομμύρια έως τρισεκατομμύρια εκπαιδευμένα βάρη) και στην κλίμακα των δεδομένων εκπαίδευσης (τρισεκατομμύρια tokens από τον ιστό, βιβλία και κώδικα). Σε επαρκή κλίμακα, τα μοντέλα εμφανίζουν αναδυόμενες ικανότητες — δυνατότητες που δεν υπάρχουν σε μικρότερα μοντέλα και δεν εκπαιδεύτηκαν ρητά, όπως αριθμητική πολλών βημάτων, αναλογικός συλλογισμός και in-context learning από μια χούφτα παραδείγματα.
Αρχιτεκτονικά, κάθε σημαντικό LLM σήμερα είναι ένας decoder-only transformer (οικογένεια GPT, Llama, Mistral, Claude, Gemini). Το μοντέλο λαμβάνει ως είσοδο μια ακολουθία από token IDs και παράγει μια κατανομή πιθανότητας πάνω στο λεξιλόγιο για το επόμενο token. Η παραγωγή είναι autoregressive: το μοντέλο δειγματοληπτεί ένα token, το προσαρτά στην ακολουθία και επαναλαμβάνει.
graph LR A[Input Text] --> B[Tokenizer] B --> C[Token IDs] C --> D[Embedding Layer] D --> E[Transformer Blocks xN] E --> F[LM Head] F --> G[Logits over Vocabulary] G --> H[Softmax + Sampling] H --> I[Next Token] I -->|Autoregressive loop| C
Δυνατότητες που εμφανίζονται μόνο πάνω από ορισμένα κατώφλια κλίμακας — few-shot learning, συλλογισμός chain-of-thought, ακολούθηση οδηγιών — που δεν εκπαιδεύτηκαν ρητά.
Το μοντέλο προσαρμόζει τη συμπεριφορά του βάσει παραδειγμάτων στο prompt (few-shot) χωρίς καμία ενημέρωση βαρών. Το παράθυρο συμφραζομένων είναι η μοναδική «μνήμη» κατά το inference.
Τα βάρη του μοντέλου κωδικοποιούν μια απωλεστική συμπίεση του σώματος εκπαίδευσης. Τα γεγονότα δεν αποθηκεύονται κατά λέξη — κατανέμονται σε δισεκατομμύρια βάρη, και γι' αυτό συμβαίνουν παραισθήσεις.
Τα LLM δεν λειτουργούν σε χαρακτήρες ή λέξεις — λειτουργούν σε tokens, υπολεξικές μονάδες που παράγονται από έναν tokenizer εκπαιδευμένο στο ίδιο σώμα. Η κατανόηση της tokenization εξηγεί το κόστος, το μήκος συμφραζομένων και πολλές ιδιορρυθμίες της συμπεριφοράς των μοντέλων.
GPT-2, GPT-3, GPT-4o, Llama 4, Mistral Large 3
Συγχωνεύει επαναληπτικά το συχνότερο γειτονικό ζεύγος byte ή χαρακτήρα. Ξεκινά από μεμονωμένα bytes, οπότε χειρίζεται οποιοδήποτε κείμενο Unicode χωρίς άγνωστα tokens.
BERT, DistilBERT, ALBERT
Παρόμοιο με το BPE αλλά οι συγχωνεύσεις επιλέγονται ώστε να μεγιστοποιήσουν την πιθανοφάνεια των δεδομένων εκπαίδευσης υπό ένα γλωσσικό μοντέλο, αντί της ακατέργαστης συχνότητας.
T5, Gemma, Qwen
Αντιμετωπίζει την tokenization ως πρόβλημα πιθανοτικής κατάτμησης. Ανεξάρτητο γλώσσας — λειτουργεί από ακατέργαστο κείμενο χωρίς προ-tokenization (τα κενά αντιμετωπίζονται ως κανονικοί χαρακτήρες).
| Λέξη | Tokens GPT-4o | Αριθμός tokens |
|---|---|---|
| transformer | transformer | 2 |
| tokenization | tokenization | 2 |
| def calculate_loss(logits): | def calculate_loss(logits): | 6 |
| Üniversität | Üniversität | 4 |
| hello | hello | 1 |
| (3 spaces) | 1 |
| Μοντέλο | Tokenizer | Μέγεθος λεξιλογίου | Σημείωση |
|---|---|---|---|
| GPT-2 | BPE | 50,257 | BPE επιπέδου byte |
| GPT-3 / GPT-3.5 | BPE (cl100k) | 100,277 | Ίδιο με το GPT-4 |
| GPT-4 / GPT-4o | BPE (o200k) | 200,019 | Καλύτερο πολυγλωσσικό |
| Llama 3.x / 4.x | BPE (tiktoken) | 128,256 | Βελτιωμένο από τα 32k του Llama 2 |
| Mistral v0.x | BPE (SentencePiece) | 32,768 | Μικρό αλλά αποδοτικό |
| Gemma 2 | SentencePiece | 256,000 | Πολύ μεγάλο πολυγλωσσικό λεξιλόγιο |
import tiktoken
# GPT-4o uses the o200k_base encoding
enc = tiktoken.get_encoding("o200k_base")
text = "Tokenization is the first step in every LLM pipeline."
tokens = enc.encode(text)
print(f"Token IDs: {tokens}")
# Token IDs: [5808, 2065, 374, 279, 1176, 3094, 304, 1475, 445, 11237, 15598, 13]
print(f"Token count: {len(tokens)}") # 12
print(f"Decoded: {[enc.decode([t]) for t in tokens]}")
# ['Token', 'ization', ' is', ' the', ' first', ' step', ' in', ' every', ' L', 'LM', ' pipeline', '.']
# Cost estimation: GPT-4o input = $2.50 / 1M tokens
cost_per_token = 2.50 / 1_000_000
print(f"Cost for this sentence: ${cost_per_token * len(tokens):.8f}")Παρουσιάστηκε στο «Attention Is All You Need» (Vaswani et al., 2017), ο transformer αντικατέστησε τα αναδρομικά δίκτυα με μια αρχιτεκτονική πλήρως βασισμένη σε attention. Κάθε σημαντικό LLM σήμερα οικοδομείται πάνω σε αυτό το θεμέλιο.
graph TD A[Input Tokens] --> B[Token Embeddings] B --> C[+ Positional Encoding] C --> D[Multi-Head Self-Attention] D --> E[Add and Layer Norm] E --> F[Feed-Forward Network] F --> G[Add and Layer Norm] G --> H[Next Block or Output]
Η βασική διορατικότητα του transformer: κάθε token μπορεί να δώσει προσοχή σε κάθε άλλο token της ακολουθίας ταυτόχρονα. Δεδομένου ενός πίνακα εισόδου X, τρεις εκπαιδευμένες προβολές παράγουν queries (Q), keys (K) και values (V):
Η multi-head attention εκτελεί H ανεξάρτητες λειτουργίες attention παράλληλα, καθεμία με διαφορετικές εκπαιδευμένες προβολές. Αυτό επιτρέπει στο μοντέλο να δίνει από κοινού προσοχή σε πληροφορίες από διαφορετικούς υποχώρους αναπαράστασης. Το GPT-3 χρησιμοποιεί 96 attention heads· το Llama 4 Maverick χρησιμοποιεί grouped-query attention (GQA) για αποδοτική εξυπηρέτηση.
import torch
import torch.nn.functional as F
def scaled_dot_product_attention(Q, K, V, mask=None):
"""
Q, K, V: (batch, heads, seq_len, head_dim)
Returns: (batch, heads, seq_len, head_dim)
"""
d_k = Q.size(-1)
# Compute attention scores
scores = torch.matmul(Q, K.transpose(-2, -1)) / (d_k ** 0.5) # (batch, heads, seq, seq)
# Apply causal mask (decoder: attend only to past tokens)
if mask is not None:
scores = scores.masked_fill(mask == 0, float('-inf'))
# Softmax over key dimension
attn_weights = F.softmax(scores, dim=-1)
# Weighted sum of values
return torch.matmul(attn_weights, V), attn_weightsΚάθε μπλοκ transformer περιέχει ένα MLP 2 επιπέδων που εφαρμόζεται ανεξάρτητα σε κάθε θέση token. Η κρυφή διάσταση είναι συνήθως 4× η διάσταση του μοντέλου (π.χ. d_model=4096, d_ff=16384 για ένα τυπικό μοντέλο κλάσης 8B). Τα σύγχρονα LLM χρησιμοποιούν ενεργοποίηση SwiGLU (μια πυλωτή παραλλαγή της SiLU) που εμπειρικά υπερτερεί των ReLU και GELU.
Τα επίπεδα FFN αποθηκεύουν το μεγαλύτερο μέρος της πραγματολογικής γνώσης ενός μοντέλου — η έρευνα δείχνει ότι «νευρώνες γνώσης» συγκεντρωμένοι στο FFN μπορούν να εντοπιστούν και να επεξεργαστούν χειρουργικά (βλ. ROME/MEMIT). Η attention χειρίζεται τη δρομολόγηση και τη σύνθεση· τα επίπεδα FFN χειρίζονται την αποθήκευση.
Κάθε υποεπίπεδο (attention, FFN) χρησιμοποιεί μια υπολειμματική σύνδεση (output = x + sublayer(x)) και κανονικοποίηση επιπέδου. Τα σύγχρονα LLM χρησιμοποιούν Pre-Norm (κανονικοποίηση πριν το υποεπίπεδο) αντί για Post-Norm για σταθερότητα εκπαίδευσης, και RMSNorm (Root Mean Square norm, χωρίς κεντράρισμα μέσου) για αποδοτικότητα.
| Τύπος | Παραδείγματα | Attention | Ιδανικό για |
|---|---|---|---|
| Encoder-only | BERT, RoBERTa, DeBERTa | Αμφίδρομη (πλήρης attention) | Ταξινόμηση, NER, embeddings |
| Decoder-only | GPT-4o, Llama 4, Mistral Large 3, Claude Sonnet 4.6 | Αιτιακή (από αριστερά προς δεξιά) | Παραγωγή κειμένου, chat, συλλογισμός |
| Encoder-Decoder | T5, FLAN-T5, BART | Πλήρης encoder + cross-attention | Μετάφραση, σύνοψη, seq2seq |
Το pretraining είναι η ακριβότερη φάση — συνήθως πάνω από 95 % του συνολικού υπολογισμού. Το μοντέλο βλέπει τρισεκατομμύρια tokens και μαθαίνει να προβλέπει το επόμενο. Αυτός ο απλός στόχος, σε επαρκή κλίμακα, παράγει τις περισσότερες από τις ικανότητες που συνδέουμε με τα LLM.
Δεδομένης μιας ακολουθίας από tokens [t₁, t₂, ..., tₙ], το μοντέλο εκπαιδεύεται να μεγιστοποιεί τη λογαριθμική πιθανοφάνεια κάθε token, δεδομένων όλων των προηγούμενων tokens:
Κάθε εμπρόσθιο πέρασμα επεξεργάζεται μια πλήρη ακολουθία και παράγει απώλεια σε κάθε θέση παράλληλα (teacher forcing). Κατά το inference, τα tokens παράγονται autoregressive, ένα τη φορά.
Οι Hoffmann et al. (2022) έδειξαν ότι προηγούμενα μεγάλα μοντέλα (GPT-3, Gopher) ήταν υποεκπαιδευμένα — πάρα πολλές παράμετροι για πολύ λίγα tokens. Η βέλτιστη αναλογία Chinchilla είναι:
Βέλτιστα tokens ≈ 20× παράμετροι
Ένα μοντέλο 7B παραμέτρων θα έπρεπε να εκπαιδευτεί σε ~140B tokens για υπολογιστικά βέλτιστη εκπαίδευση. Στην πράξη, τα μοντέλα εκπαιδεύονται σε πολύ περισσότερα (Llama 3.1 8B: 15T tokens· μοντέλα Llama 4: ~40T εκτ.) επειδή το κόστος inference έχει σημασία — ένα μικρότερο αλλά περισσότερο εκπαιδευμένο μοντέλο κοστίζει λιγότερο στην εξυπηρέτηση.
| Μοντέλο | Παράμετροι | Tokens εκπαίδευσης | Έτος |
|---|---|---|---|
| GPT-2 | 117M – 1.5B | ~10B | 2019 |
| GPT-3 | 175B | ~300B | 2020 |
| Chinchilla | 70B | 1.4T | 2022 |
| Llama 2 (historical) | 7B – 70B | 2T | 2023 |
| Mistral 7B | 7.3B | ~8T (est.) | 2023 |
| Llama 3.1 8B | 8B | 15T | 2024 |
| Llama 3.1 405B | 405B | 15T | 2024 |
| Llama 4 Scout | ~17B active (MoE) | ~40T (est.) | 2025 |
| Llama 4 Maverick | ~17B active (MoE) | ~40T (est.) | 2025 |
Σάρωση ιστού κλίμακας petabyte, ακατέργαστη και φιλτραρισμένη. Αποτελεί το μεγαλύτερο μέρος των περισσότερων σωμάτων pretraining. Απαιτεί εκτεταμένο φιλτράρισμα ποιότητας (αφαίρεση διπλότυπων, ανίχνευση γλώσσας, αφαίρεση τοξικότητας).
Επιμελημένο σύνολο δεδομένων 825GB που εκτείνεται σε 22 πηγές, όπως GitHub, ArXiv, PubMed, FreeLaw, DM Mathematics. Ανοιχτό και αναπαραγώγιμο.
Ανοιχτές αναπαραγωγές των δεδομένων εκπαίδευσης του LLaMA. Το DCLM (DataComp-LM, 2024) εστιάζει σε αυστηρές αφαιρέσεις ποιότητας δεδομένων για την εύρεση βέλτιστων αγωγών φιλτραρίσματος.
Books3, Gutenberg, ArXiv, S2ORC. Υψηλός λόγος σήματος προς θόρυβο· κρίσιμα για συλλογισμό μεγάλης μορφής και πραγματολογικό βάθος.
Κάθε GPU κρατά ένα αντίγραφο μοντέλου· οι παρτίδες χωρίζονται μεταξύ των GPU. Οι κλίσεις υπολογίζονται κατά μέσο όρο (AllReduce) μετά από κάθε ανάστροφο πέρασμα. Τυπικός για όλα τα μεγέθη.
Οι μεμονωμένοι πίνακες βαρών χωρίζονται μεταξύ των GPU. Απαιτεί διασύνδεση υψηλού εύρους ζώνης (NVLink). Χρησιμοποιείται για μοντέλα που υπερβαίνουν τη VRAM μιας μόνο GPU.
Διαφορετικά επίπεδα ανατίθενται σε διαφορετικές GPU. Οι μικρο-παρτίδες ρέουν μέσα από το pipeline. Αποδοτικός για πολύ βαθιά μοντέλα· απαιτεί προσεκτικό προγραμματισμό για την ελαχιστοποίηση των φυσαλίδων.
Ένα προεκπαιδευμένο βασικό μοντέλο είναι ένας ισχυρός αλλά απρόβλεπτος προβλέπτης του επόμενου token — θα συνεχίσει οποιοδήποτε κείμενο, συμπεριλαμβανομένου επιβλαβούς περιεχομένου. Η εκπαίδευση ευθυγράμμισης το μετατρέπει σε έναν χρήσιμο, ακίνδυνο και ειλικρινή βοηθό.
Το βασικό μοντέλο ρυθμίζεται λεπτομερώς σε ένα σύνολο δεδομένων ζευγών (οδηγία, ιδανική απόκριση), γραμμένων ή επιμελημένων από ανθρώπους σχολιαστές. Αυτό διδάσκει στο μοντέλο τη μορφή ακολούθησης οδηγιών. Ο στόχος εκπαίδευσης είναι ταυτόσημος με το pretraining (διασταυρούμενη εντροπία), αλλά το σύνολο δεδομένων είναι μικρό (δεκάδες χιλιάδες παραδείγματα) και υψηλής ποιότητας. Μετά το SFT, το μοντέλο μπορεί να ακολουθεί οδηγίες αλλά μπορεί ακόμη να είναι αναληθές ή επιβλαβές.
graph LR A[Pretrained LLM] --> B[SFT on Instruction Data] B --> C[SFT Model] C --> D[Generate Completions] D --> E[Human Preference Labels] E --> F[Train Reward Model] F --> G[RLHF with PPO] G --> H[Aligned LLM]
Μοντέλο ανταμοιβής: Ανθρώπινοι σχολιαστές συγκρίνουν ζεύγη αποκρίσεων του μοντέλου και επισημαίνουν την προτίμησή τους. Ένα ξεχωριστό μοντέλο εκπαιδεύεται να προβλέπει την προτιμώμενη από τον άνθρωπο απόκριση για ένα δεδομένο prompt. Αυτό το βαθμωτό σήμα ανταμοιβής αποτυπώνει λεπτές κρίσεις ποιότητας που είναι δύσκολο να καθοριστούν ως συνάρτηση απώλειας.
PPO (Proximal Policy Optimisation): Το μοντέλο SFT (η «πολιτική») βελτιστοποιείται για να μεγιστοποιήσει το σκορ του μοντέλου ανταμοιβής, ενώ μια ποινή απόκλισης KL το εμποδίζει να απομακρυνθεί υπερβολικά από τη βάση SFT (κάτι που θα προκαλούσε reward hacking). Το PPO είναι υπολογιστικά ακριβό: απαιτεί τέσσερα μοντέλα στη μνήμη ταυτόχρονα.
Οι Rafailov et al. (2023) έδειξαν ότι ο στόχος RLHF μπορεί να βελτιστοποιηθεί απευθείας στο μοντέλο πολιτικής χωρίς ξεχωριστό μοντέλο ανταμοιβής ή βρόχο RL. Δεδομένων ζευγών προτιμώμενων και απορριφθεισών αποκρίσεων, το DPO επαναπαραμετροποιεί την ανταμοιβή ως συνάρτηση των λογαριθμικών πιθανοτήτων του μοντέλου πολιτικής και του μοντέλου αναφοράς:
Το DPO είναι απλούστερο, σταθερότερο και φθηνότερο από το RLHF με PPO. Τα περισσότερα ευθυγραμμισμένα μοντέλα ανοιχτού κώδικα (Llama 4 Instruct, Mistral Instruct) χρησιμοποιούν DPO ή μια παραλλαγή (SimPO, IPO) για το στάδιο ευθυγράμμισης προτιμήσεων.
| Μέθοδος | Μοντέλο ανταμοιβής | Βρόχος RL | Σταθερότητα | Χρησιμοποιείται από |
|---|---|---|---|---|
| RLHF (PPO) | Ναι | Ναι (PPO) | Μέτρια | InstructGPT, early ChatGPT |
| DPO | Όχι | Όχι | Υψηλή | Llama 4, Mistral, Zephyr |
| Constitutional AI (CAI) | Αυτοκριτική | Ναι (RLAIF) | Υψηλή | Claude (Anthropic) |
| GRPO / DAPO | Βασισμένη σε κανόνες | Σχετική ομάδας | Υψηλή | DeepSeek-R1, Qwen |
Σε κάθε βήμα παραγωγής, το μοντέλο παράγει ένα διάνυσμα logit μεγέθους |vocabulary|. Η στρατηγική δειγματοληψίας καθορίζει πώς επιλέγεται ένα μεμονωμένο token από αυτήν την κατανομή — και έχει τεράστιο αντίκτυπο στην ποιότητα, την ποικιλία και τη συνοχή της εξόδου.
| Θερμοκρασία | Επίδραση | Περίπτωση χρήσης |
|---|---|---|
| 0.0 (Greedy) | Πάντα επιλογή του token με την υψηλότερη πιθανότητα. Ντετερμινιστικό. | Ταξινόμηση, δομημένη εξαγωγή, πραγματολογικές Ε&Α |
| 0.2 – 0.4 | Πιο οξεία κατανομή, ακολουθεί κυρίως το πιο πιθανό μονοπάτι αλλά επιτρέπει μικρές παραλλαγές. | Παραγωγή κώδικα, σύνοψη |
| 0.6 – 0.8 | Ισορροπημένη. Καλό μείγμα συνοχής και ποικιλίας. | Γενική συνομιλία, ακολούθηση οδηγιών (προεπιλογή για τα περισσότερα μοντέλα) |
| 1.0 | Δειγματοληψία απευθείας από την κατανομή του μοντέλου. Πιο ποικίλη. | Δημιουργική γραφή, καταιγισμός ιδεών |
| > 1.0 | Ισοπεδώνει την κατανομή. Αυξάνει την τυχαιότητα και την επανάληψη. Συχνά παράγει ασυνάρτητη έξοδο. | Σπάνια χρήσιμη σε παραγωγή |
Ταξινόμηση των tokens κατά πιθανότητα, λήψη του μικρότερου συνόλου του οποίου η αθροιστική πιθανότητα ≥ p, και έπειτα δειγματοληψία από αυτό το σύνολο. Στο p=0,9, το μοντέλο εξετάζει μόνο tokens που μαζί αντιπροσωπεύουν το 90 % της μάζας πιθανότητας. Προσαρμόζει δυναμικά το μέγεθος του συνόλου υποψηφίων: όταν είναι βέβαιο, ο πυρήνας είναι μικρός· όταν είναι αβέβαιο, ευρύτερος.
Αποκοπή της κατανομής στα k πιο πιθανά tokens και έπειτα δειγματοληψία από αυτά. Απλούστερη από το top-p αλλά χρησιμοποιεί ένα σταθερό k ανεξαρτήτως του σχήματος της κατανομής. Το top-p γενικά προτιμάται· το top-k είναι χρήσιμο όταν χρειάζεστε αυστηρό έλεγχο του μεγέθους του συνόλου υποψηφίων.
from openai import OpenAI
client = OpenAI()
# Factual / structured output: low temperature, no top-p
factual = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "What is the capital of France?"}],
temperature=0.0,
max_tokens=50,
)
# Creative writing: higher temperature + nucleus sampling
creative = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Write a haiku about neural networks."}],
temperature=0.9,
top_p=0.95,
max_tokens=100,
)
# Code generation: low temp, deterministic
code = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Write a Python quicksort function."}],
temperature=0.2,
max_tokens=300,
)Ένας transformer δεν έχει εγγενή έννοια της σειράς των tokens — η attention είναι αναλλοίωτη σε μεταθέσεις. Η κωδικοποίηση θέσης εισάγει πληροφορία σειράς. Η επιλογή της μεθόδου κωδικοποίησης καθορίζει πόσο καλά το μοντέλο γενικεύει σε ακολουθίες μεγαλύτερες από το μήκος εκπαίδευσής του.
Ένα εκπαιδευμένο ή σταθερό (ημιτονοειδές) διάνυσμα προστίθεται σε κάθε embedding token στη θέση i. Τα GPT-2 και BERT χρησιμοποιούν εκπαιδευμένα απόλυτα embeddings. Σκληρό όριο: το μοντέλο δεν μπορεί να γενικεύσει σε θέσεις που δεν έχει δει ποτέ κατά την εκπαίδευση.
Κωδικοποιεί τη θέση περιστρέφοντας τα διανύσματα Q και K στον μιγαδικό χώρο κατά γωνία ανάλογη της θέσης. Το σκορ attention εξαρτάται φυσικά από τη σχετική απόσταση μεταξύ των tokens. Χρησιμοποιείται από τα Llama 4, Mistral Large 3, Qwen και τα περισσότερα σύγχρονα μοντέλα ανοιχτών βαρών. Επιτρέπει τεχνικές επέκτασης συμφραζομένων όπως οι YaRN και LongRoPE.
Κατά την autoregressive παραγωγή, το μοντέλο επανυπολογίζει την attention για κάθε token σε κάθε βήμα — αφελώς O(n²) ανά βήμα. Η KV-cache αποθηκεύει τους tensors key και value όλων των προηγούμενων tokens. Σε κάθε νέο βήμα, υπολογίζονται μόνο τα Q, K, V του νέου token και προσαρτώνται τα αποθηκευμένα K, V. Αυτό μειώνει την παραγωγή από O(n²) σε O(n) ανά νέο token.
| Μοντέλο | Παράθυρο συμφραζομένων | Κωδικοποίηση θέσης | Πραγματικό μήκος* |
|---|---|---|---|
| GPT-4o | 128K | Εκπαιδευμένη + RoPE (εκτ.) | 128K |
| Claude Sonnet 4.6 | 200K | Μη δημοσιοποιημένη | ~150K (πρακτικό) |
| Gemini 2.5 Pro | 1M | Μη δημοσιοποιημένη | ~500K (πρακτικό) |
| Llama 4 Maverick | 1M | RoPE | 1M |
| Mistral Large 3 | 128K | Sliding Window + RoPE | 128K |
| DeepSeek-R1 | 128K | RoPE | 128K |
*Πραγματικό μήκος: το παράθυρο στο οποίο το μοντέλο ανακτά αξιόπιστα πληροφορίες. Η έρευνα «Lost in the middle» δείχνει ότι η απόδοση υποβαθμίζεται για περιεχόμενο που τοποθετείται στη μέση πολύ μεγάλων συμφραζομένων.
Το RAG αντιμετωπίζει δύο θεμελιώδεις περιορισμούς των LLM: το όριο γνώσης τους και την τάση τους για παραισθήσεις. Αντί να βασίζεται σε ό,τι απομνημόνευσε το μοντέλο κατά την εκπαίδευση, το RAG ανακτά σχετικά έγγραφα κατά τον χρόνο inference και τα εισάγει στο prompt.
graph LR A[User Query] --> B[Embed Query] B --> C[Vector Search] C --> D[Top-k Chunks] D --> E[Inject into Prompt] A --> E E --> F[LLM Generation] F --> G[Grounded Answer]
Embedding του ερωτήματος → αναζήτηση ομοιότητας top-k → προσάρτηση τμημάτων στο prompt → παραγωγή. Απλό αλλά επιρρεπές σε άσχετη ανάκτηση και υπερφόρτωση συμφραζομένων.
Προσθέτει επανεγγραφή ερωτήματος, re-ranking (cross-encoders), embeddings υποθετικών εγγράφων (HyDE), αναδρομική ανάκτηση και συμπίεση συμφραζομένων.
Αποσυνδεδεμένος αγωγός: δρομολόγηση, μετασχηματισμός ερωτήματος, ανάκτηση, βαθμολόγηση, φιλτράρισμα και σύντηξη μπορούν να αντικατασταθούν το καθένα ανεξάρτητα. Μέγιστη ευελιξία.
Διαχωρισμός κάθε N tokens με επικάλυψη M tokens. Γρήγορο αλλά μπορεί να κόψει στη μέση πρότασης. Καλή βάση αναφοράς.
Διαχωρισμός στα όρια προτάσεων ή παραγράφων. Διατηρεί σημασιολογικές μονάδες αλλά τα τμήματα διαφέρουν σε μέγεθος.
Ομαδοποίηση προτάσεων με υψηλή ομοιότητα embedding σε συνεκτικά τμήματα. Καλύτερη ποιότητα ανάκτησης· υψηλότερο υπολογιστικό κόστος κατά την ευρετηρίαση.
Ευρετηρίαση σε πολλαπλά επίπεδα λεπτομέρειας (έγγραφο → ενότητα → παράγραφος). Ανάκτηση στο επίπεδο που ταιριάζει στην εξειδίκευση του ερωτήματος.
| Βάση δεδομένων | Ανάπτυξη | Κλίμακα | Ιδανική για |
|---|---|---|---|
| pgvector | Αυτοφιλοξενούμενη (επέκτ. Postgres) | Εκατομμύρια | Υπάρχοντες χρήστες Postgres· απλούστερη στοίβα |
| Qdrant | Αυτοφιλοξενούμενη / Cloud | Δισεκατομμύρια | Υψηλή απόδοση, πλούσιο φιλτράρισμα, ανοιχτού κώδικα |
| Weaviate | Αυτοφιλοξενούμενη / Cloud | Δισεκατομμύρια | Πολυτροπική, υβριδική σημασιολογία + λέξεις-κλειδιά |
| Pinecone | Πλήρως διαχειριζόμενη cloud | Δισεκατομμύρια | Διαχειριζόμενο SaaS, ελάχιστη λειτουργία |
| Chroma | Τοπική / αυτοφιλοξενούμενη | Εκατομμύρια | Προτυποποίηση, τοπική ανάπτυξη |
Το χάσμα μεταξύ των μοντέλων ανοιχτών βαρών και των ιδιόκτητων μοντέλων αιχμής έχει στενέψει δραματικά. Το Llama 4 Maverick ισοφαρίζει το GPT-4o σε πολλά benchmarks· το DeepSeek-R1 ξεπερνά το o1 στα μαθηματικά και τον κώδικα με κλάσμα του κόστους εκπαίδευσης. Η επιλογή αφορά ολοένα και περισσότερο το μοντέλο ανάπτυξης, την ιδιωτικότητα δεδομένων και το συνολικό κόστος ιδιοκτησίας.
| Μοντέλο | Παράμετροι | Συμφραζόμενα | Άδεια | MMLU | Καλύτερη περίπτωση χρήσης |
|---|---|---|---|---|---|
| Open Weight | |||||
| Llama 4 Scout | ~17B active (MoE) | 1M | Llama 4 Community License | 79.6 | Γρήγορο, μεγάλα συμφραζόμενα, στη συσκευή |
| Llama 4 Maverick | ~17B active (MoE) | 1M | Llama 4 Community License | 85.5 | Ισορροπημένη ικανότητα/κόστος, μεγάλα συμφραζόμενα |
| Llama 4 Behemoth | ~288B active (MoE) | 128K | Llama 4 Community License | ~92 (est.) | Εργασίες αιχμής ανοιχτών βαρών |
| Mistral Large 3 | ~123B | 128K | Mistral Research License | 84.0 | Πολυγλωσσική επιχείρηση |
| Qwen2.5 72B | 72B | 128K | Apache 2.0 | 86.0 | Κώδικας, μαθηματικά, πολυγλωσσικό |
| DeepSeek-R1 | 671B MoE | 128K | MIT | 90.8 | Συλλογισμός, μαθηματικά, επιστήμη |
| Gemma 2 27B | 27B | 8K | Gemma License | 75.2 | Έρευνα, λεπτομερής ρύθμιση |
| Phi-4 | 14B | 16K | MIT | 84.8 | |
| Ιδιόκτητο | |||||
| GPT-4o | ~200B est. | 128K | Proprietary | 88.7 | Γενική αιχμή, πολυτροπικό |
| Claude Sonnet 4.6 | Undisclosed | 200K | Proprietary | 88.7 | Μεγάλα συμφραζόμενα, κώδικας, ασφάλεια |
| Gemini 2.5 Pro | Undisclosed | 1M | Proprietary | 85.9 | Πολύ μεγάλα συμφραζόμενα, πολυτροπικό, συλλογισμός |
| o3 / o1 | Undisclosed | 200K | Proprietary | ~91+ | Σύνθετος συλλογισμός, έρευνα αιχμής |
Η εξυπηρέτηση LLM σε κλίμακα απαιτεί την επίλυση της μνήμης (η VRAM είναι σπάνια), της απόδοσης (πολλοί ταυτόχρονοι χρήστες) και της καθυστέρησης (οι χρήστες θέλουν γρήγορα πρώτα tokens). Το οικοσύστημα έχει αναπτύξει ισχυρές λύσεις για κάθε πρόκληση.
Η μείωση της αριθμητικής ακρίβειας των βαρών του μοντέλου συρρικνώνει τη VRAM και επιταχύνει τον υπολογισμό. Οι σύγχρονες τεχνικές (GPTQ, AWQ, GGUF) εφαρμόζουν την quantisation μη ομοιόμορφα, προστατεύοντας τα πιο ευαίσθητα βάρη.
| Μορφή | Bits/βάρος | Σχετικό μέγεθος | Διατήρηση ποιότητας | Εργαλεία |
|---|---|---|---|---|
| FP32 | 32 | 100% | 100 % (βάση) | PyTorch default |
| FP16 / BF16 | 16 | 50% | ~100 % | Standard training/inference |
| INT8 | 8 | 25% | ~99 % | bitsandbytes, TensorRT-LLM |
| INT4 (GPTQ/AWQ) | 4 | 12.5% | ~95–98 % | AutoGPTQ, AutoAWQ, llama.cpp |
| GGUF Q4_K_M | ~4.5 | ~14% | ~96 % | llama.cpp, Ollama |
| GGUF Q2_K | ~2.6 | ~8% | ~88 % | llama.cpp (CPU focus) |
PagedAttention για αποδοτική διαχείριση KV-cache, συνεχές batching, παραλληλισμό tensor. Ο χρυσός κανόνας για εξυπηρέτηση GPU υψηλής απόδοσης. API συμβατό με OpenAI.
Ο διακομιστής παραγωγής της Hugging Face. Flash Attention 2, συνεχές batching, κερδοσκοπική αποκωδικοποίηση. Τροφοδοτεί το Inference API.
Εξαιρετικά απλή τοπική εξυπηρέτηση μέσω μοντέλων GGUF. Μία εντολή για λήψη και εκτέλεση οποιουδήποτε μοντέλου. Δεν σχεδιάστηκε για υψηλή ταυτοχρονία αλλά εξαιρετικό για ανάπτυξη.
Καθαρό inference σε C++ με quantisation GGUF. Τρέχει σε CPU MacBook σειράς M και καταναλωτικές GPU. Τροφοδοτεί το Ollama στο παρασκήνιο.
Το PagedAttention του vLLM (Kwon et al., 2023) διαχειρίζεται τη μνήμη KV-cache όπως η εικονική μνήμη σε ένα λειτουργικό σύστημα — χωρίζοντάς την σε σελίδες σταθερού μεγέθους που εκχωρούνται μη συνεχόμενα. Αυτό εξαλείφει τον κατακερματισμό και τη σπατάλη δέσμευσης, επιτρέποντας 2–24× περισσότερη απόδοση από τα HuggingFace Transformers με ίση μνήμη GPU.
Το συνεχές batching επιτρέπει σε νέα αιτήματα να ενταχθούν σε μια εν εξελίξει παρτίδα μόλις ολοκληρωθεί μια ακολουθία, αντί να περιμένουν ολόκληρη την παρτίδα. Αυτό βελτιώνει δραματικά την αξιοποίηση της GPU υπό φόρτους μεταβλητού μήκους.
# Start a vLLM server for Llama 4 Scout Instruct
# Requires: pip install vllm, CUDA GPU with ≥16GB VRAM
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-4-Scout-17B-16E-Instruct \
--tensor-parallel-size 1 \
--max-model-len 32768 \
--dtype bfloat16 \
--port 8000
# The server exposes an OpenAI-compatible API:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "meta-llama/Llama-4-Scout-17B-16E-Instruct",
"messages": [{"role": "user", "content": "Explain attention mechanisms."}],
"temperature": 0.7,
"max_tokens": 512
}'Η αξιολόγηση είναι ένα από τα δυσκολότερα ανοιχτά προβλήματα στην έρευνα των LLM. Τα τυπικά benchmarks μετρούν συγκεκριμένες ικανότητες αλλά συσχετίζονται ατελώς με τη χρησιμότητα στον πραγματικό κόσμο. Μια ολοκληρωμένη στρατηγική αξιολόγησης συνδυάζει αυτοματοποιημένα benchmarks, ανθρώπινη αξιολόγηση και LLM-as-judge.
| Benchmark | Μετρά | Μορφή | Περιορισμός |
|---|---|---|---|
| MMLU | Ευρεία γνώση (57 θέματα) | Πολλαπλής επιλογής 4 απαντήσεων | Μορφή πολλαπλής επιλογής· κίνδυνος μόλυνσης |
| HumanEval | Παραγωγή κώδικα Python | Συμπλήρωση συνάρτησης + δοκιμές μονάδας | Μόνο Python· στενή κατανομή εργασιών |
| GSM8K | Μαθηματικά προβλήματα δημοτικού | Αριθμητική ελεύθερης μορφής | Κορεσμένο από μοντέλα αιχμής (>95 %) |
| HellaSwag | NLI κοινής λογικής | Συμπλήρωση πρότασης 4 επιλογών | Κορεσμένο· ανταγωνιστικό αλλά ξεπερασμένο |
| MT-Bench | Ακολούθηση οδηγιών (πολλαπλών γύρων) | LLM-as-judge (GPT-4) | Ο κριτής GPT-4 έχει δικές του προκαταλήψεις |
| GPQA Diamond | Επιστήμη μεταπτυχιακού επιπέδου | Πολλαπλής επιλογής 4 απαντήσεων από ειδικούς του τομέα | Μικρό σύνολο δεδομένων· δύσκολη κλιμάκωση |
| MATH-500 | Μαθηματικά διαγωνισμών | Ακριβής αντιστοίχιση απάντησης | Ευαίσθητο στη μορφή· οι λύσεις μπορεί να έχουν απομνημονευτεί |
| Μοντέλο | MMLU | HumanEval | GSM8K | MATH |
|---|---|---|---|---|
| GPT-4o | 88.7 | 90.2 | 96.0 | 76.6 |
| Claude Sonnet 4.6 | 88.7 | 92.0 | 96.0 | 78.3 |
| Gemini 2.5 Pro | 85.9 | 84.1 | 91.7 | 67.7 |
| DeepSeek-R1 | 90.8 | 92.3 | 97.3 | 97.3 |
| Llama 4 Maverick | 85.5 | 85.4 | 95.0 | 72.0 |
| Llama 4 Scout | 79.6 | 77.0 | 89.0 | 58.0 |
| Mistral Large 3 | 84.0 | 92.0 | 93.0 | 69.0 |
| Llama 3.1 8B (2024) | 73.0 | 72.6 | 84.5 | 51.9 |
Για ανοιχτές εργασίες όπου δεν υπάρχουν απαντήσεις αναφοράς, ένα ισχυρό LLM μπορεί να βαθμολογήσει αποκρίσεις χρησιμοποιώντας μια δομημένη ρουμπρίκα. Τα MT-Bench και Chatbot Arena χρησιμοποιούν αυτήν την προσέγγιση. Ο βασικός κίνδυνος είναι η προκατάληψη θέσης (ο κριτής προτιμά τις απαντήσεις που εμφανίζονται πρώτες) και η προκατάληψη πολυλογίας (οι μεγαλύτερες απαντήσεις βαθμολογούνται υψηλότερα ανεξαρτήτως ποιότητας).
from openai import OpenAI
client = OpenAI()
def llm_judge(question: str, answer: str, rubric: str) -> dict:
prompt = f"""You are an expert evaluator. Score the following answer on a 1-10 scale.
Question: {question}
Answer: {answer}
Rubric: {rubric}
Respond with JSON: {{"score": <int>, "reasoning": "<str>", "strengths": ["..."], "weaknesses": ["..."]}}"""
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt}],
response_format={"type": "json_object"},
temperature=0.0,
)
import json
return json.loads(response.choices[0].message.content)
result = llm_judge(
question="Explain the attention mechanism in transformers.",
answer="Attention computes a weighted sum of values...",
rubric="Accuracy (4pt), Clarity (3pt), Completeness (3pt)",
)
print(f"Score: {result['score']}/10 — {result['reasoning']}")Η κατανόηση του πώς λειτουργούν τα LLM είναι το θεμέλιο — αλλά η επιλογή του σωστού μοντέλου, της αρχιτεκτονικής ανάπτυξης και της στρατηγικής αξιολόγησης για τη συγκεκριμένη περίπτωση χρήσης σας απαιτεί πρακτική εμπειρία. Η ομάδα μας έχει χτίσει συστήματα LLM παραγωγής σε RAG, agents, λεπτομερή ρύθμιση και επιχειρησιακή ανάπτυξη. Κλείστε μια διαβούλευση για να συζητήσουμε το έργο σας.