Nasaďte svůj model strojového učení pomocí Pythonu

python
strojové učení
model ML
Nasaďte svůj model strojového učení pomocí Pythonu cover image

Když pracujete v oblasti datové vědy, po absolvování dlouhé smyčky školení, dolaďování a zlepšování se obvykle ocitnete před novou výzvou. Gratulujeme k vytvoření modelu ML, který má dobrý výkon a odpovídá vašim potřebám. Výzvou, kterou máte nyní po ruce, je, jak můžete dodat tento pěkný kus technologie zamýšleným uživatelům? Nebo možná, jak můžete efektivně komunikovat svůj výsledek se zainteresovanými stranami ve vaší společnosti? Nebo dokonce jak můžete efektivně sdílet výsledky svých modelů se svými kolegy pro lepší spolupráci?

Nasazení strojového učení může být někdy obtížné, protože budeme používat technologie a techniky mimo obvyklý soubor dovedností potřebných k sestavení modelů.

V tomto článku objevíme způsob, jak nasadit modely strojového učení pouze pomocí pythonu. A během toho vytvoříme model strojového překladu a webovou stránku.

Takže zde jsou kroky, které uvidíme:

  1. Použití modelů strojového překladu Huggingface.

  2. Objevení Kovadlina a vytvoření webového uživatelského rozhraní pro náš model.

  3. Propojení backendu a frontendu a sloužit světu naší prací!

Vytvořte model strojového překladu

Huggingface je komunita umělé inteligence, která pracuje na „demokratizaci dobrého strojového učení“. V rámci této iniciativy můžete najít mnoho vyškolených modelů na různé úlohy strojového učení: segmentace obrázků, převod textu na řeč, generování textu… a také strojový překlad!

Strojový překlad je jednoduše překladová úloha mezi dvěma jazyky prováděná kusem softwaru, v našem případě modelem strojového učení vytvořeným pomocí transformátorů.

Transformátor je architektura hlubokého učení založená na pozornosti. Pojďme to spustit na vašem stroji!

Ke stažení modelu MT a provedení překladu použijeme transformers, knihovnu python.

pip install torch
pip install transformers

Po instalaci potřebných balíčků importujte následující moduly:

from transformers import MarianTokenizer, MarianMTModel
from typing import List

Pojďme získat model, který přeloží větu z němčiny do angličtiny. Potřebujeme název modelu:

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

Nyní importujme trénovaný model a tokenizer pomocí následujících řádků:

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

Velikost stahování je asi 300 MB, po dokončení můžete model uložit do místního adresáře pomocí následujícího:

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

Pojďme na model:

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

Nyní byste měli mít anglický překlad věty uložený v words[0].

Objevte Anvil a vytvořte si webové uživatelské rozhraní

Kovadlina je rámec a sada řešení, která vám umožňují vytvářet webové aplikace pouze pomocí kódu pythonu. Má editor drag and drop pro vytváření webového uživatelského rozhraní a umožňuje vám připojit kód z vašeho místního počítače k ​​uživatelskému rozhraní, které vytváříte, a hostovat vaši aplikaci tím, že vám poskytne odkaz, který můžete sdílet.

Začněme tedy vytvořením aplikace zde. Zvolte prázdnou aplikaci a poté materiálový design.

Měli byste vidět něco takového:

Anvil

Nyní budu počítat s tím, že použijete editor a vytvoříte něco podobného následujícímu:

Anvil Editor

V tomto jednoduchém uživatelském rozhraní máme dvě rozbalovací nabídky pro výběr zdrojového a cílového jazyka. Máme také TextBox pro zadání zdrojového textu a komponentu richText pro zobrazení přeloženého textu. Můžete také vidět tlačítko pro spuštění úlohy překladu.

Chcete-li synchronizovat s úryvky kódu, které uvidíte níže, přidělte komponentám stejná ID. Níže naleznete příklad, kde můžete nastavit id komponenty:

Anvil Editor Rename Component

ID, která používáme, jsou:

Komponenta

ID

Rozbalovací seznam zdrojového jazykasource_lang
Rozbalovací nabídka cílového jazykadest_lang
Zdrojový jazyk TextBoxzdrojový_text
Přeložený text RichTextpřeložený_text

Funkce Onclick

