1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tìm hiểu ML NET và xây dựng bài toán so sánh ngữ nghĩa 2 câu tiếng anh

19 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 1,09 MB

Nội dung

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO ĐỒ ÁN MÔN HỌC: ĐỒ ÁN Đề tài: Tìm hiểu ML.NET xây dựng tốn so sánh ngữ nghĩa câu tiếng Anh GVHD: Đỗ Thị Thanh Tuyền Sinh viên thực hiện: Thiều Quang Lâm MSSV: 19520674  Tp Hồ Chí Minh, 05/2022  SE121 – Đồ án NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ……., ngày…… tháng……năm 20… Người nhận xét (Ký tên ghi rõ họ tên) 2|Page SE121 – Đồ án DANH MỤC HÌNH ẢNH Hình Giao diện mơ hình trang Huggingface Hình Khai báo thư viện Hình Thiết lập tokenizer model Hình Định nghĩa Convert_ONNX() Hình Kết sau chạy chương trình chuyển đổi Hình Thư mục chứa project chuyển đổi 10 Hình Giao diện trang web Netron .10 Hình Trực quan hố mơ hình ONNX Netron .11 Hình Các package cần thiết cho project 12 Hình 10 BERTInput.cs 13 Hình 11 BERTOutput.cs 13 Hình 12 BERTTrainer.cs 14 Hình 13 Trainer 14 Hình 14 BERTPredictor.cs 15 Hình 15 BERT.cs 16 Hình 16 hàm SoftMax 16 Hình 17 Predict .17 Hình 18 Program.cs 17 Hình 19 Kết sau chạy Program.cs 17 MỤC LỤC Chương 1: Tổng quan đề tài Chương 2: Cơ sở lý thuyết Chương 3: Thực đề tài Chương 4: Kết luận 18 Phụ lục: Tài liệu tham khảo 19 3|Page SE121 – Đồ án Chương 1: Tổng quan đề tài Theo dòng chảy cách mạng 4.0, trí tuệ nhân tạo (AI) ngày phổ biến ứng dụng rộng rãi lĩnh vực sống, John McCarthy – nhà khoa học máy tính người Mỹ đề cập lần vào năm 1950 đến ngày thuật ngữ trí tuệ nhân tạo thực biết đến rộng rãi “ông lớn” làng công nghệ chạy đua phát triển AI cơng nghệ sử dụng đến kỹ thuật số có khả thực nhiệm vụ mà bình thường phải cần tới trí thơng minh người, xem phổ biến Đặc trưng công nghệ AI lực “tự học” máy tính, tự phán đốn, phân tích trước liệu mà không cần hỗ trợ người, đồng thời có khả xử lý liệu với số lượng lớn tốc độ cao Trí tuệ nhân tạo lĩnh vực liên quan đến chun ngành khoa học máy tính cơng nghệ thơng tin, chất trí tuệ nhân tạo người làm ra, họ xây dựng thuật tốn, lập trình cơng cụ phần mềm cơng nghệ thơng tin, giúp máy tính tự động xử lý hành vi thông minh người Trong đó, việc ứng dụng AI vào tốn cần đến trí thơng minh người xử lý ngôn ngữ tự nhiên, phân loại hình ảnh,… tảng để phát triển nâng cao trí thơng minh AI, nhằm giúp cho máy tính xử lý tốn phức tạp 4|Page SE121 – Đồ án Chương 2: Cơ sở lý thuyết 2.1 Windows Machine Learning Windows Machine Learning (Windows ML) thư viện hỗ trợ máy học, tích hợp vào phiên Windows 10 Windows Server 2019, đồng thời phát hành dạng NuGet package Một số lợi ích Windows ML kể đến bao gồm: • Dễ phát triển: Chỉ cần máy tính Windows 10 Windows Server 2019 cài đặt sẵn Visual Studio mơ hình ONNX huấn luyện, tiến hành làm việc với mơ hình AI máy tính Thậm chí, Windows ML cịn cài đặt dạng NuGet package cho máy tính sử dụng Windows từ phiên đến phiên 8.1 • Hỗ trợ nhiều cấu hình: Windows ML dùng để nâng cao hiệu suất việc huấn luyện mơ hình AI CPU GPU • Độ trễ thấp kết theo thời gian thực: Các mơ hình ML xử lý, phân tích nội máy tính theo thời gian thực với lượng lớn liệu bao gồm hình ảnh, văn bản, video, … Kết trả gần phù hợp với nhiều tác vụ khác • Tính linh hoạt cao: Các mơ hình ML đánh giá máy tính có kết nối Internet không ổn định, trường hợp mát liệu phải nhận liệu từ đám mây • Chi phí vận hành thấp: Huấn luyện mơ hình ML đánh giá nội máy tính làm giảm đáng kể chi phí cần thiết cho băng thơng Ngồi ra, áp dụng mơ hình máy chủ, lập trình viên nâng cấp phần cứng để xử lý luồng làm việc tốt mà không làm phát sinh chi phí 2.2 Mơ hình ONNX Open Neural Network Exchange (ONNX) hệ sinh thái mở nhằm phục vụ lập trình viên AI lựa chọn cơng cụ phù hợp cho dự án liên quan ONNX cung cấp format mã nguồn mở cho mơ hình AI, bao gồm mơ hình học sâu (deep learning) mơ hình AI truyền thống Các mơ hình ONNX tải xuống sử dụng hồn tồn miễn phí mạng, ví dụ ONNX Model Zoo bao gồm mơ hình ONNX huấn luyện sẵn, 5|Page SE121 – Đồ án chuyển mơ hình từ framework khác PyTorch, Caffee2, Chainer, … 2.3 Huggingface Transformers Huggingface nhà cung cấp tảng cho công nghệ AI dạng mã nguồn mở Đến có 50,000 mơ hình AI đăng tải lên trang web Huggingface, bao gồm mơ hình tập đồn cơng nghệ lớn Google, Facebook, Microsoft, … Transformers thư viện mã nguồn mở Huggingface cung cấp API cần thiết hỗ trợ việc tải huấn luyện mơ hình Huggingface Transformers chủ yếu hỗ trợ thư viện PyTorch, TensorFlow, JAX, Transformers hỗ trợ việc xuất mơ hình sang dạng ONNX với package transformers.onnx 2.4 Xử lý ngôn ngữ tự nhiên (Natural Language Processing – NLP) Xử lý ngôn ngữ tự nhiên nhánh Trí tuệ nhân tạo, tập trung vào việc nghiên cứu tương tác máy tính ngơn ngữ tự nhiên người, dạng tiếng nói (speech) văn (text) Mục tiêu lĩnh vực giúp máy tính hiểu thực hiệu nhiệm vụ liên quan đến ngôn ngữ người như: tương tác người máy, cải thiện hiệu giao tiếp người với người, đơn giản nâng cao hiệu xử lý văn lời nói Có nhiều lý khiến xử lý ngôn ngữ tự nhiên nhiệm vụ khó tập từ vựng rộng lớp cập nhật thường xuyên, cấu trúc ngữ pháp linh hoạt lỏng lẻo, ngôn ngữ thể cảm xúc, ẩn ý người viết Tuy nhiên có hai lý tính nhập nhằng ngôn ngữ (ambiguity) cần thiết tri thức (background knowledge) 6|Page SE121 – Đồ án Chương 3: Thực đề tài 3.1 Chuẩn bị Bài toán yêu cầu đầu vào câu tiếng Anh (cả câu nằm dòng ngăn cách dấu chấm), đầu ba nhãn dán (label): Entailment (tương tự nhau), Contradiction (trái ngược nhau), Neutral (không liên quan) Các nhãn dán đánh số LABEL_1, LABEL_0, LABEL_3 Chúng ta sử dụng mơ hình huấn luyện sẵn từ Huggingface Đây mô hình BERT Base Uncased, sử dụng liệu SNLI (Stanford Natural Language Inference) để huấn luyện Tuy nhiên, mô hình sử dụng PyTorch để huấn luyện Nếu muốn áp dụng vào ML.NET, trước tiên cần phải chuyển dạng ONNX Hình Giao diện mơ hình trang Huggingface 7|Page SE121 – Đồ án Lưu ý mơ hình sử dụng nhãn dán khác với yêu cầu đề bài, cụ thể LABEL_0 tương đồng, LABEL_1 không liên quan, LABEL_2 trái ngược 3.2 Chuyển mơ hình từ PyTorch sang ONNX Trước bắt đầu việc chuyển đổi, cần cài đặt thư viện cần thiết phục vụ cho việc chuyển đổi Chúng ta sử dụng pip để cài đặt Mở pip dạng cmd gõ lệnh sau: pip install torch pip install transformers Sau hồn thành bắt đầu cơng việc chuyển đổi Ở dùng Python có sẵn Visual Studio để thực Khai báo thư viện cài đặt trước đó: Hình Khai báo thư viện AutoTokenizer AutoModelForSequenceClassification dùng để định nghĩa tokenizer model phục vụ cho việc chuyển đổi Ngoài ra, convert_graph_to_onnx khai báo để thực việc chuyển đổi cách dễ dàng Path dùng để định nghĩa vị trí file ONNX sau chuyển đổi Hình Thiết lập tokenizer model Chúng ta tiếp tục thiết lập tokenizer model, có thêm from_pretrained để lấy liệu từ mơ hình huấn luyện sẵn Huggingface Cuối cùng, định nghĩa Convert_ONNX() để thực chuyển đổi Ở cần lưu ý: • framework môi trường ban đầu model, ‘pt’ tức PyTorch, cịn ‘tf’ TensorFlow • opset số định nghĩa phiên ONNX, tức file ONNX có opset 11 8|Page SE121 – Đồ án • user_external_format định dạng từ phía người dùng, thơng thường khơng định dạng khác với ban đầu để False Hình Định nghĩa Convert_ONNX() Kết sau chạy chương trình: Hình Kết sau chạy chương trình chuyển đổi Kiểm tra thư mục project, thấy có folder với tên gọi “onnx”, có file với tên gọi “bert-base-uncased-snli.onnx” 9|Page SE121 – Đồ án Hình Thư mục chứa project chuyển đổi Để tìm hiểu xem mơ hình ONNX vừa nhận có đầu vào đầu gì, dùng Netron để phân tích Netron phần mềm trực quan hố mơ hình trí tuệ nhân tạo, máy học, mơ hình học sâu Có thể tải Netron máy tính truy cập trực tiếp trang web Netron: https://netron.app/ Hình Giao diện trang web Netron Trên trang Netron, nhấn vào “Open Model” sau lựa chọn mơ hình ONNX máy tính Kết ra: 10 | P a g e SE121 – Đồ án Hình Trực quan hố mơ hình ONNX Netron Trong mơ hình thấy có input khác bao gồm input_ids, attention_mask, token_type_ids, output với tên gọi output_0 Ở cần ý đến kiểu liệu input output, input có dạng [batch, sequence], cịn output có dạng [batch, 3] Trong Transformers, batch nhiều câu văn, gửi lúc tới mơ hình để xử lý, cịn sequence độ dài batch Thơng thường mơ hình Transformers xử lý độ dài từ 512 đến 1024 ký tự, mơ hình BERT sử dụng độ dài tối đa 512 3.3 Tạo project sử dụng mơ hình ONNX Đầu tiên tạo project console sử dụng C#, dùng NET 5.0 (không hỗ trợ Microsoft kể từ 10/5/2022) NET 6.0 (yêu cầu Visual Studio 2022) Sau tạo project, từ sổ Solution Explorer, nhấn chuột phải vào Dependencies, chọn “Manage NuGet Packages” Chúng ta tải package NuGet phục vụ cho project Các package cần đến bao gồm: Microsoft.ML: framework cung cấp thư viện hỗ trợ cho lập trình máy học NET Microsoft.ML.OnnxRuntime: cung cấp thư viện cần thiết cho tảng hỗ trợ ONNX Runtime Microsoft.ML.OnnxTransformers: hỗ trợ thư viện Microsoft.ML.OnnxRuntime 11 | P a g e SE121 – Đồ án BERTTokenizers: cung cấp tokenizer cho mơ hình BERT, bao gồm BERT Base Uncased, mơ hình mà sử dụng (lưu ý: BERTTokenizers phiên 1.1.0 cài đặt Visual Studio 2019, cần phải chuyển qua BERTTokenizers phiên 1.0.6) Hình Các package cần thiết cho project Cũng tải package từ giao diện console cách: Từ menu, chọn Tools, chọn NuGet Package Manager, chọn Package Manager Console Sau giao diện console hiển thị, gõ dòng sau để tải package về: Install-Package Microsoft.ML -Version 1.7.1 Install-Package Microsoft.ML.OnnxRuntime -Version 1.11.0 Install-Package Microsoft.ML.OnnxTransformer -Version 1.7.1 Install-Package BERTTokenizers -Version 1.1.0 Bây bắt đầu thực project Tạo class với tên BERTInput.cs, class dùng để định nghĩa input 12 | P a g e SE121 – Đồ án Hình 10 BERTInput.cs Tương tự, tạo lớp BERTOutput.cs để định nghĩa output Ở có kiểu output Output0 Hình 11 BERTOutput.cs Sau định nghĩa input output, tạo class tên BERTTrainer.cs Trong class này, MLContext gọi để chuẩn bị liệu, bao gồm việc huấn luyện, dự đoán mơ hình 13 | P a g e SE121 – Đồ án Hình 12 BERTTrainer.cs Tiếp theo tạo phương thức Trainer với đầu ITransformer Phương thức u cầu đường dẫn tới mơ hình ONNX biến bool biểu thị việc sử dụng GPU Trong Trainer tạo Dictionary bao gồm input output với kích cỡ, sử dụng chúng inputColumnNames outputColumnNames Hình 13 Trainer 14 | P a g e SE121 – Đồ án Tạo thêm class với tên gọi BERTPredictor.cs Như tên gọi, class dùng để thực việc dự đốn với phương thức Predict Hình 14 BERTPredictor.cs Cuối tạo lớp BERT.cs dùng để tổng hợp phương thức trước để tạo nên dự đốn với liệu đầu vào Như trước đề cập, đề yêu cầu nhãn dán cho kết khác với mơ hình ban đầu (Trong mơ hình từ PyTorch, LABEL_0 tương đồng, LABEL_1 khơng liên quan, LABEL_2 trái ngược; theo đề LABEL_1 tương 15 | P a g e SE121 – Đồ án đồng, LABEL_3 không liên quan, LABEL_0 không liên quan), cần phải tạo enum Label theo thứ tự LABEL_1, LABEL_3, LABEL_0 Hình 15 BERT.cs Chúng ta tạo thêm hàm SoftMax để tính tốn thêm mức độ xuất Label số Label xuất Hình 16 hàm SoftMax Cuối cùng, tạo hàm Predict với text đầu vào Để đơn giản hoá, text nhập vào chuỗi liên tục với dấu chấm ngăn cách câu 16 | P a g e SE121 – Đồ án Hình 17 Predict 3.4 Kết Trong Program.cs, khai báo model modelPath, với input Chương trình hoạt động liên tục để dự đốn kết so sánh ngữ nghĩa câu tiếng Anh, input rỗng Hình 18 Program.cs Kết thu được: Hình 19 Kết sau chạy Program.cs 17 | P a g e SE121 – Đồ án Chương 4: Kết luận Thông qua đồ án này, nhóm tìm hiểu khái niệm máy học, toán xử lý ngôn ngữ tự nhiên, áp dụng kiến thức tiếp thu vào để giải tốn mang tính thực tiễn với kết xuất hình dạng console Nhóm tiếp cận với hướng phát triển để xây dựng mơ hình máy học NET thay Python hướng phát triển thơng thường 18 | P a g e SE121 – Đồ án Phụ lục: Tài liệu tham khảo Windows Machine Learning: https://docs.microsoft.com/en-us/windows/ai/windowsml/ ONNX model: https://docs.microsoft.com/en-us/windows/ai/windows-ml/get-onnxmodel Huggingface: https://huggingface.co/ Transformers: https://huggingface.co/docs/transformers/index Xử lý ngơn ngữ tự nhiên: https://digital.fpt.com.vn/linh-vuc/xu-ly-ngon-ngu-tunhien.html Cách chuyển mơ hình từ PyTorch sang ONNX: https://docs.microsoft.com/enus/windows/ai/windows-ml/tutorials/pytorch-convert-model Link mơ hình: https://huggingface.co/textattack/bert-base-uncased-snli Mơ hình máy học NLP cho NET: https://rubikscode.net/2021/04/19/machinelearning-with-ml-net-nlp-with-bert/ BERTTokenizer: https://rubikscode.net/2022/03/14/bert-tokenizers-for-ml-net/ 19 | P a g e ... tạo project console sử dụng C#, dùng NET 5.0 (không hỗ trợ Microsoft kể từ 10/5 /20 22) NET 6.0 (yêu cầu Visual Studio 20 22) Sau tạo project, từ sổ Solution Explorer, nhấn chuột phải vào Dependencies,... hình máy học NLP cho NET: https://rubikscode .net/ 20 21/04/19/machinelearning-with -ml- net- nlp-with-bert/ BERTTokenizer: https://rubikscode .net/ 20 22/ 03/14/bert-tokenizers-for -ml- net/ 19 | P a g e ... kết so sánh ngữ nghĩa câu tiếng Anh, input rỗng Hình 18 Program.cs Kết thu được: Hình 19 Kết sau chạy Program.cs 17 | P a g e SE 121 – Đồ án Chương 4: Kết luận Thông qua đồ án này, nhóm tìm hiểu

Ngày đăng: 17/08/2022, 21:31

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w