Տեղադրեք ձեր մեքենայական ուսուցման մոդելը Python-ով

python
մեքենայական ուսուցում
ML մոդել
Տեղադրեք ձեր մեքենայական ուսուցման մոդելը Python-ով cover image

Տվյալների գիտության ոլորտում աշխատելիս դուք սովորաբար հայտնվում եք նոր մարտահրավերի առաջ՝ վերապատրաստման երկար փուլն ավարտելուց, կատարելագործելուց և կատարելագործվելուց հետո: Շնորհավորում ենք ML մոդելի ստեղծման կապակցությամբ, որն ունի լավ կատարողականություն և կպատասխանի ձեր կարիքներին: Այժմ ձեր առջեւ դրված մարտահրավերն այն է, թե ինչպես կարող եք այս գեղեցիկ տեխնոլոգիան մատուցել նախատեսված օգտագործողներին: Կամ գուցե ինչպե՞ս կարող եք արդյունավետ կերպով հաղորդել ձեր արդյունքը ձեր ընկերության շահագրգիռ կողմերի հետ: Կամ նույնիսկ ինչպե՞ս կարող եք արդյունավետ կերպով կիսել ձեր մոդելի արդյունքները ձեր գործընկերների հետ՝ ավելի լավ համագործակցության համար:

Մեքենայական ուսուցման տեղակայումը երբեմն կարող է դժվար լինել, քանի որ մենք կօգտագործենք տեխնոլոգիաներ և տեխնիկա՝ մոդելներ ստեղծելու համար անհրաժեշտ սովորական հմտություններից դուրս:

Այս հոդվածում մենք պատրաստվում ենք բացահայտել մեքենայական ուսուցման մոդելները միայն python-ի միջոցով տեղակայելու միջոց: Եվ ճանապարհին մենք կկառուցենք մեքենայական թարգմանության մոդել և վեբ էջ:

Այսպիսով, ահա այն քայլերը, որոնք մենք պատրաստվում ենք տեսնել.

  1. Օգտագործելով Huggingface մեքենայական թարգմանության մոդելները:

  2. Բացահայտել Anvil և ստեղծել վեբ միջերես մեր մոդելի համար:

  3. Միացնելով հետնամասն ու ճակատը և ծառայել աշխարհին մեր աշխատանքին:

Կառուցեք մեքենայական թարգմանության մոդել

Huggingface AI համայնք է, որն աշխատում է «լավ մեքենայական ուսուցումը ժողովրդավարացնելու ուղղությամբ»: Այս նախաձեռնության շրջանակներում դուք կարող եք գտնել բազմաթիվ վերապատրաստված մոդելներ տարբեր մեքենայական ուսուցման առաջադրանքներ վերաբերյալ՝ պատկերի հատվածավորում, տեքստից խոսք, տեքստի ստեղծում… և նաև մեքենայական թարգմանություն:

Մեքենայական թարգմանությունը պարզապես թարգմանչական խնդիր է երկու լեզուների միջև, որն իրականացվում է ծրագրաշարի մի կտորով, մեր դեպքում՝ մեքենայական ուսուցման մոդել, որը կառուցված է տրանսֆորմատորներով:

Տրանսֆորմատորը խորը ուսուցման ճարտարապետություն է, որը հիմնված է ուշադրության վրա: Եկեք գործարկենք այն ձեր մեքենայի վրա:

Մենք կօգտագործենք 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}'

Այժմ եկեք ներմուծենք վարժեցված մոդելը և նշանավորիչը՝ օգտագործելով հետևյալ տողերը.

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

Ներբեռնման չափը մոտ 300 Մբ է, ավարտելուց հետո կարող եք մոդելը պահել տեղական գրացուցակում՝ օգտագործելով հետևյալը.

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 բաղադրիչ՝ թարգմանված տեքստը ցուցադրելու համար: Կարող եք նաև տեսնել կոճակ՝ թարգմանության առաջադրանքը սկսելու համար:

Կոդի հատվածների հետ համաժամացման համար, որոնք կտեսնեք ստորև, բաղադրիչներին տվեք նույն ID-ները: Ստորև կարող եք գտնել մի օրինակ, որտեղ կարող եք սահմանել բաղադրիչի id-ը.

Anvil Editor Rename Component

ID-ները, որոնք մենք օգտագործում ենք, հետևյալն են.

<գլուխ>

Բաղադրիչ

ID

Աղբյուր լեզվի բացվող պատուհանsource_lang
Նպատակակետի լեզվի բացվող ցանկdest_lang
Աղբյուր լեզուն TextBoxաղբյուր_տեքստ
Թարգմանված տեքստ RichTextթարգմանված_տեքստ

Onclick ֆունկցիա

Մենք ավելացրել ենք կոճակ, որն օգտագործվում է թարգմանությունը սկսելու համար: Ձեր խմբագրիչից կտտացրեք կոճակին, այնուհետև ոլորեք ներքև հատկությունների վահանակում: Ներքևում կտեսնեք իրադարձությունների բաժինը: «սեղմելու» կողքին գտնվող տեքստային գոտում մուտքագրեք «translate» և կտտացրեք այս տեքստի գոտու աջ կողմում գտնվող սլաքին:

