Triển khai Mô hình học máy của bạn bằng Python

python học máy mô hình ML
Triển khai Mô hình học máy của bạn bằng Python cover image

Khi làm việc trong lĩnh vực khoa học dữ liệu, bạn thường thấy mình phải đối mặt với một thử thách mới sau khi kết thúc một thời gian dài đào tạo, tinh chỉnh và cải thiện. Chúc mừng bạn đã xây dựng được một mô hình ML có hiệu suất tốt và đáp ứng được nhu cầu của bạn. Bây giờ thách thức bạn đặt ra là làm cách nào bạn có thể cung cấp công nghệ tuyệt vời này cho những người dùng mong muốn? Hoặc có thể làm thế nào bạn có thể truyền đạt kết quả của mình một cách hiệu quả với các bên liên quan trong công ty của bạn? Hoặc thậm chí làm cách nào bạn có thể chia sẻ kết quả mô hình của mình với đồng nghiệp một cách hiệu quả để cộng tác tốt hơn?

Việc triển khai machine learning đôi khi có thể khó khăn vì chúng ta sẽ sử dụng các công nghệ và kỹ thuật nằm ngoài bộ kỹ năng thông thường cần thiết để xây dựng mô hình.

Trong bài viết này, chúng ta sẽ khám phá cách triển khai các mô hình học máy chỉ bằng python. Và trong quá trình đó, chúng tôi sẽ xây dựng mô hình dịch máy và trang web.

Vì vậy, đây là các bước mà chúng ta sẽ thấy:

  1. Sử dụng mô hình dịch máy Huggingface.

  2. Khám phá Anvil và xây dựng giao diện người dùng web cho mô hình của chúng tôi.

  3. Kết nối backend và frontend và phục vụ thế giới công việc của chúng tôi!

Xây dựng mô hình dịch máy

Huggingface là một cộng đồng AI hoạt động nhằm “dân chủ hóa việc học máy tốt”. Theo sáng kiến ​​này, bạn có thể tìm thấy nhiều mô hình được đào tạo về các tác vụ máy học khác nhau: phân đoạn hình ảnh, chuyển văn bản thành giọng nói, tạo văn bản… và cả dịch máy!

Dịch máy chỉ đơn giản là một tác vụ dịch giữa hai ngôn ngữ được thực hiện bởi một phần mềm, trong trường hợp của chúng tôi là một mô hình học máy được xây dựng bằng máy biến áp.

Máy biến áp là một kiến ​​trúc học sâu dựa trên sự chú ý. Hãy để nó chạy trên máy của bạn!

Chúng tôi sẽ sử dụng transformers, một thư viện python để tải xuống mô hình MT và thực hiện bản dịch.

pip install torch
pip install transformers

Sau khi cài đặt các gói cần thiết, hãy nhập các mô-đun sau:

from transformers import MarianTokenizer, MarianMTModel
from typing import List

Hãy lấy một mô hình dịch một câu từ tiếng Đức sang tiếng Anh. Chúng ta cần tên của mô hình:

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

Bây giờ, hãy nhập mô hình đã được đào tạo và mã thông báo bằng cách sử dụng các dòng sau:

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

Kích thước tải xuống khoảng 300mb, sau khi hoàn tất, bạn có thể lưu mô hình vào thư mục cục bộ bằng cách sử dụng như sau:

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

Hãy làm mô hình:

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

Bây giờ bạn đã có bản dịch tiếng Anh của câu được lưu trong words[0].

Khám phá Anvil và xây dựng giao diện người dùng web

Anvil là một framework và một tập hợp các giải pháp cho phép bạn xây dựng các ứng dụng web chỉ bằng mã python. Nó có trình chỉnh sửa kéo và thả để xây dựng giao diện người dùng web và cho phép bạn kết nối mã từ máy cục bộ với giao diện người dùng mà bạn xây dựng và lưu trữ ứng dụng của mình bằng cách cung cấp cho bạn một liên kết mà bạn có thể chia sẻ.

Vì vậy, hãy bắt đầu bằng việc tạo một ứng dụng từ tại đây. Chọn ứng dụng trống rồi thiết kế vật liệu.

Bạn sẽ thấy một cái gì đó như thế này:

Anvil

Bây giờ tôi sẽ tin tưởng bạn sẽ sử dụng trình soạn thảo và xây dựng một cái gì đó tương tự như sau:

Anvil Editor

Trong giao diện người dùng đơn giản này, chúng tôi có hai DropDowns để chọn ngôn ngữ nguồn và đích. Chúng tôi cũng có TextBox để nhập văn bản nguồn và thành phần richText để hiển thị văn bản đã dịch. Bạn cũng có thể thấy Nút để bắt đầu tác vụ dịch.

Để đồng bộ hóa với các đoạn mã mà bạn sẽ thấy bên dưới, hãy cung cấp các ID giống nhau cho các thành phần. Dưới đây bạn có thể tìm thấy ví dụ về nơi bạn có thể đặt id của một thành phần:

Anvil Editor Rename Component

ID chúng tôi đang sử dụng là:

<biên giới bảng="2">

<đầu>

Thành phần

ID

<người>

Thả xuống ngôn ngữ nguồn source_lang Thả xuống ngôn ngữ đích dest_lang Ngôn ngữ nguồn TextBox source_text Văn bản đã dịch RichText dịch_text

</bảng>

Chức năng Onclick

