PyText là một thư viện được xây dựng trên nền tảng PyTorch – khung deep learning nguồn mở đồng nhất của Facebook.

Thư viện này có thể đem lại một số lợi ích cho việc phát triển NLP, bao gồm:

  • Đơn giản hóa quy trình làm việc, giúp việc thử nghiệm trở nên nhanh chóng hơn.
  • Cung cấp đa dạng các kiến trúc mô hình có sẵn và công cụ cho việc xử lý văn bản và bảng từ vựng, hỗ trợ triển khai trên quy mô lớn.
  • Mang tới hệ sinh thái PyTorch, bao gồm nhiều mô hình và công cụ được xây dựng sẵn bởi những nhà nghiên cứu và kỹ sư NLP.

Các nhà nghiên cứu và kỹ sư AI hiện đã có thể sử dụng PyText một cách nhanh chóng, qua đó dễ dàng thử nghiệm và triển khai các hệ thống phân loại tài liệu, gán nhãn chuỗi (sequence tagging), phân tách ngữ nghĩa (semantic parsing), mô hình hóa đa tác vụ (multitask modelling)… Tại Facebook, PyText đã được sử dụng để thực hiện hàng tỷ dự đoán mỗi ngày – một minh chứng cho khả năng hoạt động trên quy mô lớn của công cụ này, mà vẫn đảm bảo các yêu cầu khắt khe về độ trễ.

Các kỹ sư mạng nơ-ron trong quá khứ từng luôn gặp phải cảnh băn khoăn chọn lựa giữa các khung tối ưu hóa sản xuất và các khung tối ưu hóa thử nghiệm. Điều này lại càng phổ biến hơn trong các hệ thống NLP, nhất là khi các hệ thống này yêu cầu phải xây dựng, huấn luyện, và thử nghiệm rất nhiều mô hình, đồng thời có cấu trúc động. Thông thường, khung được xây dựng theo định hướng nghiên cứu sẽ có giao diện dễ sử dụng và thực hành, giúp các kỹ sư viết các mô hình động tiên tiến nhanh chóng hơn. Tuy nhiên, các khung này lại thường có độ trễ cao, đồng thời ngốn nhiều bộ nhớ hơn trong sản xuất.

Trong khi đó, khung tối ưu hóa sản xuất lại giúp triển khai dễ dàng hơn với mô hình ở định dạng biểu đồ tĩnh, song điều này lại gây khó khăn khi cần xây dựng các biểu hiện động cho chuỗi văn bản. Còn PyTorch 1.0 thì lại rút gọn quãng đường từ nghiên cứu tới sản xuất thông qua một khung duy nhất – và PyText đã xây dựng trên chính nền tảng này, đồng thời giải quyết được các nhu cầu cụ thể trong mô hình hóa NLP.

Giờ đây, Facebook đã chính thức đăng tải khung PyText ở dạng nguồn mở, đồng thời chia sẻ một số mô hình đã huấn luyện và hướng dẫn huấn luyện và triển khai các mô hình trên ở quy mô lớn.

Điều kiện cần để có NLP hiệu quả hơn

Các nhà nghiên cứu và kỹ sư AI đều có thể ứng dụng những hệ thống ngôn ngữ trong rất nhiều lĩnh vực và công nghệ khác nhau. Và tại Facebook, NLP thường được sử dụng để cung cấp các thông tin thú vị hơn và liên quan hơn tới người dùng, các tính năng tiếp cận mạnh mẽ, đánh dấu các bài đăng vi phạm, thực hiện dịch thuật… Ngày càng xuất hiện nhiều công nghệ AI hội thoại tiên tiến hơn, và với PyText, các tiến bộ cũng đã trở nên nhanh hơn, mang lại những sản phẩm chất lượng hơn. PyText cũng đã được tích hợp trên Portal – thiết bị gọi video mới của Facebook, cũng như trong tính năng gợi ý M của Messenger. Ngoài ra, Facebook cũng đang tiếp tục tìm kiếm những công dụng mới của PyText cho AI hội thoại.

Thông qua PyText, Portal đã có thể hỗ trợ các lệnh cấu thành và lệnh gọi trong “Hey Portal”. Cụ thể, tính năng này cho phép người dùng kích hoạt các lệnh như “gọi cho bố” bằng giọng nói – một hành động mà để thực hiện được, hệ thống phải hiểu được mối quan hệ giữa người gọi và ngược được gọi. Như vậy, tính năng đã vận dụng kỹ thuật phân tách ngữ nghĩa (đã được nhắc tới trong nghiên cứu này), mà Facebook đã có thể nhanh chóng đưa vào sử dụng thông qua PyText.

Facebook cũng đã sử dụng PyText để tái tạo nhanh chóng nhiều cải tiến lên mô hình NLP của Portal, bao gồm: tổng hợp, miền điều kiện ngẫu nhiên, và một mô hình kết hợp cho mọi lĩnh vực. Điều này đã tăng độ chính xác của các mô hình thuộc những lĩnh vực của Facebook lên từ 5 tới 10%. Ngoài ra, PyText còn được ứng dụng trong huấn luyện phân tán, giúp giảm thời gian huấn luyện cho các mô hình thuộc Portal xuống khoảng 3 tới 5 lần.

