MLOps Marathon 2023
Trang web của chúng tôi
* Email và Discord Server trên là 2 kênh giao tiếp chính thức của cuộc thi. Trong Discord Server, các bạn tham gia vào Category có tên "MLOps Marathon Ops"
Trong thời đại chuyển đổi số, AI/ML đang được ứng dụng ngày càng phổ biến ở cách doanh nghiệp nhằm cải thiện khả năng phân tích dữ liệu và giải quyết các vấn đề kinh doanh một cách nhanh chóng và hiệu quả. Để đẩy nhanh quá trình triển khai model và tối đa hóa độ tin cậy của các model AI/ML, MLOps đã xuất hiện như một bộ quy chuẩn mới giúp triển khai và vận hành hệ thống học máy với hiệu suất cao, bao gồm các nguyên tắc có thể kể đến như:
- Tổng hợp, theo dõi các phiên bản và hiệu suất của các model AI/ML
- Giám sát hiệu suất của các model và hệ thống sau khi đã triển khai thực tế
- Tự động hóa quá trình huấn luyện, triển khai, bảo trì, hay nâng cấp các model
Trên tinh thần đó,MLOps Marathon được tổ chức với sứ mệnh mang các nguyên tắc và các ứng dụng thực tiễn trong MLOps đến gần hơn với cộng đồng AI Việt Nam, cung cấp kiến thức và môi trường thực hành để mọi người có thể dễ dàng nắm bắt.
MLOps Marathon sẽ được diễn ra với 3 giai đoạn: Khởi động (Warm up), Tăng tốc (Speed up) và Về đích (Finish up).
- Giai đoạn Khởi động (05/06/2023 - 02/07/2023): Các đội chơi làm quen với thể lệ cuộc thi, dữ liệu và hệ thống do BTC cung cấp. Trong thời gian này, thí sinh sẽ có cơ hội triển khai và vận hành hệ thống học máy trên cả máy cá nhân và server của BTC
- Giai đoạn Tăng tốc (03/07/2023 - 30/07/2023): Yêu cầu các đội chơi nâng cấp hệ thống học máy để đối ứng với dữ liệu chưa được làm sạch (ví dụ như thiếu giá trị hoặc giá trị không đúng format, …) và dữ liệu bị thay đổi phân bố (data drift)
- Giai đoạn Về đích (31/07/2023 - 28/08/2023): Ở giai đoạn này, hiện tượng dữ liệu chưa được làm sạch và dữ liệu bị thay đổi phân bố xảy ra nhiều hơn, các đội thi cần tiếp tục cải thiện hệ thống để có thể phát hiện và giải quyết vấn đề này.
Mỗi giai đoạn của marathon sẽ được chia thành 2 phần
- Phần 1 (3-4 tuần đầu): Các đội thi sẽ được cung cấp một số bài toán Machine Learning và dữ liệu tương ứng. Nhiệm vụ của các đội là huấn luyện model và triển khai Serving API trên máy cá nhân.
- Phần 2 (3 ngày cuối): BTC cung cấp server để các đội thi triển khai Serving API. Các đội thi nên cố gắng hoàn thành triển khai trong 2 ngày đầu. Ở ngày thứ 3, BTC sẽ bắt đầu đánh giá các đội bằng cách gửi dữ liệu dự đoán tới API. Các đội thi có thể lưu lại các dữ liệu này để tiếp tục phân tích và cải thiện model.
Các mốc thời gian quan trọng
- 12 tháng 5, 2023: Khai mạc MLOps marathon
- 5 tháng 6, 2023: Giai đoạn Khởi động - Phần 1
- 30 tháng 6, 2023: Giai đoạn Khởi động - Phần 2
- 3 tháng 7, 2023: Giai đoạn Tăng tốc - Phần 1
- 28 tháng 7, 2023: Giai đoạn Tăng tốc - Phần 2
- 31 tháng 7, 2023: Giai đoạn Về đích - Phần 1
- 25 tháng 8, 2023: Giai đoạn Về đích - Phần 2
- 28 tháng 8, 2023: Kết thúc giai đoạn Về đích
- Lễ trao giải: Sẽ công bố trong thời gian tới
Đối tượng tham gia cuộc thi
Cuộc thi MLOps Marathon 2023 không giới hạn độ tuổi, quốc tịch, số năm kinh nghiệm, sinh viên hay người đi làm, có kinh nghiệm lập trình là một lợi thế.
Cách thức tính điểm
Ở mỗi giai đoạn của cuộc thi, các đội chơi sẽ làm việc với nhiều bài toán Machine Learning (ML problem) khác nhau, với dữ liệu có thể giống hoặc khác nhau nhưng cùng là dữ liệu dạng bảng. Thông tin cụ thể về mỗi bài toán được đính kèm cùng với dữ liệu được cung cấp bởi ban tổ chức.
Trong phần 2 của mỗi giai đoạn, BTC sẽ cung cấp server để các đội thi triển khai Serving API. Trong phần 2 này, BTC sẽ đánh giá các đội bằng cách gửi dữ liệu dự đoán tới API. Các đội thi có thể lưu lại các dữ liệu này để tiếp tục phân tích và cải thiện model.
Khi triển khai Serving API, API route cần có cấu trúc như sau:
- Method: POST
- Route: /{phase-id}/{prob-id}/predict, trong đó phase-id là ID của phase, prob-id là ID của problem trong phase đó
- Giai đoạn 1, problem 1 có route là: /phase-1/prob-1/predict
- Tương tự với các giai đoạn và problem khác
- Định dạng input:
- id: id của request
- columns: mảng 1 chiều chứa tên của các feature
- rows: mảng 2 chiều của dữ liệu
- Định dạng output:
- id: id của request tương ứng
- predictions: mảng chứa kết quả dự đoán từ dữ liệu đầu vào
- drift: kết quả dự đoán xem bộ dữ liệu trong request có bị drift hay không
Sau khi triển khai Serving API, các đội chơi sẽ gửi (submit) tệp <tên-bất-kì>.zip chứa file target.txt để được đánh giá và xếp hạng tự động trên aihub.ml.
File target.txt phải có tên là target.txt và chỉ có duy nhất một dòng ghi địa chỉ IP (hoặc domain) và Port của server của đội chơi, ví dụ: http://123.123.123.123:5040. Hệ thống sẽ tự thêm route khi gọi API của các đội. Ví dụ: http://123.123.123.123:5040/phase-1/prob-1/predict
Cách data được gửi đi
Trong mỗi phần của một giai đoạn, khi các đội submit theo hướng dẫn trên, Serving API của các đội sẽ nhận được data như sau:
- Ở phần 1: Mỗi lần thí sinh submit sẽ nhận được cùng 1 tập data, và thí sinh có thể submit trong bất cứ khung giờ nào
- Ở phần 2:
- Phần 2 diễn ra trong 3 ngày, các đội thi nên cố gắng hoàn thành việc triển khai API trong 2 ngày đầu
- Ở ngày thứ 3, BTC sẽ bắt đầu đánh giá các đội bằng cách gửi dữ liệu dự đoán tới API
- Tuỳ vào khoảng thời gian submit mà thí sinh sẽ nhận được tập data khác nhau
- Các khoảng thời gian này bao gồm: 9-10h59, 11-12h59h, 13-14h59h, 15-16h59h, 17-20h59h
- Điểm ghi nhận ở khoảng thời gian cuối cùng 17-20h59 sẽ được dùng làm điểm của phần 2
- Những điểm số ở khung thời gian khác chỉ nhằm mục đích để các đội thi tự đánh giá và cải thiện model
- Trong cùng một khoảng thời gian, data nhận được sẽ là như nhau
- Các submit ngoài khung thời gian trên sẽ không được chấm điểm, data nhận được có thể là data cũ từ giai đoạn trước, hoặc là không có data
Phương pháp đánh giá mỗi giai đoạn
Phần 1 trong mỗi giai đoạn không đánh giá điểm, điểm sẽ được tính trong phần 2 của mỗi giai đoạn. Vì trong mỗi giai đoạn có nhiều ML problem, nên điểm sẽ được đánh giá cho mỗi ML problem riêng biệt. Điểm của phần 2 trong mỗi giai đoạn là điểm trung bình cộng của điểm của các ML Problem trong giai đoạn đó.
Điểm của mỗi ML problem: problem_score = model_score * 0.45 + system_score * 0.45 + drift_score * 0.1. Trong đó:
- model_score: metric dùng để đánh giá model ở mỗi ML problem, có thể là AUC, R2-squared, v.v.., và được định nghĩa trong mỗi ML problem
- system_score = (1 - p95_response_time / constant_a) * 0.5 + successful_rate * 0.5. Trong đó:
- p95_response_time: khoảng thời gian mà 95% các requests được xử lý nhanh hơn hoặc bằng thời gian này, chỉ có 5% requests mất thời gian lâu hơn, với 1 response time được tính từ lúc hệ thống gửi 1 request tới API cho tới khi nhận về response
- constant_a: một hằng số
- successful_rate: tỉ lệ gửi và nhận request thành công với timeout cho trước. Ví dụ:
- BTC gửi 100 API request tới server của 1 đội
- Mỗi request có thể chứa số rows khác nhau
- BTC chỉ nhận được response của 50 requests trong timeout cho trước, suy ra successful_rate là 50%
- Lưu ý:
- Số lượng request tối đa ở một thời điểm có thể lên tới 200 requests
- Mỗi request sẽ có một giá trị timeout cố định, timeout này thay đổi theo mỗi giai đoạn
- Dữ liệu gửi tới API theo batch với kích thước có thể lên tới (2000, 50). Trong đó:
- 2000: là số rows
- 50: là số features
- drift_score: độ chính xác của dự đoán xem dữ liệu trong request có bị drift hay không
- Lưu ý: drift_score sẽ không được hiển thị trên leaderboard, các đội chỉ xem được drift_score của chính đội mình
Điểm tổng kết cuối cùng
Điểm của các đội thi sẽ được tính dựa vào điểm của phần 2 trong 3 giai đoạn. Bên cạnh đó, sau khi kết thúc Giai đoạn Về đích, BTC sẽ chọn ra các đội đứng đầu và đánh giá các đội thông qua phần "Đánh giá trực tiếp". Trong phần này, các đội thi sẽ thuyết trình và diễn giải về giải pháp của mình. Trong phần Đánh giá trực tiếp, BTC sẽ đặt câu hỏi và đánh giá các giải pháp của các đội dựa vào một số tiêu chí sau:
- Độ chính xác và độ ổn định của model: Đánh giá khả năng của giải pháp xử lý dữ liệu và tạo ra model có độ chính xác cao và độ ổn định cao
- Khả năng tái sử dụng: Đánh giá khả năng tái sử dụng của giải pháp để phát triển các mô hình khác một cách nhanh chóng và hiệu quả
- Tính dễ sử dụng, tính linh hoạt và khả năng mở rộng: Đánh giá tính dễ sử dụng, khả năng linh hoạt để phù hợp với nhiều môi trường khác nhau ở các mức độ và quy mô khác nhau
- Hiệu quả về chi phí: Đánh giá sự hiệu quả của giải pháp trong việc tiết kiệm chi phí và tối ưu hóa quy trình sản xuất mô hình
- Bảo mật và tính an toàn của giải pháp: Đánh giá khả năng của giải pháp trong việc bảo vệ dữ liệu và đảm bảo tính an toàn của môi trường sản xuất
Số lượng các đội được chọn cho phần Đánh giá trực tiếp, cũng như quy trình và cách thức thực hiện của phần này sẽ được công bố trong thời gian tới.
Công thức tính điểm cuối cùng: final_score = P1 * 0.05 + P2 * 0.25 + P3 * 0.5 + PJ * 0.2. Trong đó:
- P1 là điểm của phần 2 trong Giai đoạn Khởi động
- P2 là điểm của phần 2 trong Giai đoạn Tăng tốc
- P3 là điểm của phần 2 trong Giai đoạn Về đích
- PJ là điểm của phần Đánh giá trực tiếp
Thể lệ cuộc thi
Quy định chung
- Ban tổ chức có quyền hủy bỏ, sửa đổi hoặc loại bỏ tư cách tham dự. Ban tổ chức có toàn quyền quyết định chấm dứt, sửa đổi hoặc đình chỉ cuộc thi.
- Bằng cách gửi kết quả cho cuộc thi, bạn đồng thuận việc công khai điểm số của mình tại hội thảo của cuộc thi và trong các thủ tục liên quan, theo quyết định của Ban tổ chức. Điểm số có thể bao gồm nhưng không giới hạn các đánh giá định lượng được tiến hành tự động và thủ công, các đánh giá định tính, và các chỉ số đo mà ban tổ chức đánh giá là phù hợp. Bạn chấp nhận rằng quyết định cuối cùng liên quan đến việc chọn các chỉ số đo và giá trị điểm số nằm ở người ra đề.
- Với việc tham gia cuộc thi, bạn xác nhận và công nhận rằng bạn đồng ý tuân thủ các luật và quy định hiện hành, đồng thời bạn không được vi phạm bất kỳ bản quyền, sở hữu trí tuệ hoặc bằng sáng chế nào của một bên khác đối với phần mềm mà bạn phát triển trong quá trình diễn ra cuộc thi và sẽ không vi phạm bất kỳ luật và quy định hiện hành nào liên quan đến kiểm soát xuất khẩu, quyền riêng tư và bảo vệ dữ liệu.
- Giải thưởng được trao dựa trên sự xem xét và xác minh của Ban tổ chức cuộc thi về tính đủ điều kiện của người dự thi và tuân thủ các quy tắc này cũng như tuân thủ các yêu cầu dành cho đội thắng cuộc.
- Người tham gia ủy quyền cho người tổ chức sử dụng tên của họ và bất kỳ tài liệu nào liên quan đến cuộc thi mà không cần sự đồng ý hoặc bồi thường thêm từ người tổ chức.
- Các đội cần giải thích mã hoặc tạo lại kết quả nếu ban tổ chức yêu cầu.
Điều kiện tham dự
- Mỗi người tham gia chỉ được đăng ký một tài khoản tại AIhub.ML
- Người tham gia không được phép chia sẻ bất kỳ tài liệu nào bên ngoài nhóm của họ.
- Cuộc thi diễn ra công khai, nhưng Ban tổ chức cuộc thi có thể quyết định bác bỏ quyền tham gia theo những cân nhắc riêng.
- Ban tổ chức cạnh tranh có quyền loại bất kỳ người tham gia nào khỏi cuộc thi nếu, theo quyết định riêng của Ban tổ chức cuộc thi, chúng tôi tin rằng người tham gia đã cố gắng phá hoại hoạt động hợp pháp của cuộc thi thông qua gian lận, lừa dối hoặc các hành vi tham dự không công bằng khác.
Quản lý đội tham gia
- Những người tham gia được phép thành lập đội. Mỗi đội có tối thiểu 1 thành viên và tối đa 5 thành viên.
- Các đội không được cộng tác trong suốt cuộc thi.
- Bạn không thể tham gia vào nhiều hơn một đội.
Thể lệ nộp bài
Số lần gửi tối đa trong mỗi giai đoạn:
- Giai đoạn 1 - Khởi động:
- Phần 1: 20 lần / ngày
- Phần 2: 20 lần / ngày
- Giai đoạn 2 - Tăng tốc:
- Phần 1: 10 lần / ngày
- Phần 2: 20 lần / ngày
- Giai đoạn 2 - Về đích::
- Phần 1: 10 lần / ngày
- Phần 2: 20 lần / ngày
Nội dung bài dự thi sẽ bị vô hiệu nếu toàn bộ hoặc một phần không đọc được, không đầy đủ, bị hư hỏng, bị thay đổi, giả mạo, có được thông qua các phương tiện gian lận hoặc trễ hạn. Ban tổ chức cuộc thi có quyền loại bất kỳ người dự thi nào gửi bài không tuân thủ tất cả các yêu cầu.
Dữ liệu
Bằng cách tải xuống hoặc truy cập dữ liệu do Ban tổ chức cuộc thi cung cấp theo bất kỳ cách nào, bạn đồng ý với các điều khoản sau:
- Các đội được phép sử dụng các nguồn dữ liệu công khai và miễn phí khác.
- Bạn sẽ không phân phối dữ liệu ngoại trừ mục đích phi thương mại và nghiên cứu học thuật.
- Bạn sẽ không phân phối, sao chép, tái sản xuất, tiết lộ, chuyển nhượng, cấp phép phụ, nhúng, lưu trữ, chuyển nhượng, bán, giao dịch hoặc bán lại bất kỳ phần nào của dữ liệu do Ban tổ chức cuộc thi cung cấp cho bất kỳ bên thứ ba nào vì bất kỳ mục đích nào.
- Bạn hoàn toàn chịu trách nhiệm về việc sử dụng dữ liệu của mình và sẽ bảo vệ và bồi thường cho Ban tổ chức cuộc thi, chống lại bất kỳ và tất cả các khiếu nại phát sinh từ việc bạn sử dụng dữ liệu.
Server được cung cấp
Với việc sử dụng server được cung cấp cho cuộc thi, bạn đồng ý với các điều khoản sau:
- Mỗi đội chỉ được sử dụng server được cấp cho đội đó để phục vụ cho mục đích của cuộc thi.
- Mỗi đội không được sử dụng bất kỳ tài nguyên nào ngoài tài nguyên nằm trên server được cung cấp cho đội đó.
- Các đội sẽ không phân phối, tiết lộ, chuyển nhượng, cấp phép phụ, nhúng, giao dịch hoặc bán lại bất kỳ phần nào của tài nguyên trên server và bản thân server do Ban tổ chức cuộc thi cung cấp cho bất kỳ bên thứ ba nào vì bất kỳ mục đích nào.
- Các đội sẽ không sử dụng server được cấp để lưu trữ, tàng trữ bất kỳ thông tin, dữ liệu, tài nguyên nào vi phạm pháp luật Việt Nam.
- Các đội hoàn toàn chịu trách nhiệm về việc sử dụng server của mình và sẽ bảo vệ và bồi thường cho Ban tổ chức cuộc thi, chống lại bất kỳ và tất cả các khiếu nại phát sinh trong quá trình sử dụng server.
Cơ cấu giải thưởng
- Giải nhất: 100.000.000 VND
- Giải nhì: 10.000.000 VND
- Giải ba: 3.000.000 VND
- Và các phần quà đi kèm