Mình nhận thấy hiện nay trên mạng đã có rất nhiều hướng dẫn để “học MLOps” hay là “các khóa học MLOps” khác nhau, nhưng vẫn chưa cover được các vấn đề sau:
- Công việc hàng ngày (Day to day) như thế nào
- Có thể chuyển đổi (Transfer) từ các công việc nào trước đây
- Triển vọng
Nên mình mong muốn có thể mang tới góc nhìn này (dựa trên trãi nghiệm cá nhân), điều này có thể giúp các bạn biết cách để điều chỉnh việc học (nếu như bạn đang muốn chuyển sang vị trí này) hoặc chuyển dịch từ các công ty lớn có quy trình chuẩn hóa sang các công ty nhỏ, startup.
Table of Contents
Công việc hằng ngày
Góc nhìn lí tưởng
Nếu bạn lên mạng tìm hiểu bạn sẽ thấy có rất nhiều blog dùng hình ảnh như trên để mô tả “các hoạt động” của MLOps bao gồm tất cả mọi thứ liên quan tới một “Model life cycle” từ data sourcing label tới versioning ….v…v…..
Trên thực tế, khi bạn được thuê ở vị trí MLOps Engineer khả năng cao bạn có thể chỉ làm một phần, hoặc gần như chỉ làm đụng một việc trên chart trên vì các lí do sau:
- Công ty chưa có khả năng và kế hoạch để data versioning
- Usage quá thấp, chưa có kế hoạch scaling hardware (trong tương lai khả dĩ)
- Có các quy trình khác đang hoạt động (ví dụ như monitor model performance bằng tay hoặc report từ 1 team nào đó) và chưa có vấn đề phát sinh với việc này
Trong một thế giới hoàn hảo chúng ta sẽ muốn những điều trên được giải quyết, nhưng điều này là không thể vì chúng ta đang làm việc một môi trường kinh doanh, và môi trường kinh doanh không hề lí tưởng. Nên trước tiên chúng ta phải hiểu rõ những hạn chế trên để biết cải thiện kì vọng của bản thân.
Góc nhìn thực tế
Công việc của bạn là: “Làm cho Machine Learning/AI có thể hoạt động trơn tru tại tổ chức” (hoặc ít nhất là kì vọng từ nhà tuyển dụng). Có một số thực tế khách quan dưới đây mà có lẽ các bạn nào đang làm việc ở những công ty đang triển khai mô hình AI đều nhận thấy:
- Đôi lúc vấn đề bạn giải quyết vừa bao gồm cả phần cứng on-site và cloud
- Đôi lúc… team lưu model và data trên cả huggingface và NAS on-site, hay s3
- Bạn không deploy k8s hay kubeflow để quản lý tổng thể được vì nhiều máy và các máy có thể nằm tại các nơi khác nhau
Về mặt tư tưởng… bạn yêu cầu công ty hoặc tự bạn giải quyết những vấn đề trên, nhưng nó phải tốn 6 tháng hay 1 năm để thành hiện thực vì liên quan đến logistics và choice (cloud hay hardware). Đôi khi các bạn làm researchers cũng support bạn và mong bạn làm điều đó nhưng khả năng công ty hiện tại không thể giải quyết các vấn đề trên và bạn phải xử lí các vấn đề như trên day-to-day.
Ngoài ra còn có một số chênh lệch về kì vọng về phía tooling (công cụ), bạn có thể dành rất nhiều thời gian học các chứng chỉ để dùng các công cụ cloud như:
- Vertex AI trên GCP
- Databricks AI
- AWS AI
- …..
Thực tế tooling thật sự có thể rất khác biệt:
- Runpod, hoặc các cloud có dồi dào GPUs (vì cloud truyền thống GPUs rất đắt đỏ)
- k8s (bare metal)
- Proxmox
- …. ( tùy size và scale của công ty)
Chuyển đổi công việc
Các công việc nào dễ dàng chuyển đổi sang làm MLOps, vì trên đời này không có ai sinh ra đã thành MLOps engineer.
Devops
Với một DevOps giàu kinh nghiệm, việc chuyển sang MLOps thường không quá khó khăn, bởi mục tiêu chung vẫn là hỗ trợ hệ thống ML trong công ty hoạt động hiệu quả. Nếu bạn đã từng làm DevOps, bạn có lợi thế lớn khi thành thạo các dịch vụ cloud, công cụ hỗ trợ (tooling), và đặc biệt quan trọng là có kinh nghiệm triển khai on-premise hoặc thiết lập từ các cloud ít công cụ nhưng có GPUs, như Runpod. Những kỹ năng này sẽ giúp bạn dễ dàng thích nghi và phát triển trong vai trò MLOps.
Sys-admin
Tương tự, một Sys-admin có nền tảng kỹ thuật tốt cũng có thể chuyển đổi sang MLOps mà không gặp nhiều khó khăn. Với kinh nghiệm quản trị hệ thống, bạn thường đã quen thuộc với việc cấu hình và quản lý server, tối ưu tài nguyên hệ thống. Điều này rất hữu ích trong MLOps cho các công ty nhỏ ứng dụng AI vì thường phải sử dụng hardware có sẵn hoặc dùng các cloud không tiêu chuẩn (như Runpod) nên phải setup tất cả mọi thứ từ đầu..
Sys-admin nếu bổ sung thêm kinh nghiệm sử dụng các công cụ cloud,, quản lý cluster, hoặc sử dụng công cụ container như Docker và Kubernetes, bạn sẽ có một lợi thế lớn. Tuy nhiên cần phải bổ sung các kiến thức đặc thù của ML để có thể làm việc hiệu quả.
Từ… sinh viên
Nếu bạn là sinh viên và mới ra trường thì việc có nền tảng vững với việc triển khai các hệ thống công nghệ thông tin như 2 công việc trên cực kì quan trọng trước khi bản có thể thực sự làm “MLOps” và đặc biệt là “MLOps” tại các công ty nhỏ và vừa. Việc chỉ đơn thuần làm “MLOps” mà không đụng tới 2 công việc trên có thể tồn tại ở những công ty rất lớn hoặc có quy trình chuẩn hóa, nhưng đây là thiểu số rất nhỏ.
Kết bài
Mình chỉ chia sẻ một chút góc nhìn cá nhân, vì hiện tại mình thấy các khóa học và toolsets được quảng cáo trên mạng có vẻ khá thiên lệch so với góc nhìn thực tế và công việc day-to-day mà các bạn làm MLOps engineer đang phải đối mặt. Mong các ý tưởng trên có thể giúp các bạn cân bằng lại expectation cũng như những gì mình sẽ phải làm khi nhìn thấy một tin đăng tuyển “MLOps Engineer” trên mạng.