Strādājot datu zinātnes jomā, jūs parasti saskaraties ar jaunu izaicinājumu pēc ilgas apmācības, precizēšanas un uzlabošanas cikla. Apsveicam ar ML modeļa izveidi, kam ir laba veiktspēja un kas atbilst jūsu vajadzībām. Tagad jūsu izaicinājums ir tas, kā jūs varat piegādāt šo jauko tehnoloģiju paredzētajiem lietotājiem? Vai varbūt kā jūs varat efektīvi informēt par savu rezultātu ar jūsu uzņēmuma ieinteresētajām personām? Vai pat kā jūs varat efektīvi kopīgot modeļa rezultātus ar kolēģiem, lai labāk sadarbotos?
Mašīnmācības ieviešana dažkārt var būt sarežģīta, jo mēs izmantosim tehnoloģijas un paņēmienus no parastajām prasmēm, kas nepieciešamas modeļu izveidei.
Šajā rakstā mēs atklāsim veidu, kā izvietot mašīnmācīšanās modeļus, izmantojot tikai python. Pa ceļam mēs izveidosim mašīntulkošanas modeli un tīmekļa lapu.
Tālāk ir norādītas darbības, kuras mēs redzēsim:
1. Izmantojiet Huggingface mašīntulkošanas modeļus.
2. Atklājiet Anvil un izveidojiet tīmekļa lietotāja saskarni mūsu modelim.
- Aizmugursistēmas un priekšgala savienošana un mūsu darba kalpošana pasaulei!
Izveidojiet mašīntulkošanas modeli
Huggingface ir AI kopiena, kas strādā, lai “demokratizētu labu mašīnmācību”. Saskaņā ar šo iniciatīvu jūs varat atrast daudzus apmācītus modeļus dažādiem mašīnmācīšanās uzdevumiem: attēlu segmentēšana, teksta pārvēršana runā, teksta ģenerēšana... un arī mašīntulkošana!
Mašīntulkošana ir vienkārši tulkošanas uzdevums starp divām valodām, ko veic programmatūra, mūsu gadījumā ar transformatoriem izveidots mašīnmācīšanās modelis.
Transformators ir dziļas mācīšanās arhitektūra, kuras pamatā ir uzmanība. Sāksim to darboties jūsu mašīnā!
Mēs izmantosim transformatorus, python bibliotēku, lai lejupielādētu MT modeli un veiktu tulkojumu.
pip install torch
pip install transformers
Pēc nepieciešamo pakotņu instalēšanas importējiet šādus moduļus:
from transformers import MarianTokenizer, MarianMTModel
from typing import List
Iegūsim modeli, kas tulko teikumu no vācu valodas angļu valodā. Mums ir nepieciešams modeļa nosaukums:
src= "de"
trg= "en"
mname= f'Helsinki-NLP/opus-mt-{src}-{trg}'
Tagad importēsim apmācīto modeli un marķieri, izmantojot šādas rindas:
model = MarianMTModel.from_pretrained(mname)
tok = MarianTokenizer.from_pretrained(mname)
Lejupielādes lielums ir aptuveni 300 MB, pēc pabeigšanas modeli varat saglabāt vietējā direktorijā, izmantojot:
model.save_pretrained("./models/de_en/")
tok.save_pretrained("./models/de_en/tok")
Apskatīsim modeli:
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])
Tagad jums vajadzētu būt teikuma tulkojumam angļu valodā, kas ir saglabāts vārdos[0].
Atklājiet Anvil un izveidojiet tīmekļa lietotāja interfeisu
Anvil ir ietvars un risinājumu kaudze, kas ļauj veidot tīmekļa lietojumprogrammas, izmantojot tikai Python kodu. Tam ir vilkšanas un nomešanas redaktors, lai izveidotu tīmekļa lietotāja interfeisu, un tas ļauj savienot kodu no vietējās mašīnas ar izveidoto lietotāja interfeisu un mitināt savu lietojumprogrammu, sniedzot saiti, kuru varat kopīgot.
Tāpēc sāksim ar lietojumprogrammas izveidi no šeit. Izvēlieties tukšu pieteikumu, pēc tam materiāla dizainu.
Jums vajadzētu redzēt kaut ko līdzīgu šim:
Tagad es paļaujos uz to, ka izmantosit redaktoru un izveidosit kaut ko līdzīgu šim:
Šajā vienkāršajā lietotāja saskarnē mums ir divas nolaižamās izvēlnes avota un mērķa valodu izvēlei. Mums ir arī TextBox, lai ievadītu avota tekstu, un richText komponents, lai parādītu tulkoto tekstu. Varat arī redzēt pogu, lai sāktu tulkošanas uzdevumu.
Lai sinhronizētu ar tālāk redzamajiem koda fragmentiem, piešķiriet komponentiem tos pašus ID. Tālāk varat atrast piemēru, kur var iestatīt komponenta ID:
Mūsu izmantotie ID ir:
Komponents |
ID |
---|---|
Avotvalodas nolaižamā izvēlne | avota_valoda |
Galamērķa valodas nolaižamā izvēlne | dest_lang |
Avotvaloda TextBox | avota_teksts |
Tulkots teksts RichText | tulkots_teksts |
Onclick funkcija
Mēs esam pievienojuši pogu, kas tiek izmantota, lai sāktu tulkošanu. Redaktorā noklikšķiniet uz pogas un pēc tam ritiniet uz leju rekvizītu panelī. Apakšā redzēsit notikumu sadaļu. Teksta zonā blakus “noklikšķināt” ievadiet “tulkot” un pēc tam noklikšķiniet uz bultiņas šīs teksta zonas labajā pusē.
Tas novirzīs jūs uz koda skatu, kurā redzēsit automātiski ģenerētu Python kodu.
Jūs atklāsiet, ka lakta ir automātiski pievienojusi funkciju tulkot. Tas tiks izsaukts katru reizi, kad tiek noklikšķināts uz pogas mūsu lietotāja saskarnē.
Lūk, kā šai funkcijai vajadzētu izskatīties:
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
Šī funkcija veic 3 galvenos uzdevumus:
1. Saņemiet informāciju no lietotāja interfeisa
2. Nosūtiet informāciju uz mūsu aizmugursistēmu, izmantojot servera funkciju “tulkošana” (mēs to paskaidrosim nākamajā sadaļā)
3. Nosūtiet tulkoto tekstu uz lietotāja interfeisu.
Servera funkcija
Koncentrēsimies uz šo koda rindiņu:
translated_text=anvil.server.call("translation",text,src_lang,dest_lang)
Mēs izmantojam anvil.server.call, lai izsauktu servera funkciju, ko sauc par "tulkojumu", ko mēs definēsim mūsu aizmugursistēmas kodā vietējā datorā.
Šī funkcija kalpos kā savienojums starp tīmekļa lietotāja interfeisu un aizmugursistēmas kodu, kas darbosies mūsu mašīntulkošanas modelī.
Kā jau pamanījāt, šīs funkcijas parametrus nosūtām arī funkcijā anvil.server.call
.
Izvietojiet mūsu MT modeli
Vispirms uzstādīsim laktu
pip install anvil-uplink
Tagad mēs esam izveidojuši savu tīmekļa saskarni laktas redaktorā, un mums ir pamata koda bloki, lai palaistu mūsu mašīntulkošanas modeli un veiktu tulkojumu.
Nākamais solis ir definēt servera funkciju, par kuru mēs runājām iepriekšējā sadaļā.
Šeit ir funkcijas kods:
@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 ņems 3 parametrus, kas nosūtīti no priekšgala, pārveidos avota un galamērķa valodas uz attiecīgajiem valodu kodiem un pēc tam ielādēs modeļus un aprēķinās tulkojumu un atgriezīs rezultātu.
Šo funkciju var deklarēt laktā kā servera funkciju, izmantojot dekoratoru
@anvil.server.callable
.
Mums ir jāveic pēdējā darbība, lai savienotu aizmugursistēmas kodu, ko varam palaist Jupyter piezīmjdatorā, ar mūsu laktas lietojumprogrammu.
Dodieties uz anvil tiešsaistes redaktoru, noklikšķiniet uz zobrata ikonas un pēc tam noklikšķiniet uz “Augšupiesaite…”.
Skatiet zemāk redzamo ekrānu
Tiks parādīts uznirstošais logs, pēc tam noklikšķiniet uz “Iespējot servera augšupsaiti šai lietotnei”, lai iegūtu kopēto savienojuma kodu.
Jūs ielīmējat kodu šādā koda rindā:
anvil.server.connect("code here")
Šajā rindā tiks palaists serveris, kas savieno jūsu lokālā koda skriptu vai Jupyter piezīmju grāmatiņu ar anvil lietojumprogrammu ar funkciju "tulkošana", kas reģistrēta kā servera funkcija.
Pēdējais solis
Līdz šim jūsu aizmugursistēmas serveris darbojas ar servera funkciju, kas ielādē mašīntulkošanas modeli un veic tulkojumu, ņemot vērā no priekšgala nosūtītos parametrus. Šis skaitlis apkopo līdz šim kopīgi īstenoto.
Pēdējais solis ir palaist lietojumprogrammu, noklikšķinot uz palaist pogas laktas redaktora augšējā centrā.
Pēc lietojumprogrammas palaišanas augšējā labajā stūrī ir redzama poga “publicēt šo lietotni”, kas dos jums saiti, kuru varat kopīgot, lai piekļūtu lietojumprogrammai un veiktu tulkojumu!
Secinājums
Sekojot šim rakstam, esat varējis izvietot MT modeli un izveidot tīmekļa saskarni tā lietošanai.
Joprojām ir daudz ko atklāt par to, kā efektīvi izvietot modeli, izmantojot laktu, taču tagad jums ir pamati, lai sāktu izvietošanas ceļu un turpinātu izmantot savas iepriekšējās zināšanas Python, lai paveiktu daudz vairāk!
Nāciet uz kādu no mūsu bezmaksas darbnīcām
Sāciet savu karjeru kā datu zinātnieks ar mūsu bezmaksas semināriem, kuru pamatā ir pielāgojama mācību programma un kuras vada nozares eksperti.