Wdróż swój model uczenia maszynowego za pomocą języka Python

python
uczenie maszynowe
model ML

Zaktualizowano na September 03, 20249 Przeczytaj minuty

Wdróż swój model uczenia maszynowego za pomocą języka Python cover image

Pracując w dziedzinie analityki danych, zwykle po zakończeniu długiej pętli szkoleń, dostrajania i doskonalenia stajesz przed nowym wyzwaniem. Gratulujemy zbudowania modelu uczenia maszynowego, który ma dobrą wydajność i odpowiada Twoim potrzebom. Teraz wyzwanie, przed którym stoisz, brzmi: w jaki sposób możesz dostarczyć ten fajny kawałek technologii docelowym użytkownikom? A może jak efektywnie komunikować swój wynik interesariuszom w Twojej firmie? A nawet w jaki sposób możesz skutecznie udostępniać wyniki swojego modelu współpracownikom, aby zapewnić lepszą współpracę?

Wdrożenie uczenia maszynowego może być czasami trudne, ponieważ będziemy używać technologii i technik wykraczających poza zwykły zestaw umiejętności potrzebnych do tworzenia modeli.

W tym artykule odkryjemy sposób wdrażania modeli uczenia maszynowego przy użyciu samego Pythona. Po drodze zbudujemy model tłumaczenia maszynowego i stronę internetową.

Oto kroki, które zobaczymy:

  1. Korzystanie z modeli tłumaczenia maszynowego Huggingface.

  2. Odkrycie Anvil i zbudowanie internetowego interfejsu użytkownika dla naszego modelu.

  3. Łączymy backend i frontend i służymy światu naszą pracą!

Zbuduj model tłumaczenia maszynowego

Huggingface to społeczność AI działająca na rzecz „demokratyzacji dobrego uczenia maszynowego”. W ramach tej inicjatywy można znaleźć wiele przeszkolonych modeli w zakresie różnych zadań związanych z uczeniem maszynowym: segmentacji obrazu, zamiany tekstu na mowę, generowania tekstu… a także tłumaczenia maszynowego!

Tłumaczenie maszynowe to po prostu zadanie tłumaczenia między dwoma językami wykonywane przez oprogramowanie, w naszym przypadku model uczenia maszynowego zbudowany z transformatorów.

Transformator to architektura głębokiego uczenia się oparta na uwadze. Uruchommy go na Twojej maszynie!

Do pobrania modelu MT i wykonania tłumaczenia użyjemy transformers, biblioteki Pythona.

pip install torch
pip install transformers

Po zainstalowaniu potrzebnych pakietów zaimportuj następujące moduły:

from transformers import MarianTokenizer, MarianMTModel
from typing import List

Zdobądźmy model, który tłumaczy zdanie z języka niemieckiego na angielski. Potrzebujemy nazwę modelu:

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

Zaimportujmy teraz wyszkolony model i tokenizer za pomocą następujących linii:

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

Rozmiar pliku do pobrania wynosi około 300 MB, po zakończeniu możesz zapisać model w lokalnym katalogu, korzystając z następujących poleceń:

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

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

Teraz powinieneś mieć angielskie tłumaczenie zdania zapisane w words[0].

Odkryj Anvil i zbuduj internetowy interfejs użytkownika

Anvil to framework i zbiór rozwiązań pozwalających budować aplikacje internetowe przy użyciu wyłącznie kodu Pythona. Posiada edytor „przeciągnij i upuść” do tworzenia internetowego interfejsu użytkownika i umożliwia połączenie kodu z komputera lokalnego z interfejsem użytkownika, który budujesz i hostujesz aplikację, udostępniając łącze, które możesz udostępnić.

Zacznijmy więc od stworzenia aplikacji tutaj. Wybierz pustą aplikację, a następnie projekt materiału.

Powinieneś zobaczyć coś takiego:

Anvil

Teraz liczę na to, że skorzystasz z edytora i zbudujesz coś podobnego do poniższego:

Anvil Editor

W tym prostym interfejsie użytkownika mamy dwie listy rozwijane umożliwiające wybór języka źródłowego i docelowego. Mamy także TextBox do wprowadzania tekstu źródłowego i komponent richText do wyświetlania przetłumaczonego tekstu. Możesz także zobaczyć przycisk umożliwiający rozpoczęcie zadania tłumaczenia.

Aby zsynchronizować się z fragmentami kodu, które zobaczysz poniżej, nadaj komponentom te same identyfikatory. Poniżej znajdziesz przykład ustawienia identyfikatora komponentu:

Anvil Editor Rename Component

Identyfikatory, których używamy to:

<głowa>

Komponent

Identyfikator

<ciało>

Lista języków źródłowych język_źródłowy Lista języka docelowego dest_lang Pole tekstowe języka źródłowego tekst_źródłowy Przetłumaczony tekst RichText przetłumaczony_tekst

Funkcja Onclick

