Βελτιστοποίηση εξαγωγής συμπερασμάτων στη συσκευή για Apple Silicon

Μια προσαρμοσμένη τοπική μηχανή που βελτιώνει το throughput prefill και decode.

ΣυγγραφείςPerplexity Engineering

Το Hybrid Compute σε Apple silicon ερχηστρώνει μια εργασία μεταξύ νοημοσύνης αιχμής στο cloud και ενός τοπικού μοντέλου στο Mac. Τα μοντέλα cloud χειρίζονται την έρευνα και τον συλλογισμό, ενώ ένα τοπικό μοντέλο εργάζεται με ιδιωτικά αρχεία και εφαρμογές στο Mac.

Για να φαίνεται αυτή η κατανομή εργασίας απρόσκοπτη, η τοπική εξαγωγή συμπερασμάτων πρέπει να συμβαδίζει με την υπόλοιπη εργασία. Αυτό απαιτεί μια μηχανή που μπορεί να επεξεργάζεται prompts γρήγορα και να διατηρεί υψηλό ρυθμό παραγωγής token.

Το Lily, η ελαφria τοπική μας μηχανή εξαγωγής συμπερασμάτων (inference engine), είναι χτισμένη ειδικά για το Apple silicon και το Qwen3.6-35B-A3B, με ξεχωριστές βελτιστοποιήσεις για prefill και decode. Η μηχανή θα γίνει open-source σύντομα.

Εισαγωγή

Ένας συνήθης τρόπος εκτέλεσης LLM σε Mac είναι μέσω του MLX, του open-source πλαισίου μηχανικής μάθησης της Apple για Apple silicon. Η συνοδευτική βιβλιοθήκη του, MLX-LM, προσθέτει τα στοιχεία που απαιτούνται για τη φόρτωση και τη δημιουργία κειμένου με ένα ευρύ φάσμα μοντέλων γλώσσας. Μαζί, το MLX και το MLX-LM παρέχουν ένα έτοιμο, γενικής χρήσης stack για τοπική εξαγωγή συμπερασμάτων LLM.

Το Qwen3.6-35B-A3B είναι ένα αραιό (sparse), υβριδικό μοντέλο: χρησιμοποιεί δρομολόγηση μείγματος expert (mixture-of-experts ή MoE routing) και συνδυάζει καταστάσεις επαναληψιμότητας σταθερού μεγέθους με πλήρη προσοχή (full attention). Αυτές οι αρχιτεκτονικές επιλογές μειώνουν τον απαιτούμενο όγκο υπολογισμών, αλλά δημιουργούν επίσης ακανόνιστους φόρτους εργασίας. Τα tokens δρομολογούνται σε διαφορετικά βάρη expert και οι επαναληπτικές καταστάσεις είναι από τη φύση τους διαδοχικές.

Το MLX-LM επιλέγει ήδη βελτιστοποιημένους πυρήνες για φάσεις εξαγωγής συμπερασμάτων και συνήθη σχήματα φόρτου εργασίας, αλλά οι επαναχρησιμοποιήσιμες λειτουργίες του πρέπει να υποστηρίζουν πολλές αρχιτεκτονικές μοντέλων. Μια μηχανή αφιερωμένη στο Qwen μπορεί να εξειδικευτεί σε επίπεδο μοντέλου και runtime, συντονίζοντας πυρήνες, μεταφορά δεδομένων και προγραμματισμό γύρω από τη σταθερή δομή του μοντέλου.

Το Lily υλοποιεί αυτή την εξειδίκευση end-to-end σε μια ενιαία διεργασία. Ένα runtime Rust φορτώνει το checkpoint του μοντέλου και διαχειρίζεται την κατάσταση συνεδρίας και τον βρόχο παραγωγής, ένα API chat-completions συμβατό με OpenAI αποδέχεται αιτήματα και κάνει streaming tokens, και προσαρμοσμένοι πυρήνες Metal εκτελούν λειτουργίες ειδικές για το Qwen. Ούτε το PyTorch ούτε το MLX βρίσκονται στη διαδρομή εκτέλεσης.

Πού βρίσκονται η γενικότητα και η εξειδίκευση στις δύο στοίβες εξαγωγής συμπερασμάτων. Το MLX-LM περιγράφει το μοντέλο ως συνθέσιμες λειτουργίες πίνακα MLX, τις οποίες το MLX προγραμματίζει μέσω επαναχρησιμοποιούμενων πυρήνων. Αντίθετα, ο Lily τοποθετεί τη δομή του μοντέλου, τα σχέδια εκτέλεσης συγκεκριμένης φάσης και την επιλογή πυρήνα σε ένα ενιαίο περιβάλλον εκτέλεσης Rust δομημένο γύρω από το Qwen και το Apple silicon.
Πού βρίσκονται η γενικότητα και η εξειδίκευση στα δύο stacks εξαγωγής συμπερασμάτων (inference stacks). Το MLX-LM περιγράφει το μοντέλο ως συνθέσιμες λειτουργίες πίνακα MLX, τις οποίες το MLX προγραμματίζει μέσω επαναχρησιμοποιήσιμων πυρήνων. Το Lily, αντίθετα, τοποθετεί τη δομή του μοντέλου, τα σχέδια εκτέλεσης ανά φάση και την επιλογή πυρήνων σε ένα ενιαίο runtime Rust χτισμένο γύρω από το Qwen και το Apple silicon.

Μετράμε την απόδοση prefill και decode χωριστά. Το throughput prefill αποτυπώνει πόσο γρήγορα η μηχανή επεξεργάζεται το prompt· το throughput decode αποτυπώνει πόσο γρήγορα παράγει tokens εξόδου.

Διεξάγουμε benchmarking στο Qwen3.6-35B-A3B σε ένα μόνο MacBook Pro με επεξεργαστή M5 Max, GPU 40 πυρήνων και 128 GB ενοποιημένης μνήμης (unified memory). Σε δέκα μήκη prompt για το prefill και δέκα μήκη context για το decode, από 256 έως 128K tokens (K = 1.024), η μηχανή επιτυγχάνει κατά μέσο όρο 1,23× μεγαλύτερη ταχύτητα prefill και 1,35× μεγαλύτερη ταχύτητα decode σε σχέση με το MLX-LM. Με prompt 4K tokens και context decode 4K tokens, η προσαρμοσμένη μηχανή φτάνει τα 5.749,9 tokens prefill ανά δεύτερο και τα 186,6 tokens decode ανά δεύτερο, σε σύγκριση με 4.737,5 και 140,9 αντίστοιχα για το MLX-LM. Σε μια συνεδρία πολλαπλών γύρων (multi-turn), αυτή η εξοικονόμηση χρόνου συσσωρεύεται με κάθε επιπλέον κλήση μοντέλου.

