Αναπτύξτε το μοντέλο μηχανικής εκμάθησης με Python

python
μηχανική εκμάθηση
μοντέλο ML
Αναπτύξτε το μοντέλο μηχανικής εκμάθησης με Python cover image

Όταν εργάζεστε στον τομέα της επιστήμης δεδομένων, συνήθως βρίσκεστε αντιμέτωποι με μια νέα πρόκληση αφού ολοκληρώσετε έναν μακρύ κύκλο εκπαίδευσης, τελειοποίησης και βελτίωσης. Συγχαρητήρια για την κατασκευή ενός μοντέλου ML που έχει καλή απόδοση και ανταποκρίνεται στις ανάγκες σας. Τώρα η πρόκληση που έχετε στη διάθεσή σας είναι πώς μπορείτε να παραδώσετε αυτό το ωραίο κομμάτι της τεχνολογίας στους επιδιωκόμενους χρήστες; Ή μήπως πώς μπορείτε να επικοινωνήσετε αποτελεσματικά το αποτέλεσμά σας με τα ενδιαφερόμενα μέρη της εταιρείας σας; Ή ακόμα πώς μπορείτε να μοιραστείτε τα αποτελέσματα του μοντέλου σας με τους συναδέλφους σας αποτελεσματικά για καλύτερη συνεργασία;

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

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

Ορίστε λοιπόν τα βήματα που θα δούμε:

  1. Χρήση μοντέλων αυτόματης μετάφρασης Huggingface.

  2. Ανακάλυψη του Anvil και δημιουργία διεπαφής χρήστη ιστού για το μοντέλο μας.

  3. Συνδέοντας το backend και το frontend και εξυπηρετώντας τον κόσμο τη δουλειά μας!

Μοντέλο Build Machine Translation

Το Huggingface είναι μια κοινότητα τεχνητής νοημοσύνης που εργάζεται για τον «εκδημοκρατισμό της καλής μηχανικής μάθησης». Στο πλαίσιο αυτής της πρωτοβουλίας, μπορείτε να βρείτε πολλά εκπαιδευμένα μοντέλα σε διαφορετικές εργασίες μηχανικής μάθησης: τμηματοποίηση εικόνας, κείμενο σε ομιλία, δημιουργία κειμένου… και επίσης μηχανική μετάφραση!

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

Ένας μετασχηματιστής είναι μια αρχιτεκτονική βαθιάς μάθησης που βασίζεται στην προσοχή. Ας το θέσουμε σε λειτουργία στο μηχάνημά σας!

Θα χρησιμοποιήσουμε transformers, μια βιβλιοθήκη python για να κατεβάσουμε το μοντέλο MT και να εκτελέσουμε μια μετάφραση.

pip install torch
pip install transformers

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

from transformers import MarianTokenizer, MarianMTModel
from typing import List

Ας πάρουμε ένα μοντέλο που μεταφράζει μια πρόταση από τα γερμανικά στα αγγλικά. Χρειαζόμαστε το όνομα του μοντέλου:

src= "de"
trg= "en"
mname= f'Helsinki-NLP/opus-mt-{src}-{trg}'

Τώρα ας εισαγάγουμε το εκπαιδευμένο μοντέλο και το tokenizer χρησιμοποιώντας τις ακόλουθες γραμμές:

model = MarianMTModel.from_pretrained(mname)
tok = MarianTokenizer.from_pretrained(mname)

Το μέγεθος λήψης είναι περίπου 300mb, αφού ολοκληρώσετε, μπορείτε να αποθηκεύσετε το μοντέλο σε έναν τοπικό κατάλογο χρησιμοποιώντας τα ακόλουθα:

model.save_pretrained("./models/de_en/")
tok.save_pretrained("./models/de_en/tok")

Ας δούμε το μοντέλο:

text="ich habe keine ahnung"
gen = model.generate(**tok.prepare_seq2seq_batch(src_texts=[text], return_tensors="pt"))
words: List[str] = tok.batch_decode(gen, skip_special_tokens=True)
print(words[0])

