Machine Learning Project Management

Lưu ý khi lập kế hoạch cho một dự án AI

Lưu ý khi lập kế hoạch cho một dự án AI

Trong bất kỳ dự án nào, đứng ở góc độ của nhà đầu tư và người quản lý, họ đều muốn biết được mốc thời gian dự án có thể được hoàn thành trước khi thực sự bắt đầu dự án. Bởi vì thông tin này giúp cho họ đưa ra quyết định về ngân sách dành cho dự án, khả năng thu hồi vốn và sinh lời (ROI). Cuối cùng là kết luận xem dự án có đáng để đầu tư hay không?

Các dự án trong lĩnh vực phát triển phần mềm cũng không ngoại lệ. Đối với các dự án phần mềm thông thường, hiện nay, có rất nhiều công cụ, kỹ thuật có thể giúp chúng ta lên kế hoạch, ước lượng khối lượng công việc ban đầu tuơng đối dễ dàng và đầy đủ. Tuy nhiên, các dự án AI sẽ có một vài điểm khác biệt cần lưu ý trong quá trình thực hiện các công đoạn như ước lượng chi phí, lập kế hoạch quản lý dự án. Trong bài viết này, chúng ta sẽ cùng bàn chiêt tiết về các vấn đề đó. Nội dung của mỗi phần được tham khảo từ nhiều nguồn, kết hợp với kinh nghiệm thực tế của bản thân.

1. Ví dụ về 2 loại dự án phần mềm

Loại dự án 1: Xây dựng một website bán hàng hoặc một ứng dụng mobile Ví dụ, dự án phát triên một website bán hàng. Yêu cầu của dự án là thiết kế các form, layout, button, database, và xử lý các hành vi của người dùng khi mua hàng. Những hành vi này thực chất là một chuỗi các bước được thực hiện tuần tự để đạt được một mục tiêu cụ thể nào đó. Sau đó, anh em developers chỉ cần code theo đúng các bước như vậy.

Loại dự án 2: Phát triển một phần mềm nhận diện các giống mèo khác nhau trong ảnh Để thực hiện dự án này theo cách thông thường, cần phải hiểu rõ đặc tính sinh học, giải phẫu học của loài mèo, trích xuất những thông tin đó từ trong bức ảnh. Đây là một công việc không hề dễ dàng, và trong nhiều trường hợp không thể thực hiện được. Thay vì thế, ta có thể xây dựng một mô hình học máy (Machine Learning model - ML model) và cho nó “học” những đặc tính khác nhau của từng loài mèo. Từ đó, nó có thể dễ dàng phân loại các loài mèo khác nhau khi đưa cho nó một bức ảnh về mèo.

2. Sơ lựơc về AI model

Về bản chất, AI model là một tập hợp các công thức toán học, cùng với rất nhiều các tham số có thể điều chỉnh được trong suốt quá trình train (gọi là các parameters, phân biệt với hyper-parameters là các tham số không thay đổi thông qua quá trình train). Có thể hình dung một cách đơn giản, train một AI model giống như việc một người giáo viên đưa cho một học sinh bức ảnh và nói đó là con mèo. Người học sinh đóng vai trò là AI mode, sẽ cố gắng học những đặc điểm của bức ảnh để biết đó là con mèo. Còn người giáo viên chính là người train.

Có rất nhiều thuật toán AI khác nhau, mỗi loại lại sử dụng những phép toán khác nhau, kiểu và số lượng các parameters cũng khác nhau. Điều này dẫn đến các AI model tương ứng cũng cho ra kết quả khác nhau trên cùng 1 tập dữ liệu. Và nhiệm vụ chính của người kỹ sư AI chính là làm sao xây dựng được AI model có độ chính xác cao nhất, thời gian xử lý nhanh nhất đối với 1 tập dữ liệu nhất định. Để xây dựng lên một AI model tốt, cần phải thực hiện rất nhiều xác thực nghiệm, thí nghiệm trên các thuật toán khác nhau, kết hợp với việc điều chỉnh các hyper-parameters hợp lý. Quá trình này gọi là “thử-sai” (try - error). Điều này nghe thì rất đơn giản nhưng thực tế thì không hề dễ dàng.

