Σχεδιασμός και Υλοποίηση εξειδικευμένου chatbot για διαδικτυακές πλατφόρμες
51
δανείζεται μια ιδέα από τα λειτουργικά συστήματα και διαχειρίζεται τη μνήμη της προσοχής
σε σελίδες, ώστε να μη σπαταλιέται χώρος όταν τρέχουν πολλές συνομιλίες μαζί [64]. Χάρη
σε αυτό πετυχαίνει πολύ μεγαλύτερη ρυθμαπόδοση από τις παραδοσιακές υλοποιήσεις όταν το
σύστημα δέχεται φόρτο. Το τίμημα είναι ότι προϋποθέτει μια ικανή κάρτα γραφικών με αρκετή
μνήμη και ώριμη υποστήριξη CUDA. Αυτό το καθιστά ιδανικό για περιβάλλοντα παραγωγής
με πολλούς χρήστες, αλλά υπερβολικό και δύσχρηστο για μια εφαρμογή σχεδιασμένη να τρέχει
σε καταναλωτικό υλικό και να εξυπηρετεί έναν χρήστη τη φορά.
Το Ollama στέκεται κάπου ανάμεσα. Στον πυρήνα του δεν εισάγει μια νέα αρχιτεκτονική
εκτέλεσης, καθώς βασίζεται στο llama.cpp για την υποκείμενη λειτουργία του, αλλά
αυτοματοποιεί τις διαδικασίες παραμετροποίησης και διαχείρισης, οι οποίες διαφορετικά θα
απαιτούσαν χειροκίνητη υλοποίηση χαμηλού επιπέδου. Όταν ζητήσουμε ένα μοντέλο, το
κατεβάζει έτοιμο και κβαντοποιημένο, το φορτώνει στη μνήμη και σηκώνει ένα τοπικό REST
API στο οποίο στέλνουμε αιτήσεις από οποιαδήποτε γλώσσα προγραμματισμού. Διαθέτει
επίσης έναν μηχανισμό που κρατά το μοντέλο φορτωμένο για κάποιο διάστημα μετά την
τελευταία χρήση, ώστε να μην ξαναφορτώνεται από την αρχή σε κάθε ερώτηση. Στην
υλοποίησή μας αυτό αποδείχθηκε ιδιαίτερα πρακτικό, αφού η εναλλαγή ανάμεσα στο μοντέλο
που γράφει τις απαντήσεις και στο μοντέλο που υπολογίζει τις ενσωματώσεις θα ήταν αλλιώς
αισθητά πιο αργή. Το μειονέκτημα είναι ότι χάνουμε μέρος του λεπτομερούς ελέγχου που
προσφέρει το σκέτο llama.cpp, κάτι που όμως για τις ανάγκες μας δεν αποτέλεσε πρόβλημα.
Η μορφή αποθήκευσης παίζει καθοριστικό ρόλο και στην πράξη. Οι διαθέσιμες παραλλαγές
κβαντοποίησης, με τυπικότερες τις Q4_K_M και Q5_K_M [65], ορίζουν έναν συμβιβασμό
ανάμεσα στο αποτύπωμα μνήμης και στην ποιότητα. Οι πιο επιθετικές μειώνουν δραστικά τις
απαιτήσεις σε μνήμη κάρτας γραφικών με τίμημα μια μικρή υποβάθμιση της ακρίβειας, ενώ οι
ηπιότερες διατηρούν ποιότητα κοντινή στο πλήρες μοντέλο. Για ένα μοντέλο οκτώ
δισεκατομμυρίων παραμέτρων, η κβαντοποίηση στα τέσσερα bits περιορίζει τις απαιτήσεις σε