Ηγέτες σκέψης
Αποφεύγοντας τους Κρυμμένους Κινδύνους: Πλοήγηση στα Μη Εvident Πιθανούς Κινδύνους στο ML στο iOS

Χρειάζεστε ML;
Η μηχανική μάθηση είναι εξαιρετική στο να αναγνωρίζει μοτίβα. Αν καταφέρετε να συλλέξετε ένα καθαρό dataset για την εργασία σας, συνήθως είναι μόνο θέμα χρόνου πριν καταφέρετε ναสร้างτε ένα ML μοντέλο με υπεράνθρωπη απόδοση. Αυτό είναι ιδιαίτερα αληθινό σε κλασικές εργασίες όπως ταξινόμηση,回归 και ανίχνευση ανωμαλιών.
Όταν είστε έτοιμοι να λύσετε κάποια από τα προβλήματα της επιχείρησής σας με ML, πρέπει να σκεφτείτε που θα τρέξουν τα ML μοντέλα σας. Για κάποιους, έχει νόημα να τρέξουν μια υποδομή εξυπηρετητή. Αυτό έχει το πλεονέκτημα να giữ τα ML μοντέλα σας ιδιωτικά, ώστε να είναι πιο δύσκολο για τους ανταγωνιστές να σας φτάσουν. Επιπλέον, οι εξυπηρετητές μπορούν να τρέξουν ένα ευρύ φάσμα μοντέλων. Για παράδειγμα, τα μοντέλα GPT (που έγιναν διάσημα με το ChatGPT) απαιτούν τρέχοντες GPU, ώστε τα καταναλωτικά συσκευές να είναι εκτός ερώτησης. Από την άλλη πλευρά, η συντήρηση της υποδομής σας είναι khá δαπανηρή, και αν μια καταναλωτική συσκευή μπορεί να τρέξει το μοντέλο σας, γιατί να πληρώσετε περισσότερα; Επιπλέον, μπορεί να υπάρχουν και προβλήματα ιδιωτικότητας όπου δεν μπορείτε να στείλετε δεδομένα χρηστών σε einen απομακρυσμένο εξυπηρετητή για επεξεργασία.
Ωστόσο, ας υποθέσουμε ότι έχει νόημα να χρησιμοποιήσετε τις συσκευές iOS των πελατών σας για να τρέξετε ένα ML μοντέλο. Τι μπορεί να πάει λάθος;
Περιορισμοί πλατφόρμας
Περιορισμοί μνήμης
Οι συσκευές iOS έχουν πολύ λιγότερη διαθέσιμη μνήμη βίντεο από τους επιτραπέζιους υπολογιστές. Για παράδειγμα, ο πρόσφατος Nvidia RTX 4080 Ti έχει 20 GB διαθέσιμης μνήμης. Τα iPhone, από την άλλη πλευρά, έχουν μνήμη βίντεο που μοιράζεται με την υπόλοιπη RAM σε αυτό που ονομάζουν “ενιαία μνήμη”. Για αναφορά, το iPhone 14 Pro έχει 6 GB RAM. Επιπλέον, αν κατανάλωση περισσότερη από το μισό της μνήμης, το iOS είναι πολύ πιθανό να σκοτώσει την εφαρμογή για να διασφαλίσει ότι το λειτουργικό σύστημα παραμένει απόκριτικό. Αυτό σημαίνει ότι μπορείτε να μετρήσετε μόνο 2-3 GB διαθέσιμης μνήμης για εύρεση νευρωνικών δικτύων.
Οι ερευνητές συνήθως εκπαιδεύουν τα μοντέλα τους για να βελτιστοποιήσουν την ακρίβεια πάνω από τη μνήμη. Ωστόσο, υπάρχει επίσης έρευνα για τρόπους να βελτιστοποιήσετε για ταχύτητα και αποτύπωση μνήμης, ώστε να μπορείτε να αναζητήσετε λιγότερο απαιτητικά μοντέλα ή να εκπαιδεύσετε ένα μόνος σας.
Στρώματα δικτύου (εργασίες) υποστήριξης
Τα περισσότερα ML και νευρωνικά δίκτυα προέρχονται από γνωστά πλαίσια βαθιάς μάθησης και στη συνέχεια μετατρέπονται σε CoreML μοντέλα με Core ML Tools. Το CoreML είναι ένας κινητήρας εύρεσης γραφένων από την Apple που μπορεί να τρέξει διάφορα μοντέλα σε συσκευές Apple. Τα στρώματα είναι καλά-βελτιστοποιημένα για την υλική υποδομή και η λίστα των υποστηριζόμενων στρωμάτων είναι khá μεγάλη, ώστε να είναι ένα εξαιρετικό σημείο εκκίνησης. Ωστόσο, υπάρχουν και άλλες επιλογές όπως Tensorflow Lite.
Ο καλύτερος τρόπος για να δείτε τι είναι δυνατό με το CoreML είναι να κοιτάξετε κάποια ήδη μετατρεμένα μοντέλα χρησιμοποιώντας προγράμματα όπως Netron. Η Apple λίστα κάποια από τα επίσημα υποστηριζόμενα μοντέλα, αλλά υπάρχουν και κοινότητα-κίνητα μοντέλα. Η πλήρης λίστα των υποστηριζόμενων εργασιών αλλάζει συνεχώς, ώστε να είναι χρήσιμο να κοιτάξετε τον κώδικα του Core ML Tools ως σημείο εκκίνησης. Για παράδειγμα, αν θέλετε να μετατρέψετε ένα PyTorch μοντέλο, μπορείτε να προσπαθήσετε να βρείτε την απαραίτητη στρώση εδώ.
Επιπλέον, κάποια νέα αρχιτεκτονικά μπορεί να περιέχουν χειρογραφικό CUDA κώδικα για κάποια από τα στρώματα. Σε τέτοιες περιπτώσεις, δεν μπορείτε να περιμένετε ότι το CoreML θα παρέχει một προκαθορισμένο στρώμα. Ωστόσο, μπορείτε να παρέχετε τη δική σας υλοποίηση αν έχετε έναν ικανό μηχανικό που είναι εξοικειωμένος με την γραφή κώδικα GPU.
Συνολικά, η καλύτερη συμβουλή εδώ είναι να προσπαθήσετε να μετατρέψετε το μοντέλο σας σε CoreML νωρίς, ακόμη και πριν από την εκπαίδευση. Αν έχετε ένα μοντέλο που δεν μετατράπηκε αμέσως, είναι δυνατό να τροποποιήσετε την ορισμό του νευρωνικού δικτύου στο πλαίσιο DL ή τον κώδικα του Core ML Tools converter για να παράγετε ένα έγκυρο CoreML μοντέλο χωρίς την ανάγκη να γράψετε μια προσαρμοσμένη στρώση για εύρεση CoreML.
Επικύρωση
Σφάλματα του κινητήρα εύρεσης
Δεν υπάρχει τρόπος να ελέγξετε κάθε δυνατή συνδυασμό στρωμάτων, ώστε ο κινητήρας εύρεσης θα έχει πάντα κάποια σφάλματα. Για παράδειγμα, είναι κοινό να δείτε διασταλμένες συνβολές να χρησιμοποιούν πολύ περισσότερη μνήμη με το CoreML, πιθανότατα υποδεικνύοντας μια κακώς γραμμένη υλοποίηση με một μεγάλο πυρήνα που γεμίζει με μηδενικά. Ένα άλλο κοινό σφάλμα είναι η λανθασμένη έξοδος του μοντέλου για κάποια αρχιτεκτονικά μοντέλων.
Σε αυτή την περίπτωση, η σειρά των εργασιών μπορεί να επηρεάσει. Είναι δυνατό να λάβετε λανθασμένα αποτελέσματα ανάλογα με το αν η ενεργοποίηση με συνβολές ή η残余 σύνδεση έρχεται πρώτα. Ο seul πραγματικός τρόπος να διασφαλίσετε ότι όλα λειτουργούν σωστά είναι να πάρτε το μοντέλο σας, να το τρέξετε στην προοριζόμενη συσκευή και να συγκρίνετε το αποτέλεσμα με μια έκδοση desktop. Για αυτό το τεστ, είναι χρήσιμο να έχετε τουλάχιστον ένα ημι-εκπαιδευμένο μοντέλο διαθέσιμο, αλλιώς η αριθμητική σφάλμα μπορεί να συσσωρευτεί για κακώς τυχαία αρχικοποιημένα μοντέλα. Ακόμη και αν το τελικό εκπαιδευμένο μοντέλο θα λειτουργήσει σωστά, τα αποτελέσματα μπορεί να είναι khá διαφορετικά μεταξύ της συσκευής και του desktop για ένα τυχαία αρχικοποιημένο μοντέλο.
Απώλεια ακρίβειας
Το iPhone χρησιμοποιεί εκτενώς ακρίβεια μισής ακρίβειας για εύρεση. Ενώ κάποια μοντέλα δεν έχουν καμία αξιοσημείωτη υποβάθμιση ακρίβειας λόγω των λιγότερων bits στη floating point αναπαράσταση, άλλα μοντέλα μπορεί να υποφέρουν. Μπορείτε να προσεγγίσετε την απώλεια ακρίβειας αξιολογώντας το μοντέλο σας στο desktop με μισή ακρίβεια και υπολογίζοντας ένα τεστ μετρητή για το μοντέλο σας. Ένας ακόμη καλύτερος τρόπος είναι να το τρέξετε σε μια πραγματική συσκευή για να δείτε αν το μοντέλο είναι τόσο ακριβές όσο προορίζεται.
Προφίλ
Διάφορες μοντέλα iPhone έχουν διαφορετικές ικανότητες υλικής υποδομής. Τα τελευταία έχουν βελτιωμένα μονάδες επεξεργασίας Neural Engine που μπορούν να ανυψώσουν την συνολική απόδοση σημαντικά. Είναι βελτιστοποιημένα για bestimmtes εργασίες και το CoreML είναι σε θέση να διανείμει έξυπνα την εργασία μεταξύ CPU, GPU και Neural Engine. Τα Apple GPU έχουν επίσης βελτιωθεί με τον καιρό, ώστε να είναι φυσιολογικό να δείτε διαφορετικές επιδόσεις σε διάφορα μοντέλα iPhone. Είναι μια καλή ιδέα να δοκιμάσετε τα μοντέλα σας σε ελάχιστα υποστηριζόμενες συσκευές για να διασφαλίσετε τη μέγιστη συμβατότητα και αποδεκτή απόδοση για παλαιότερες συσκευές.
Είναι επίσης αξιοσημείωτο ότι το CoreML μπορεί να βελτιστοποιήσει μακριά κάποια από τα ενδιάμεσα στρώματα και τις υπολογίσεις στην θέση, που μπορεί να βελτιστοποιήσει δραματικά την απόδοση. Ένας άλλος παράγοντας που πρέπει να ληφθεί υπόψη είναι ότι μερικές φορές, ένα μοντέλο που εκτελείται χειρότερα σε desktop μπορεί να κάνει εύρεση γρηγορότερα στο iOS. Αυτό σημαίνει ότι αξίζει να δαπανήσετε κάποιο χρόνο πειραματιζόμενοι με διάφορες αρχιτεκτονικές.
Για ακόμη περισσότερη βελτιστοποίηση, το Xcode έχει ένα ωραίο εργαλείο Instruments με ένα πρότυπο ακριβώς για τα μοντέλα CoreML που μπορεί να δώσει μια πιο πλήρη έμπνευση για το τι επιβραδύνει την εύρεση του μοντέλου σας.
Συμπέρασμα
Κανείς δεν μπορεί να προβλέψει όλους τους πιθανούς κινδύνους όταν αναπτύσσει ML μοντέλα για iOS. Ωστόσο, υπάρχουν κάποια λάθη που μπορούν να αποφευχθούν αν ξέρετε τι να ψάχνετε. Ξεκινήστε τη μετατροπή, επικύρωση και προφίλ των ML μοντέλων σας νωρίς για να διασφαλίσετε ότι το μοντέλο σας θα λειτουργήσει σωστά και θα ταιριάξει με τις επιχειρηματικές σας απαιτήσεις, και ακολουθήστε τις συμβουλές που περιγράφονται παραπάνω για να διασφαλίσετε την επιτυχία σας όσο γρήγορα δυνατόν.