Khả năng lặp lại liên tục của PyText cũng đã giúp Facebook nâng cao hiệu quả và khả năng mở rộng các mô hình NLP của hãng. Ở những use case như Portal và Messenger, mô hình cần phải được chạy trên thời gian thực, nhằm đưa ra các phản hồi nhanh chóng nhất. Ngoài ra, các hệ thống NLP cũng cần ứng dụng được trên quy mô lớn, và PyText đã giúp các kỹ sư của Facebook thực hiện được điều này dễ dàng hơn và triển khai được NLP thời gian thực trong các hệ thống với hàng tỷ người dùng, trong nhiều ngôn ngữ khác nhau.

PyText vừa vận dụng, vừa bổ trợ cho các hệ thống NLP khác của Facebook, ví dụ như sử dụng song song với thư viên fastText. Ở ứng dụng này, các nhà nghiên cứu và kỹ sư sẽ có thể huấn luyện các hiệu đính từ trên fastText, sau đó sử dụng chúng ở PyText.

Ngoài ra, PyText cũng đã cải thiện nhiều điểm chủ chốt của DeepText – một công cụ vốn không thể tích hợp các biểu đồ động. Tuy nhiên, do các khác biệt về điều kiện thực hiện và cấu trúc dữ liệu, DeepText sẽ không thể áp dụng được một số mô hình phân tách ngữ nghĩa và học đa tác vụ của PyText. PyText tuy vậy, lại có khả năng đẩy nhanh quá trình huấn luyện thông qua GPU và phương thức kỹ thuật phân tách. Do đó, Facebook dự kiến sẽ chọn PyText làm nền tảng NLP chính cho các phát triển trong tương lai.

Một thiết kế linh hoạt, theo mô đun

PyText được xây dựng trên nền tảng PyTorch, đồng thời kết nối với ONNX và Caffe2. Do vậy, với PyText, các nhà nghiên cứu và kỹ sư AI sẽ có thể chuyển hóa các mô hình PyTorch sang ONNX, rồi xuất chúng sang dạng Caffe2, phục vụ việc triển khai quy mô lớn trong sản xuất.

PyText cũng đem lại một quy trình linh hoạt theo mô đun, với các lớp cấu hình được, cùng với giao diện có khả năng mở rộng ở cấu tạo mô hình. Ngoài ra, các nhà phát triển cũng có thể sử dụng như một nền tảng end-to-end, qua đó ứng dụng sáng tạo để tạo ra các pipeline NLP hoàn chỉnh. Cấu trúc theo mô đun của PyText cũng cho phép tích hợp thêm thành phần riêng biệt vào các hệ thống sẵn có.

Với từng tác vụ, vai trò của từng thành phần và tương tác của chúng với nhau cũng sẽ thay đổi. Hãy lấy ví dụ về thành phần xử lý thông tin: Thông thường, thành phần này sẽ phối hợp với các bộ phận huấn luyện, mất mát, và tối ưu hóa, qua đó huấn luyện được mô hình. Tuy nhiên, nó cũng sẽ tương tác với bộ dự đoán và mô hình để thực hiện suy luận (tức chạy mô hình đã huấn luyện trên live traffic, các lượt truy cập trên thời gian thực). Cách tiếp cận này cũng là một minh chứng cho sự toàn diện của PyText – nền tảng này có thể được ứng dụng ở mọi bước, trong mọi quy trình, từ nghiên cứu tới sản xuất – giúp xây dựng hoàn thiện được các hệ thống NLP từ gốc, cũng như cải thiện các hệ thống có sẵn.

Ngoài ra, PyText cũng cung cấp một số tính năng khác, giúp cải thiện workflow cho NLP. Cụ thể, khung này hỗ trợ huấn luyện phân tán, giúp tăng đáng kể tốc độ cho các thử nghiệm NLP – đặc biệt là các thử nghiệm cần thực hiện nhiều lần. PyText cũng có khả năng học đa tác vụ, giúp huấn luyện được đồng thời nhiều mô hình, cũng như đem lại một số lợi ích dưới đây:

  • Tính khả chuyển (portability): Các mô hình PyText được xây dựng dựa trên PyTorch, và có thể được chia sẻ cho nhiều tổ chức khác nhau thuộc cộng đồng AI.
  • Các mô hình có sẵn: Với một hệ thống mô hình đa dạng cho các tác vụ NLP đơn giản như phân loại văn bản, gán nhãn từ (word tagging), phân tách ngữ nghĩa, và mô hình hóa ngôn ngữ, người dùng có thể dễ dàng ứng dụng các mô hình có sẵn lên những dữ liệu mới.
  • Các mô hình theo bối cảnh: Nhằm cải thiện khả năng hiểu hội thoại trong đa dạng tác vụ NLP, PyText cũng có thể được sử dụng cho các thông tin có bối cảnh – ví dụ như phần mở đầu của hội thoại. PyText bao gồm hai mô hình theo bối cảnh, đó là: một mô hình SeqNN – dùng cho các tác vụ gán nhãn ý định (intent labeling), và một mô hình Contextual Intent Slot – dùng cho các tác vụ huấn luyện kết hợp. Các thử nghiệm của Facebook ở tính năng gợi ý M của Messenger cũng đa cho thấy hiệu quả được cải thiện đáng kể trên một số bộ dữ liệu khi ứng dụng thêm các thông tin bối cảnh.