Αριθμητικός μέσος όρος ρυθμού απόδοσης σε δέκα ισοσταθμισμένα μήκη από 256 έως 128K tokens. Ο Lily επιτυχημένα πετυχαίνει κατά μέσο όρο 4.156 tokens προφόρτωσης/s έναντι 3.388 για το MLX-LM (1,23×), και 170,0 tokens αποκωδικοποίησης/s έναντι 126,4 (1,35×). Η προφόρτωση ποικίλλει ανάλογα με το μήκος της προτροπής· η αποκωδικοποίηση ποικίλλει ανάλογα με το μήκος του πλαισίου.
Αριθμητικός μέσος όρος απόδοσης (throughput) σε δέκα ισoσταθμισμένα μήκη από 256 έως 128K tokens. Το Lily επιτυγχάνει μέσο όρο 4.156 tokens prefill/s έναντι 3.388 για το MLX-LM (1,23×), και 170,0 tokens decode/s έναντι 126,4 (1,35×). Το prefill μεταβάλλει το μήκος του prompt· το decode μεταβάλλει το μήκος του context.

Στη συνέχεια, εξηγούμε πώς η αρχιτεκτονική του Qwen δημιουργεί ευκαιρίες βελτιστοποίησης ειδικά για το μοντέλο στο Apple silicon. Κατόπιν, παρουσιάζουμε τις προκύπτουσες αλλαγές στο prefill και το decode. Καλύπτουμε επίσης πού η πρόσθετη βελτιστοποίηση σταματά να αποδίδει, πριν κλείσουμε με μια σύγκριση από άκρη σε άκρη (end-to-end) με το MLX-LM.

Ευκαιρίες βελτιστοποίησης ειδικά για το Qwen σε Apple silicon

Το Qwen δημιουργεί τρία διακριτικά σχήματα φόρτου εργασίας

Το Qwen3.6-35B-A3B περιέχει 35 δισεκατομμύρια παραμέτρους αλλά ενεργοποιεί μόνο περίπου 3 δισεκατομμύρια για κάθε token. Ένας router βαθμολογεί 256 υποδίκτυα expert και επιλέγει οκτώ, παράλληλα με έναν κοινόχρηστο expert που επεξεργάζεται κάθε token. Αυτός ο αραιός σχεδιασμός MoE μειώνει τους υπολογισμούς αλλά παράγει άνισο φόρτο: οι experts λαμβάνουν διαφορετικούς αριθμούς token και κάθε token απαιτεί βάρη από έναν διαφορετικό συνδυασμό expert.

Το Qwen συνδυάζει επίσης 10 στρώματα πλήρους προσοχής με 30 στρώματα Gated DeltaNet. Αυτοί οι δύο τύποι στρωμάτων διατηρούν προηγούμενες πληροφορίες με διαφορετικούς τρόπους.

Τα στρώματα προσοχής χρησιμοποιούν προσοχή ομαδοποιημένων ερωτημάτων (grouped-query attention ή GQA). Το Qwen διαθέτει 16 κεφαλές ερωτημάτων (query heads) και δύο κεφαλές κλειδιού-τιμής (KV heads), με οκτώ κεφαλές ερωτημάτων να μοιράζονται κάθε κεφαλή KV. Η κοινή χρήση κάνει την KV cache μικρότερη και επιτρέπει την επαναχρησιμοποίηση αποθηκευμένων δεδομένων σε κεφαλές ερωτημάτων. Η cache εξακολουθεί να αποθηκεύει νέα κλειδιά και τιμές για κάθε token, οπότε κάθε βήμα decode διαβάζει περισσότερα δεδομένα καθώς το context μεγαλώνει.

Το Gated DeltaNet συμπιέζει αντίθετα προηγούμενες πληροφορίες σε μια επαναληπτική κατάσταση σταθερού μεγέθους. Μια εκπαιδευμένη πύλη ελέγχει πόσο από την υπάρχουσα κατάσταση θα διατηρηθεί, ενώ μια ενημέρωση delta ενσωματώνει πληροφορίες από το τρέχον token. Το μοντέλο ορίζει αυτές τις ενημερώσεις επαναληπτικά, επομένως κάθε token εξαρτάται από την κατάσταση που παράγεται από το προηγούμενο token. Κατά το prefill, ωστόσο, μια μηχανή μπορεί να αξιολογήσει τον ίδιο υπολογισμό με δύο τρόπους. Μπορεί να σαρώσει τα tokens απευθείας ενώ μεταφέρει την κατάσταση προς τα εμπρός, ή να αναδιοργανώσει τις ενημερώσεις σε τμήματα που εκθέτουν περισσότερες πράξεις πινάκων και παραλληλισμό σε επίπεδο token. Ποια προσέγγιση είναι ταχύτερη εξαρτάται από τις διαστάσεις του μοντέλου, τον φόρτο εργασίας και το υλικό.

Συνολικά, αυτές οι δομές δημιουργούν τρία υπολογιστικά μοτίβα: άνισες ομάδες expert, προσοχή (attention) πάνω σε μια αυξανόμενη cache, και μια επαναληψιμότητα (recurrence) σταθερού μεγέθους που μπορεί να αξιολογηθεί απευθείας ή σε τμήματα (blocks).

Το Apple silicon παρέχει διαφορετικές διαδρομές για διαφορετικούς φόρτους εργασίας

Το prefill επεξεργάζεται πολλές σειρές ενεργοποίησης token prompt ταυτόχρονα. Ο τοπικός φόρτος εργασίας που εξετάζεται εδώ συνήθως αποκωδικοποιεί ένα αίτημα τη φορά (batch 1) και επεξεργάζεται μία νέα σειρά ανά βήμα. Αυτή η διαφορά αλλάζει τον τρόπο με τον οποίο χρησιμοποιούνται τα ίδια βάρη μοντέλου. Το prefill μπορεί να επαναχρησιμοποιήσει κάθε block βαρών σε εκατοντάδες ή χιλιάδες σειρές. Το decode σε μεγάλο βαθμό δεν μπορεί, δεδομένου ότι κάθε νέο token απαιτεί άλλη μια διέλευση από τα βάρη.

Το Apple silicon τοποθετεί την CPU και τη GPU πίσω από την ενοποιημένη μνήμη (unified memory), μια ενιαία φυσική δεξαμενή μνήμης προσβάσιμη και από τα δύο. Αυτό επιτρέπει στο μοντέλο να παραμένει resident χωρίς να διατηρεί ξεχωριστό αντίγραφο στη GPU, αλλά δεν κάνει τη μεταφορά δεδομένων δωρεάν. Η ανάγνωση βαρών και ενδιάμεσων τιμών εξακολουθεί να καταναλώνει εύρος ζώνης μνήμης, ενώ οι καταχωρητές και άλλοι αποθηκευτικοί χώροι on-chip είναι ταχύτεροι αλλά πολύ μικρότεροι.

Η GPU M5 παρέχει επίσης διαφορετικές υπολογιστικές διαδρομές. Τα γραμμικά στρώματα του prefill χρησιμοποιούν γενικό πολλαπλασιασμό πίνακα-πίνακα (GEMM), εφαρμόζοντας έναν πίνακα βαρών σε πολλές σειρές ταυτόχρονα. Τα συμβατά GEMM μπορούν να χρησιμοποιήσουν τον Neural Accelerator σε κάθε πυρήνα GPU μέσω λειτουργιών τανυστή Metal 4. Το decode Batch-1 χρησιμοποιεί αντίθετα γενικό πολλαπλασιασμό πίνακα-διανύσματος (GEMV), εφαρμόζοντας τα ίδια βάρη σε μία σειρά. Με μικρή επαναχρησιμοποίηση βαρών, το GEMV περιορίζεται κυρίως από το εύρος ζώνης μνήμης και ταιριάζει καλύτερα στις μονάδες διανυσματικής αριθμητικής λογικής (vector ALUs) της GPU παρά στους Neural Accelerators που έχουν σχεδιαστεί για λειτουργίες πινάκων με μεγαλύτερη επαναχρησιμοποίηση δεδομένων.

Αυτές οι διαδρομές εκτέλεσης δεν είναι μοναδικές για το Lily. Το MLX λειτουργεί πάνω στην ίδια ενοποιημένη μνήμη και επιλέγει βελτιστοποιημένους πυρήνες πινάκων και διανυσμάτων ανάλογα με το σχήμα του φόρτου εργασίας. Η υλοποίηση του Qwen στο MLX-LM ομαδοποιεί ήδη την εργασία expert, αξιολογεί το Gated DeltaNet με έναν συγχωνευμένο επαναληπτικό πυρήνα Metal, και χρησιμοποιεί προσοχή με επίγνωση GQA. Αυτές οι δυνατότητες αποτελούν το κοινό σημείο εκκίνησης για αποδοτική εξαγωγή συμπερασμάτων Qwen σε Apple silicon.

Στρατηγική βελτιστοποίησης

Το στενότερο πεδίο εφαρμογής του Lily του επιτρέπει να συντονίζει αυτές τις κοινές διαδρομές εκτέλεσης γύρω από την ακριβή αρχιτεκτονική και τις διαστάσεις του Qwen. Χρησιμοποιεί διαδρομές GPU συγκεκριμένες για κάθε φάση, αντιστοιχίζει τους φόρτους εργασίας expert, επαναληψιμότητας και προσοχής του Qwen ώστε να ελαχιστοποιεί τη μεταφορά δεδομένων, και επιλέγει πυρήνες και διατάξεις από το μετρούμενο σχήμα φόρτου εργασίας. Η στρατηγική αποτελείται από τρία μέρη:

  1. Αντιστοίχιση της διαδρομής GPU στη φάση εξαγωγής συμπερασμάτων. Χρησιμοποιήστε εκτέλεση προσανατολισμένη σε πίνακες όταν το prefill μπορεί να επαναχρησιμοποιήσει βάρη σε πολλές σειρές, και εκτέλεση προσανατολισμένη σε διανύσματα όταν το decode batch-1 επεξεργάζεται μία σειρά τη φορά.
  2. Αντιστοίχιση της δομής του Qwen στη GPU ελαχιστοποιώντας τη μεταφορά δεδομένων. Διατήρηση των βαρών συμπιεσμένων μέχρι να χρησιμοποιηθούν, οργάνωση της δρομολογημένης εργασίας expert χωρίς επιστροφή στην CPU, διατήρηση της κατάστασης Gated DeltaNet on-chip μέσω της επαναληπτικής σάρωσής της, και επαναχρησιμοποίηση των δεδομένων KV που μοιράζονται η προσοχή ομαδοποιημένων ερωτημάτων.
  3. Προσαρμογή πυρήνων στο σχήμα φόρτου εργασίας. Εντός κάθε φάσης, επιλέξτε μεγέθη πλακιδίων, διατάξεις εκτέλεσης και διαδρομές προσοχής από τον διαθέσιμο αριθμό σειρών, την κατανομή των σειρών στους experts, τις διαστάσεις της λειτουργίας και το τρέχον μήκος context.

Οι ακόλουθες ενότητες εξηγούν αυτές τις επιλογές. Για βελτιστοποιήσεις που αξιολογήθηκαν σε ταιριασμένες αναλύσεις (matched ablations) σε M5 Max, εκτιμούμε τις επιδράσεις τους συγκρίνοντας πανομοιότυπες κατά τα άλλα διαμορφώσεις μηχανής που διαφέρουν μόνο ως προς τη βελτιστοποίηση υπό μελέτη. Επειδή αυτά τα πειράματα συγκρίνουν εκδόσεις της μηχανής μας με τον εαυτό της, εξηγούν μηχανισμούς παρά αναλύουν τα τελικά αποτελέσματα έναντι του MLX-LM.

Prefill: επαναχρησιμοποίηση βαρών και διατήρηση δρομολόγησης στη GPU

Το prefill εκθέτει πολλές σειρές token ταυτόχρονα, αλλά το Qwen δρομολογεί αυτές τις σειρές άνισα μεταξύ των expert και ενημερώνει την επαναληπτική κατάσταση μέσω της ακολουθίας. Οι βελτιστοποιήσεις του εμπίπτουν σε τρεις ομάδες: οργάνωση της αραιής εργασίας expert γύρω από τις δρομολογημένες σειρές, διατήρηση της σάρωσης Gated DeltaNet on-chip, και διαίρεση των μακριών prompts σε οριοθετημένα τμήματα.

