Software engineering cho Machine Learning (pt.1): thách thức từ cũ và mới

Cinnamon AI
6 min readMay 17, 2019

--

Những cải tiến gần đây trong lĩnh vực Machine Learning (ML) đã kích thích sự quan tâm rộng rãi trong giới IT về những khả năng ứng dụng AI vào phần mềm và dịch vụ. Mục tiêu này khiến các công ty phải thúc đẩy quá trình phát triển của chính mình. Bài viết này dựa trên một báo cáo nghiên cứu được thực hiện thông qua quan sát các nhóm phát triển phần mềm tại Microsoft trong quá trình phát triển các ứng dụng dựa trên nền tảng AI.

Rất nhiều trong số các nhóm này ứng dụng quy trình làm việc 9 giai đoạn dựa trên những kinh nghiệm trước đây trong phát triển ứng dụng AI (vd: tìm kiếm & NLP) hoặc các công cụ phục vụ khoa học dữ liệu (vd: chuẩn đoán ứng dụng hoặc báo lỗi). Từ đó, chúng ta có được cái nhìn sâu sắc về bản chất của những trở ngại trong quy trình kỹ thuật mà các công ty có thể gặp phải khi tạo ra các giải pháp AI với quy mô lớn cho thị trường. Bên cạnh đó, chúng ta cũng chỉ ra được 3 khía cạnh khác biệt cơ bản của lĩnh vực AI so với các lĩnh vực ứng dụng phần mềm trước đây, đó là:

  • Tìm hiểu, quản lý và cập nhật dữ liệu cần thiết cho các ứng dụng ML phức tạp và khó hơn rất nhiều (so với các dạng SE khác).
  • Tinh chỉnh và tái sử dụng model đòi hỏi các AI Software Engineer các kĩ năng khác biệt so với nghiệp vụ SE thông thường.
  • Các thành phần AI khó xử lý như các module riêng biệt hơn so với các thành phần phần mềm thông thường, do đó thường có thể trở nên rối rắm theo nhiều cách khác nhau cũng như gặp phải các lỗi phức tạp hơn.

Do đó, trong khuôn khổ series bài viết này, chúng ta sẽ được tìm hiểu đến những bài học đáng giá mà các nhóm Software Engineer của Microsoft đã rút ra trong quá trình xây dựng sản phẩm, từ đó ứng dụng vào thực tiễn trong chính tổ chức của mình.

I. Giới thiệu

Điện toán cá nhân. Internet. Web. Điện toán di động. Điện toán đám mây. Mỗi thập kỷ trôi qua lại có thêm những sự thay đổi đột phá trong lĩnh vực ứng dụng thiết yếu của ngành công nghệ phần mềm. Mỗi sự thay đổi lại mang đến những mục tiêu mới giúp thúc đẩy các công ty công nghệ phải nâng tầm quy trình phát triển của mình để giải quyết các khía cạnh mới của lĩnh vực này.

Xu hướng mới nhất của ngành công nghiệp phần mềm xoay quanh việc tích hợp các khả năng của trí tuệ nhân tạo (AI) dựa trên những tiến bộ trong ML. Một cách bao quát, AI gồm có các công nghệ giúp máy lý luận, giải quyết vấn đề, lên kế hoạch, và học, cũng như các thứ khác. Nhóm xây dựng sản phẩm của Microsoft đã ứng dụng ML vào các bộ ứng dụng như Bing Search hay trợ lý ảo Cortana, cũng như các nền tảng Microsoft Translator giúp dịch văn bản theo thời gian thực, âm thanh, và video, các Dịch vụ Nhận thức dành cho nhận diện hình ảnh, lời nói và ngôn ngữ giúp xây dựng các agent tương tác và đàm thoại, bên cạnh đó là nền tảng Azure AI giúp các khách hàng tự xây dựng các ứng dụng ML của riêng họ [*]. Để tạo dựng được các sản phẩm phần mềm như vậy, Microsoft đã tận dụng những khả năng sẵn có của AI và phát triển những mảng chuyên môn mới trong toàn bộ công ty.

Rất nhiều các nhóm Software Engineer của Microsoft xây dựng ứng dụng phần mềm với tính năng AI tập trung vào khách hàng (customer-focused AI features). Để làm được điều này, Microsoft đã tích hợp các quy trình SE Agile sẵn có với quy trình làm việc dành riêng cho mảng AI dựa trên những kinh nghiệm trước đó trong việc phát triển các ứng dụng khoa học dữ liệu và AI giai đoạn đầu. Trong nghiên cứu này, các nhân viên Microsoft về việc làm thế nào mà họ có thể xử lý những khó khăn nảy sinh trong quá trình phát triển phần mềm AI chuyên biệt cũng như các vấn đề lớn hơn, thiết yếu hơn vốn có trong việc phát triển cơ sở hạ tầng và ứng dụng AI quy mô lớn.

