Implementați modelul de învățare automată cu Python

python
învățare automată
model ML
Implementați modelul de învățare automată cu Python cover image

Când lucrați în domeniul științei datelor, de obicei, vă confruntați cu o nouă provocare după ce ați terminat o buclă lungă de formare, reglare fină și îmbunătățire. Felicitări pentru construirea unui model ML care are performanțe bune și răspunde nevoilor dvs. Acum, provocarea pe care o aveți la îndemână este cum puteți oferi această piesă frumoasă de tehnologie utilizatorilor vizați? Sau poate cum poți comunica eficient rezultatul tău cu părțile interesate din compania ta? Sau cum puteți împărtăși rezultatele modelului dvs. cu colegii dvs. în mod eficient pentru o colaborare mai bună?

Implementarea învățării automate poate fi uneori dificilă, deoarece vom folosi tehnologii și tehnici din setul obișnuit de abilități necesare pentru a construi modelele.

În acest articol, vom descoperi o modalitate de a implementa modele de învățare automată folosind doar python. Și pe parcurs, vom construi un model de traducere automată și o pagină web.

Deci, iată pașii pe care îi vom vedea:

  1. Folosind modele de traducere automată Huggingface.

  2. Descoperirea Anvil și construirea unei interfețe de utilizare web pentru modelul nostru.

  3. Conectarea backend-ului și a frontend-ului și a servirii lumii muncii noastre!

Construiți modelul de traducere automată

Huggingface este o comunitate AI care lucrează pentru a „democratiza învățarea automată bună”. În cadrul acestei inițiative, puteți găsi multe modele instruite pentru diferite sarcini de învățare automată: segmentarea imaginilor, text în vorbire, generarea de text... și, de asemenea, traducere automată!

Traducerea automată este pur și simplu o sarcină de traducere între două limbi realizată de un software, în cazul nostru, un model de învățare automată construit cu transformatoare.

Un transformator este o arhitectură de învățare profundă bazată pe atenție. Să-l punem să ruleze pe mașina ta!

Vom folosi transformers, o bibliotecă python pentru a descărca modelul MT și a efectua o traducere.

pip install torch
pip install transformers

După instalarea pachetelor necesare, importați următoarele module:

from transformers import MarianTokenizer, MarianMTModel
from typing import List

Să obținem un model care traduce o propoziție din germană în engleză. Avem nevoie de numele modelului:

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

Acum să importăm modelul antrenat și tokenizer-ul folosind următoarele linii:

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

Dimensiunea de descărcare este de aproximativ 300 MB, după terminare puteți stoca modelul într-un director local folosind următoarele:

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

Hai modelul:

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

Acum ar trebui să aveți traducerea în engleză a propoziției stocată în words[0].

Descoperiți Anvil și construiți o interfață de utilizare web

Anvil este un cadru și o stivă de soluții care vă permit să construiți aplicații web folosind doar cod python. Are un editor drag and drop pentru a construi interfața de utilizare web și vă permite să conectați codul de la mașina dvs. locală la interfața de utilizare pe care o construiți și să găzduiți aplicația dvs., oferindu-vă un link pe care îl puteți partaja.

Deci, să începem cu crearea unei aplicații de aici. Alegeți aplicația goală, apoi designul materialului.

Ar trebui să vezi așa ceva:

Anvil

Acum mă voi baza pe tine să folosești editorul și să construiești ceva similar cu următorul:

Anvil Editor

În această interfață simplă, avem două dropDowns pentru a alege limbile sursă și destinație. Avem, de asemenea, o TextBox pentru a introduce textul sursă și o componentă richText pentru a afișa textul tradus. De asemenea, puteți vedea un Buton pentru a începe sarcina de traducere.

Pentru a sincroniza cu fragmentele de cod pe care le veți vedea mai jos, dați aceleași ID-uri componentelor. Mai jos puteți găsi un exemplu de unde puteți seta id-ul unei componente:

Anvil Editor Rename Component

ID-urile pe care le folosim sunt:

Funcția Onclick

Am adăugat un buton care este folosit pentru a începe traducerea. Din editorul dvs., faceți clic pe butonul, apoi derulați în jos în panoul de proprietăți. În partea de jos, veți vedea o secțiune de eveniment. În zona de text de lângă „clic”, introduceți „traducere” și apoi faceți clic pe săgeata din dreapta acestei zone de text.