Εκτέλεση και διαμονή δεδομένων για ένα οριοθετημένο τμήμα προφόρτωσης μέσω ενός στρώματος Qwen. Η προσοχή επεκτείνει την κρυφή μνήμη KV cache, ενώ το Gated DeltaNet διατηρεί την επαναλαμβανόμενη κατάσταση εργασίας του σε καταχωρητές. Τα μεταδεδομένα δρομολόγησης ειδικών παραμένουν στη GPU, τα βάρη Q4 παραμένουν πακεταρισμένα μέχρι να αποποικοποιηθούν εντός του ομαδοποιημένου GEMM, και οι προσωρινές ενεργοποιήσεις περιορίζονται στο τρέχον τμήμα.
Εκτέλεση και κατοικία δεδομένων (data residency) για ένα οριοθετημένο τμήμα prefill μέσω ενός στρώματος Qwen. Η προσοχή επεκτείνει την KV cache, ενώ το Gated DeltaNet μεταφέρει την ενεργή επαναληπτική του κατάσταση σε καταχωρητές. Τα μεταδεδομένα δρομολόγησης expert παραμένουν στη GPU, τα βάρη Q4 παραμένουν πακεταρισμένα μέχρι να αποκωδικοποιηθούν μέσα στο ομαδοποιημένο GEMM, και οι προσωρινές ενεργοποιήσεις περιορίζονται στο τρέχον τμήμα.

Βελτιστοποίηση αραιών υπολογισμών expert

Αποκωδικοποίηση (dequantize) βαρών κατά τη διάρκεια του πολλαπλασιασμού πινάκων

Το checkpoint Qwen3.6-35B-A3B χρησιμοποιεί κβάντιση (quantization) 4-bit affine ανά ομάδα. Κάθε βάρος αποθηκεύεται ως κωδικός ακέραιου 4-bit, ενώ κάθε ομάδα 64 βαρών μοιράζεται μια κλίμακα bfloat16 και bias που χρησιμοποιούνται για την ανασυγκρότηση των τιμών του. Αυτό μειώνει το μοντέλο 35 δισεκατομμυρίων παραμέτρων από περίπου 70 GB βαρών bfloat16 σε ένα checkpoint 19,4 GB, καθιστώντας πρακτική τη διατήρηση του μοντέλου resident στο Mac.

Η λειτουργία τανυστή Metal 4 που χρησιμοποιείται για τον πολλαπλασιασμό πινάκων καταναλώνει τελεστέους bfloat16 αντί για την πακεταρισμένη αναπαράσταση 4-bit. Πριν από τον πολλαπλασιασμό, η GPU πρέπει να ανασυγκροτήσει τα βάρη σε bfloat16. Το βελτιστοποιημένο ομαδοποιημένο GEMM στο Lily εκτελεί αυτή τη μετατροπή ένα μικρό πλακίδιο βάρους τη φορά και κρατά το αποτέλεσμα στη μνήμη threadgroup on-chip μόνο για όσο διάστημα χρειάζεται για να το πολλαπλασιάσει με τις δρομολογημένες σειρές ενεργοποίησης. Η συσσώρευση χρησιμοποιεί κινητή υποδιαιρέσεις 32-bit (32-bit floating point) και η έξοδος γράφεται σε bfloat16. Ο πλήρης εκτεταμένος πίνακας βαρών δεν δημιουργείται ποτέ στην ενοποιημένη μνήμη.

Στην ανάλυση (ablation), η αποκωδικοποίηση (dequantization) εκτελείται ως ξεχωριστή λειτουργία: επεκτείνει τα βάρη 4-bit σε μια συστοιχία bfloat16 στην ενοποιημένη μνήμη, μετά την οποία ο πυρήνας πίνακα διαβάζει πίσω αυτή τη συστοιχία. Σε prompt 512 tokens, η μεταφορά της αποκωδικοποίησης μέσα στο ομαδοποιημένο GEMM αύξησε το throughput prefill end-to-end κατά 77,4% εξαλείφοντας αυτή την ενδιάμεση εγγραφή και ανάγνωση.

Διατήρηση της δρομολόγησης expert στη GPU

Το ομαδοποιημένο GEMM χρειάζεται τις σειρές ενεργοποίησης που έχουν ανατεθεί σε κάθε expert να αποθηκεύονται μαζί. Μετά την επιλογή οκτώ expert ανά token, ένα ιστορικό μετρά πόσες αναθέσεις πήγαν σε κάθε expert. Μια σάρωση προθέματος μετατρέπει αυτές τις μετρήσεις σε αρχικά offsets, ένα βήμα διασποράς (scatter) τοποθετεί σειρές στις ομάδες expert τους, και ένας χάρτης τμημάτων (block map) απαριθμεί τα blocks πινάκων σταθερού μεγέθους που πρέπει να επεξεργαστεί το ομαδοποιημένο GEMM.

Η βελτιστοποιημένη διαδρομή διατηρεί ολόκληρη αυτή την ακολουθία σε ένα buffer εντολών (command buffer), μια διατεταγμένη παρτίδα λειτουργιών GPU, για κάθε τμήμα prompt. Μια ανάλυση (ablation) αντίθετα κάνει παύση ώστε η CPU να μπορεί να επιθεωρήσει τα ενδιάμεσα δρομολόγησης και να υποβάλει την επόμενη λειτουργία. Η διατήρηση του ιστογράμματος και της σάρωσης προθεμάτων (prefix scan) στη GPU προσθέτει δύο πυρήνες αλλά αφαιρεί τον συγχρονισμό CPU-GPU μέσα σε κάθε στρώμα MoE.

Σε prompt 512 tokens, η ενεργοποίηση της δρομολόγησης resident στη GPU αύξησε το end-to-end prefill κατά 89%. Αυτό δείχνει επίσης γιατί ο αριθμός των πυρήνων από μόνος του μπορεί να είναι παραπλανητικός: η ταχύτερη διαδρομή ξεκινά περισσότερους πυρήνες αλλά δεν περιμένει ποτέ την CPU μέσα στο στρώμα.

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

Σε prompt 2K tokens, η δρομολόγηση κάθε token σε οκτώ από τους 256 experts παράγει 16.384 αναθέσεις token-expert, ή κατά μέσο όρο 64 σειρές ενεργοποίησης ανά expert. Η πραγματική κατανομή είναι άνιση: ορισμένοι experts λαμβάνουν πολλές σειρές, ενώ άλλοι λαμβάνουν λίγες.

