Įdiekite mašininio mokymosi modelį naudodami Python

Python
mašininis mokymasis
ML modelis
Įdiekite mašininio mokymosi modelį naudodami Python cover image

Dirbdami duomenų mokslo srityje dažniausiai susiduriate su nauju iššūkiu, kai baigiate ilgą treniruočių, koregavimo ir tobulėjimo ciklą. Sveikiname sukūrus ML modelį, kuris turi gerą našumą ir atitinka jūsų poreikius. Dabar jūsų laukia iššūkis – kaip pristatyti šią gražią technologiją numatytiems vartotojams? O gal kaip galite efektyviai perteikti savo rezultatą su suinteresuotosiomis savo įmonės šalimis? Ar net kaip galite efektyviai pasidalinti modelio rezultatais su kolegomis, kad galėtumėte geriau bendradarbiauti?

Įdiegti mašininį mokymąsi kartais gali būti sunku, nes naudosime technologijas ir metodus iš įprastų įgūdžių rinkinio, reikalingo modeliams kurti.

Šiame straipsnyje mes ketiname atrasti būdą, kaip įdiegti mašininio mokymosi modelius naudojant tik python. Be to, mes sukursime mašininio vertimo modelį ir tinklalapį.

Taigi čia yra žingsniai, kuriuos matysime:

  1. Naudojant Huggingface mašininio vertimo modelius.

  2. Atraskite Anvil ir sukurkite žiniatinklio vartotojo sąsają mūsų modeliui.

  3. Užpakalinės ir priekinės sistemos sujungimas ir mūsų darbo aptarnavimas pasauliui!

Sukurkite mašininio vertimo modelį

Huggingface yra AI bendruomenė, siekianti „demokratizuoti gerą mašininį mokymąsi“. Pagal šią iniciatyvą galite rasti daug apmokytų skirtingų mašininio mokymosi užduočių modelių: vaizdo segmentavimo, teksto į kalbą, teksto generavimo ir taip pat mašininio vertimo!

Mašininis vertimas yra tiesiog vertimo tarp dviejų kalbų užduotis, kurią atlieka programinė įranga, mūsų atveju, mašininio mokymosi modelis, sukurtas naudojant transformatorius.

Transformatorius yra gilaus mokymosi architektūra, pagrįsta dėmesiu. Paleiskite jį jūsų kompiuteryje!

MT modeliui atsisiųsti ir vertimui atlikti naudosime transformerius, python biblioteką.

pip install torch
pip install transformers

Įdiegę reikiamus paketus, importuokite šiuos modulius:

from transformers import MarianTokenizer, MarianMTModel
from typing import List

Paimkime modelį, kuris verčia sakinį iš vokiečių į anglų kalbą. Mums reikia modelio pavadinimo:

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

Dabar importuokime išmokytą modelį ir tokenizatorių naudodami šias eilutes:

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

Atsisiuntimo dydis yra apie 300 mb, baigę modelį galite išsaugoti vietiniame kataloge naudodami šiuos veiksmus:

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

Pažiūrėkime 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])

Dabar turėtumėte turėti sakinio vertimą į anglų kalbą, saugomą „žodžiais[0]“.

Atraskite Anvil ir sukurkite žiniatinklio vartotojo sąsają

Anvil yra sistema ir sprendimų krūva, leidžianti kurti žiniatinklio programas naudojant tik python kodą. Jame yra vilkimo redagavimo priemonė, skirta sukurti žiniatinklio vartotojo sąsają, ir ji leidžia prijungti kodą iš vietinio įrenginio prie sukurtos vartotojo sąsajos ir priglobti programą, suteikiant nuorodą, kurią galite bendrinti.

Taigi pradėkime nuo programos kūrimo iš čia. Pasirinkite tuščią aplikaciją, tada medžiagos dizainą.

Turėtumėte pamatyti kažką panašaus:

Anvil

Dabar tikėsiuosi, kad naudosite redaktorių ir sukursite kažką panašaus į toliau pateiktą:

Anvil Editor

Šioje paprastoje vartotojo sąsajoje turime du išskleidžiamuosius meniu šaltinio ir paskirties kalboms pasirinkti. Taip pat turime „TextBox“ šaltinio tekstui įvesti ir „richText“ komponentą, kad būtų rodomas išverstas tekstas. Taip pat galite pamatyti mygtuką, kad pradėtumėte vertimo užduotį.

Norėdami sinchronizuoti su kodo fragmentais, kuriuos matysite toliau, suteikite komponentams tuos pačius ID. Žemiau rasite pavyzdį, kur galite nustatyti komponento ID:

Anvil Editor Rename Component

Mūsų naudojami ID:

Komponentas

ID

Pirminės kalbos išskleidžiamasis meniusource_lang
Paskirties kalbos išskleidžiamasis meniudest_lang
Pirminė kalba TextBoxšaltinio_tekstas
Išverstas tekstas RichTextišverstas_tekstas

Funkcija Onclick

