Розгорніть свою модель машинного навчання за допомогою Python

python
машинне навчання
модель ML
Розгорніть свою модель машинного навчання за допомогою Python cover image

Працюючи в галузі науки про дані, ви зазвичай стикаєтеся з новим викликом після завершення довгого циклу навчання, тонкого налаштування та вдосконалення. Вітаємо зі створенням моделі ML, яка має хорошу продуктивність і відповідає вашим потребам. Тепер перед вами стоїть завдання: як ви можете доставити цю гарну технологію цільовим користувачам? Або, можливо, як ви можете ефективно повідомити про свій результат зацікавленим сторонам у вашій компанії? Або навіть як ви можете ефективно поділитися результатами своєї моделі з колегами для кращої співпраці?

Розгортання машинного навчання іноді може бути складним, оскільки ми будемо використовувати технології та методи, які не входять до звичайного набору навичок, необхідних для створення моделей.

У цій статті ми збираємося відкрити спосіб розгортання моделей машинного навчання лише за допомогою python. Попутно ми створимо модель машинного перекладу та веб-сторінку.

Отже, ось кроки, які ми побачимо:

  1. Використання моделей машинного перекладу Huggingface.

  2. Відкриття Anvil і створення веб-інтерфейсу для нашої моделі.

  3. З’єднайте бекенд і інтерфейс і обслуговуйте світ нашою роботою!

Створення моделі машинного перекладу

Huggingface – це спільнота ШІ, яка працює над «демократизацією хорошого машинного навчання». У рамках цієї ініціативи ви можете знайти багато навчених моделей для різних завдань машинного навчання: сегментація зображення, перетворення тексту в мовлення, генерація тексту… а також машинний переклад!

Машинний переклад — це просто завдання перекладу між двома мовами, яке виконується програмним забезпеченням, у нашому випадку моделлю машинного навчання, побудованою за допомогою трансформаторів.

Трансформатор — це архітектура глибокого навчання, заснована на увазі. Давайте запустимо його на вашій машині!

Ми будемо використовувати transformers, бібліотеку Python, щоб завантажити модель MT і виконати переклад.

pip install torch
pip install transformers

Після встановлення необхідних пакетів імпортуйте такі модулі:

from transformers import MarianTokenizer, MarianMTModel
from typing import List

Давайте візьмемо модель, яка перекладає речення з німецької на англійську. Нам потрібна назва моделі:

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

Тепер давайте імпортуємо навчену модель і токенізер за допомогою таких рядків:

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

Розмір завантаження становить приблизно 300 Мб, після завершення ви можете зберегти модель у локальному каталозі за допомогою наступного:

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

Давайте модель:

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

Тепер ви повинні мати англійський переклад речення, збережений у words[0].

Відкрийте Anvil і створіть веб-інтерфейс

Anvil — це фреймворк і набір рішень, які дозволяють створювати веб-програми лише за допомогою коду Python. Він має редактор перетягування для створення веб-інтерфейсу користувача, і він дозволяє підключати код із вашої локальної машини до створеного вами інтерфейсу користувача та розміщення вашої програми, надаючи вам посилання, яким ви можете поділитися.

Отже, почнемо зі створення програми тут. Виберіть пусту програму, а потім матеріал.

Ви повинні побачити щось на зразок цього:

Anvil

Тепер я буду розраховувати на те, що ви використаєте редактор і створите щось подібне до наступного:

Anvil Editor

У цьому простому інтерфейсі користувача є два спадні меню для вибору вихідної та цільової мов. У нас також є TextBox для введення вихідного тексту та компонент richText для відображення перекладеного тексту. Ви також можете побачити кнопку для запуску завдання перекладу.

Для синхронізації з фрагментами коду, які ви побачите нижче, надайте однакові ідентифікатори компонентам. Нижче ви можете знайти приклад того, де можна встановити ідентифікатор компонента:

Anvil Editor Rename Component

Ідентифікатори, які ми використовуємо:

<й>

Компонент

<й>

ID

Спадне меню вихідної мовиsource_lang
Спадне меню цільової мовиdest_lang
Текстове поле вихідної мовиджерельний_текст
Перекладений текст RichTexttranslated_text

Функція Onclick

