Ko delate na področju podatkovne znanosti, se običajno znajdete pred novim izzivom, potem ko končate dolgo zanko usposabljanja, natančnega prilagajanja in izboljšav. Čestitamo za izdelavo modela ML, ki ima dobro delovanje in ustreza vašim potrebam. Zdaj je izziv, ki ga imate pri roki, kako lahko to lepo tehnologijo zagotovite predvidenim uporabnikom? Ali morda kako lahko učinkovito komunicirate o svojih rezultatih z deležniki v vašem podjetju? Ali celo, kako lahko rezultate svojega modela učinkovito delite s svojimi sodelavci za boljše sodelovanje?
Uvajanje strojnega učenja je lahko včasih težavno, saj bomo uporabljali tehnologije in tehnike izven običajnega nabora spretnosti, potrebnih za izdelavo modelov.
V tem članku bomo odkrili način za uvajanje modelov strojnega učenja samo z uporabo pythona. In na tej poti bomo zgradili model strojnega prevajanja in spletno stran.
Tukaj so torej koraki, ki jih bomo videli:
-
Uporaba Huggingface modelov za strojno prevajanje.
-
Odkrivanje Anvil in izdelava spletnega uporabniškega vmesnika za naš model.
-
Povezovanje zaledja in sprednjega dela ter služenje svetu z našim delom!
Zgradite model strojnega prevajanja
Huggingface je skupnost AI, ki si prizadeva za »demokratizacijo dobrega strojnega učenja«. V okviru te pobude lahko najdete veliko usposobljenih modelov za različne naloge strojnega učenja: segmentacija slike, besedilo v govor, ustvarjanje besedila ... in tudi strojno prevajanje!
Strojno prevajanje je preprosto naloga prevajanja med dvema jezikoma, ki jo izvaja del programske opreme, v našem primeru model strojnega učenja, zgrajen s transformatorji.
Transformator je arhitektura globokega učenja, ki temelji na pozornosti. Zaženimo ga na vašem računalniku!
Za prenos modela MT in izvedbo prevoda bomo uporabili transformers, knjižnico python.
pip install torch
pip install transformers
Po namestitvi potrebnih paketov uvozite naslednje module:
from transformers import MarianTokenizer, MarianMTModel
from typing import List
Vzemimo model, ki prevede stavek iz nemščine v angleščino. Potrebujemo ime modela:
src= "de"
trg= "en"
mname= f'Helsinki-NLP/opus-mt-{src}-{trg}'
Zdaj pa uvozimo usposobljeni model in tokenizer z uporabo naslednjih vrstic:
model = MarianMTModel.from_pretrained(mname)
tok = MarianTokenizer.from_pretrained(mname)
Velikost prenosa je približno 300 MB, ko končate, lahko model shranite v lokalni imenik z naslednjim:
model.save_pretrained("./models/de_en/")
tok.save_pretrained("./models/de_en/tok")
Poglejmo model:
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])
Zdaj bi morali imeti angleški prevod stavka shranjen v words[0]
.
Odkrijte Anvil in zgradite spletni uporabniški vmesnik
Anvil je ogrodje in nabor rešitev, ki omogoča izdelavo spletnih aplikacij samo s kodo python. Ima urejevalnik povleci in spusti za izdelavo spletnega uporabniškega vmesnika in vam omogoča, da kodo iz lokalnega računalnika povežete z uporabniškim vmesnikom, ki ga zgradite in gostite svojo aplikacijo, tako da vam ponudi povezavo, ki jo lahko delite.
Začnimo torej z ustvarjanjem aplikacije tukaj. Izberite prazno aplikacijo in nato materialno oblikovanje.
Videti bi morali nekaj takega:
Zdaj bom računal na vas, da boste uporabili urejevalnik in zgradili nekaj podobnega naslednjemu:
V tem preprostem uporabniškem vmesniku imamo dva spustna menija za izbiro izvornega in ciljnega jezika. Imamo tudi TextBox za vnos izvornega besedila in komponento richText za prikaz prevedenega besedila. Vidite lahko tudi gumb za začetek prevajalske naloge.
Za sinhronizacijo z odrezki kode, ki jih boste videli spodaj, komponentam dodelite enake ID-je. Spodaj lahko najdete primer, kje lahko nastavite ID komponente:
ID-ji, ki jih uporabljamo, so:
Komponenta |
ID |
---|---|
Spustni meni za izvorni jezik | source_lang |
Spustni meni za ciljni jezik | dest_lang |
Besedilno polje izvornega jezika | source_text |
Prevedeno besedilo RichText | prevedeno_besedilo |
Funkcija Onclick
Dodali smo gumb, ki se uporablja za začetek prevoda. V urejevalniku kliknite gumb in se pomaknite navzdol na plošči lastnosti. Na dnu boste videli razdelek z dogodki. V besedilno območje zraven »klikni« vnesite »prevedi« in nato kliknite puščico na desni strani besedilnega območja.
To vas bo pripeljalo do pogleda kode, kjer boste videli nekaj samodejno ustvarjene kode python.
Ugotovili boste, da je Anvil samodejno dodal funkcijo, imenovano translate. Poklican bo vsakič, ko kliknemo gumb v našem uporabniškem vmesniku.
Takole bi morala izgledati funkcija:
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
Ta funkcija opravlja 3 glavne naloge:
-
Pridobite informacije iz uporabniškega vmesnika
-
Pošljite informacije našemu zaledju z uporabo strežniške funkcije »translation« (to bomo razložili v naslednjem razdelku)
-
Pošljite prevedeno besedilo v uporabniški vmesnik.
Funkcija strežnika
Osredotočimo se na to vrstico kode:
translated_text=anvil.server.call("translation",text,src_lang,dest_lang)
Anvil.server.call uporabljamo za klic strežniške funkcije, imenovane translation
, ki jo bomo definirali v naši zaledni kodi v lokalnem računalniku.
Ta funkcija bo služila kot povezava med spletnim uporabniškim vmesnikom in zaledno kodo, ki se bo izvajala na našem modelu strojnega prevajanja.
Kot ste opazili, pošljemo tudi parametre te funkcije v funkciji anvil.server.call
.
Namestite naš model MT
Najprej namestimo nakovalo
pip install anvil-uplink
Zdaj smo zgradili naš spletni vmesnik v urejevalniku nakovala in imamo osnovne kodne bloke za zagon našega modela strojnega prevajanja in izvedbo prevoda.
Naslednji korak je definiranje funkcije strežnika, o kateri smo govorili v prejšnjem razdelku.
Tukaj je koda funkcije:
@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]
Funkcija bo prevzela 3 parametre, poslane iz sprednjega dela, pretvorila izvorni in ciljni jezik v ustrezne jezikovne kode in nato naložila modele ter izračunala prevod in vrnila rezultat.
Način, kako to funkcijo nakovalu razglasiti kot strežniško funkcijo, je z uporabo dekoraterja
@anvil.server.callable
.
Narediti moramo še zadnji korak, da povežemo zaledno kodo, ki jo lahko izvajamo v prenosnem računalniku Jupyter, z našo aplikacijo nakovalo.
Pojdite v spletni urejevalnik anvil, kliknite ikono zobnika in nato kliknite »Povezava navzgor ...«.
Glejte spodnji zaslon
Videli boste pojavno okno, nato kliknite »Omogoči povezavo do strežnika za to aplikacijo«, da dobite kodo povezave, ki jo kopirate.
Kodo prilepite v naslednjo kodno vrstico:
anvil.server.connect("code here")
Ta vrstica bo zagnala strežnik, ki poveže vaš lokalni kodni skript ali prenosnik jupyter z aplikacijo nakovalo s funkcijo translation
, registrirano kot strežniška funkcija.
Zadnji korak
Do te točke imate zaledni strežnik, ki deluje s strežniško funkcijo, ki naloži model strojnega prevajanja in izvede prevod po upoštevanju parametrov, poslanih iz sprednjega dela. Ta številka povzema vse, kar smo skupaj izvedli doslej.
Zadnji korak je zagon aplikacije s klikom na gumb za zagon v zgornjem središču urejevalnika nakovala.
Ko zaženete aplikacijo, vidite v zgornjem desnem kotu gumb »objavi to aplikacijo«, ki vam bo ponudil povezavo, ki jo lahko delite z drugimi za dostop do aplikacije in prevajanje!
Zaključek
Z upoštevanjem tega članka ste lahko uvedli model MT in zgradili spletni vmesnik za njegovo uporabo.
Še veliko je treba odkriti o tem, kako učinkovito razmestiti model z uporabo nakovala, toda zdaj imate osnove za začetek svoje poti uvajanja in povečate potencial svojega predznanja v Pythonu, da naredite veliko več!
Pridite na eno od naših brezplačnih delavnic
Začnite svojo kariero podatkovnega znanstvenika z našimi brezplačnimi delavnicami, ki temeljijo na prilagodljivem učnem načrtu in jih vodijo strokovnjaki iz industrije.