Machine Learning με TensorFlow σε Google Cloud Platform (GCP)

Σε αυτό το άρθρο θα σας ενημερώσω για τα δύο Προγράμματα Εξειδίκευσης (Specialization Courses) που έχει το Google Cloud Platform στην e-learning πλατφόρμα της Coursera.

Πρώτα όμως θα σας πω πως τα βρήκα. Στις αρχές του χρόνου, είχα διαβάσει ένα άρθρο του Lak Lakshmanan στο οποίο έγραφε για τα 10 μαθήματα που έφτιαξε με την ομάδα του. Τα είχαν χωρίσει σε δύο Προγράμματα Εξειδίκευσης, από 5 μαθήματα το κάθε ένα. Εκείνη την χρονική περίοδο δεν είχα χρόνο οπότε τα έβαλα στον φάκελο με αυτά που θέλω να διαβάσω.

Κάποια στιγμή παρακολούθησα ένα webinar της Google από το Community της Coursera και εκεί «κέρδισα» ένα μήνα Δωρεάν για ένα μόνο Πρόγραμμα Εξειδίκευσης.

Έτσι λοιπόν έκανα εγγραφή στο Machine Learning with TensorFlow on Google Cloud Platform. Γενικά, εδώ θα μαθαίνεις τι είναι Machine Learning (προτιμώ τους Αγγλικούς όρους από τους Ελληνικούς), σε ποια προβλήματα μπορεί να βοηθήσει… και μέσα από το qwiklabs θα κάνεις την εξάσκηση σου, θα τελειώσεις τα assignments σου.

qwiklabs

Στο 1ο μάθημα, How Google Does ML, γίνεται μια γενική ενημέρωση για το πρόγραμμα εξειδίκευσης, συνεχίζουν με την στρατηγική του AI first την οποία ακολουθεί η Google, περνάμε στο πως κάνει η Google το ML όλα αυτά τα χρόνια, στο προτελευταίο μάθημα μιλάνε για το τι πρέπει να αποφύγεις ή/και τι να έχεις υπ’ όψιν σου όταν θες να χρησιμοποιήσεις ML σε αυτό που φτιάχνεις και τελειώνουν με την χρήση του δικού τους Python notebook.

Στο Launching into ML γίνεται μια ιστορική αναδρομή του ML, ενημέρωση για τον λόγο που τα Neural Networks τα πάνε τόσο καλά πλέον σε μια μεγάλη πληθώρα προβλημάτων του Data Science. Οι στόχοι που έχουν είναι όταν τελειώσεις αυτό το μάθημα να:
Ξέρεις για ποιο λόγο είναι τόσο δημοφιλή το Deep Learning,
Βελτιστοποιείς και αξιολογείς μοντέλα χρησιμοποιώντας λειτουργίες απώλειας και μετρήσεις απόδοσης,
Αντιμετωπίζεις τα κοινά προβλήματα που θα συναντήσεις στο ML &
Δημιουργείς επαναλαμβανόμενη και κλιμακούμενη εκπαίδευση, αξιολόγηση και δοκιμαστικά σύνολα δεδομένων (train, evaluation & test datasets).

Λογική συνέχεια είναι η εισαγωγή στο Tensorflow. Και σε αυτό το πρόγραμμα εξειδίκευσης αλλά και στο επόμενο τα εργαστήρια δουλεύουν με το TensorFow 1.7 ή 1.8 (Αυτή την περίοδο είναι να βγει το 2.0). Στο μάθημα ξεκινάνε με το πως να χρησιμοποιείς το TensorFlow σε χαμηλό επίπεδο (το υψηλότερο είναι η χρήση του tf.estimator) και δουλεύουμε μέσα από τις απαραίτητες έννοιες και API έτσι ώστε να μπορούμε να γράψουμε κατανεμημένα (distributed) μοντέλα ML. Εξηγούν πώς να κλιμακώσουμε το training αυτού του μοντέλου και να προσφέρουμε προβλέψεις υψηλής απόδοσης χρησιμοποιώντας το Cloud ML Engine.

Το ML μοντέλο που φτιάξαμε πρέπει να το βελτιώσουμε, να βελτιώσουμε την ακρίβεια του, να βρούμε ποιες στήλες έχουν τα χαρακτηριστικά εκείνα που μας είναι χρήσιμα. Στο Feature Engineering μαθαίνουμε πως να προεπεξεργαστούμε και να τα μεταμορφώσουμε για τη βέλτιστη χρήση στο ML μοντέλο μας.