Το ομαδοποιημένο GEMM διαιρεί την έξοδο κάθε expert σε πλακίδια (tiles), τα οποία είναι μικρά ορθογώνια blocks της εξόδου ενός πολλαπλασιασμού πινάκων. Κάθε πλακίδιο ανατίθεται σε ένα threadgroup GPU. Στις GPU του Apple silicon, ένα threadgroup περιέχει ένα ή περισσότερα simdgroups, καθένα από τα οποία αποτελείται από 32 νήματα που εκτελούν οδηγίες σε απόλυτη συγχρονία (lockstep).

Τα μεγαλύτερα πλακίδια (tiles) κατανέμουν το κόστος εγκατάστασης σε περισσότερες σειρές και εκθέτουν περισσότερη παράλληλη εργασία, αλλά μέρος ενός μεγάλου πλακιδίου παραμένει αδρανές όταν ένας expert λαμβάνει μόνο λίγες σειρές. Το μέγεθος πλακιδίου και ο αριθμός simdgroup είναι επομένως συνδεδεμένα.

Μια ανάλυση (ablation) σταθεροποιεί το πλακίδιο (tile) σε 16 σειρές. Έναντι αυτού του ελέγχου, η ενεργοποίηση του πλακιδίου 32 σειρών με τέσσερα simdgroups βελτίωσε το end-to-end prefill κατά 13,2% στα 2K tokens.

Διατήρηση επαναληπτικής κατάστασης on-chip

Κατά το prefill, κάθε στρώμα Gated DeltaNet σαρώνει το prompt με σειρά ενώ μεταφέρει την επαναληπτική του κατάσταση προς τα εμπρός. Με την κατοικία σε καταχωρητές (register residency) απενεργοποιημένη, η ανάλυση χρησιμοποιεί σάρωση κατά τμήματα (blockwise scan). Σε prompt 2K tokens, αυτή η διαδρομή μετακινεί 256 MiB (mebibytes) κατάστασης ανά στρώμα και σταματά επαναλαμβανόμενα τα συνεργαζόμενα νήματα σε φράγματα (barriers), σημεία συγχρονισμού όπου όλα τα συμμετέχοντα νήματα πρέπει να περιμένουν το ένα το άλλο.

Η επαναληπτική κατάσταση (recurrent state) είναι ένας πίνακας (matrix). Ο βελτιστοποιημένος πυρήνας αναθέτει κάθε στήλη σε ένα simdgroup. Το simdgroup διαιρεί τη στήλη μεταξύ των νημάτων του, φορτώνει τη στήλη στους καταχωρητές (registers) τους μία φορά και μεταφέρει την κατάσταση σε ολόκληρη τη σάρωση. Τα νήματα ανταλλάσσουν ενδιάμεσα αποτελέσματα μέσω λειτουργιών simdgroup αντί για μνήμη threadgroup, η οποία είναι αποθήκευση on-chip κοινόχρηστη σε ένα threadgroup. Η ολοκληρωμένη κατάσταση γράφεται πίσω μόνο μετά τη σάρωση.

Η κατάσταση και η πύλη της (gate) χρησιμοποιούν μορφή κινητής υποδιαιρέσεως 32-bit επειδή τα μικρά σφάλματα στρογγυλοποίησης συσσωρεύονται σε διαδοχικές ενημερώσεις. Οι ενεργοποιήσεις ερωτημάτων (query) και κλειδιών (key) παραμένουν σε bfloat16.

Σε prompt 2K tokens, η ενεργοποίηση της σάρωσης που κατοικεί σε καταχωρητές (register-resident scan) βελτίωσε το end-to-end prefill κατά 5,6%. Τα Expert GEMM αντιπροσώπευαν περίπου το 90% του χρόνου prefill. Η διαδοχική σάρωση δεν εκθέτει αρκετή επαναχρησιμοποιήσιμη εργασία πίνακα ώστε να επωφεληθεί από τους Neural Accelerators.

Περιορισμός προσωρινής μνήμης με τμηματοποίηση prompt (prompt chunking)

Το runtime επεξεργάζεται ένα μακρύ prompt ως ακολουθία οριοθετημένων τμημάτων αντί να διατηρεί προσωρινά δεδομένα για κάθε token prompt στη μνήμη ταυτόχρονα. Τα βάρη του μοντέλου παραμένουν resident στην ενοποιημένη μνήμη, ενώ η επαναληπτική κατάσταση και η KV cache μεταφέρουν context από το ένα τμήμα στο επόμενο. Κανένα προηγούμενο context δεν απορρίπτεται.

Χωρίς τμηματοποίηση (chunking), οι προσωρινές συστοιχίες ενεργοποίησης μεγαλώνουν με ολόκληρο το prompt και ανταγωνίζονται τα βάρη του μοντέλου, την επαναληπτική κατάσταση και την KV cache για ενοποιημένη μνήμη. Το chunking διατηρεί ζωντανές τις προσωρινές τιμές μόνο ενός τμήματος τη φορά, στη συνέχεια απελευθερώνει ή επαναχρησιμοποιεί αυτή την αποθήκευση πριν επεξεργαστεί το επόμενο τμήμα. Αυτό θέτει ένα ανώτατο όριο στην ενεργή μνήμη εργασίας και επιτρέπει στη μηχανή να επεξεργάζεται μεγαλύτερα prompts χωρίς να αλλάζει την έξοδο του μοντέλου.

Το prefill με τμήματα (chunked prefill) είναι δημοφιλές σε πολλές μηχανές και είναι ζωτικής σημασίας για την εξυπηρέτηση μακρών τροχιών πολλαπλών γύρων σε αυτά τα περιβάλλοντα με περιορισμένη μνήμη. Ο συνολικός χρόνος prefill για στρώματα προσοχής παραμένει τετραγωνικός ως προς το μήκος του prompt, με κάποιο πρόσθετο overhead από επαναλαμβανόμενες φορτώσεις KV προηγούμενων τμημάτων.

Decode: ελαχιστοποίηση των byte που μετακινούνται ανά token

Το decode Batch-1 επεξεργάζεται μία νέα σειρά τη φορά. Με μικρή επαναχρησιμοποίηση βαρών, το throughput του εξαρτάται κυρίως από το πόσα byte μετακινεί η μηχανή για κάθε token. Οι αλλαγές στο decode χωρίζονται σε τέσσερις ομάδες: βελτιστοποίηση της διαδρομής βάρους μιας σειράς, διατήρηση κάθε βήματος στη GPU, μείωση της κίνησης ενδιάμεσων δεδομένων και καταστάσεων, και αποδοτική ανάγνωση της cache προσοχής.

Ροή δεδομένων για ένα βήμα αποκωδικοποίησης batch-1 και δύο μηχανισμοί που μειώνουν τον χρόνο αδράνειας και την κίνηση της κρυφής μνήμης cache. (A) Η GPU μεταδίδει ροή βαρών Q4 και κατάστασης μοντέλου μέσω προσοχής, Gated DeltaNet, δρομολόγησης και συγχωνευμένων πυρήνων ειδικών, στη συνέχεια γράφει το επιλεγμένο token απευθείας στην υποδοχή εισόδου του επόμενου βήματος, στέλνοντας παράλληλα ένα αντίγραφο στην CPU. (B) Ο προγραμματισμός με επίγνωση εξαρτήσεων επιτρέπει σε ανεξάρτητους πυρήνες να επικαλύπτονται. (C) Η συσκευασία GQA επιτρέπει σε τέσσερις κεφαλές ερωτημάτων να μοιράζονται κάθε φόρτωση γραμμής KV, μειώνοντας οκτώ ανεξάρτητα αιτήματα σε δύο κοινές φορτώσεις.
Ροή δεδομένων για ένα βήμα decode batch-1 και δύο μηχανισμοί που μειώνουν τον χρόνο αδράνειας και την κίνηση της cache. (A) Η GPU μεταδίδει βάρη Q4 και κατάσταση μοντέλου μέσω προσοχής, Gated DeltaNet, δρομολόγησης και συγχωνευμένων πυρήνων expert, στη συνέχεια γράφει το επιλεγμένο token απευθείας στην υποδοχή εισόδου του επόμενου βήματος ενώ στέλνει ένα αντίγραφο στην CPU. (B) Ο προγραμματισμός με επίγνωση εξαρτήσεων (dependency-aware scheduling) επιτρέπει σε ανεξάρτητους πυρήνες να επικαλύπτονται. (C) Η ομαδοποίηση GQA επιτρέπει σε τέσσερις κεφαλές ερωτημάτων να μοιράζονται κάθε φόρτωση σειράς KV, μειώνοντας οκτώ ανεξάρτητες αιτήσεις σε δύο κοινές φορτώσεις.

Βελτιστοποίηση της διαδρομής βάρους μιας σειράς

Το MLX αποστέλλει ήδη εργασία μιας σειράς σε εξειδικευμένους πυρήνες πίνακα-διανύσματος. Επειδή το Lily δεν χρησιμοποιεί το MLX, το προσαρμοσμένο runtime πρέπει να παρέχει την ίδια βασική στρατηγική. Το GEMV παράλληλων σειρών μας έχει σχεδιαστεί για μία σειρά ενεργοποίησης. Ένα simdgroup συνεργάζεται στην έξοδο ενώ διαβάζει διαφορετικά μέρη του πίνακα βαρών παράλληλα.

Διατήρηση κάθε βήματος decode στη GPU

Διατήρηση της παράδοσης token στη GPU

Κάθε βήμα decode τελειώνει επιλέγοντας το επόμενο token· το ακόλουθο βήμα ξεκινά με αυτό το token ως είσοδο. Η αποστολή της επιλογής στην CPU και στη συνέχεια πίσω στη GPU προσθέτει ένα σημείο συγχρονισμού σε κάθε token. Το runtime μας εναλλάσσεται αντίθετα μεταξύ δύο buffers εντολών και δύο υποδοχών token resident στη GPU. Η GPU επιλέγει το token με τη υψηλότερη βαθμολογία και γράφει το αναγνωριστικό token (token ID) απευθείας στην υποδοχή εισόδου για το επόμενο βήμα decode, ενώ η CPU προετοιμάζει την επόμενη εργασία.

Επικάλυψη ανεξάρτητης εργασίας GPU

Σε ένα καταγεγραμμένο βήμα decode batch-1, η παραγωγή ενός token ξεκίνησε 795 πυρήνες GPU. Οι εξαρτήσεις τους σχημάτισαν 555 διαδοχικά στάδια, αφήνοντας ορισμένους πυρήνες ελεύθερους να εκτελεστούν ταυτόχρονα. Η σειριακή λειτουργία εκτέλεσης του Metal εντούτοις εκτέλεσε κάθε πυρήνα με τη σειρά.

Η βελτιστοποιημένη διαδρομή decode καταγράφει τις πραγματικές εξαρτήσεις δεδομένων σε ένα ταυτόχρονο πέρασμα Metal. Οι εκκινήσεις ανεξάρτητων πυρήνων μπορούν να εκτελεστούν την ίδια στιγμή όταν οι πόροι της GPU το επιτρέπουν. Ένα φράγμα (barrier) εισάγεται μόνο όταν μετέπειτα εργασία απαιτεί ένα προηγούμενο αποτέλεσμα.

Μείωση της κίνησης ενδιάμεσων δεδομένων και καταστάσεων

Οι ξεχωριστοί πυρήνες συχνά υλοποιούν ένα ενδιάμεσο: ένας πυρήνας γράφει ένα προσωρινό αποτέλεσμα στη μνήμη και ο επόμενος διαβάζει το αποτέλεσμα πίσω. Η βελτιστοποιημένη διαδρομή decode συγχωνεύει τέσσερις αλυσίδες: τις δύο προβολές εισόδου expert με την ενεργοποίησή τους με πύλη (gated activation)· την προβολή εξόδου expert με το σκορ δρομολόγησής της και το αποτέλεσμα κοινόχρηστου expert· την προετοιμασία ερωτήματος και κλειδιού πριν την προσοχή· και την επαναληπτική ενημέρωση με την κανονικοποίησή της. Κάθε συγχωνευμένος πυρήνας διατηρεί προσωρινές τιμές σε καταχωρητές (registers) αντί να τις στέλνει μέσω της μνήμης.

Η συγχώνευση (fusion) συντομεύει επίσης το γράφημα εξαρτήσεων: όταν μια ενδιάμεση εγγραφή εξαφανίζεται, το ίδιο συμβαίνει και με το φράγμα (barrier) που προστάτευε τον καταναλωτή της.

Ανάγνωση της cache προσοχής με αποδοτικό τρόπο

Συνένωση αναγνώσεων cache προσοχής

Η προσοχή διαβάζει κλειδιά και τιμές από την KV cache κατά τη διάρκεια κάθε βήματος decode. Στην ανάλυση (ablation), γειτονικά νήματα GPU δεν ζητούν πάντα γειτονικά byte, αναγκάζοντας το σύστημα μνήμης να εξυπηρετήσει περισσότερες ξεχωριστές συναλλαγές. Η ενεργοποίηση συνενωμένων φορτώσεων (coalesced loads) κάνει τα γειτονικά νήματα να ζητούν γειτονικά byte ώστε το υλικό να μπορεί να συνδυάσει τις αναγνώσεις τους.

