Datatieteen parissa työskennellessäsi kohtaat yleensä uuden haasteen pitkän harjoittelun, hienosäädön ja parantamisen jälkeen. Onnittelut hyvän suorituskyvyn ja tarpeisiisi vastaavan ML-mallin rakentamisesta. Nyt edessäsi oleva haaste on, kuinka voit toimittaa tämän mukavan teknologian halutuille käyttäjille? Tai kenties kuinka voit viestiä tuloksestasi tehokkaasti yrityksesi sidosryhmien kanssa? Tai kuinka voit jakaa mallituloksesi tehokkaasti kollegoidesi kanssa yhteistyön parantamiseksi?
Koneoppimisen käyttöönotto voi joskus olla vaikeaa, koska käytämme tekniikoita ja tekniikoita, jotka poikkeavat mallien rakentamiseen tarvittavasta tavanomaisesta osaamisesta.
Tässä artikkelissa aiomme löytää tavan ottaa käyttöön koneoppimismalleja käyttämällä vain pythonia. Ja matkan varrella rakennamme konekäännösmallin ja web-sivun.
Joten tässä on vaiheet, jotka aiomme nähdä:
-
Käytä Huggingface konekäännösmalleja.
-
Tutustu Anvil ja rakenna verkkokäyttöliittymä mallillemme.
-
Yhdistä tausta- ja käyttöliittymä ja palvelemme työmme maailmaa!
Rakenna konekäännösmalli
Huggingface on tekoälyyhteisö, joka pyrkii "demokratisoimaan hyvää koneoppimista". Tämän aloitteen puitteissa löydät monia koulutettuja malleja eri koneoppimistehtäviin: kuvien segmentointi, teksti puheeksi, tekstin luominen… ja myös konekäännös!
Konekäännös on yksinkertaisesti käännöstehtävä kahden kielen välillä, jonka suorittaa ohjelmisto, tässä tapauksessa muuntajilla rakennettu koneoppimismalli.
Muuntaja on tarkkaavaisuuteen perustuva syväoppimisarkkitehtuuri. Laitetaan se toimimaan koneellasi!
Käytämme transformers, python-kirjastoa ladataksemme MT-mallin ja suorittaaksemme käännöksen.
pip install torch
pip install transformers
Kun olet asentanut tarvittavat paketit, tuo seuraavat moduulit:
from transformers import MarianTokenizer, MarianMTModel
from typing import List
Otetaan malli, joka kääntää lauseen saksasta englanniksi. Tarvitsemme mallin nimen:
src= "de"
trg= "en"
mname= f'Helsinki-NLP/opus-mt-{src}-{trg}'
Tuodaan nyt koulutettu malli ja tokenisaattori seuraavilla riveillä:
model = MarianMTModel.from_pretrained(mname)
tok = MarianTokenizer.from_pretrained(mname)
Latauksen koko on noin 300 mb, viimeistelyn jälkeen voit tallentaa mallin paikalliseen hakemistoon seuraavilla tavoilla:
model.save_pretrained("./models/de_en/")
tok.save_pretrained("./models/de_en/tok")
Otetaan malli:
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])
Nyt sinulla pitäisi olla lauseen englanninkielinen käännös tallennettuna sanaan "words[0]".
Tutustu Anviliin ja rakenna verkkokäyttöliittymä
Anvil on kehys ja pino ratkaisuja, joiden avulla voit rakentaa verkkosovelluksia käyttämällä vain python-koodia. Siinä on vedä ja pudota -editori verkkokäyttöliittymän rakentamiseen, ja sen avulla voit yhdistää paikallisen koneen koodin rakentamaasi käyttöliittymään ja isännöidä sovellustasi antamalla sinulle linkin, jonka voit jakaa.
Aloitetaan siis sovelluksen luomisesta täältä. Valitse tyhjä sovellus ja sitten materiaalisuunnittelu.
Sinun pitäisi nähdä jotain tämän kaltaista:
Nyt luotan siihen, että käytät editoria ja rakennat jotain seuraavanlaista:
Tässä yksinkertaisessa käyttöliittymässä meillä on kaksi pudotusvalikkoa lähde- ja kohdekielen valitsemiseksi. Meillä on myös TextBox lähdetekstin syöttämiseen ja richText-komponentti käännetyn tekstin näyttämiseen. Näet myös painikkeen käännöstehtävän aloittamiseksi.
Anna komponenteille samat tunnukset synkronoidaksesi koodinpätkien kanssa, jotka näet alla. Alta löydät esimerkin siitä, missä voit asettaa komponentin tunnuksen:
Käyttämämme tunnukset ovat:
Komponentti |
ID |
---|---|
Lähdekielinen pudotusvalikko | lähdekieli |
Kohdekielen pudotusvalikko | dest_lang |
Lähdekieli TextBox | lähdeteksti |
Käännetty teksti RichText | käännetty_teksti |
Onclick-toiminto
Olemme lisänneet painikkeen, jolla käännös aloitetaan. Napsauta editorissa painiketta ja vieritä sitten alas ominaisuuspaneelissa. Alareunassa näet tapahtumaosion. Kirjoita "click"-kohdan vieressä olevaan tekstialueeseen "käännä" ja napsauta sitten tämän tekstialueen oikealla puolella olevaa nuolta.
Tämä vie sinut koodinäkymään, jossa näet automaattisesti luodun python-koodin.
Huomaat, että alasin on lisännyt automaattisesti toiminnon nimeltä translate. Sitä kutsutaan aina, kun käyttöliittymämme painiketta napsautetaan.
Tältä toiminnon pitäisi näyttää:
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
Tämä toiminto suorittaa 3 päätehtävää:
-
Hanki tietoja käyttöliittymästä
-
Lähetä tiedot taustajärjestelmäämme käyttämällä palvelintoimintoa "käännös" (selitämme sen seuraavassa osiossa)
-
Lähetä käännetty teksti käyttöliittymään.
Palvelintoiminto
Keskitytään tähän koodiriviin:
translated_text=anvil.server.call("translation",text,src_lang,dest_lang)
Käytämme anvil.server.call kutsuaksemme palvelinfunktiota nimeltä "käännös", jonka määritämme taustakoodissamme paikallisessa koneessa.
Tämä toiminto toimii yhteyden verkkokäyttöliittymän ja konekäännösmallissamme käytettävän taustakoodin välillä.
Kuten olet huomannut, lähetämme myös tämän funktion parametrit funktiossa anvil.server.call
.
Ota käyttöön MT-mallimme
Asennataan ensin alasin
pip install anvil-uplink
Nyt olemme rakentaneet verkkokäyttöliittymämme alasin editoriin ja meillä on peruskoodilohkot konekäännösmallimme ajamiseen ja käännöksen tekemiseen.
Seuraava vaihe on määrittää palvelintoiminto, jota olemme käsitelleet edellisessä osiossa.
Tässä on funktion koodi:
@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]
Toiminto ottaa 3 käyttöliittymästä lähetettyä parametria, muuntaa lähde- ja kohdekielet vastaaviksi kielikoodeiksi ja lataa sitten mallit ja laskee käännöksen ja palauttaa tuloksen.
Tapa ilmoittaa tämä toiminto alasimelle palvelintoiminnoksi on käyttää koristelua
@anvil.server.callable
.
Meillä on vielä viimeinen vaihe yhdistääksesi taustakoodin, jonka voimme suorittaa jupyter-muistikirjassa, alasin sovellukseemme.
Siirry alasin online-editoriin, napsauta rataskuvaketta ja napsauta sitten "Uplink…".
Katso alla olevaa näyttöä
Näet ponnahdusikkunan ja napsauta sitten "Ota palvelimen ylöslinkki käyttöön tälle sovellukselle" saadaksesi kopioimasi yhteyskoodin.
Liität koodin seuraavalle koodiriville:
anvil.server.connect("code here")
Tämä rivi käynnistää palvelimen, joka yhdistää paikallisen koodin skripti tai jupyter-muistikirjasi alasin sovellukseen funktiolla "käännös", joka on rekisteröity palvelinfunktioksi.
Viimeinen vaihe
Tähän asti sinulla on taustapalvelimesi käynnissä palvelintoiminnolla, joka lataa konekäännösmallin ja tekee käännöksen otettuaan huomioon käyttöliittymästä lähetetyt parametrit. Tämä kuva tiivistää, mitä olemme tähän mennessä yhdessä toteuttaneet.
Viimeinen vaihe on käynnistää sovellus napsauttamalla alasimen editorin yläreunan keskellä olevaa Suorita-painiketta.
Kun olet suorittanut sovelluksen, näet oikeassa yläkulmassa painikkeen "julkaise tämä sovellus", joka antaa sinulle linkin, jonka voit jakaa päästäksesi sovellukseen ja tehdäksesi käännöksen!
Johtopäätös
Seuraamalla tätä artikkelia olet voinut ottaa käyttöön MT-mallin ja rakentaa verkkokäyttöliittymän sen käyttöä varten.
Vielä on paljon selvitettävää mallin tehokkaassa käyttöönotossa alasimella, mutta nyt sinulla on perusasiat käyttöönottomatkan aloittamiseen ja Pythonissa aiemman tietämyksesi potentiaali tehdä paljon enemmän!
Tule johonkin ilmaisista työpajoistamme
Aloita urasi datatieteilijänä ilmaisilla työpajoillamme, jotka perustuvat mukautuvaan opetussuunnitelmaan ja joita ohjaavat alan asiantuntijat.