Το Art and Science of Machine Learning είναι το τελευταίο μάθημα του Προγράμματος. Σε αυτό το μάθημα μας δείχνουν τις βασικές δεξιότητες του ML, την ορθή κρίση και τον πειραματισμό για να συντονίσουμε και να βελτιστοποιήσουμε το ML μοντέλο μας για να έχει την καλύτερη απόδοση. Αρχικά πως να το ρυθμίσουμε με μη αυτόματο τρόπο για να δείτε τις επιπτώσεις τους στην απόδοση του μοντέλου. Και μόλις εξοικειωθούμε με τους υπερπαραμετρητές, πώς μπορούμε να το συντονίσουμε με αυτόματο τρόπο χρησιμοποιώντας το Cloud ML Machine στο Google Cloud Platform.

Τελειώνοντας αυτό το πρόγραμμα εξειδίκευσης είχα μια καλύτερη γνώση του TensorFlow. Και πολλές επαφές με το Google Cloud.

Το Specialization κατάφερα να το τελειώσω πριν το τέλος του δωρεάν μήνα. Έτσι ακύρωσα την συνδρομή μου και δεν με χρέωσαν!

Μέσα στον Νοέμβριο παρακολούθησα το Let’s Talk AI της Google. Εκεί μας έδωσαν, πάλι, ένα μήνα Δωρεάν για ένα μόνο Specialization Course.

Έτσι ξεκίνησα το Advanced ML with TensorFlow on GCP. Επειδή το τελείωσα πρόσφατα, 08/12/2018, το προτείνω σε όσους έχουν μέτριες-προχωρημένες γνώσεις από ML. Διαφορετικά καλό είναι να ξεκινήσετε από το απλό Specialization που γράφω πιο πάνω.

Το 1ο Specialization ήταν το… ζέσταμα, ήταν τα ορεκτικά. Εδώ ξεκινάει η μαγεία του ML.

Σε αυτή την εξειδίκευση «βρόμισα» τα χέρια μου χρησιμοποιώντας την Google Cloud Platform. Απόκτησα πρακτική εμπειρία βελτιστοποιώντας, αναπτύσσοντας και κλιμακώνοντας τα ML μοντέλα παραγωγής διαφόρων τύπων στα labs. Αυτή η εξειδίκευση μου δίδαξε πώς να δημιουργήσω προσαρμοσμένα, ακριβή και έτοιμα για παραγωγή μοντέλα για δομημένα δεδομένα (structured data), δεδομένα εικόνας (image data), χρονολογικές σειρές (time series), κείμενο φυσικής γλώσσας (NLP) και συστήματα συστάσεων (recommendation systems).

Με το Καλημέρα κολυμπάμε στα βαθιά! Στο End-to-End ML with TensorFlow on GCP, ξεκίνησα με την εξέταση των βημάτων για την ανάπτυξη (deploy) του ML σε περιβάλλον παραγωγής, συνέχισα με την εξερεύνηση των δεδομένων χρησιμοποιώντας το Datalab και το BigQuery (είναι πραγματικά απίστευτα εργαλεία!), με την χρήση του Pandas στο Datalab έφτιαξα ένα σύνολο δεδομένων (dataset), έχτισα το δικό μου μοντέλο, το έκανα λειτουργικό προεπεξεργάζοντας τα δεδομένα σε κλίμακα και το εκπαίδευσα στο Cloud ML Engine!!!!!

Και ενώ νόμιζα ότι έχω μπει στο ψητό, συνειδητοποίησα ότι έκανα λάθος. Ακόμα στο 1ο πιάτο βρισκόμουνα.