Στη διαμόρφωση bfloat16, η συνένωση (coalescing) αύξησε το εύρος ζώνης κλειδιών (key bandwidth) από 33,8 σε 47,9 GB/s, αύξησε το εύρος ζώνης τιμών (value bandwidth) από 42,0 σε 61,8 GB/s, και βελτίωσε το end-to-end decode κατά 2,1% σε context 3.840 tokens.

Πακετάρισγραμμα κεφαλών ερωτημάτων για επαναχρησιμοποίηση σειρών KV

Η προσοχή ομαδοποιημένων ερωτημάτων (grouped-query attention) επιτρέπει σε οκτώ κεφαλές ερωτημάτων (query heads) να μοιράζονται μία κεφαλή KV. Στην ανάλυση (ablation), κάθε κεφαλή ερωτημάτων εκτελείται σε ξεχωριστό simdgroup, οπότε και οι οκτώ ζητούν ανεξάρτητα την ίδια αποθηκευμένη σειρά KV. Ο βελτιστοποιημένος πυρήνας ομαδοποιεί τέσσερις κεφαλές ερωτημάτων σε ένα threadgroup, το οποίο φορτώνει κάθε σειρά KV μία φορά και την επαναχρησιμοποιεί σε τέσσερις υπολογισμούς προσοχής. Ένα δεύτερο threadgroup χειρίζεται τις υπόλοιπες τέσσερις κεφαλές.

Αυτή η τεχνική, που αποκαλείται συνήθως ομαδοποίηση GQA (GQA packing), εκτελεί την ίδια αριθμητική και παράγει πανομοιότυπα byte εξόδου ενώ μειώνει οκτώ ανεξάρτητες αιτήσεις KV σε δύο κοινές φορτώσεις. Έναντι της μη πακεταρισμένης ανάλυσης, βελτίωσε το throughput decode end-to-end κατά 23,8% σε context 32K tokens.

Εναλλαγή διατάξεων προσοχής σε μεγάλα contexts

Κάθε βήμα decode σε ένα στρώμα πλήρους προσοχής (full-attention layer) σαρώνει την υπάρχουσα KV cache. Μια διάταξη σταθερών τμημάτων (fixed-block layout) διαιρεί αυτή την cache σε ísie μέρη που η GPU μπορεί να επεξεργαστεί παράλληλα. Ο επιπλέον προγραμματισμός της δεν αξίζει όταν η cache είναι μικρή, αλλά η διάταξη σταθερών τμημάτων εξισορροπεί την εργασία πιο ομοιόμορφα καθώς το context μεγαλώνει.

Για αυτό το μοντέλο, το runtime διατηρεί τη γενική διαδρομή προσοχής κάτω από τα 32K tokens και χρησιμοποιεί τη διαδρομή σταθερών τμημάτων στα 32K ή μεγαλύτερα. Η εναλλαγή εφαρμόζεται όταν κάθε κεφαλή έχει 256 τιμές και οκτώ κεφαλές ερωτημάτων μοιράζονται μια κεφαλή KV· άλλα σχήματα παραμένουν στη γενική διαδρομή. Μια ανάλυση απενεργοποιεί αυτή την εναλλαγή και χρησιμοποιεί πάντα τη γενική διαδρομή. Η ενεργοποίηση της διαδρομής σταθερών τμημάτων βελτίωσε το end-to-end decode κατά 7,7% στα 32K, 27,4% στα 64K και 40,2% στα 128K.

Όρια περαιτέρω βελτιστοποίησης

Ορισμένες αλλαγές βελτίωσαν μια μεμονωμένη λειτουργία αλλά δεν βελτίωσαν την εξαγωγή συμπερασμάτων end-to-end.

Η κερδοσκοπική αποκωδικοποίηση (speculative decoding), η οποία χρησιμοποιεί ένα μικρότερο μοντέλο για να προτείνει tokens ώστε το πλήρες μοντέλο να τα επαληθεύσει, έκανε το decode batch-1 18% πιο αργό. Η επαλήθευση επεξεργάστηκε ομάδες δύο έως πέντε σειρών, ένα ανεπαρκές σχήμα για αυτό το υλικό, και οι σειρές συχνά επέλεξαν διαφορετικούς expert, αυξάνοντας την ποσότητα δεδομένων βάρους expert που διαβάστηκαν. Η μείωση του λεξιλογίου εξόδου του drafter βελτίωσε το throughput του drafter κατά 4,7–5,1%, αλλά δεν έκανε τον πλήρη κερδοσκοπικό βρόχο ταχύτερο. Αυτό το αποτέλεσμα είναι ειδικό για τον φόρτο εργασίας: η ομαδοποιημένη ανάπτυξη του Qwen σε Blackwell χρησιμοποιεί κερδοσκοπική αποκωδικοποίηση υπό διαφορετικές συνθήκες.

Άλλα πειράματα περιλάμβαναν τη μείωση των εκκινήσεων GPU, την επικάλυψη ολόκληρων φάσεων, τη χρήση μεγαλύτερων πλακιδίων prefill, την εφαρμογή ευρύτερης συγχώνευσης, την επιτάχυνση του router και τον συνδυασμό της προβολής εξόδου με την επιλογή token. Κανένα δεν βελτίωσε τον πλήρη βρόχο εξαγωγής συμπερασμάτων.

Οι μετρήσεις των ορίων του υλικού (hardware) έδειξαν επίσης ελάχιστο εναπομείναν περιθώριο στις κύριες λειτουργίες prefill και decode. Τα MoE GEMM και GEMV έφτασαν το 97,9% και το 90,3% των ταχύτερων διατηρούμενων ρυθμών ανάγνωσης βαρών για τα μοτίβα πρόσβασης τους. Η αφαίρεση της αριθμητικής από το αραιό GEMV άλλαξε το throughput κατά μόλις 0,2%, επιβεβαιώνοντας ότι η ανάγνωση βαρών και όχι οι υπολογισμοί ήταν ο περιοριστικός πόρος. Ο πολλαπλασιασμός πινάκων του prefill έφτασε παρόμοια στο 93% του θεωρητικού ορίου πίνακα μεμονωμένα και στο 80–86% εντός των δοκιμασμένων μοντέλων.

Απόδοση από άκρη σε άκρη (End-to-end)