Սա ձեզ կտանի դեպի կոդի տեսք, որտեղ դուք կտեսնեք ավտոմատ ստեղծվող 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. Ստացեք տեղեկատվություն UI-ից

  2. Տեղեկատվությունն ուղարկեք մեր հետին պլան՝ օգտագործելով սերվերի «թարգմանություն» ֆունկցիան (մենք կբացատրենք հաջորդ բաժնում)

  3. Ուղարկեք թարգմանված տեքստը UI-ին:

Սերվերի գործառույթ

Եկեք կենտրոնանանք կոդի այս տողի վրա.

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

Մենք օգտագործում ենք anvil.server.call՝ «translation» կոչվող սերվերի ֆունկցիան կանչելու համար, որը մենք կսահմանենք տեղական մեքենայի մեր backend կոդը:

Այս գործառույթը կծառայի որպես կապ վեբ միջերեսի և հետին պլանի կոդի միջև, որը կաշխատի մեր մեքենայական թարգմանության մոդելում:

Ինչպես նկատեցիք, մենք ուղարկում ենք նաև այս ֆունկցիայի պարամետրերը 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 պարամետրերը, կվերափոխի սկզբնաղբյուր և նպատակակետ լեզուները համապատասխան լեզվական կոդերին, այնուհետև կբեռնի մոդելները և կհաշվարկի թարգմանությունը և կվերադարձնի արդյունքը:

Այս գործառույթը կոճին որպես սերվերի գործառույթ հայտարարելու ձևը դեկորատորի օգտագործումն է

«@anvil.server.callable»:

Մենք պետք է անենք վերջին քայլը՝ հետնամասի կոդը, որը մենք կարող ենք գործարկել jupyter նոթատետրում մեր կոճ հավելվածին միացնելու համար:

Գնացեք կոճ առցանց խմբագրիչ, կտտացրեք փոխանցման պատկերակը, այնուհետև կտտացրեք «Uplink…»:

Տեսեք ստորև ներկայացված էկրանը

Anvil Editor Uplink

Դուք կտեսնեք, որ կհայտնվի թռուցիկ, այնուհետև կտտացրեք «Միացնել սերվերի վերահղումը այս հավելվածի համար»՝ ձեր պատճենած կապի կոդը ստանալու համար:

Anvil Uplink

Դուք տեղադրեք կոդը հետևյալ ծածկագրի տողում.

anvil.server.connect("code here")

Այս տողը կսկսի սերվեր, որը միացնում է ձեր տեղական կոդի սկրիպտը կամ jupyter նոթատետրը կոճ հավելվածին «translation» գործառույթով, որը գրանցված է որպես սերվերի գործառույթ:

Վերջնական քայլ

Մինչև այս պահը, դուք ունեք ձեր backend սերվերը, որն աշխատում է սերվերի գործառույթով, որը բեռնում է մեքենայական թարգմանության մոդելը և կատարում է թարգմանությունը՝ հաշվի առնելով ճակատից ուղարկված պարամետրերը: Այս թիվն ամփոփում է այն, ինչ մենք միասին իրականացրել ենք մինչ այժմ։

Anvil Uplink

Վերջին քայլը հավելվածը գործարկելն է` սեղմելով գործարկման կոճակը կոճ խմբագրի վերին կենտրոնում:

Հավելվածը գործարկելուց հետո վերևի աջ անկյունում տեսնում եք «հրապարակել այս հավելվածը» կոճակը, որը ձեզ կտա հղում, որը կարող եք համօգտագործել՝ հավելված մուտք գործելու և ձեր թարգմանությունը կատարելու համար:

Եզրակացություն

Հետևելով այս հոդվածին, դուք կարողացաք տեղակայել MT մոդելը և ստեղծել վեբ ինտերֆեյս այն օգտագործելու համար:

Դեռևս շատ բան կա բացահայտելու, թե ինչպես արդյունավետ կերպով կիրառել մոդելը, օգտագործելով կոճը, բայց այժմ դուք ունեք հիմունքներ ձեր տեղակայման ճանապարհորդությունը սկսելու և Python-ում ձեր նախնական գիտելիքների ներուժն ավելին անելու համար:

Եկեք մեր անվճար սեմինարներից մեկը

Սկսեք ձեր կարիերան որպես տվյալների գիտնական մեր անվճար սեմինարներով, որոնք հիմնված են հարմարվող ուսումնական ծրագրի վրա և առաջնորդվում են ոլորտի փորձագետների կողմից:


  • Վարպետ Machine Learning Code Labs Academy-ի հետ: Միացեք մեր առցանց Bootcamp-ին. Հասանելի են ճկուն կես դրույքով և լրիվ դրույքով ընտրանքներ:*

Career Services background pattern

Կարիերայի ծառայություններ

Contact Section background image

Եկեք մնանք կապի մեջ

Code Labs Academy © 2024 Բոլոր իրավունքները պաշտպանված են.