Với mục đích tối ưu hóa suy luận trong sản xuất, PyText sử dụng tính năng trích xuất mô hình suy luận của PyTorch 1.0, thông qua cơ chế thực hiện tối ưu trên Caffe2. Các mô hình PyTorch có sẵn thường phải có thời gian chạy Python, gây ra các hạn chế phát sinh từ Global Interpreter Lock (GIL), và vì vậy không phù hợp cho ứng dụng trên quy mô lớn. Do đó, việc xuất sang Caffe2 sẽ cung cấp backend C++ với multithread và hiệu suất lớn, giúp xử lý hiệu quả các khối lượng truy cập lớn với lưu lượng cao. Ngoài ra, cũng có một số tính năng PyText khác, giúp việc chuyển mô hình sang sản xuất và triển khai trở nên dễ dàng hơn, bao gồm:

  • Đồng nhất tài nguyên – tính năng giúp hỗ trợ NLP cho cả nghiên cứu và sản xuất, ví dụ như: các API đơn giản phục vụ huấn luyện và suy luận, quy trình tiền xử lý văn bản đồng nhất cho cả huấn luyện và suy luận…
  • Quản lý bảng từ vựng – tính năng giúp PyText có thể đính kèm bảng từ vựng vào mô hình, sau khi xuất mô hình sang Caffe2.
  • Bổ sung hỗ trợ cho các tensor dây, qua đó tăng hiệu quả xử lý văn bản cho cả quá trình huấn luyện và suy luận.

Dễ dàng chuyển hóa từ nghiên cứu tới sản xuất

PyText ban đầu là một ý tưởng về mô hình NLP mới, với khả năng dễ dàng tạo ra các mô hình mới hoặc chỉnh sửa các mô hình có sẵn. Qua PyText, ta có thể dễ dàng huấn luyện và đánh giá các mô hình, sau đó kiểm tra tham số để xác định ra mô hình tối ưu nhất. Ngoài ra, khung PyText cũng được thiết kế sao cho các nhà phát triển AI có thể tập trung vào đúng các thành phần/mô hình mà họ muốn thay đổi, cũng như sử dụng các thành phần mới cho phần còn lại của hệ thống.

Quá trình này tạo ra mộ mô hình PyTorch có thể hoạt động trong môi trường Python. Và với dịch vụ này, các nhà phát triển AI có thể nhanh chóng lấy tham số trực tuyến, thông qua việc triển khai mô hình, và tiếp nhận truy cập của một phần nhỏ sử người dùng sản phẩm.

Một khi hài lòng với hiệu suất mô hình, các kỹ sư sẽ có thể sử dụng mô đun trích xuất trong PyText, rồi chuyển mô hình sang Caffe2 thông qua ONNX. Mô hình Caffe2 sau đó có thể được đánh giá và triển khai trên dịch vụ suy luận C++, giúp xử lý được các giao lượng sản xuất (production traffic).

Mẫu code hướng dẫn cách chuyển mô hình sang Caffe2 thông qua ONNX, bằng cách thêm vào một toán tử (operator) như string2id, sau đó thực hiện các tác vụ hậu kỳ cần thiết.

PyText và các công cụ NLP trong tương lai

Các triển khai nội bộ đã cho thấy rằng, với PyText, các kỹ sư có thể lặp lại những ý tưởng mô hình hóa NLP nhanh chóng hơn, sau đó lập tức quy mô hóa chúng cho sản xuất. NLP là một lĩnh vực liên tục mở rộng và phát triển, và do vậy, Facebook sẽ tiếp tục cải thiện các tính năng của PyText, nhằm thử nghiệm thêm các mô hình tiên tiến, rồi triển khai chúng hiệu quả ở quy mô lớn.

Để khắc phục các khó khăn cho việc ứng dụng những mô hình NLP tinh vi trên thiết bị di động, Facebook cũng đang xây dựng một workflow end-to-end cho các mô hình này. Cụ thể, đội ngũ nghiên cứu của công ty đang dự định bổ sung hỗ trợ mô hình hóa đa ngôn ngữ và một số tính năng mô hình hóa khác, đơn giản hóa quy trình debug của mô hình, đồng thời cải thiện quá trình huấn luyện phân tán. Là thành quả của toàn thể đội ngũ Facebook AI, gồm nhiều nhà nghiên cứu và kỹ sư chuyên về NLP và AI hội thoại, PyText sẽ còn tiếp tục được hoàn thiện trong tương lai. Để biết thêm thông tin về PyText, độc giả có thể đọc toàn bộ nghiên cứu của Facebook tại đây.

Theo Facebook AI

Tin liên quan: