Inplementatu zure Machine Learning eredua Python-ekin

python
machine learning
ML eredua
Inplementatu zure Machine Learning eredua Python-ekin cover image

Datu-zientzien alorrean lan egiten duzunean, normalean, erronka berri baten aurrean aurkitzen zara entrenamendu, doikuntza eta hobekuntza luze bat amaitu ondoren. Zorionak errendimendu ona duen eta zure beharrei erantzuten dien ML eredu bat eraikitzeagatik. Orain esku artean duzun erronka zera da: nola eman diezaiekezu teknologia polit hau aurreikusitako erabiltzaileei? Edo agian nola komunika diezaiekezu zure emaitza modu eraginkorrean zure enpresako interesdunei? Edo nola parteka ditzakezu zure ereduaren emaitzak zure lankideekin modu eraginkorrean lankidetza hobea izateko?

Ikaskuntza automatikoa zabaltzea batzuetan zaila izan daiteke, ereduak eraikitzeko behar den ohiko trebetasunetik kanpoko teknologiak eta teknikak erabiliko baititugu.

Artikulu honetan, ikaskuntza automatikoko ereduak python soilik erabiliz hedatzeko modu bat ezagutuko dugu. Eta bide horretan, itzulpen automatikoko eredu bat eta web orri bat eraikiko ditugu.

Beraz, hona hemen ikusiko ditugun urratsak:

  1. Huggingface itzulpen automatikoko ereduak erabiltzea.

  2. Anvil ezagutu eta gure eredurako web UI bat eraikitzea.

  3. Backend-a eta frontend-a konektatzea eta munduari gure lana zerbitzatzea!

Eraiki itzulpen automatikoko eredua

Huggingface "makina ikasketa ona demokratizatzeko" lan egiten duen AI komunitatea da. Ekimen honen baitan, trebatutako eredu asko aurki ditzakezu ikaskuntza automatikoko ataza ezberdinetan: irudien segmentazioa, testutik hizketara, testua sortzea... eta itzulpen automatikoa ere!

Itzulpen automatikoa software baten bidez egiten den bi hizkuntzen arteko itzulpen-zeregin bat besterik ez da, gure kasuan, transformadoreekin eraikitako ikaskuntza automatikoaren eredua.

Transformadorea arretan oinarritutako ikaskuntza sakoneko arkitektura bat da. Jar dezagun martxan zure makinan!

transformers, python liburutegia erabiliko dugu MT eredua deskargatzeko eta itzulpen bat egiteko.

pip install torch
pip install transformers

Behar diren paketeak instalatu ondoren, inportatu modulu hauek:

from transformers import MarianTokenizer, MarianMTModel
from typing import List

Lor dezagun esaldi bat alemanetik ingelesera itzultzen duen eredu bat. Ereduaren izena behar dugu:

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

Orain inporta ditzagun trebatutako eredua eta tokenizatzailea lerro hauek erabiliz:

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

Deskargaren tamaina 300 MB ingurukoa da, amaitu ondoren eredua tokiko direktorio batean gorde dezakezu honako hau erabiliz:

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

Ea eredua:

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])

Orain esaldiaren ingelesezko itzulpena words[0]-n gordeta izan beharko zenuke.

Ezagutu Anvil eta sortu web UI bat

Anvil python kodea erabiliz soilik web aplikazioak eraikitzeko aukera ematen duen marko bat eta irtenbide pila bat da. Web UI eraikitzeko arrastatu eta jaregin editore bat du eta zure tokiko makinatik kodea eraikitzen duzun UI-ra konektatzeko eta zure aplikazioa ostatatzeko aukera ematen dizu parteka dezakezun esteka bat emanez.