Pridėjome mygtuką, kuris naudojamas vertimui pradėti. Redagavimo priemonėje spustelėkite mygtuką, tada ypatybių skydelyje slinkite žemyn. Apačioje pamatysite įvykių skyrių. Teksto zonoje šalia „spustelėkite“ įveskite „išversti“, tada spustelėkite rodyklę, esančią šios teksto zonos dešinėje.

Taip pateksite į kodo rodinį, kuriame pamatysite tam tikrą automatiškai sugeneruotą python kodą.

Pamatysite, kad priekalas automatiškai pridėjo funkciją, vadinamą vertimu. Jis bus iškviestas kiekvieną kartą, kai spustelėsite mygtuką mūsų vartotojo sąsajoje.

Štai kaip turėtų atrodyti 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

Ši funkcija atlieka 3 pagrindines užduotis:

  1. Gaukite informaciją iš vartotojo sąsajos

  2. Išsiųskite informaciją į mūsų užpakalinę programą naudodami serverio funkciją „vertimas“ (tai paaiškinsime kitame skyriuje)

  3. Nusiųskite išverstą tekstą į vartotojo sąsają.

Serverio funkcija

Sutelkime dėmesį į šią kodo eilutę:

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

Naudojame anvil.server.call, kad iškviestume serverio funkciją, vadinamą „translation“, kurią apibrėžsime vietinio kompiuterio užpakalinės programos kode.

Ši funkcija veiks kaip ryšys tarp žiniatinklio vartotojo sąsajos ir užpakalinio kodo, kuris veiks mūsų mašininio vertimo modelyje.

Kaip pastebėjote, šios funkcijos parametrus taip pat siunčiame funkcijoje anvil.server.call.

Įdiekite mūsų MT modelį

Pirmiausia įdiekime priekalą

pip install anvil-uplink

Dabar sukūrėme žiniatinklio sąsają priekalų rengyklėje ir turime pagrindinius kodo blokus, kad galėtume paleisti mašininio vertimo modelį ir atlikti vertimą.

Kitas žingsnis – apibrėžti serverio funkciją, kurią aptarėme ankstesniame skyriuje.

Čia yra funkcijos kodas:

@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 paims 3 parametrus, siunčiamus iš sąsajos, konvertuos šaltinio ir paskirties kalbas į atitinkamus kalbos kodus, tada įkels modelius, apskaičiuos vertimą ir pateiks rezultatą.

Šią funkciją galima paskelbti priekalu kaip serverio funkciją naudojant dekoratorių

„@anvil.server.callable“.

Turime atlikti paskutinį veiksmą, kad prijungtume pagrindinį kodą, kurį galime paleisti „jupyter“ nešiojamajame kompiuteryje, su priekalo programa.

Eikite į priekalo internetinį redaktorių, spustelėkite krumpliaračio piktogramą, tada spustelėkite „Įkelti...“.

Žiūrėkite žemiau esantį ekraną

Anvil Editor Uplink

Pamatysite iššokantįjį langą, tada spustelėkite „Įgalinti šios programos serverio nukreipimą“, kad gautumėte nukopijuotą ryšio kodą.

Anvil Uplink

Įklijuojate kodą į šią kodo eilutę:

anvil.server.connect("code here")

Ši eilutė paleis serverį, kuris sujungia jūsų vietinio kodo scenarijų arba „jupyter“ bloknotą su priekalo programa su funkcija „vertimas“, užregistruota kaip serverio funkcija.

Paskutinis žingsnis

Šiuo metu jūsų vidinis serveris veikia su serverio funkcija, kuri įkelia mašininio vertimo modelį ir atlieka vertimą, atsižvelgdama į parametrus, siunčiamus iš sąsajos. Šiame paveiksle apibendrinama tai, ką iki šiol kartu įgyvendinome.

Anvil Uplink

Paskutinis veiksmas yra paleisti programą spustelėjus paleisties mygtuką viršutiniame priekalo redaktoriaus centre.

Paleidę programą, viršutiniame dešiniajame kampe matote mygtuką „Paskelbti šią programą“, kuris suteiks jums nuorodą, kurią galėsite bendrinti, kad pasiektumėte programą ir atliktumėte vertimą!

Išvada

Vadovaudamiesi šiuo straipsniu galėjote įdiegti MT modelį ir sukurti žiniatinklio sąsają, kad galėtumėte jį naudoti.

Dar reikia daug ką atrasti, kaip efektyviai įdiegti modelį naudojant priekalą, bet dabar turite pagrindus, kad pradėtumėte diegimo kelionę ir praplėstumėte ankstesnių Python žinių potencialą, kad nuveiktumėte daug daugiau!

Ateikite į vieną iš mūsų nemokamų seminarų

Pradėkite savo, kaip duomenų mokslininko, karjerą mūsų nemokamuose seminaruose, kurie yra pagrįsti pritaikoma mokymo programa ir vadovaujami pramonės ekspertų.


Career Services background pattern

Karjeros paslaugos

Contact Section background image

Palaikykime ryšį

Code Labs Academy © 2024 Visos teisės saugomos.