iT邦幫忙

2023 iThome 鐵人賽

DAY 1
1
AI & Data

Rust 加 MLOps,你說有沒有搞頭?系列 第 1

[Day 01] - 身為一個 ML 工程師,身上有一隻熟螃蟹是很正常的!

  • 分享至 

  • xImage
  •  

熟螃蟹!?

首先介紹要陪伴我們 30 天旅程的小朋友,它叫 Ferris,是一隻被煮熟的螃蟹!
runing ferris
Animated Ferris for Rust Fest Berlin by A. L. Palmer
選擇螃蟹是因為 Rust 用戶的稱呼是 Rustacean (就跟 Python 用戶有時候會被叫做 Pythonista 一樣)。
而 Rustacean 是 Rust 與 crustacean 的混成詞 (portmanteau,不用擔心,這不會考)。
其中 crustacean 是甲殼綱動物,所以非官方吉祥物熟螃蟹 Ferris 應運而生!
你說把吉祥物煮熟好像有點太粗殘了?
其實它的顏色是氧化鐵紅啦,畢竟是生鏽的 Rust 嘛。
https://ithelp.ithome.com.tw/upload/images/20230916/20141304p2BKnRCiQm.png

緣起

今年初 Pandas 2.0 發布,踏上離開 Numpy 的旅程,轉而投向 Arrow 的懷抱,因此大家都對其速度表現上有很高的期待,而許多人也馬上將它與同樣用以處理 DataFrame 但基於 Rust 的 Polars 進行對比。

從結果上來說,Polars 在很多方面表現還是好一點,而剛好在工作上有機會將本來在 Pandas 較繁重的計算處理遷移到 Polars 上,實際上也真的得到了表現上的提升。
其中最令我印象深刻的是在某些任務上使用 polars.struct 將原始資料轉為 Rust 的 struct 型別時可以得到數量級的差異 (而且程式碼還很簡潔,Pythonic!)。

讓人不禁想如果能在每個環節都多引入一點 Rust 不就飛天了,但為此拋棄成熟的 Python 生態系也太不切實際了,所以我也只是想想而已 🤪
但這次鐵人賽報名到挑戰開始的最後期限正巧一個多月,是一個不多不少剛剛好的時間,正好可以衝一下!
所以我緊急把本來想寫的題目加上 Rust,裸跑開賽,用一個腦熱 bootcamp 的方式記錄一下這一個多月以來從 0 開始學習的過程哈哈哈
https://ithelp.ithome.com.tw/upload/images/20230916/20141304j2ZrnNwELI.jpg

挑戰計畫

由於網路上資源較分散,所以這個系列文主要會參考 Duke 大學教授 Noah Gift 的 Small Rust Tutorial For MLOps、Brown 大學版本的 The Rust Programming Language (大致同樣的內容有中文翻譯版,主要差別在第 4 章關於所有權的說明) 以及許多 Youtube 影片。

系列文大綱

大致上的結構會分為四個部分:

1. From Python to Rust

以所有軟體專案都會經歷的工作流程來說明如何優雅地從 Python 轉換到 Rust
基本上就是說服大家為什麼要學 Rust 🤣

2. Project!

完成一個利用 Huggingface LLM 模型的 chatbot 專案

3. Keep on Rusting

喘口氣,聊聊 Rust 的學習資源與如何與 Rust 最勸退人的 Borrow checker 相處

4. Rust + MLOps

回到 MLOps 的主題,以 ML 系統設計的角度談談 Rust 如何在這裡發揮
這部分會參考 Chip Huyen 的著作 Designing Machine Learning Systems 以兩至三天為一組的架構來介紹以 ML 系統設計的角度如何看待 ML 系統的三個面向 — 資料、模型、產品,以及 Rust 可以如何被應用在 MLOps 中。

這個月過後你將得到:

  • 了解 Rust + MLOps 有沒有搞頭?
  • 一個完整的 Project 實作
  • 30 張可愛的 Ferris
  • 巨量對理解可能有幫助的梗圖
    https://ithelp.ithome.com.tw/upload/images/20230916/2014130435Xnwd7kyH.png

🚨事前聲明

因為 MLOps 有非常多面向,講概念太過發散,講工具又太不泛用,所以這次挑戰聚焦於以 Rust 來實作機器學習的應用專案,旨在引導熟悉 Python 的孩子進入 Rust 的世界。
總的來說,這並不是一個 Rust 語言教學,但會提供足夠的說明以讀懂程式碼,另外這個系列文對於 MLOps 的方法論上著墨會比較少,有興趣的孩子可以參考之前的系列文章 然後模型就死在 Jupyter Notebook 了 (ಥ﹏ಥ) 系列

坦白說,Rust 目前在資料科學領域的工作機會比較少,在忙碌的工作之餘還要學習或許會顯得沒什麼動力,但透過學習 Rust 可以補足許多關於 System programming 的底層知識,在成為更好的自己的同時,也能拓展職涯的可能性:
https://ithelp.ithome.com.tw/upload/images/20231004/20141304IFaXtlflLh.png
Machine Learning Operations (MLOps): Overview, Definition, and Architecture

另外,正如 Rust 的官方標語所強調的:

A language empowering everyone to build reliable and efficient software.

我想 MLOps 的目標都是使產品更好,而 Rust 賦權 (empowerment) 的精神讓我們無論現在寫的是何種程式碼,都能因為 Rust 被賦予更多能力,寫出更穩健且高效的產品。

所以給它一個機會吧~ 最後不免俗的來一張熊俠貼圖
/images/emoticon/emoticon12.gif

明天見!


下一篇
[Day 02] - 從 Python 🐍 到 Rust 🦀|超級概覽,那 Mojo🔥呢?
系列文
Rust 加 MLOps,你說有沒有搞頭?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
彼得叩叩
iT邦新手 5 級 ‧ 2023-09-16 17:11:57

so cool!!

chihying iT邦新手 4 級 ‧ 2023-09-17 09:05:35 檢舉

Thanks/images/emoticon/emoticon12.gif

我要留言

立即登入留言