Η σύγκριση end-to-end φορτώνει πανομοιότυπα byte σημείου ελέγχου (checkpoint) 4-bit και στις δύο μηχανές και εκτελεί ένα αίτημα τη φορά σε ένα M5 Max 40 πυρήνων, 128 GB. Εντός κάθε γύρου, οι δύο μηχανές εκτελούνται με εναλλασσόμενη σειρά για να μειωθεί η προκατάληψη από τον φόρτο παρασκηνίου και τις αλλαγές στη θερμοκρασία του τσιπ. Συγκρίνουμε με την ταχύτερη διαδρομή άμεσης παραγωγής του MLX-LM, όχι με τον διακομιστή του, οπότε η μέτρηση εστιάζει στην εκτέλεση του μοντέλου και όχι στο overhead εξυπηρέτησης.

Η σάρωση καλύπτει δέκα μήκη prompt για το prefill και δέκα μήκη context για το decode, από 256 έως 128K tokens. Το throughput prefill αρχικά αυξάνεται καθώς η μηχανή κατανέμει σταθερά κόστη εγκατάστασης σε περισσότερα tokens. Το prefill κορυφώνεται γύρω σε ένα prompt 4K tokens, έπειτα μειώνεται επειδή τα δέκα στρώματα πλήρους προσοχής εκτελούν περισσότερη εργασία καθώς το prompt μεγαλώνει. Το decode παραμένει σχεδόν επίπεδο σε μικρά contexts και μειώνεται μόλις η ανάγνωση της αυξανόμενης KV cache γίνει σημαντική. Η προσαρμοσμένη μηχανή είναι ταχύτερη σε κάθε καταγεγραμμένο μήκος.

Επειδή η εξειδικευμένη εκτέλεση μπορεί να αλλάξει τη σειρά των πράξεων κινητής υποδιαιρέσεως, ελέγξαμε επίσης την αριθμητική συνέπεια έναντι του MLX-LM. Σε μια σύγκριση με επιβολή δασκάλου (teacher-forced), και οι δύο μηχανές προέβλεψαν το επόμενο token από το ίδιο πρόθεμα αναφοράς σε καθθένα από τα 192 σημεία, αποτρέποντας προηγούμενες διαφορές από το να επηρεάσουν μετέπειτα εισόδους. Η περιπλοκότητα (perplexity) του Lily ήταν μόλις 0,4% υψηλότερη και επέλεξε το ίδιο κορυφαίο token στο 96,35% των δοκιμασμένων σημείων.

Ρυθμός απόδοσης προφόρτωσης ανά μήκος προτροπής και ρυθμός απόδοσης αποκωδικοποίησης ανά μήκος πλαισίου για το Qwen3.6-35B-A3B Q4, batch 1, σε έναν πυρήνα 40 πυρήνων, 128 GB M5 Max. Σε δέκα μήκη από 256 έως 128K tokens, ο Lily είναι ταχύτερος σε κάθε καταγεγραμμένο σημείο: 1,12–1,42× του ρυθμού απόδοσης προφόρτωσης του MLX-LM και 1,31–1,37× του ρυθμού απόδοσης αποκωδικοποίησής του. Η σύγκριση χρησιμοποιεί την ταχύτερη διαδρομή άμεσης παραγωγής του MLX-LM. Και οι δύο οριζόντιοι άξονες χρησιμοποιούν λογαριθμικές κλίμακες· κανένας κατακόρυφος άξονας δεν ξεκινά από το μηδέν.
Throughput prefill ανά μήκος prompt και throughput decode ανά μήκος context για το Qwen3.6-35B-A3B Q4, batch 1, σε ένα M5 Max 40 πυρήνων με 128 GB. Σε δέκα μήκη από 256 έως 128K tokens, το Lily είναι ταχύτερο σε κάθε καταγεγραμμένο σημείο: 1,12–1,42× του throughput prefill του MLX-LM και 1,31–1,37× του throughput decode του. Η σύγκριση χρησιμοποιεί την ταχύτερη διαδρομή άμεσης παραγωγής του MLX-LM. Και οι δύο οριζόντιοι άξονες χρησιμοποιούν λογαριθμική κλίμακα· κανένας κατακόρυφος άξονας δεν ξεκινά από το μηδέν.

Χτισμένο για την τοπική πλατφόρμα

Το Apple silicon δεν είναι μια μικρότερη GPU κέντρου δεδομένων. Είναι μια πλήρης πλατφόρμα τοπικής εξαγωγής συμπερασμάτων με τα δικά της χαρακτηριστικά υλικού και λογισμικού. Η ενοποιημένη μνήμη δίνει σε έναν μόνο κόμβο πολύ υψηλό όριο στο πόσο μοντέλο και κατάσταση μπορεί να χωρέσει. Οι Neural Accelerators M5 απορροφούν την πυκνή εργασία πινάκων στο prefill. Τα διανυσματικά ALU χειρίζονται το υπόλοιπο που περιορίζεται από το εύρος ζώνης και έχει χαμηλή επαναχρησιμοποίηση στο decode.

Το Qwen προσθέτει περαιτέρω ευκαιρίες για εξειδίκευση: διατήρηση της δρομολόγησης expert και της επαναληπτικής κατάστασης στη GPU, εξάλειψη περιττών ενδιάμεσων δεδομένων, επικάλυψη ανεξάρτητης εργασίας, επαναχρησιμοποίηση κοινόχρηστων δεδομένων KV, και προσαρμογή πυρήνων στο σχήμα φόρτου εργασίας.

Με βελτιστοποίηση ειδική για το μοντέλο και την πλατφόρoma, ένα Mac μπορεί να εκτελέσει ένα μεγάλο αραιό μοντέλο αποδοτικά. Η μελλοντική εργασία θα διευρύνει την κάλυψη σε μοντέλα, τσιπ και φόρτους εργασίας εξυπηρέτησης, και θα μετατρέψει τους μηχανισμούς που επικυρώθηκαν εδώ σε μία διαμόρφωση σε μια πιο γενική πολιτική runtime.

Η ευρύτερη αρχή είναι να ταιριάζει η μηχανή τόσο με την αρχιτεκτονική του μοντέλου όσο και με τις συγκεκριμένες διαδρομές υπολογισμών και μνήμης του υλικού. Καθώς τα μοντέλα ανοιχτών βαρών αιχμής και το υλικό εξελίσσονται, η υψηλής απόδοσης τοπική εξαγωγή συμπερασμάτων θα εξαρτάται όλο και περισσότερο από μηχανές προσαρμοσμένες και στα δύο παρά από εκείνες που αφαιρούν τις διαφορές τους.