Telepítse gépi tanulási modelljét a Python segítségével

Python
gépi tanulás
ML-modell
Telepítse gépi tanulási modelljét a Python segítségével cover image

Amikor az adattudomány területén dolgozik, általában egy új kihívással találja magát szemben, miután befejezett egy hosszú képzési ciklust, finomhangolást és fejlesztést. Gratulálunk egy olyan ML modell felépítéséhez, amely jó teljesítményt nyújt, és megfelel az Ön igényeinek. Az Ön előtt álló kihívás az, hogy hogyan tudja eljuttatni ezt a szép technológiát a kívánt felhasználókhoz? Vagy esetleg hogyan tudja hatékonyan kommunikálni az eredményt a vállalata érdekelt feleivel? Vagy hogyan oszthatja meg modelleredményeit hatékonyan kollégáival a jobb együttműködés érdekében?

A gépi tanulás bevezetése néha nehéz lehet, mivel a modellek elkészítéséhez szükséges szokásos készségkészletből származó technológiákat és technikákat fogunk használni.

Ebben a cikkben a gépi tanulási modellek csak python használatával történő üzembe helyezésének módját fogjuk felfedezni. Útközben pedig egy gépi fordítási modellt és egy weboldalt fogunk építeni.

Tehát itt vannak a lépések, amelyeket látni fogunk:

  1. A Huggingface gépi fordítási modellek használata.

  2. Az Anvil felfedezése és webes felhasználói felület készítése modellünkhöz.

  3. A backend és a frontend összekapcsolása, és munkánkkal a világ kiszolgálása!

Gépi fordítási modell készítése

A Huggingface egy mesterséges intelligencia közösség, amely a „jó gépi tanulás demokratizálásán” dolgozik. E kezdeményezés keretében számos betanított modellt találhat különböző gépi tanulási feladatokról: képszegmentálás, szöveg beszédre, szöveggenerálás… és gépi fordítás is!

A gépi fordítás egyszerűen két nyelv közötti fordítási feladat, amelyet egy szoftver, esetünkben egy transzformátorokkal felépített gépi tanulási modell hajt végre.

A transzformátor egy figyelemre épülő mély tanulási architektúra. Indítsuk el a gépeden!

A transformers python könyvtárat fogjuk használni az MT-modell letöltéséhez és a fordítás végrehajtásához.

pip install torch
pip install transformers

A szükséges csomagok telepítése után importálja a következő modulokat:

from transformers import MarianTokenizer, MarianMTModel
from typing import List

Vegyünk egy modellt, amely lefordít egy mondatot németről angolra. Szükségünk van a modell nevére:

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

Most importáljuk a betanított modellt és a tokenizátort a következő sorok használatával:

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

A letöltés mérete körülbelül 300 MB, a befejezés után a modellt egy helyi könyvtárban tárolhatja az alábbiak segítségével:

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

Nézzük a modellt:

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