Dodaliśmy przycisk służący do rozpoczęcia tłumaczenia. W edytorze kliknij przycisk, a następnie przewiń w dół panel właściwości. Na dole zobaczysz sekcję wydarzeń. W strefie tekstowej obok „kliknij” wpisz „przetłumacz”, a następnie kliknij strzałkę po prawej stronie tej strefy tekstowej.

Spowoduje to przejście do widoku kodu, w którym zobaczysz automatycznie wygenerowany kod Pythona.

Przekonasz się, że kowadło automatycznie dodało funkcję zwaną tłumaczeniem. Będzie wywoływany za każdym razem, gdy zostanie kliknięty przycisk w naszym interfejsie użytkownika.

Oto jak powinna wyglądać funkcja:

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

Funkcja ta realizuje 3 główne zadania:

  1. Uzyskaj informacje z interfejsu użytkownika

  2. Wyślij informację do naszego backendu za pomocą funkcji serwera „tłumaczenie” (wyjaśnimy to w następnej sekcji)

  3. Wyślij przetłumaczony tekst do interfejsu użytkownika.

Funkcja serwera

Skupmy się na tej linijce kodu:

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

Używamy anvil.server.call do wywoływania funkcji serwera zwanej „translation”, którą zdefiniujemy w naszym kodzie zaplecza na maszynie lokalnej.

Ta funkcja będzie służyć jako połączenie między internetowym interfejsem użytkownika a kodem zaplecza, który będzie działał w naszym modelu tłumaczenia maszynowego.

Jak zauważyłeś, parametry tej funkcji przesyłamy również w funkcji anvil.server.call.

Wdróż nasz model MT

Najpierw zainstalujmy kowadło

pip install anvil-uplink

Teraz zbudowaliśmy nasz interfejs sieciowy w edytorze Anvil i mamy podstawowe bloki kodu do uruchomienia naszego modelu tłumaczenia maszynowego i wykonania tłumaczenia.

Następnym krokiem jest zdefiniowanie funkcji serwera, którą omówiliśmy w poprzedniej sekcji.

Oto kod funkcji:

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

Funkcja pobierze 3 parametry przesłane z frontendu, przekonwertuje języki źródłowy i docelowy na odpowiednie kody języków, a następnie załaduje modele, obliczy tłumaczenie i zwróci wynik.

Sposobem zadeklarowania tej funkcji na Anvil jako funkcję serwera jest użycie dekoratora

@anvil.server.callable.

Pozostał nam jeszcze ostatni krok, aby połączyć kod backendu, który możemy uruchomić w notatniku jupyter, z naszą aplikacją Anvil.

Przejdź do edytora online Anvil, kliknij ikonę koła zębatego, a następnie kliknij „Uplink…”.

Zobacz poniższy ekran

Anvil Editor Uplink

Zobaczysz wyskakujące okienko, a następnie kliknij „Włącz łącze do serwera dla tej aplikacji”, aby uzyskać skopiowany kod połączenia.

Anvil Uplink

Wklejasz kod do następującej linii kodu:

anvil.server.connect("code here")

Ta linia uruchomi serwer, który połączy lokalny skrypt kodu lub notatnik jupyter z aplikacją Anvil z funkcją „translation” zarejestrowaną jako funkcja serwera.

Ostatni krok

Do tego momentu masz serwer zaplecza działający z funkcją serwera, która ładuje model tłumaczenia maszynowego i wykonuje tłumaczenie po uwzględnieniu parametrów przesłanych z frontendu. Liczba ta podsumowuje to, co wspólnie wdrożyliśmy do tej pory.

Anvil Uplink

Ostatnim krokiem jest uruchomienie aplikacji poprzez kliknięcie przycisku uruchamiania znajdującego się w górnej części edytora kowadła.

Po uruchomieniu aplikacji w prawym górnym rogu zobaczysz przycisk „opublikuj tę aplikację”, który wyświetli link, który możesz udostępnić, aby uzyskać dostęp do aplikacji i wykonać tłumaczenie!

Wniosek

Postępując zgodnie z tym artykułem, udało Ci się wdrożyć model MT i zbudować interfejs sieciowy, aby z niego korzystać.

Nadal jest wiele do odkrycia, jeśli chodzi o skuteczne wdrażanie modelu za pomocą kowadła, ale teraz masz podstawy, aby rozpocząć podróż wdrożeniową i dalej wykorzystywać potencjał swojej wcześniejszej wiedzy w języku Python, aby osiągnąć znacznie więcej!

Przyjdź na jeden z naszych bezpłatnych warsztatów

Rozpocznij karierę jako analityk danych dzięki naszym bezpłatnym warsztatom, które opierają się na elastycznym programie nauczania i są prowadzone przez ekspertów branżowych.

Rozważ karierę technologiczną - dowiedz się więcej o internetowych bootcampach CLA

Career Services background pattern

Usługi związane z karierą

Contact Section background image

Pozostańmy w kontakcie

Code Labs Academy © 2025 Wszelkie prawa zastrzeżone.