Beraz, has gaitezen [hemen] aplikazio bat sortzen (https://anvil.works/build). Aukeratu aplikazio hutsa eta gero materialaren diseinua.

Horrelako zerbait ikusi beharko zenuke:

Anvil

Orain zurekin kontatuko naiz editorea erabiltzeko eta honen antzeko zerbait eraikitzeko:

Anvil Editor

UI sinple honetan, bi DropDown ditugu sorburu eta helmuga hizkuntzak aukeratzeko. Iturburuko testua sartzeko TextBox bat ere badugu eta testu aberatsa testu itzulia bistaratzeko osagai bat. Itzulpen-ataza hasteko Botoi bat ere ikus dezakezu.

Jarraian ikusiko dituzun kode zatiekin sinkronizatzeko, eman ID berdinak osagaiei. Jarraian osagai baten IDa ezar dezakezun adibide bat aurki dezakezu:

Anvil Editor Rename Component

Erabiltzen ari garen IDak hauek dira:

Osagaia

ID

Iturburu-hizkuntza DropDowniturburu_hizkuntza
Helmuga-hizkuntza DropDowndest_lang
Iturburu hizkuntza TextBoxiturburu_testua
Itzulitako testua RichTexttestu_itzultua

Onclick funtzioa

Itzulpena hasteko erabiltzen den botoi bat gehitu dugu. Zure editoretik egin klik botoian eta joan behera propietateen panelean. Behealdean, gertaera atal bat ikusiko duzu. "Klik" ondoko testu-eremuan, idatzi "itzuli" eta, ondoren, egin klik testu-eremu honen eskuinaldean dagoen gezian.

Honek kodearen ikuspegira eramango zaitu eta bertan automatikoki sortutako python kode batzuk ikusiko dituzu.

Ingudea automatikoki gehitu duela itzulpena izeneko funtzioa ikusiko duzu. Gure IUko botoia sakatzen den bakoitzean deituko da.

Hona hemen funtzioak nolakoa izan behar duen:

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

Funtzio honek 3 zeregin nagusi betetzen ditu:

  1. Lortu informazioa UI-tik

  2. Bidali informazioa gure backend-era zerbitzariaren "itzulpena" funtzioa erabiliz (hurrengo atalean azalduko dugu)

  3. Bidali itzulitako testua UI-ra.

Zerbitzariaren funtzioa

Zentratu gaitezen kode-lerro honetan:

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

Anvil.server.call erabiltzen dugu translation izeneko zerbitzari-funtzioa deitzeko, gure backend kodean definituko dugun tokiko makinan.

Funtzio honek gure itzulpen automatikoko ereduan exekutatzen den web interfazearen eta backend kodearen arteko konexio gisa balioko du.

Konturatu zarenez funtzio honen parametroak anvil.server.call funtzioan ere bidaltzen ditugu.

Inplementatu gure MT eredua

Instala dezagun lehenik ingude

pip install anvil-uplink

Orain gure web interfazea ingude editorean eraiki dugu eta oinarrizko kode blokeak ditugu gure itzulpen automatikoko eredua exekutatu eta itzulpen bat egiteko.

Hurrengo urratsa aurreko atalean aztertu dugun zerbitzariaren funtzioa definitzea da.

Hona hemen funtzioaren kodea:

@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]

Funtzioak frontend-etik bidalitako 3 parametroak hartuko ditu, jatorriko eta helmugako hizkuntzak dagozkien hizkuntza-kodeetara bihurtuko ditu eta, ondoren, ereduak kargatu eta itzulpena kalkulatuko du eta emaitza itzuliko du.

Funtzio hau ingudeari zerbitzari funtzio gisa deklaratzeko modua dekoratzailea erabiltzea da

@anvil.server.callable.

Azken urrats bat egin behar dugu jupyter koaderno batean exekutatu dezakegun backend kodea gure ingude aplikaziora konektatzeko.

Joan ingude lineako editorera, egin klik engranajearen ikonoan eta, ondoren, egin klik "Gora esteka...".

Ikusi beheko pantaila

Anvil Editor Uplink

Popup bat agertuko zaizu, eta egin klik "Gaitu zerbitzariaren gorako esteka aplikazio honetarako" aukeran kopiatzen duzun konexio-kodea lortzeko.

Anvil Uplink

Kodea hurrengo kode lerroan itsatsi duzu:

anvil.server.connect("code here")

Lerro honek zure tokiko kodearen gidoia edo jupyter koadernoa ingude aplikazioarekin konektatzen duen zerbitzari bat abiaraziko du itzulpena funtzioa zerbitzari funtzio gisa erregistratuta.

Azken urratsa

Puntu honetara arte, zure backend zerbitzaria exekutatzen duzu itzulpen automatikoko eredua kargatzen duen zerbitzari-funtzio batekin eta frontend-etik bidalitako parametroak kontuan hartu ondoren itzulpena egiten du. Irudi honek orain arte elkarrekin gauzatu duguna laburbiltzen du.

Anvil Uplink

Azken urratsa aplikazioa exekutatzea da ingude editorearen goiko erdiko exekutatu botoian klik eginez.

Aplikazioa exekutatu ondoren, goiko eskuineko izkinan "argitaratu aplikazioa" botoi bat ikusiko duzu, aplikaziora sartzeko eta zure itzulpena egiteko parteka dezakezun esteka bat emango dizuna!

Ondorioa

Artikulu hau jarraituz MT eredu bat zabaldu eta hura erabiltzeko web interfaze bat eraiki ahal izan duzu.

Ingudea erabiliz eredu bat modu eraginkorrean zabaltzeko asko dago oraindik ezagutzeko, baina orain zure inplementazio-bidaia hasteko oinarriak dituzu eta Python-en zure aurretiko ezagutzak askoz gehiago egiteko ahalmena areagotzeko!

Zatoz gure doako tailer batera

Hasi zure karrera datu-zientzialari gisa gure doako tailerrak, curriculum moldagarri batean oinarritutakoak eta industriako adituek gidatutakoak.


Career Services background pattern

Lanbide Zerbitzuak

Contact Section background image

Jarrai gaitezen harremanetan

Code Labs Academy © 2024 Eskubide guztiak erreserbatuta.