Přidali jsme tlačítko, které se používá ke spuštění překladu. V editoru klikněte na tlačítko a poté přejděte dolů na panelu vlastností. Ve spodní části uvidíte sekci události. V textové zóně vedle „kliknutí“ zadejte „přeložit“ a poté klikněte na šipku napravo od této textové zóny.

Tím se dostanete do zobrazení kódu, kde uvidíte nějaký automaticky generovaný kód pythonu.

Zjistíte, že kovadlina automaticky přidala funkci zvanou překládat. Zavolá se při každém kliknutí na tlačítko v našem uživatelském rozhraní.

Zde je návod, jak by funkce měla vypadat:

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

Tato funkce plní 3 hlavní úkoly:

  1. Získejte informace z uživatelského rozhraní

  2. Odešlete informace na náš backend pomocí funkce serveru „překlad“ (vysvětlíme to v další části)

  3. Odešlete přeložený text do uživatelského rozhraní.

Funkce serveru

Zaměřme se na tento řádek kódu:

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

Anvil.server.call používáme k volání funkce serveru nazvané translation, kterou definujeme v našem backendovém kódu na místním počítači.

Tato funkce bude sloužit jako spojení mezi webovým uživatelským rozhraním a backendovým kódem, který poběží na našem modelu strojového překladu.

Jak jste si všimli, parametry této funkce posíláme také ve funkci anvil.server.call.

Nasaďte náš model MT

Nejprve nainstalujme kovadlinu

pip install anvil-uplink

Nyní jsme vytvořili naše webové rozhraní v editoru kovadliny a máme základní bloky kódu pro spuštění našeho modelu strojového překladu a provedení překladu.

Dalším krokem je definování funkce serveru, kterou jsme probrali v předchozí části.

Zde je kód funkce:

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

Funkce převezme 3 parametry odeslané z frontendu, převede zdrojový a cílový jazyk do příslušných jazykových kódů a poté načte modely a vypočítá překlad a vrátí výsledek.

Způsob, jak tuto funkci deklarovat na kovadlině jako funkci serveru, je pomocí dekorátoru

@kovadlina.server.callable.

Musíme udělat poslední krok, abychom propojili backendový kód, který můžeme spustit v jupyter notebooku, s naší kovadlinkovou aplikací.

Přejděte do online editoru kovadliny, klikněte na ikonu ozubeného kola a poté klikněte na „Uplink…“.

Viz níže uvedená obrazovka

Anvil Editor Uplink

Zobrazí se vyskakovací okno, poté klikněte na „Povolit server uplink pro tuto aplikaci“, abyste získali kód připojení, který zkopírujete.

Anvil Uplink

Kód vložíte do následujícího řádku kódu:

anvil.server.connect("code here")

Tento řádek spustí server, který připojí váš lokální kódový skript nebo notebook jupyter k aplikaci kovadliny s funkcí translation registrovanou jako funkce serveru.

Poslední krok

Do této chvíle máte svůj backend server spuštěný se serverovou funkcí, která načte model strojového překladu a provede překlad po zohlednění parametrů odeslaných z frontendu. Tento obrázek shrnuje to, co jsme dosud společně realizovali.

Anvil Uplink

Posledním krokem je spuštění aplikace kliknutím na tlačítko Spustit uprostřed nahoře v editoru kovadliny.

Po spuštění aplikace uvidíte v pravém horním rohu tlačítko „publikovat tuto aplikaci“, které vám poskytne odkaz, který můžete sdílet pro přístup k aplikaci a provedení překladu!

Závěr

Podle tohoto článku jste byli schopni nasadit model MT a vytvořit webové rozhraní pro jeho použití.

Stále je co objevovat, jak efektivně nasadit model pomocí kovadliny, ale nyní máte základy, abyste mohli začít svou cestu nasazení a rozšiřte potenciál svých předchozích znalostí v Pythonu, abyste mohli udělat mnohem víc!

Přijďte na jeden z našich bezplatných workshopů

Začněte svou kariéru datového vědce pomocí našich bezplatných workshopů, které jsou založeny na přizpůsobitelném učebním plánu a vedené odborníky z oboru.


Career Services background pattern

Kariérní služby

Contact Section background image

Zůstaňme v kontaktu

Code Labs Academy © 2024 Všechna práva vyhrazena.