background image

Σχεδιασμός και Υλοποίηση εξειδικευμένου chatbot για διαδικτυακές πλατφόρμες

 

51

 

δανείζεται μια ιδέα από τα λειτουργικά συστήματα και διαχειρίζεται τη μνήμη της προσοχής 

σε σελίδες, ώστε να μη σπαταλιέται χώρος όταν τρέχουν πολλές συνομιλίες μαζί [64]. Χάρη 

σε αυτό πετυχαίνει πολύ μεγαλύτερη ρυθμαπόδοση από τις παραδοσιακές υλοποιήσεις όταν το 

σύστημα δέχεται φόρτο. Το τίμημα είναι ότι προϋποθέτει μια ικανή κάρτα γραφικών με αρκετή 

μνήμη και ώριμη υποστήριξη CUDA. Αυτό το καθιστά ιδανικό για περιβάλλοντα παραγωγής 

με πολλούς χρήστες, αλλά υπερβολικό και δύσχρηστο για μια εφαρμογή σχεδιασμένη να τρέχει 

σε καταναλωτικό υλικό και να εξυπηρετεί έναν χρήστη τη φορά. 

Το Ollama στέκεται κάπου ανάμεσα. Στον πυρήνα του δεν εισάγει μια νέα αρχιτεκτονική 

εκτέλεσης,  καθώς  βασίζεται  στο  llama.cpp  για  την  υποκείμενη  λειτουργία  του,  αλλά 

αυτοματοποιεί τις διαδικασίες παραμετροποίησης και διαχείρισης, οι οποίες διαφορετικά θα 

απαιτούσαν  χειροκίνητη  υλοποίηση  χαμηλού  επιπέδου.  Όταν  ζητήσουμε  ένα  μοντέλο,  το 

κατεβάζει έτοιμο και κβαντοποιημένο, το φορτώνει στη μνήμη και σηκώνει ένα τοπικό REST 

API  στο  οποίο  στέλνουμε  αιτήσεις  από  οποιαδήποτε  γλώσσα  προγραμματισμού.  Διαθέτει 

επίσης  έναν  μηχανισμό  που  κρατά  το  μοντέλο  φορτωμένο  για  κάποιο  διάστημα  μετά  την 

τελευταία  χρήση,  ώστε  να  μην  ξαναφορτώνεται  από  την  αρχή  σε  κάθε  ερώτηση.  Στην 

υλοποίησή μας αυτό αποδείχθηκε ιδιαίτερα πρακτικό, αφού η εναλλαγή ανάμεσα στο μοντέλο 

που γράφει τις απαντήσεις και στο μοντέλο που υπολογίζει τις ενσωματώσεις θα ήταν αλλιώς 

αισθητά  πιο  αργή.  Το  μειονέκτημα  είναι  ότι  χάνουμε  μέρος  του  λεπτομερούς  ελέγχου  που 

προσφέρει το σκέτο llama.cpp, κάτι που όμως για τις ανάγκες μας δεν αποτέλεσε πρόβλημα. 

Η μορφή αποθήκευσης παίζει καθοριστικό ρόλο και στην πράξη. Οι διαθέσιμες παραλλαγές 

κβαντοποίησης,  με  τυπικότερες  τις  Q4_K_M  και  Q5_K_M  [65],  ορίζουν  έναν  συμβιβασμό 

ανάμεσα στο αποτύπωμα μνήμης και στην ποιότητα. Οι πιο επιθετικές μειώνουν δραστικά τις 

απαιτήσεις σε μνήμη κάρτας γραφικών με τίμημα μια μικρή υποβάθμιση της ακρίβειας, ενώ οι 

ηπιότερες  διατηρούν  ποιότητα  κοντινή  στο  πλήρες  μοντέλο.  Για  ένα  μοντέλο  οκτώ 

δισεκατομμυρίων παραμέτρων, η κβαντοποίηση στα τέσσερα bits περιορίζει τις απαιτήσεις σε