Saat bekerja di bidang ilmu data, Anda biasanya menghadapi tantangan baru setelah menyelesaikan serangkaian pelatihan, penyesuaian, dan peningkatan yang panjang. Selamat telah membangun model ML yang memiliki performa baik dan menjawab kebutuhan Anda. Sekarang tantangan yang Anda hadapi adalah bagaimana Anda bisa menghadirkan teknologi bagus ini kepada pengguna yang dituju? Atau mungkin bagaimana Anda bisa mengkomunikasikan hasil Anda secara efektif dengan pemangku kepentingan di perusahaan Anda? Atau bahkan bagaimana Anda bisa membagikan hasil model Anda dengan kolega Anda secara efektif untuk kolaborasi yang lebih baik?
Menerapkan pembelajaran mesin terkadang sulit karena kita akan menggunakan teknologi dan teknik di luar keahlian yang biasa diperlukan untuk membuat model.
Pada artikel ini, kita akan menemukan cara untuk menerapkan model pembelajaran mesin hanya menggunakan python. Dan dalam prosesnya, kami akan membangun model terjemahan mesin dan halaman web.
Jadi inilah langkah-langkah yang akan kita lihat:
-
Menggunakan model terjemahan mesin Huggingface.
-
Menemukan Anvil dan membuat UI web untuk model kami.
-
Menghubungkan backend dan frontend serta melayani dunia dengan pekerjaan kita!
Membangun model Terjemahan Mesin
Huggingface adalah komunitas AI yang berupaya “mendemokratisasikan pembelajaran mesin yang baik”. Dalam inisiatif ini, Anda dapat menemukan banyak model terlatih tentang tugas pembelajaran mesin yang berbeda: segmentasi gambar, teks ke ucapan, pembuatan teks… dan juga terjemahan mesin!
Terjemahan mesin hanyalah tugas penerjemahan antara dua bahasa yang dilakukan oleh perangkat lunak, dalam kasus kami, model pembelajaran mesin yang dibuat dengan transformator.
Transformator adalah arsitektur pembelajaran mendalam yang didasarkan pada perhatian. Ayo jalankan di mesin Anda!
Kami akan menggunakan transformers, perpustakaan python untuk mengunduh model MT dan melakukan terjemahan.
pip install torch
pip install transformers
Setelah menginstal paket yang diperlukan, impor modul berikut:
from transformers import MarianTokenizer, MarianMTModel
from typing import List
Mari kita dapatkan model yang menerjemahkan kalimat dari bahasa Jerman ke bahasa Inggris. Kami membutuhkan nama model:
src= "de"
trg= "en"
mname= f'Helsinki-NLP/opus-mt-{src}-{trg}'
Sekarang mari impor model terlatih dan tokenizer menggunakan baris berikut:
model = MarianMTModel.from_pretrained(mname)
tok = MarianTokenizer.from_pretrained(mname)
Ukuran downloadnya sekitar 300mb, setelah selesai Anda dapat menyimpan modelnya di direktori lokal menggunakan yang berikut ini:
model.save_pretrained("./models/de_en/")
tok.save_pretrained("./models/de_en/tok")
Mari kita modelnya:
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])
Sekarang Anda seharusnya memiliki terjemahan bahasa Inggris dari kalimat tersebut yang disimpan di kata[0]
.
Temukan Anvil dan buat UI web
Anvil adalah kerangka kerja dan serangkaian solusi yang memungkinkan Anda membangun aplikasi web hanya menggunakan kode python. Ini memiliki editor seret dan lepas untuk membangun UI web dan memungkinkan Anda menghubungkan kode dari mesin lokal Anda ke UI yang Anda buat dan menghosting aplikasi Anda dengan memberi Anda tautan yang dapat Anda bagikan.
Jadi mari kita mulai membuat aplikasi dari di sini. Pilih aplikasi kosong lalu desain material.
Anda akan melihat sesuatu seperti ini:
Sekarang saya akan mengandalkan Anda untuk menggunakan editor dan membuat sesuatu yang mirip dengan berikut ini:
Dalam UI sederhana ini, kami memiliki dua DropDown untuk memilih bahasa sumber dan tujuan. Kami juga memiliki TextBox untuk memasukkan teks sumber dan komponen richText untuk menampilkan teks terjemahan. Anda juga dapat melihat Tombol untuk memulai tugas terjemahan.
Untuk menyinkronkan dengan cuplikan kode yang akan Anda lihat di bawah, berikan ID yang sama ke komponen. Di bawah ini Anda dapat menemukan contoh di mana Anda dapat mengatur id suatu komponen:
ID yang kami gunakan adalah:
Komponen
tanda pengenal
Fungsi klik
Kami telah menambahkan tombol yang digunakan untuk memulai terjemahan. Dari editor Anda, klik tombol lalu gulir ke bawah di panel properti. Di bagian bawah, Anda akan melihat bagian acara. Di zona teks di sebelah “klik”, masukkan “terjemahkan” dan kemudian klik panah di sebelah kanan zona teks ini.
Ini akan membawa Anda ke tampilan kode di mana Anda akan melihat beberapa kode python yang dibuat secara otomatis.
Anda akan menemukan bahwa landasan secara otomatis menambahkan fungsi yang disebut terjemahan. Ini akan dipanggil setiap kali tombol di UI kita diklik.
Berikut tampilan fungsinya:
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
Fungsi ini melakukan 3 tugas utama:
-
Dapatkan Informasi dari UI
-
Kirim informasi ke backend kami menggunakan fungsi server “terjemahan” (akan kami jelaskan di bagian selanjutnya)
-
Kirim teks terjemahan ke UI.
Fungsi server
Mari fokus pada baris kode ini:
translated_text=anvil.server.call("translation",text,src_lang,dest_lang)
Kami menggunakan anvil.server.call untuk memanggil fungsi server bernama translation
yang akan kami definisikan dalam kode backend kami di mesin lokal.
Fungsi ini akan berfungsi sebagai koneksi antara UI web dan kode backend yang akan dijalankan pada model terjemahan mesin kami.
Seperti yang Anda perhatikan, kami juga mengirimkan parameter fungsi ini ke fungsi anvil.server.call
.
Terapkan model MT kami
Mari kita instal landasannya terlebih dahulu
pip install anvil-uplink
Sekarang kami telah membangun antarmuka web kami di editor landasan dan kami memiliki blok kode dasar untuk menjalankan model terjemahan mesin dan melakukan terjemahan.
Langkah selanjutnya adalah mendefinisikan fungsi server yang telah kita bahas pada bagian sebelumnya.
Berikut ini kode fungsinya:
@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]
Fungsi tersebut akan mengambil 3 parameter yang dikirim dari frontend, mengonversi bahasa sumber dan tujuan ke kode bahasa masing-masing, lalu memuat model dan menghitung terjemahannya serta mengembalikan hasilnya.
Cara mendeklarasikan fungsi ini ke anvil sebagai fungsi server adalah dengan menggunakan dekorator
@anvil.server.dapat dipanggil
.
Kami memiliki satu langkah terakhir yang harus dilakukan untuk menghubungkan kode backend yang dapat kami jalankan di notebook jupyter ke aplikasi landasan kami.
Buka editor online anvil, klik ikon roda gigi, lalu klik “Uplink…”.
Lihat layar di bawah ini
Anda akan melihat popup muncul, lalu klik “Aktifkan uplink server untuk aplikasi ini” untuk mendapatkan kode koneksi yang Anda salin.
Anda menempelkan kode ke baris kode berikut:
anvil.server.connect("code here")
Baris ini akan memulai server yang menghubungkan skrip kode lokal atau notebook jupyter Anda ke aplikasi landasan dengan fungsi translation
yang terdaftar sebagai fungsi server.
Langkah terakhir
Sampai titik ini, server backend Anda berjalan dengan fungsi server yang memuat model terjemahan mesin dan melakukan terjemahan setelah mempertimbangkan parameter yang dikirim dari frontend. Angka ini merangkum apa yang telah kita terapkan bersama sejauh ini.
Langkah terakhir adalah menjalankan aplikasi dengan mengklik tombol run di bagian tengah atas editor landasan.
Setelah menjalankan aplikasi, Anda melihat di pojok kanan atas tombol "publikasikan aplikasi ini" yang akan memberi Anda tautan yang dapat Anda bagikan untuk mengakses aplikasi dan melakukan terjemahan!
Kesimpulan
Dengan mengikuti artikel ini Anda telah dapat menerapkan model MT dan membangun antarmuka web untuk menggunakannya.
Masih banyak yang perlu diketahui tentang cara menerapkan model secara efektif menggunakan landasan, tetapi sekarang Anda memiliki dasar-dasar untuk memulai perjalanan penerapan dan meningkatkan potensi pengetahuan Anda sebelumnya tentang Python untuk melakukan lebih banyak hal!
Datanglah ke Salah Satu Lokakarya Gratis Kami
Mulailah karir Anda sebagai data scientist dengan lokakarya gratis, yang didasarkan pada kurikulum yang dapat disesuaikan dan dipandu oleh pakar industri.