Ми додали кнопку, яка використовується для початку перекладу. У редакторі натисніть кнопку, а потім прокрутіть униз на панелі властивостей. Унизу ви побачите розділ подій. У текстовій зоні поруч із «клацніть» введіть «перекласти», а потім натисніть стрілку праворуч від цієї текстової зони.

Це приведе вас до перегляду коду, де ви побачите автоматично згенерований код python.

Ви побачите, що anvil автоматично додав функцію перекладу. Він буде викликаний кожного разу, коли буде натиснуто кнопку в нашому інтерфейсі користувача.

Ось як має виглядати функція:

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

Ця функція виконує 3 основні завдання:

  1. Отримайте інформацію з інтерфейсу користувача

  2. Надішліть інформацію на наш сервер за допомогою функції «переклад» сервера (ми пояснимо це в наступному розділі)

  3. Надішліть перекладений текст до інтерфейсу користувача.

Функція сервера

Давайте зосередимося на цьому рядку коду:

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

Ми використовуємо anvil.server.call для виклику функції сервера під назвою translation, яку ми визначимо у нашому коді серверної частини на локальній машині.

Ця функція слугуватиме зв’язком між веб-інтерфейсом користувача та серверним кодом, який працюватиме на нашій моделі машинного перекладу.

Як ви помітили, ми також надсилаємо параметри цієї функції у функції anvil.server.call.

Розгорніть нашу модель MT

Давайте спочатку встановимо ковадло

pip install anvil-uplink

Тепер ми створили наш веб-інтерфейс у редакторі anvil і маємо базові блоки коду для запуску нашої моделі машинного перекладу та виконання перекладу.

Наступним кроком є ​​визначення функції сервера, яку ми обговорювали в попередньому розділі.

Ось код функції:

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

Функція візьме 3 параметри, надіслані з інтерфейсу, перетворить вихідну та цільову мови на відповідні коди мови, а потім завантажить моделі, обчислить переклад і поверне результат.

Спосіб оголосити цю функцію на anvil як функцію сервера — це використати декоратор

@anvil.server.callable.

У нас залишився останній крок, щоб підключити серверний код, який ми можемо запустити в блокноті jupyter, до нашої програми anvil.

Перейдіть до онлайн-редактора anvil, клацніть значок шестірні, а потім клацніть «Uplink…».

Дивіться екран нижче

Anvil Editor Uplink

Ви побачите спливаюче вікно, а потім натисніть «Увімкнути висхідну лінію сервера для цієї програми», щоб отримати код підключення, який ви копіюєте.

Anvil Uplink

Ви вставляєте код у такий рядок коду:

anvil.server.connect("code here")

Цей рядок запустить сервер, який підключає ваш сценарій локального коду або блокнот jupyter до програми anvil із функцією translation, зареєстрованою як функція сервера.

Останній крок

До цього моменту ваш внутрішній сервер працює з серверною функцією, яка завантажує модель машинного перекладу та виконує переклад після врахування параметрів, надісланих із зовнішнього інтерфейсу. Ця цифра підсумовує те, що ми разом реалізували досі.

Anvil Uplink

Останнім кроком є ​​запуск програми, натиснувши кнопку запуску у верхній центральній частині редактора ковадла.

Після запуску програми ви побачите у верхньому правому куті кнопку «опублікувати цю програму», яка дасть вам посилання, яким ви можете поділитися, щоб отримати доступ до програми та зробити свій переклад!

Висновок

Дотримуючись цієї статті, ви змогли розгорнути модель MT і створити веб-інтерфейс для її використання.

Потрібно ще багато чого дізнатися про те, як ефективно розгортати модель за допомогою ковадла, але тепер у вас є основи, щоб розпочати свій шлях до розгортання, і розширити потенціал ваших попередніх знань у Python, щоб зробити набагато більше!

Приходьте на один із наших безкоштовних майстер-класів

Розпочніть свою кар’єру спеціаліста з даних із наших безкоштовних семінарів, які базуються на адаптованій навчальній програмі та проводяться експертами галузі.


Career Services background pattern

Кар'єрні послуги

Contact Section background image

Давайте залишатися на зв'язку

Code Labs Academy © 2024 Всі права захищені.