Với những nhóm hoặc thành viên trong công ty có kinh nghiệm về AI khác nhau, chúng tôi đã quan sát được nhiều vấn đề giảm độ quan trọng đáng kể khi nhóm bắt đầu trưởng thành, trong khi một số vấn đề khác vẫn là thiết yếu trong việc thực hành AI ở quy mô lớn — nhận định được rút ra theo báo cáo từ các nhóm mới. Chúng tôi đã thử tạo một thang đo quá trình trưởng thành để giúp các nhóm xác định được họ đã tiến bao xa trên con đường xây dựng các ứng dụng AI.

Một phát hiện chính trong các phân tích của bài viết này chính là 3 điểm khác biệt cơ bản giúp xây dựng ứng dụng và nền tảng để training và fielding các model ML so với những lĩnh vực ứng dụng khác. Đầu tiên, ML có mối liên hệ mật thiết đến dữ liệu, nếu không muốn nói là tất cả. Để tìm hiểu, quản lý và cập nhật các phiên bản dữ liệu là điều rất phức tạp, đòi hỏi nhiều nỗ lực và sự cẩn trọng, cũng như khác với cách làm tương tự với mã phần mềm. Thứ hai, để model có khả năng tùy biến và mở rộng yêu cầu các nhóm Software Engineer không chỉ các kỹ năng thông thường mà gần như luôn luôn phải có kiến thức sâu rộng về ML để xây dựng, đánh giá và điều chỉnh các model ngay từ ban đầu. Thứ ba, để duy trì ranh giới module chuẩn xác giữa các thành phần ML thì khó hơn rất nhiều so với công việc tương tự trên các thành phần SE khác. Các model ML có thể trở nên rắc rối bằng nhiều cách phức tạp và ảnh hưởng đến các model khác qua quá trình training và điều chỉnh, ngay cả khi nhóm Software Engineer xây dựng model riêng rẽ.

9 giai đoạn của quy trình học máy. Một số giai đoạn thiên về định hướng dữ liệu (vd: thu thập, tinh gọn và dán nhãn) và một số giai đoạn khác là định hướng model (vd: yêu cầu cho model, xây dựng tính năng, training, triển khai và giám sát). Có nhiều vòng lặp phản hồi (feedback loops) trong quy trình làm việc. mũi tên lớn biểu thị việc đánh giá và giám sát model có thể lặp lại trong bất kì giai đoạn nào trước đó. Mũi tên nhỏ biểu thị model training có thể lặp lại tính năng kĩ thuật.

Thông qua những kinh nghiệm mà nhóm Software Engineer ở Microsoft ứng dụng các quy trình SE và thực hành tích hợp ML có thể giúp các công ty khác bắt tay vào con đường của riêng họ hướng tới xây dựng các ứng dụng và nền tảng AI. Các đóng góp cụ thể bao gồm:

  1. Mô tả một số nhóm Software Engineer của Microsoft làm việc với quy trình 9 giai đoạn để tích hợp ML vào ứng dụng và phát triển nền tảng.

2. Tập hợp best practices giúp xây dựng các ứng dụng và nền tảng dựa trên ML.

3. Mô hình quá trình học máy tùy chỉnh để đánh giá sự tiến bộ của các nhóm Software Engineer khi xây dựng ứng dụng AI.

4. Thảo luận về 3 khác biệt cơ bản trong cách SE áp dụng vào các thành phần ML với các mảng ứng dụng trước đó.

(còn tiếp)

Tham khảo:

[*] M. Salvaris, D. Dean, and W. H. Tok, “Microsoft AI Platform,” in Deep Learning with Azure. Springer, 2018, pp. 79–98.

Các tác giả nghiên cứu:

Saleema Amershi | Microsoft Research | Redmond, WA USA | samershi@microsoft.com

Andrew Begel | Microsoft Research | Redmond, WA USA | andrew.begel@microsoft.com

Christian Bird | Microsoft Research | Redmond, WA USA | cbird@microsoft.com Robert DeLine | Microsoft Research | Redmond, WA USA | rdeline@microsoft.com

Harald Gall | University of Zurich | Zurich, Switzerland | gall@ifi.uzh.ch

Ece Kamar | Microsoft Research | Redmond, WA USA | eckamar@microsoft.com

Nachiappan Nagappan | Microsoft Research | Redmond, WA USA | nachin@microsoft.com

Besmira Nushi | Microsoft Research | Redmond, WA USA | besmira.nushi@microsoft.com

Thomas Zimmermann | Microsoft Research | Redmond, WA USA | tzimmer@microsoft.com

--

--

Cinnamon AI
Cinnamon AI

Written by Cinnamon AI

Cinnamon AI is the pioneer company in consulting and designing innovative solutions using AI technology for business. Follow our official Medium for more :)

No responses yet