Makine Öğrenimi Modelinizi Python ile dağıtın

python
makine öğrenimi
ML modeli
Makine Öğrenimi Modelinizi Python ile dağıtın cover image

Veri bilimi alanında çalışırken, uzun bir eğitim, ince ayar ve iyileştirme döngüsünü tamamladıktan sonra genellikle kendinizi yeni bir zorlukla karşı karşıya bulursunuz. İyi performansa sahip ve ihtiyaçlarınızı karşılayan bir makine öğrenimi modeli oluşturduğunuz için tebrikler. Şimdi karşı karşıya olduğunuz zorluk, bu güzel teknolojiyi hedeflenen kullanıcılara nasıl sunabileceğinizdir? Ya da belki sonucunuzu şirketinizdeki paydaşlara etkili bir şekilde nasıl iletebilirsiniz? Veya daha iyi bir işbirliği için model sonuçlarınızı iş arkadaşlarınızla etkili bir şekilde nasıl paylaşabilirsiniz?

Modelleri oluşturmak için gereken olağan becerilerin dışındaki teknolojileri ve teknikleri kullanacağımız için makine öğrenimini uygulamak bazen zor olabilir.

Bu yazıda makine öğrenimi modellerini yalnızca python kullanarak dağıtmanın bir yolunu keşfedeceğiz. Bu arada bir makine çevirisi modeli ve bir web sayfası oluşturacağız.

İşte göreceğimiz adımlar:

  1. Huggingface makine çevirisi modellerini kullanma.

  2. Örs'ü keşfetmek ve modelimiz için bir web kullanıcı arayüzü oluşturmak.

  3. Arka uç ile ön ucu birbirine bağlamak ve işimizi dünyaya sunmak!

Makine Çevirisi modelini oluşturun

Huggingface, "iyi makine öğrenimini demokratikleştirmek" için çalışan bir yapay zeka topluluğudur. Bu girişim kapsamında, farklı makine öğrenimi görevleri konusunda eğitimli birçok model bulabilirsiniz: görüntü segmentasyonu, metinden konuşmaya, metin oluşturma… ve ayrıca makine çevirisi!

Makine çevirisi, iki dil arasında bir yazılım parçası tarafından gerçekleştirilen bir çeviri görevidir; bizim durumumuzda, transformatörlerle oluşturulmuş bir makine öğrenimi modelidir.

Transformatör dikkati temel alan derin bir öğrenme mimarisidir. Hadi makinenizde çalıştıralım!

MT modelini indirmek ve çeviri gerçekleştirmek için bir python kütüphanesi olan transformers kullanacağız.

pip install torch
pip install transformers

Gerekli paketleri kurduktan sonra aşağıdaki modülleri içe aktarın:

from transformers import MarianTokenizer, MarianMTModel
from typing import List

Bir cümleyi Almancadan İngilizceye çeviren bir model elde edelim. Modelin adına ihtiyacımız var:

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

Şimdi aşağıdaki satırları kullanarak eğitilmiş modeli ve tokenizer’ı içe aktaralım:

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

İndirme boyutu yaklaşık 300 MB'tır, bitirdikten sonra aşağıdakileri kullanarak modeli yerel bir dizinde saklayabilirsiniz:

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

Modeli yapalım:

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

Artık cümlenin İngilizce çevirisini "words[0]" içinde saklamış olmalısınız.

Anvil'i keşfedin ve bir web kullanıcı arayüzü oluşturun

Anvil, yalnızca python kodunu kullanarak web uygulamaları oluşturmanıza olanak tanıyan bir çerçeve ve bir dizi çözümdür. Web kullanıcı arayüzü oluşturmak için bir sürükle ve bırak düzenleyicisine sahiptir ve yerel makinenizdeki kodu, oluşturduğunuz kullanıcı arayüzüne bağlamanıza ve paylaşabileceğiniz bir bağlantı vererek uygulamanızı barındırmanıza olanak tanır.

O halde buradan bir uygulama oluşturmaya başlayalım. Boş uygulamayı ve ardından malzeme tasarımını seçin.

Bunun gibi bir şey görmelisiniz:

Anvil

Şimdi editörü kullanmanız ve aşağıdakine benzer bir şey oluşturmanız konusunda size güveneceğim:

Anvil Editor

Bu basit kullanıcı arayüzünde kaynak ve hedef dilleri seçmek için iki Açılır Menüye sahibiz. Ayrıca kaynak metni girmek için bir TextBox'ımız ve çevrilmiş metni görüntülemek için bir richText bileşenimiz var. Ayrıca çeviri görevini başlatmak için bir Düğme de görebilirsiniz.

Aşağıda göreceğiniz kod parçacıklarıyla senkronizasyon yapabilmek için bileşenlere aynı ID’leri verin. Aşağıda bir bileşenin kimliğini nerede ayarlayabileceğinize ilişkin bir örnek bulabilirsiniz:

Anvil Editor Rename Component

Kullandığımız kimlikler:

<tablo sınırı = "2">

Bileşen

Kimlik

Kaynak dil Açılır Penceresi source_lang Hedef dil Açılır Penceresi dest_lang Kaynak dil TextBox source_text Çevrilmiş metin Zengin Metin translated_text