Τώρα θα πρέπει να έχετε την αγγλική μετάφραση της πρότασης αποθηκευμένη στο «words[0]».

Ανακαλύψτε το Anvil και δημιουργήστε μια διεπαφή ιστού

Το Anvil είναι ένα πλαίσιο και μια στοίβα λύσεων που σας επιτρέπουν να δημιουργείτε εφαρμογές Ιστού χρησιμοποιώντας μόνο κώδικα python. Διαθέτει πρόγραμμα επεξεργασίας μεταφοράς και απόθεσης για τη δημιουργία διεπαφής ιστού και σας επιτρέπει να συνδέσετε τον κώδικα από τον τοπικό σας υπολογιστή στο περιβάλλον χρήστη που δημιουργείτε και να φιλοξενήσετε την εφαρμογή σας δίνοντάς σας έναν σύνδεσμο που μπορείτε να μοιραστείτε.

Ας ξεκινήσουμε λοιπόν με τη δημιουργία μιας εφαρμογής από εδώ. Επιλέξτε κενή εφαρμογή και μετά σχεδιασμό υλικού.

Θα πρέπει να δείτε κάτι σαν αυτό:

Anvil

Τώρα θα βασιστώ σε εσάς για να χρησιμοποιήσετε το πρόγραμμα επεξεργασίας και να δημιουργήσετε κάτι παρόμοιο με το εξής:

Anvil Editor

Σε αυτήν την απλή διεπαφή χρήστη, έχουμε δύο αναπτυσσόμενα μενού για την επιλογή της γλώσσας προέλευσης και προορισμού. Έχουμε επίσης ένα TextBox για την εισαγωγή του κειμένου προέλευσης και ένα στοιχείο richText για την εμφάνιση του μεταφρασμένου κειμένου. Μπορείτε επίσης να δείτε ένα κουμπί για να ξεκινήσει η εργασία μετάφρασης.

Για συγχρονισμό με τα αποσπάσματα κώδικα που θα δείτε παρακάτω, δώστε τα ίδια αναγνωριστικά στα στοιχεία. Παρακάτω μπορείτε να βρείτε ένα παράδειγμα όπου μπορείτε να ορίσετε το αναγνωριστικό ενός στοιχείου:

Anvil Editor Rename Component

Τα αναγνωριστικά που χρησιμοποιούμε είναι:

<κεφάλι>

Στοιχείο

Αναγνωριστικό

Αναπτυσσόμενο μενού γλώσσας πηγήςsource_lang
Αναπτυσσόμενο μενού γλώσσας προορισμούdest_lang
Γλώσσα πηγής TextBoxκείμενο_πηγής
Μεταφρασμένο κείμενο RichTexttranslated_text

Λειτουργία Onclick

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

Αυτό θα σας μεταφέρει στην προβολή κώδικα όπου θα δείτε κάποιο κώδικα python που δημιουργείται αυτόματα.

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

Ακολουθεί η εμφάνιση της συνάρτησης:

def translate(self, **event_args):
 """This method is called when the button is clicked"""
 src_lang=self.source_lang.selected_value #get the selected source language
 dest_lang=self.dest_lang.selected_value #get the selected destination language
 text=self.source_text.text   #get the text written in source language
 #call the server function
 translated_text=anvil.server.call("translation",text,src_lang,dest_lang)
 #write the translated text to the UI
 self.translated_text.content=translated_text

Αυτή η λειτουργία εκτελεί 3 κύριες εργασίες:

  1. Λάβετε πληροφορίες από τη διεπαφή χρήστη

  2. Στείλτε τις πληροφορίες στο backend μας χρησιμοποιώντας τη λειτουργία διακομιστή "translation" (θα το εξηγήσουμε στην επόμενη ενότητα)

  3. Στείλτε το μεταφρασμένο κείμενο στη διεπαφή χρήστη.

Λειτουργία διακομιστή

Ας εστιάσουμε σε αυτή τη γραμμή κώδικα:

translated_text=anvil.server.call("translation",text,src_lang,dest_lang)