Acest lucru vă va duce la vizualizarea codului, unde veți vedea un cod python generat automat.

Veți descoperi că nicovala a adăugat automat o funcție numită translate. Acesta va fi apelat de fiecare dată când se face clic pe butonul din interfața noastră de utilizare.

Iată cum ar trebui să arate funcția:

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

Această funcție îndeplinește 3 sarcini principale:

  1. Obțineți informații din interfața de utilizare

  2. Trimiteți informațiile către backend-ul nostru folosind funcția de server „traducere” (o vom explica în secțiunea următoare)

  3. Trimiteți textul tradus către interfața de utilizare.

Funcția de server

Să ne concentrăm pe această linie de cod:

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

Folosim anvil.server.call pentru a apela o funcție de server numită translation pe care o vom defini în codul nostru backend în mașina locală.

Această funcție va servi ca o conexiune între interfața de utilizare web și codul backend care va rula pe modelul nostru de traducere automată.

După cum ați observat, trimitem și parametrii acestei funcții în funcția anvil.server.call.

Implementați modelul nostru MT

Să instalăm mai întâi nicovală

pip install anvil-uplink

Acum ne-am construit interfața web în editorul Anvil și avem blocuri de cod de bază pentru a rula modelul nostru de traducere automată și a face o traducere.

Următorul pas este definirea funcției de server despre care am discutat în secțiunea anterioară.

Iată codul funcției:

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

Funcția va prelua cei 3 parametri trimiși de pe front-end, va converti limbile sursă și destinație în codurile de limbă respective și apoi va încărca modelele și va calcula traducerea și va returna rezultatul.

Modul de a declara această funcție la nicovală ca funcție de server este prin utilizarea decoratorului

@anvil.server.callable.

Avem un ultim pas de făcut pentru a conecta codul backend pe care îl putem rula într-un notebook jupyter la aplicația noastră Anvil.

Accesați editorul online Anvil, faceți clic pe pictograma roată, apoi faceți clic pe „Uplink…”.

Vezi ecranul de mai jos

Anvil Editor Uplink

Veți vedea că apare o fereastră pop-up, apoi faceți clic pe „Activați linkul ascendent al serverului pentru această aplicație” pentru a obține codul de conectare pe care îl copiați.

Anvil Uplink

Lipiți codul în următoarea linie de cod:

anvil.server.connect("code here")

Această linie va porni un server care conectează scriptul de cod local sau notebook-ul jupyter la aplicația Anvil cu funcția traducere înregistrată ca funcție de server.

Ultimul pas

Până în acest punct, aveți serverul backend care rulează cu o funcție de server care încarcă modelul de traducere automată și face traducerea după luarea în considerare a parametrilor trimiși de la interfață. Această cifră rezumă ceea ce am implementat împreună până acum.

Anvil Uplink

Un ultim pas este să rulați aplicația făcând clic pe butonul de rulare din partea centrală de sus a editorului nicovală.

După ce rulați aplicația, vedeți în colțul din dreapta sus un buton „publicați această aplicație” care vă va oferi un link pe care îl puteți partaja pentru a accesa aplicația și a vă face traducerea!

Concluzie

Urmând acest articol, ați reușit să implementați un model MT și să construiți o interfață web pentru a-l folosi.

Mai sunt multe de descoperit despre cum să implementați eficient un model folosind nicovală, dar acum aveți elementele de bază pentru a vă începe călătoria de implementare și pentru a dezvolta potențialul cunoștințelor dumneavoastră anterioare în Python de a face mult mai mult!

Vino la unul dintre atelierele noastre gratuite

Începeți-vă cariera ca cercetător de date cu atelierele noastre gratuite, care se bazează pe un curriculum adaptabil și sunt ghidate de experți din industrie.

Componenta

ID

Limba sursă DropDownsource_lang
Limba de destinație DropDowndest_lang
Limba sursă TextBoxtext_sursă
Text tradus RichTexttext_tradus

Career Services background pattern

Servicii de carieră

Contact Section background image

Să rămânem în legătură

Code Labs Academy © 2024 Toate drepturile rezervate.