Στο επόμενο μάθημα, Production Machine Learning Systems, είδα τα συστατικά και τις βέλτιστες πρακτικές ενός συστήματος ML υψηλής απόδοσης σε περιβάλλοντα παραγωγής. Την αρχιτεκτονική του. Τι άλλο χρειάζεται να κάνει ένα σύστημα παραγωγής ML. Τις αποφάσεις σχεδιασμού υψηλού επιπέδου γύρω από την εκπαίδευση και την εξυπηρέτηση μοντέλων που θα χρειαστεί για το σωστό προφίλ απόδοσης για το μοντέλο. Την χρήση δεδομένων για αναλύσεις βασισμένες στο Cloud και στο ML. Πώς να μεταφέρω τα δεδομένα στο σύννεφο και να τροφοδοτώ το ML μοντέλα. Γιατί τα δεδομένα να βρίσκονται στο σύννεφο, πως να αποκτήσω τα πλεονεκτήματα της κλίμακας και να χρησιμοποιήσω πλήρως διαχειριζόμενες υπηρεσίες και ποιες είναι οι επιλογές που πρέπει να δώσω στα δεδομένα. Πώς να αναγνωρίζω τους τρόπους με τους οποίους εξαρτάται το μοντέλο από τα δεδομένα , να πέρνω αποφάσεις σχετικά με το κόστος, να γνωρίζω πότε να επαναφέρω τα μοντέλα σε προηγούμενες εκδόσεις, να εντοπίζω τα αίτια της παρατηρούμενης συμπεριφοράς μοντέλου και να εφαρμόζω αγωγούς. Πώς να προσδιορίσω τις παραμέτρους απόδοσης για τα ML μοντέλα.

Με το Image Understanding with TensorFlow on GCP είδα τους τρόπους, την στρατηγική που πρέπει να ακολουθήσω για να φτιάξω ένα image classification (κατανεμητή εικόνας) με CNN (συνελικτικά νευρωνικά δίκτυα).

Ξεκίνησα με Linear, πέρασα σε DNN και τελείωσα με CNN μοντέλο. Χρησιμοποίησα dropout, pooling, είδα το data augmentation & image augmentation, το transfer learning, batch normalization και τα residual networks. Εδώ έχει ένα lab σε TPU. Είναι προαιρετικό επειδή πρέπει να πληρώσεις $5. Όμως το να τρέξεις το ResNet σε TPU τα αξίζει! Στο τέλος είδα και το AutoML.

Στο Sequence Models for Time Series and Natural Language Processing έμαθα για τα μοντέλα ακολουθιών και τις εφαρμογές τους και την επεξεργασία φυσικής γλώσσας.

• Πρόβλεψη μελλοντικές τιμές μιας χρονοσειράς
• Ταξινόμηση ελεύθερου κειμένου
• Αντιμετώπιση χρονικών σειρών και προβλημάτων κειμένου με RNN (επαναλαμβανόμενα νευρωνικά δίκτυα)
• Επιλογή μεταξύ RNN / LSTM και απλούστερων μοντέλων
• Εκπαίδευση και επαναχρησιμόποιηση ενσωματωμένων λέξεων σε προβλήματα κειμένου
Αυτά ήταν κάποια από όσα έμαθα εδώ.

Και έτσι έφτασα στο καλύτερο. Το τελευταίο μάθημα ήταν το κερασάκι στην τούρτα. Με το Recommendation Systems with TensorFlow on GCP κατάφερα στο τέλος να φτιάξω ένα Recommendation System από την αρχή μέχρι το τέλος χρησιμοποιώντας πάρα πολλά από τα εργαλεία που υπάρχουν στο Google Cloud Platform. IAM & admin, Storage, BigData, Composer, Cloud Shell… είναι κάποια από αυτά. Δεν υπάρχει λόγος να μιλήσω/γράψω για το Content-Based ή το Collaborative Filtering ή το Hybrid Recommendation System. Μόνο για το τελευταίο project.

Θετικά
Όλο το «ταξίδι» ήταν υπέροχο. Από την αρχή του 1ου προγράμματος εξειδίκευσης, με τις ορολογίες και τα ιστορικά δεδομένα μέχρι και το τέλος του 2ου προγράμματος.

Αρνητικά
«Αυτό ΔΕΝ είναι αρνητικό του μαθήματος ΑΛΛΑ δικό μου!»
Υπάρχει ένα ακόμα προαιρετικό project. Δεν τόλμησα να το «πιάσω». Όταν σου λέει στο project η εκπαιδεύτρια σου ότι της πήρε 12 ώρες στον υπολογιστή της (!!!) με TPU, τότε απλά βλέπεις τα αποτελέσματα που έβγαλε και κουνάς το κεφάλι σου συγκαταβατικά συμφωνώντας!!!!

Τέλος να ενημερώσω ότι στις 11 για την Αμερική και στις 12/12 για τον υπόλοιπο κόσμο είναι το 1ο DevFest OnAir. Σε όποιον κάνει εγγραφή και το παρακολουθήσει δίνουν δωρεάν για ένα μήνα στο Qwiklabs.