Məlumat elmi sahəsində işləyərkən, adətən uzun bir məşq, incə tənzimləmə və təkmilləşdirmə dövrünü bitirdikdən sonra özünüzü yeni bir problemlə qarşılaşırsınız. Yaxşı performansa malik və ehtiyaclarınıza cavab verən ML modelini yaratdığınız üçün sizi təbrik edirik. İndi qarşınızda duran problem, bu gözəl texnologiya parçasını nəzərdə tutulan istifadəçilərə necə çatdıra bilərsiniz? Və ya bəlkə nəticənizi şirkətinizdə maraqlı tərəflərlə necə effektiv şəkildə əlaqələndirə bilərsiniz? Və ya hətta daha yaxşı əməkdaşlıq üçün model nəticələrinizi həmkarlarınızla effektiv şəkildə necə paylaşa bilərsiniz?
Maşın öyrənməsinin tətbiqi bəzən çətin ola bilər, çünki biz modelləri qurmaq üçün lazım olan adi bacarıq dəstindən kənar texnologiya və texnikalardan istifadə edəcəyik.
Bu yazıda biz yalnız python istifadə edərək maşın öyrənmə modellərini yerləşdirməyin bir yolunu kəşf edəcəyik. Və yol boyu biz maşın tərcüməsi modelini və veb səhifəsini quracağıq.
Beləliklə, burada görəcəyimiz addımlar bunlardır:
-
Huggingface maşın tərcüməsi modellərindən istifadə.
-
Anvil kəşf etmək və modelimiz üçün veb UI qurmaq.
-
Backend və frontend-i birləşdirmək və dünyaya bizim işimizə xidmət etmək!
Maşın Tərcümə modelini qurun
Huggingface “yaxşı maşın öyrənməsini demokratikləşdirmək” üçün çalışan AI icmasıdır. Bu təşəbbüs çərçivəsində siz müxtəlif maşın öyrənmə tapşırıqları üzrə bir çox təlim keçmiş modellər tapa bilərsiniz: təsvirin seqmentasiyası, mətndən nitqə, mətnin yaradılması... və həmçinin maşın tərcüməsi!
Maşın tərcüməsi sadəcə olaraq bir proqram parçası tərəfindən yerinə yetirilən iki dil arasında tərcümə işidir, bizim vəziyyətimizdə transformatorlarla qurulmuş maşın öyrənmə modelidir.
Transformator diqqətə əsaslanan dərin öyrənmə arxitekturasıdır. Gəlin onu maşınınızda işə salaq!
MT modelini endirmək və tərcüməni yerinə yetirmək üçün python kitabxanası olan transformers istifadə edəcəyik.
pip install torch
pip install transformers
Lazım olan paketləri quraşdırdıqdan sonra aşağıdakı modulları idxal edin:
from transformers import MarianTokenizer, MarianMTModel
from typing import List
Gəlin bir cümləni alman dilindən ingilis dilinə çevirən bir model əldə edək. Modelin adına ehtiyacımız var:
src= "de"
trg= "en"
mname= f'Helsinki-NLP/opus-mt-{src}-{trg}'
İndi aşağıdakı sətirlərdən istifadə edərək təlim keçmiş modeli və tokenizeri idxal edək:
model = MarianMTModel.from_pretrained(mname)
tok = MarianTokenizer.from_pretrained(mname)
Yükləmə ölçüsü təxminən 300 mb-dir, bitirdikdən sonra aşağıdakılardan istifadə edərək modeli yerli kataloqda saxlaya bilərsiniz:
model.save_pretrained("./models/de_en/")
tok.save_pretrained("./models/de_en/tok")
Modelə baxaq:
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])
İndi sözlər[0]
-də saxlanılan cümlənin ingiliscə tərcüməsi olmalıdır.
Anvil kəşf edin və veb UI qurun
Anvil yalnız python kodundan istifadə edərək veb proqramlar yaratmağa imkan verən çərçivə və həllər yığınıdır. Veb UI yaratmaq üçün sürükləmə və buraxma redaktoru var və o, yerli maşınınızdan kodu qurduğunuz UI-yə qoşmağa və paylaşa biləcəyiniz bir keçid verməklə tətbiqinizi yerləşdirməyə imkan verir.
Beləliklə, buradan tətbiq yaratmağa başlayaq. Boş tətbiqi, sonra material dizaynını seçin.
Bunun kimi bir şey görməlisiniz:
İndi redaktordan istifadə edəcəyinizə və aşağıdakılara bənzər bir şey quracağınıza inanacağam:
Bu sadə UI-də mənbə və təyinat dillərini seçmək üçün iki açılan pəncərəmiz var. Bizdə həmçinin mənbə mətni daxil etmək üçün TextBox və tərcümə edilmiş mətni göstərmək üçün richText komponenti var. Siz həmçinin tərcümə tapşırığına başlamaq üçün Düyməni görə bilərsiniz.
Aşağıda görəcəyiniz kod parçaları ilə sinxronizasiya etmək üçün komponentlərə eyni identifikatorları verin. Aşağıda komponentin id-sini təyin edə biləcəyiniz nümunəni tapa bilərsiniz:
İstifadə etdiyimiz ID-lər bunlardır:
<cədvəlin sərhədi="2">
<baş>
Komponent
ID
Mənbə dil Açılır source_lang Təyinat dili Açılır dest_lang Mənbə dili TextBox mənbə_mətn Tərcümə edilmiş mətn RichText tərcümə edilmiş_mətnOnclick funksiyası
Tərcüməni başlamaq üçün istifadə edilən düyməni əlavə etdik. Redaktorunuzdan düyməni vurun, sonra xüsusiyyətlər panelində aşağı diyirləyin. Aşağıda bir hadisə bölməsini görəcəksiniz. “Klikləyin” yanındakı mətn zonasında “tərcümə et” daxil edin və sonra bu mətn zonasının sağındakı oxu klikləyin.
Bu sizi kod görünüşünə aparacaq və burada avtomatik yaradılan python kodunu görəcəksiniz.
Anvilin avtomatik olaraq tərcümə adlı funksiyanı əlavə etdiyini görəcəksiniz. UI-dəki düyməyə hər dəfə kliklədikdə o, çağırılacaq.
Funksiya necə görünməlidir:
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
Bu funksiya 3 əsas vəzifəni yerinə yetirir:
-
UI-dən məlumat alın
-
“Tərcümə” server funksiyasından istifadə edərək məlumatları backendimizə göndərin (bunu növbəti hissədə izah edəcəyik)
-
Tərcümə edilmiş mətni UI-yə göndərin.
Server funksiyası
Bu kod xəttinə diqqət yetirək:
translated_text=anvil.server.call("translation",text,src_lang,dest_lang)
Biz anvil.server.call-dan yerli maşındakı backend kodumuzda təyin edəcəyimiz “tərcümə” adlı server funksiyasını çağırmaq üçün istifadə edirik.
Bu funksiya veb UI və maşın tərcüməsi modelimizdə işləyəcək arxa kod arasında əlaqə rolunu oynayacaq.
Diqqət etdiyiniz kimi, biz bu funksiyanın parametrlərini də “anvil.server.call” funksiyasına göndəririk.
MT modelimizi yerləşdirin
Əvvəlcə anvil quraşdıraq
pip install anvil-uplink
İndi biz veb interfeysimizi anvil redaktorunda qurmuşuq və maşın tərcüməsi modelimizi işə salmaq və tərcümə etmək üçün əsas kod bloklarımız var.
Növbəti addım əvvəlki bölmədə müzakirə etdiyimiz server funksiyasını müəyyən etməkdir.
Budur funksiyanın kodu:
@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]
Funksiya frontenddən göndərilən 3 parametri götürəcək, mənbə və təyinat dillərini müvafiq dil kodlarına çevirəcək və sonra modelləri yükləyib tərcüməni hesablayacaq və nəticəni qaytaracaq.
Bu funksiyanı server funksiyası kimi anvil elan etməyin yolu dekoratordan istifadə etməkdir
@anvil.server.callable
.
Jupyter notebookda işlədə biləcəyimiz backend kodunu anvil tətbiqimizə qoşmaq üçün son bir addımımız var.
Anvil onlayn redaktoruna gedin, dişli çarxı vurun və sonra "Uplink..." düyməsini basın.
Aşağıdakı ekrana baxın
Siz pop-up görünəcək, sonra kopyaladığınız əlaqə kodunu əldə etmək üçün “Bu proqram üçün server yuxarı bağlantısını aktivləşdirin” üzərinə klikləyin.
Kodu aşağıdakı kod xəttinə yapışdırırsınız:
anvil.server.connect("code here")
Bu xətt yerli kod skriptinizi və ya jupyter notebookunuzu server funksiyası kimi qeydə alınmış tərcümə
funksiyası ilə anvil proqramı ilə birləşdirən serveri işə salacaq.
Son addım
Bu nöqtəyə qədər, arxa serveriniz maşın tərcümə modelini yükləyən və frontenddən göndərilən parametrləri nəzərə alaraq tərcüməni həyata keçirən server funksiyası ilə işləyir. Bu rəqəm indiyə qədər birlikdə həyata keçirdiklərimizi ümumiləşdirir.
Son addım, anvil redaktorunun yuxarı mərkəzində yerləşən çalıştırma düyməsini klikləməklə proqramı işə salmaqdır.
Tətbiqi işə saldıqdan sonra yuxarı sağ küncdə "bu proqramı dərc et" düyməsini görürsünüz, bu düymə sizə proqrama daxil olmaq və tərcümənizi etmək üçün paylaşa biləcəyiniz bir keçid verəcəkdir!
Nəticə
Bu məqaləyə əməl etməklə siz MT modelini yerləşdirə və ondan istifadə etmək üçün veb interfeysi qura bildiniz.
Örsdən istifadə edərək modeli effektiv şəkildə necə yerləşdirməyi kəşf etmək üçün hələ çox şey var, lakin indi yerləşdirmə səyahətinizə başlamaq və daha çox şey etmək üçün Python-da əvvəlki bilik potensialınızı artırmaq üçün əsaslara sahibsiniz!
Pulsuz seminarlarımızdan birinə gəlin
Uyğunlaşa bilən kurrikuluma əsaslanan və sənaye ekspertləri tərəfindən idarə olunan pulsuz seminarlarımız ilə məlumat alimi kimi karyeranıza başlayın.
Master Maşın Öyrənməsi ilə Code Labs Academy! Onlayn təlim düşərgəmizə qoşulun – Çevik Part-Time və Tam Zamanlı Seçimlər Mövcuddur.