Vòng đời của một AI model có thể tóm tắt trong 6 bước:

  1. Bussiness Understanding Hiểu yêu cầu bài toán, hiểu vấn đề của khách hàng.
  2. Data Understanding & Collection Hiểu dữ liệu, cần dữ liệu như thế nào để train được model tốt. Khách hàng có thể có rất nhiều dữ liệu dạng thô, nhưng họ không biết cách sử dụng, khai thác. Mình phải là người hướng dẫn họ.
  3. Data Preparation Dữ liệu thu thập được cần phải được chuẩn hóa trước khi đưa vào train AI model.
  4. Modeling Có dữ liệu rồi, lựa chọn thuật toán phù hợp và tiến hành train mô hình. Quá trình này có thể kéo dài vì chúng ta phải “thử-sai” rất nhiều lần.
  5. Evaluation Model sau khi train xong cần được đánh giá dựa theo 1 tiêu chí cụ thể nào đó. Nếu chưa thỏa mãn thì lại quay lại các bước trước đó.
  6. Deployment Sau khi model được train thoả mãn yêu cầu, nó sẽ được đem vào triển khai trong sản phẩm thực tế. Vòng đời của một AI model là tuần hoàn khép kín vì nó luôn phải được cập nhật theo dữ liệu mới. Để làm tốt các bước 1,2 thì cần phải trải qua kinh nghiệm thực tế để có cảm quan tốt về vấn đề, đồng thời có thể phải cần hiểu về quy trình nghiệp vụ của từng bài toán. Các bước còn lại, có khá nhiều kỹ thuật, phuơng pháp xử lý. Mình sẽ giới thiệu trong các bài sau.

3. Tại sao dự án AI khó ước lượng?

Một người kỹ sư phần mềm với kinh nghiệm lâu năm của mình có thể dễ dàng ước lượng được thời gian cần thiết để có thể hoàn thành một công việc, bởi vì họ đã làm những công việc tương tự như thế rất nhiều lần rồi.

Một người kỹ sư AI có kinh nghiệm, đã từng xây dựng nhiều AI model, độ chính xác lên đến 90%. Tuy nhiên, nếu được hỏi mất bao nhiêu thời gian để họ có thể phát triển AI model tương tự, đạt được độ chính xác như thế, họ sẽ rất khó để trả lời. Tại sao lại có sự khác biệt đó? Có một câu nói rất nổi tiếng trong giới “AI” rằng: No free launch. Điều này ngụ ý là không có một công thức, một cách tiếp cận hay một phuơng pháp nào chung cho các vấn đề trong AI. ML model của bạn có thể đạt độ chính xác cao đối với vấn đề A, nhưng nếu bạn sử dụng cách thức train ML model đó để tạo ra ML model cho vấn đề B, không có gì đảm bảo rằng ML mới cũng hoạt động tốt.

Một vấn đề tối quan trọng nữa, đó là dữ liệu. Có thể nói dữ liệu là vấn đề sống còn của ML model. Thống kê chỉ ra rằng một người kỹ sư AI dành đến 80% thời gian của họ để làm việc với dữ liệu. 20% thời gian còn lại dành cho việc train và triển khai ML model. Nếu bạn chưa có chút hiểu biết gì về dữ liệu bạn cần sử dụng thì mọi ước lượng của bạn có thể coi như là vô nghĩa. “Garbage in, garbage out” - hãy nhớ điều này.

Ngoài ra, bạn cũng nên biết rằng mỗi lần điều chỉnh, cập nhật ML model đều phải dựa trên kết quả của lần train trước đó. Vì thế mà việc xây dựng một bản kế hoạch chi tiết trong thời gian dài cho 1 dự án AI là điều không thực tế.

4. Rủi ro của dự án AI/ML

Có 3 vấn đề cần lưu ý (risks) trong một dự án AI: 1. Chưa xác định được cách thức xây dựng ML model phù hợp: Chọn thuật toán, chọn tham số, … 2. Thiếu dữ liệu train ML model 3. Khó lập kế hoạch chi tiết