Tıklama işlevi

Çeviriyi başlatmak için kullanılan bir düğme ekledik. Editörünüzden düğmeye tıklayın ve ardından özellikler panelinde aşağı kaydırın. Alt kısımda bir etkinlik bölümü göreceksiniz. "Tıklama"nın yanındaki metin alanına "çevir" yazın ve ardından bu metin bölgesinin sağındaki oka tıklayın.

Bu sizi otomatik olarak oluşturulan bazı python kodlarını göreceğiniz kod görünümüne götürecektir.

Anvil'in otomatik olarak çeviri adı verilen bir işlevi eklediğini göreceksiniz. Kullanıcı arayüzümüzdeki düğmeye her tıklandığında çağrılacaktır.

İşte fonksiyonun nasıl görünmesi gerektiği:

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

Bu işlev 3 ana görevi yerine getirir:

  1. Kullanıcı Arayüzünden Bilgi Alın

  2. Sunucu fonksiyonu “translation”ı kullanarak bilgileri arka uçumuza gönderin (bunu bir sonraki bölümde açıklayacağız)

  3. Çevrilen metni kullanıcı arayüzüne gönderin.

Sunucu işlevi

Bu kod satırına odaklanalım:

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

Backend kodumuzda tanımlayacağımız “translation” isimli sunucu fonksiyonunu yerel makinede çağırmak için anvil.server.call kullanıyoruz.

Bu işlev, web kullanıcı arayüzü ile makine çeviri modelimizde çalışacak arka uç kodu arasında bir bağlantı görevi görecektir.

Fark ettiğiniz gibi bu fonksiyonun parametrelerini de 'anvil.server.call' fonksiyonuna gönderiyoruz.

MT modelimizi dağıtın

İlk önce örsü yerleştirelim

pip install anvil-uplink

Artık web arayüzümüzü örs düzenleyicide oluşturduk ve makine çeviri modelimizi çalıştırmak ve çeviri yapmak için temel kod bloklarımız var.

Bir sonraki adım, önceki bölümde tartıştığımız sunucu fonksiyonunu tanımlamaktır.

İşte fonksiyonun kodu:

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

İşlev, ön uçtan gönderilen 3 parametreyi alacak, kaynak ve hedef dilleri ilgili dil kodlarına dönüştürecek ve ardından modelleri yükleyerek çeviriyi hesaplayacak ve sonucu döndürecektir.

Bu işlevi örs'e sunucu işlevi olarak bildirmenin yolu dekoratörü kullanmaktır.

'@anvil.server.callable'.

Jupyter notebook'ta çalıştırabileceğimiz backend kodunu anvil uygulamamıza bağlamak için yapmamız gereken son bir adım var.

Anvil çevrimiçi düzenleyicisine gidin, dişli simgesine tıklayın ve ardından “Uplink…” seçeneğine tıklayın.

Aşağıdaki ekrana bakın

Anvil Editor Uplink

Bir açılır pencerenin göründüğünü göreceksiniz, ardından kopyaladığınız bağlantı kodunu almak için "Bu uygulama için sunucu yukarı bağlantısını etkinleştir" seçeneğine tıklayın.

Anvil Uplink

Kodu aşağıdaki kod satırına yapıştırırsınız:

anvil.server.connect("code here")

Bu satır, yerel kod komut dosyanızı veya jupyter not defterinizi, sunucu işlevi olarak kayıtlı 'çeviri' işleviyle örs uygulamasına bağlayan bir sunucuyu başlatacaktır.

Son adım

Bu noktaya kadar arka uç sunucunuzun, makine çeviri modelini yükleyen ve ön uçtan gönderilen parametreleri dikkate alarak çeviriyi yapan bir sunucu fonksiyonu ile çalışmasını sağlarsınız. Bu şekil şu ana kadar birlikte hayata geçirdiklerimizi özetlemektedir.

Anvil Uplink

Son adım, örs düzenleyicinin üst orta kısmındaki çalıştır düğmesine tıklayarak uygulamayı çalıştırmaktır.

Uygulamayı çalıştırdıktan sonra sağ üst köşede, uygulamaya erişmek ve çevirinizi yapmak için paylaşabileceğiniz bir bağlantı verecek olan "bu uygulamayı yayınla" düğmesini göreceksiniz!

Çözüm

Bu makaleyi takip ederek bir MT modelini dağıtabildiniz ve onu kullanmak için bir web arayüzü oluşturabildiniz.

Bir modelin örs kullanarak etkili bir şekilde nasıl konuşlandırılacağına dair hala keşfedilecek çok şey var, ancak artık dağıtım yolculuğunuza başlamak için temel bilgilere sahipsiniz ve çok daha fazlasını yapmak için Python'daki önceki bilgilerinizin potansiyelini artırabilirsiniz!

Ücretsiz Atölyelerimizden Birine Gelin

Uyarlanabilir bir müfredatı temel alan ve sektör uzmanlarının rehberliğinde olan ücretsiz atölyelerimizle veri bilimci olarak kariyerinize başlayın.


Career Services background pattern

Kariyer Hizmetleri

Contact Section background image

İletişimde kalalım

Code Labs Academy © 2024 Her hakkı saklıdır.