今天休息一下,紀錄一下為什麼需要合作?
先來看看 OpenAI GPT 4 的貢獻名單 ,從這個組織架上上可以發現團隊大致分成七個部分:
光是 Pretraining 的部分就可以再細分為
可以看到一個可以簡化成 Chatbot API 的服務,是由一個這麼大的團隊合作來建立的,然而在台灣,部分的新創公司,很有可能都會仰賴一個 Data Scientist 來獨立完成這題目,即使在一些稍有規模的公司,建構這樣這樣的系統可能也不會有超過六個人的編制。如果有人是在一個完整分工的團隊去時做這樣的產品,那真的很幸福,代表老闆非常重視這個產品,但這就衍生下來一個問題,這個團隊的人要如何合作?
舉一個例子,曾經和團隊中的另一個資料科學家要合作一個序列模型,他負責實驗模型,而我負責寫 Pipeline 的程式碼,在驗證階段,我和他要了一個資料 csv 來驗生產 Pipeline 的 inference score 是否和實驗中的模型的 Score 一致,於是他傳給了我一個 Amazon S3 resourec 的網址: S3://experiment_bucket/example/experiment_data
給我,然後在整個驗證個結束後我們總共生成了以下檔案
S3://experiment_bucket/example/experiment_data
S3://experiment_bucket/example/experiment_data_v1
S3://experiment_bucket/example/experiment_data_v2
S3://experiment_bucket/example/experiment_data_v1_no_etl
S3://experiment_bucket/example/experiment_data_etl_v2
我認為一個理想的團隊合作會有以下特性:"每一個成員都可以知道整個專案的目標是什麼,並且知道怎麼進行,並可以完成自己所分配到的部分",當然這裡可以再細分為兩種狀態:
由於我們團隊的特性我們希望理想的團隊合作是第二種,但我們遇到以下的問題
起先我們嘗試定義了很多不同的 Protocol/ Idiomatic 來嘗試非強制性的規範大家的使用方法,然而這些做法並沒有很好的被實踐,原因是因為當專案有時程壓力時,大家會傾向回到自己熟悉的方法,這類依賴人為規範的方法很難好好實踐,於是我們轉向開始研究如何利用 MLOps 的系統來解決我們的問題
用一個高大上的 MLOps 詞雖然畫了一個大餅,有時候我也常想這樣跟 ML Platform 的差異到底是什麼,但是撇除掉詞彙外,不變的是我們如何解決上面遇到的這些問題,如何在合作中減少技術債生成並可以減少合作成本,加速產品迭代週期
一個好的 MLOps 平台我認為要有以下幾個元件:
常常在思考 DevOps, SRE, Plarform Enginner 這些角色的定義為什麼在每間公司都有一些不同,但有好像有個很模糊的區分,就像 Machine Learning Enginner, AI Engineer, Data Enginer Data Scientist, MLOps... 在很多公司好像各有其所職,但真要細分好像又沒有辦法說得很清楚各自的 Roles and Responsibility,我認為所有的職位,在最一開始,都是由一個單一的 Developer 負責,負責寫 Code 把服務做出來,負責部署,負責監控 Serving 中的服務的狀態,隨著服務變多,開始把部署跟監控的一些瑣碎事情自動化,最後想把自動化的工具分享出去,慢慢地開始平台化
回到結論,我認為 MLOps 的重點,不在於我們要用什麼工具,而是我們究竟遇到的什麼問題,或是想要解決什麼樣瑣碎的事情,從這出發,在回頭看看市面上有哪些開源專案或服務正式為了解決這些問題而生,這也是為何這系列文的標題寫為從 Data Scientist 到 MLOps 的心路歷程,接下來我們從第一大區塊 Researching 繼續寫下去