Chúng tôi đã thêm một nút được sử dụng để bắt đầu dịch. Từ trình chỉnh sửa của bạn, nhấp vào nút rồi cuộn xuống trong bảng thuộc tính. Ở phía dưới, bạn sẽ thấy một phần sự kiện. Trong vùng văn bản bên cạnh “nhấp chuột”, nhập “dịch” rồi nhấp vào mũi tên ở bên phải vùng văn bản này.

Thao tác này sẽ đưa bạn đến chế độ xem mã nơi bạn sẽ thấy một số mã python được tạo tự động.

Bạn sẽ thấy rằng đe đã tự động thêm một chức năng gọi là dịch. Nó sẽ được gọi mỗi khi nút trong giao diện người dùng của chúng tôi được nhấp vào.

Đây là chức năng sẽ trông như thế nào:

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

Chức năng này thực hiện 3 nhiệm vụ chính:

  1. Lấy thông tin từ UI

  2. Gửi thông tin đến chương trình phụ trợ của chúng tôi bằng chức năng “dịch thuật” của máy chủ (chúng tôi sẽ giải thích trong phần tiếp theo)

  3. Gửi văn bản đã dịch tới giao diện người dùng.

Chức năng máy chủ

Hãy tập trung vào dòng mã này:

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

Chúng tôi sử dụng anvil.server.call để gọi một hàm máy chủ có tên là translation mà chúng tôi sẽ xác định trong mã phụ trợ của máy cục bộ.

Chức năng này sẽ đóng vai trò kết nối giữa giao diện người dùng web và mã phụ trợ sẽ chạy trên mô hình dịch máy của chúng tôi.

Như bạn đã nhận thấy, chúng tôi cũng gửi các tham số của hàm này trong hàm anvil.server.call.

Triển khai mô hình MT của chúng tôi

Trước tiên hãy cài đặt cái đe

pip install anvil-uplink

Bây giờ chúng tôi đã xây dựng giao diện web của mình trong trình soạn thảo đe và chúng tôi có các khối mã cơ bản để chạy mô hình dịch máy và thực hiện bản dịch.

Bước tiếp theo là xác định chức năng máy chủ mà chúng ta đã thảo luận ở phần trước.

Đây là mã của hàm:

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

Hàm sẽ lấy 3 tham số được gửi từ giao diện người dùng, chuyển đổi ngôn ngữ nguồn và đích sang mã ngôn ngữ tương ứng, sau đó tải mô hình và tính toán bản dịch và trả về kết quả.

Cách khai báo hàm này thành đe như một hàm máy chủ là sử dụng trình trang trí

@anvil.server.callable.

Chúng ta còn một bước cuối cùng phải làm để kết nối mã phụ trợ mà chúng ta có thể chạy trong sổ ghi chép jupyter với ứng dụng đe của mình.

Đi đến trình soạn thảo trực tuyến đe, nhấp vào biểu tượng bánh răng, sau đó nhấp vào “Uplink…”.

Xem màn hình bên dưới

Anvil Editor Uplink

Bạn sẽ thấy một cửa sổ bật lên xuất hiện, sau đó nhấp vào “Bật liên kết máy chủ cho ứng dụng này” để lấy mã kết nối mà bạn sao chép.

Anvil Uplink

Bạn dán đoạn mã vào dòng mã sau:

anvil.server.connect("code here")

Dòng này sẽ khởi động một máy chủ kết nối tập lệnh mã cục bộ hoặc sổ ghi chép jupyter của bạn với ứng dụng đe với chức năng dịch được đăng ký làm chức năng máy chủ.

Bước cuối cùng

Đến thời điểm này, máy chủ phụ trợ của bạn đang chạy với chức năng máy chủ tải mô hình dịch máy và thực hiện dịch sau khi xem xét các tham số được gửi từ giao diện người dùng. Hình này tóm tắt những gì chúng tôi đã cùng nhau thực hiện cho đến nay.

Anvil Uplink

Bước cuối cùng là chạy ứng dụng bằng cách nhấp vào nút chạy ở giữa trên cùng của trình chỉnh sửa đe.

Sau khi chạy ứng dụng, bạn sẽ thấy ở góc trên bên phải một nút “xuất bản ứng dụng này” sẽ cung cấp cho bạn một liên kết mà bạn có thể chia sẻ để truy cập ứng dụng và thực hiện bản dịch của mình!

Phần kết luận

Bằng cách làm theo bài viết này, bạn đã có thể triển khai mô hình MT và xây dựng giao diện web để sử dụng nó.

Vẫn còn nhiều điều cần khám phá về cách triển khai một mô hình hiệu quả bằng cách sử dụng đe nhưng giờ đây bạn đã có kiến ​​thức cơ bản để bắt đầu hành trình triển khai của mình và nâng cao tiềm năng kiến ​​thức trước đây của bạn về Python để làm được nhiều hơn thế!

Hãy đến với một trong những buổi hội thảo miễn phí của chúng tôi

Bắt đầu sự nghiệp của bạn với tư cách là nhà khoa học dữ liệu với hội thảo miễn phí của chúng tôi, dựa trên chương trình giảng dạy có thể thích ứng và được hướng dẫn bởi các chuyên gia trong ngành.


Career Services background pattern

Dịch vụ nghề nghiệp

Contact Section background image

Hãy giữ liên lạc

Code Labs Academy © 2024 Đã đăng ký Bản quyền.