Χρησιμοποιούμε anvil.server.call για να καλέσουμε μια συνάρτηση διακομιστή που ονομάζεται "translation" που θα ορίσουμε στον κώδικα υποστήριξης στον τοπικό υπολογιστή.

Αυτή η λειτουργία θα χρησιμεύσει ως σύνδεση μεταξύ της διεπαφής χρήστη web και του κώδικα υποστήριξης που θα εκτελείται στο μοντέλο αυτόματης μετάφρασης.

Όπως έχετε παρατηρήσει, στέλνουμε και τις παραμέτρους αυτής της συνάρτησης στη συνάρτηση anvil.server.call.

Αναπτύξτε το μοντέλο μας MT

Ας εγκαταστήσουμε πρώτα το αμόνι

pip install anvil-uplink

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

Το επόμενο βήμα είναι να ορίσετε τη λειτουργία διακομιστή που συζητήσαμε στην προηγούμενη ενότητα.

Εδώ είναι ο κωδικός της συνάρτησης:

@anvil.server.callable
def translation(text,src,dest):
 lang_code={"English":"en",
       "German":"de",
       "French":"fr",
       "Spanish":"es"}
      model=MarianMTModel.from_pretrained("./models/"+lang_code[src]+"_"+lang_code[dest])
 tok=MarianTokenizer.from_pretrained("./models/"+lang_code[src]+"_"+lang_code[dest]+"/tok")
 gen = model.generate(**tok.prepare_seq2seq_batch(src_texts=[text], return_tensors="pt"))
 words: List[str] = tok.batch_decode(gen, skip_special_tokens=True)
 return words[0]

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

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

@anvil.server.callable.

Έχουμε ένα τελευταίο βήμα να κάνουμε για να συνδέσουμε τον κώδικα υποστήριξης που μπορούμε να εκτελέσουμε σε ένα σημειωματάριο jupyter με την εφαρμογή άκμονα.

Μεταβείτε στο ηλεκτρονικό πρόγραμμα επεξεργασίας άκμονα, κάντε κλικ στο εικονίδιο με το γρανάζι και, στη συνέχεια, κάντε κλικ στο «Ανέβασμα…».

Δείτε την παρακάτω οθόνη

Anvil Editor Uplink

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

Anvil Uplink

Επικολλάτε τον κώδικα στην ακόλουθη γραμμή κώδικα:

anvil.server.connect("code here")

Αυτή η γραμμή θα ξεκινήσει έναν διακομιστή που συνδέει το τοπικό σενάριο κώδικα ή το σημειωματάριο jupyter με την εφαρμογή αμόνι με τη συνάρτηση «translation» καταχωρημένη ως λειτουργία διακομιστή.

Τελικό βήμα

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

Anvil Uplink

Ένα τελευταίο βήμα είναι να εκτελέσετε την εφαρμογή κάνοντας κλικ στο κουμπί εκτέλεσης στο επάνω κέντρο του προγράμματος επεξεργασίας άκμονα.

Αφού εκτελέσετε την εφαρμογή, βλέπετε στην επάνω δεξιά γωνία ένα κουμπί "δημοσίευση αυτής της εφαρμογής" που θα σας δώσει έναν σύνδεσμο που μπορείτε να μοιραστείτε για να αποκτήσετε πρόσβαση στην εφαρμογή και να κάνετε τη μετάφρασή σας!

Συμπέρασμα

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

Υπάρχουν ακόμα πολλά που πρέπει να ανακαλύψετε σχετικά με το πώς να αναπτύξετε αποτελεσματικά ένα μοντέλο χρησιμοποιώντας αμόνι, αλλά τώρα έχετε τα βασικά για να ξεκινήσετε το ταξίδι ανάπτυξης και να βελτιώσετε τις προηγούμενες γνώσεις σας στην Python για να κάνετε πολλά περισσότερα!

Ελάτε σε ένα από τα δωρεάν εργαστήριά μας

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


Career Services background pattern

Υπηρεσίες καριέρας

Contact Section background image

Ας μείνουμε σε επαφή

Code Labs Academy © 2024 Όλα τα δικαιώματα διατηρούνται.