Most a mondat angol fordítását a `words[0]-ban kell tárolni.

Fedezze fel az Anvil-t, és készítsen webes felhasználói felületet

Az Anvil egy olyan keretrendszer és megoldások halma, amely lehetővé teszi webalkalmazások készítését kizárólag Python kód használatával. Drag and drop szerkesztővel rendelkezik a webes felhasználói felület felépítéséhez, és lehetővé teszi, hogy a helyi gépről származó kódot csatlakoztassa az Ön által készített felhasználói felülethez és tárolja az alkalmazást egy megosztható hivatkozás segítségével.

Kezdjük tehát egy alkalmazás létrehozásával innen. Válasszon üres alkalmazást, majd anyagtervezést.

Valami ilyesmit kellene látnod:

Anvil

Most számítok rá, hogy használja a szerkesztőt, és valami hasonlót készít a következőhöz:

Anvil Editor

Ezen az egyszerű felhasználói felületen két legördülő menü található a forrás- és a célnyelv kiválasztásához. Rendelkezünk továbbá egy TextBox-szal a forrásszöveg beviteléhez, valamint egy richText komponenssel a lefordított szöveg megjelenítéséhez. A fordítási feladat elindításához egy Gomb is látható.

Az alább látható kódrészletekkel való szinkronizáláshoz adja meg ugyanazokat az azonosítókat az összetevőknek. Az alábbiakban talál egy példát arra, hogy hol állíthatja be egy összetevő azonosítóját:

Anvil Editor Rename Component

Az általunk használt azonosítók a következők:

Összetevő

azonosító

Forrásnyelv legördülő menüforrás_nyelv
Cél nyelvének legördülő menüjedest_lang
Forrásnyelv TextBoxforrásszöveg
Fordított szöveg RichTextfordított_szöveg

Onclick funkció

Hozzáadtunk egy gombot, amellyel elindítható a fordítás. A szerkesztőben kattintson a gombra, majd görgessen le a tulajdonságok panelen. Alul egy esemény részt fog látni. A „kattintás” melletti szövegzónába írja be a „fordítás” kifejezést, majd kattintson a szövegzóna jobb oldalán található nyílra.

Ezzel a kódnézetbe kerül, ahol néhány automatikusan generált python kódot fog látni.

Látni fogja, hogy az üllő automatikusan hozzáadta a translate nevű funkciót. Valahányszor a kezelőfelületünk gombjára kattintanak, a rendszer meghívja.

Így kell kinéznie a függvénynek:

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

Ez a funkció 3 fő feladatot lát el:

  1. Szerezzen információkat a felhasználói felületről

  2. Küldje el az információkat a háttérrendszerünknek a „translation” szerverfüggvény segítségével (a következő részben elmagyarázzuk)

  3. Küldje el a lefordított szöveget a felhasználói felületre.

Szerver funkció

Koncentráljunk erre a kódsorra:

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

Az anvil.server.call függvényt használjuk a "translation" nevű szerverfüggvény meghívására, amelyet a helyi gépen a háttérkódunkban fogunk meghatározni.

Ez a funkció kapcsolatként szolgál a webes felhasználói felület és a gépi fordítási modellünkön futó háttérkód között.

Amint észrevette, ennek a függvénynek a paramétereit is elküldjük az anvil.server.call függvényben.

Vezesse be MT modellünket

Először telepítsük az üllőt

pip install anvil-uplink

Most megépítettük webes felületünket az üllőszerkesztőben, és alapvető kódblokkjaink vannak a gépi fordítási modellünk futtatásához és a fordításhoz.

A következő lépés az előző részben tárgyalt szerverfunkció meghatározása.

Itt van a függvény kódja:

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

A függvény átveszi a frontendről küldött 3 paramétert, konvertálja a forrás- és célnyelvet a megfelelő nyelvi kódokra, majd betölti a modelleket, kiszámítja a fordítást és visszaadja az eredményt.

Ezt a funkciót a dekorátor használatával deklarálhatjuk üllőként szerver funkcióként

@anvil.server.callable.

Még egy utolsó lépést kell tennünk, hogy összekapcsoljuk a Jupyter notebookban futtatható háttérkódot az üllőalkalmazásunkkal.

Nyissa meg az üllő online szerkesztőjét, kattintson a fogaskerék ikonra, majd kattintson a „Felfelé irányuló hivatkozás…” elemre.

Lásd az alábbi képernyőt

Anvil Editor Uplink

Megjelenik egy felugró ablak, majd kattintson a „Szerver uplink engedélyezése ehhez az alkalmazáshoz” lehetőségre, hogy megkapja a másolt csatlakozási kódot.

Anvil Uplink

Illessze be a kódot a következő kódsorba:

anvil.server.connect("code here")

Ez a sor elindít egy kiszolgálót, amely összeköti a helyi kódszkriptet vagy a Jupyter notebookot az üllőalkalmazással a kiszolgálófüggvényként regisztrált "translation" funkcióval.

Utolsó lépés

Eddig a háttérkiszolgáló egy szerverfüggvénnyel fut, amely betölti a gépi fordítási modellt, és elvégzi a fordítást, miután figyelembe vette a frontendről küldött paramétereket. Ez az ábra összefoglalja, amit eddig közösen megvalósítottunk.

Anvil Uplink

Az utolsó lépés az alkalmazás futtatása az üllőszerkesztő felső közepén található Futtatás gombra kattintva.

Az alkalmazás futtatása után a jobb felső sarokban megjelenik egy „Az alkalmazás közzététele” gomb, amely egy linket ad, amelyet megosztva elérheti az alkalmazást és elvégezheti a fordítást!

Következtetés

A cikk követésével telepíthetett egy MT-modellt, és létrehozhat egy webes felületet a használatához.

Még sok felfedeznivaló van a modell üllő használatával történő hatékony üzembe helyezésével kapcsolatban, de most már megvannak az alapok a bevezetési út megkezdéséhez, valamint a Pythonban szerzett korábbi ismereteinek további lehetőségei.

Jöjjön el ingyenes workshopjaink egyikére

Kezdje adattudós karrierjét ingyenes workshopjainkkal, amelyek adaptálható tananyagon alapulnak, és iparági szakértők vezetik őket.


Career Services background pattern

Karrier szolgáltatások

Contact Section background image

Maradjunk kapcsolatban

Code Labs Academy © 2024 Minden jog fenntartva.