Vấn đề đầu tiên có thể được giải quyết bằng cách thực hiện điều tra nghiên cứu tính khả thi của ML model trước khi thực sự bắt đầu dự án. Thậm chí, việc này có thể coi là một dự án PoC, làm tiền đề cho dự án thực sự phía sau. Trong giai đoạn PoC, chúng ta sẽ thử nghiệm các thuật toán, các bộ tham số, các cách thức tiếp cận khác nhau để giải quyết một vấn đề nhỏ nhưng tiêu biểu cho dự án lớn. PoC không chỉ giúp chúng ta xác định được các khả năng có thể và không thể của ML model đối với yêu cầu của dự án mà còn chỉ ra được những yêu cầu cụ thể đối với dữ liệu đầu vào. Thông qua PoC, người kỹ sư AI sẽ hiểu rõ hơn về nghiệp vụ, từ đó rút ngắn được danh sách các thuật toán PoC cần thử nghiệm. Và thậm chí là không cần dùng đến ML model cũng có thể giải quyết được yêu cầu của bài toán đặt ra. Nếu mà kết quả của PoC không được như mong đợi, không chọn ra được bất kỳ phuơng pháp nào đáp ứng yêu cầu dự án thì hoặc là cần phải dành thêm thời gian để nghiên cứu hoặc là quyết định dừng dự án lại, tránh lãng phí thời gian và tiền bạc. Sau khi đã giải quyết được vấn đề đầu tiên thì vấn đề thứ 2 đã sáng tỏ hơn. Chúng ta đã biết là cần dữ liệu như thế nào. Việc còn lại chỉ là làm thế nào để có được dữ liệu đó. Thông thường, khi đưa ra bài toán, khách hàng thường đã có dữ liệu (dạng thô) rồi. Người kỹ sư AI phải làm sao sử dụng được dữ liệu đó một cách hiệu quả và hợp lý để tăng được độ chính xác của ML model. Trong trường hợp, khách hàng không có sẵn dữ liệu thì chúng ta phải hướng dẫn họ cách thức thu thập dữ liệu, sao cho đơn giản, nhanh chóng và chính xác dữ liệu được mong đợi. Tuy nhiên, việc làm này có một hạn chế đó là việc thu thập dữ liệu trong một thời gian ngắn thường sẽ khó có thể bao quát hết các trường hợp xảy ra trong thực tế nghiệp vụ của khách hàng (vấn đề bias dữ liệu trong AI). Điều này chắc chắn sẽ làm giảm độ chính xác của ML model khi triển khai trong thực tế. Tất nhiên, theo thời gian, ML model sẽ được cập nhật theo dữ liệu thực tế thì độ chính xác cũng sẽ được tăng lên. Nhưng làm sao để khách hàng hiểu và chấp nhận điều này thì lại là một vấn đề không đơn giản. :D Vấn đề còn lại, giải quyết bằng cách áp dụng nguyên lý Agile-Scrum trong quản trị dự án. Chúng ta lập kế hoạch ngắn hạn cho từng Sprin. Kế hoạch của Sprin tiếp theo sẽ phụ thuộc vào kết quả của Sprin trước đó. Trong quá trình thực hiện dự án, cũng nên liên tục trao đổi, chia sẻ thông tin với khách hàng để điều chỉnh kế hoạch cho phù hợp, đảm bảo dự án đang đi đúng hướng.

5. Kết luận

Vấn đề về chất lượng dữ liệu và việc không có phương pháp chính xác ngay từ đầu yêu cầu phải có giai đoạn “research” - nghiên cứu tìm hiêu (PoC) trước khi chính thức bắt đầu một dự án AI. Tuy nhiên, những rủi ro này thường không đuợc xem xét trong quá trình ước lựong và lập kế hoạch cho một dự án AI. Cần nhấn mạnh một điều rằng, dự án AI thuộc thể loại “experiment-driven”, tức là dự án phải trải qua rất nhiều “experiments” - thực nghiệm, thí nghiệm. Và hành động tiếp theo phụ thuộc vào kết quả của hành động trước đó. Nếu bạn đã từng trải qua những dự án AI, hãy chia sẻ kinh nghiệm của bạn dưới phần bình luận! Rất vui nếu được tiếp thu những ý kiến đóng góp của mọi người!

Bài viết có tham khảo tại đây.