BentoML 小整理

趁著尾牙等摃龜的空檔,把這篇的草稿丟給AI 重寫。雖然變得有點 WIKI化,不過稍微調整順序, 潤飾文字後,感覺還是滿易懂的。

BentoML [1] 是一個開源的 ML 模型服務框架,名字源自日文「便當」,代表將所有組件打包在一起。相較於 Google Cloud 的 Kubeflow 解決方案 [2],BentoML 提供了不綁定特定雲服務的部署方式。

核心特點

  1. 模型管理
  • 統一打包(模型 + 依賴)
  • 版本控制
  • 自動追蹤環境配置
  1. 框架支援
  • 支援主流 ML 框架
    • PyTorch
    • TensorFlow
    • scikit-learn
    • XGBoost
  • 多框架共存部署
  1. 服務效能
  • 高性能 API 服務器
  • 批量推理支援
  • 自動負載均衡
  1. 部署便利性
  • Docker 容器自動生成
  • Kubernetes 整合支援

實作流程

1. 模型訓練與保存

# 訓練模型
from sklearn import svm, datasets
iris = datasets.load_iris()
clf = svm.SVC()
clf.fit(iris.data, iris.target)

# 保存模型
import bentoml
bentoml.sklearn.save_model("iris_clf", clf)

2. 模型管理

# 查看最新版本
bentoml models get iris_clf:latest

# 列出所有版本
bentoml models list

3. 預測方式

3.1 直接載入

loaded_model = bentoml.sklearn.load_model("iris_clf:latest")
result = loaded_model.predict([[5.9, 3.0, 5.1, 1.8]])

3.2 使用 Runner(推薦)

# 建立 Runner 實例
runner = bentoml.sklearn.get("iris_clf:latest").to_runner()
runner.init_local()
result = runner.predict.run([[5.9, 3.0, 5.1, 1.8]])

4. 服務部署

  1. 建立服務檔案 (service.py):
import numpy as np
import bentoml
from bentoml.io import NumpyNdarray

iris_clf_runner = bentoml.sklearn.get("iris_clf:latest").to_runner()
svc = bentoml.Service("iris_classifier", runners=[iris_clf_runner])

@svc.api(input=NumpyNdarray(), output=NumpyNdarray())
def classify(input_series: np.ndarray) -> np.ndarray:
    return iris_clf_runner.predict.run(input_series)
  1. 定義部署配置 (bentofile.yaml):
service: "service.py:svc"
labels:
  owner: bentoml-team
  project: gallery
include:
- "*.py"
python:
  packages:
    - scikit-learn
    - pandas

5. 本地測試服務

bentoml serve service.py:svc --reload
  1. Web UI: 訪問 http://127.0.0.1:3000 或者
  2. API 調用:
$headers = @{"Content-Type" = "application/json"}
$data = "[[5.9, 3, 5.1, 1.8]]"
Invoke-WebRequest -Uri "http://127.0.0.1:3000/classify" -Method POST -Headers $headers -Body $data

6. 容器化部署

# 建立 Bento
bentoml build

# 容器化
bentoml containerize iris_classifier:latest

# 運行容器
docker run -p 3000:3000 iris_classifier:<tag>

7. 注意事項

  • Docker 安裝需要提前準備,過程可能較長且需要重啟.
  • 本地測試時需要注意防火牆設置.
  • Runner 模式提供更好的資源管理和效能優化.

[REF]

  1. https://github.com/nogibjj/mlops-template
  2. Google 的 flow

IC 設計公司營收排名 2024

去年的統計更新了. 幾個重點整理如下:

  1. 聯發科持續成長, 大者恆大.
  2. 瑞昱又再次超車聯詠, 螃蟹公司證明它上次搶到第二名不是偶然.
  3. 老牌公司信驊, 矽統, 世紀民生繳出倍數的成長. 世紀民生成長高達 659.47%.
  4. 業績成長或衰退雙位數的比個位數的還多. 表示競爭激勵, 不進則退.
  5. 因為幣別的關係, 譜瑞-KY 去年就放錯位置, 深感抱歉! 現在往前追溯修正.
  6. 美金最近還在漲, 以下官方如果沒有特別引用匯率, 我就用 32.5:1 來計算.
排名公司股號2024 (K NTD)成長率 (%)
1聯發科2454530,585,88622.41
2瑞昱2379113,393,69819.14
3聯詠3034102,787,751-6.92
群聯 [*]829958,935,51322.2
4世芯-KY366151,976,78265.45
5奇景光電HIMX40,300,00042.43
新唐 [*]491931,923,290-9.69
擎亞 [*]809628,157,01625.47
6慧榮SIMO26,325,0000.2748
旺宏 [*]233725,883,475-6.3
7創意344325,044,192 -4.56
8瑞鼎359224,376,80232.87
9天鈺496119,224,74618.12
10達發科技652619,122,10440.86
11矽力-KY641518,450,37519.6
12矽創801617,826,5056.6
13譜瑞496616,246,76617.99
14威盛238815,910,68625.81
15敦泰354514,538,9877.15
16晶豪科300613,485,16813.47
17義隆245812,695,8625.29
18智原303511,064,852-7.53
19原相32278,362,27343.08
20致新80818,252,6644.32
21祥碩52698,081,07126.24
22聯陽30146,632,5785.67
23信驊52746,459,666106.35
24凌陽24016,434,08624.01
25茂達61386,089,50412.43
26昇佳電子67324,940,6838.76
27神盾64624,790,32824.47
28愛普65314,176,356-0.94
29宜特 [*]32894,345,52614
30力智67193,697,96321.75
31立積49683,679,34823.28
32力旺35293,605,96818.22
33鈺創53513,473,21730.48
34創惟61043,178,69026.36
35偉詮24363,094,6197.25
36富鼎82612,918,3812.36
37大中64352,716,0852.24
38晶焱64112,744,6844.06
39松翰54712,744,4665.15
40盛群62022,501,630-3.64
41尼克森33.172,468,2610.15
42凌通49522,461,89513.61
43安國80542,192,58810.17
44沛亨62911,824,248-26.39
45凌陽創新52361,817,92710.17
46研通62291,796,99663.24
47聚積35271,792,664-3.43
48威鋒電子67561,700,310-16.45
49杰力52991,691,956-2.38
50揚智30411,628,22413.08
51系微62311,614,58820.27
52晶宏31411,507,390-18.65
53M3166431,480,903-8.15
54通嘉35881,453,90627.36
55晶心科65331,381,50730.6
56九齊64941,345,3000.92
57點序64851,261,971-25.09
58普誠6129 1,150,966-30.64
59倚強32191,137,860-1.67
60宏觀65681,065,4916.97
61海德威3268972,915-7.38
62類比科3438963,3709.51
63禾瑞亞3556955,594-16.39
64亞信3169852,618-3.94
65虹冠3257816,028-24.01
66矽統2363 738,560294.56
67迅杰6243716,549-18.14
68九暘8040644,041-10.3
69世紀民生5314643,931659.47
70驊訊6237448,7417.45
71金麗科3228424,69640.73
72旺玖6233417,22515.73
73笙泉3122364,666-1.78
74笙科5272 331,795-0.52
75鑫創3259239,109-13.25
76佑華微8024224,068-6.29
77通泰5487194,27720.6
78聯傑3094165,860-31.62
79凱鈺5468120,5681.52
80點晶328881,779-16.62
81合邦610354,87513.98
82太欣530213,91213.46

2024 年重點回顧

雖然這件事應該是昨天以前要做的, 即使我遲交了, 還是值得做個結語.

  1. 年初學了如何用 Python 處理 Excel 表格, 這個工作上用來統計 task weighting 很方便.
  2. 考慮未來是 AI 的時代, 整年到處上課和看展, 最辛苦的是拿到一張 TensorFlow Developer 證書. 畢竟老人只能說一嘴好 AI 的話, 那就沒有啥說服力。
  3. 考慮到數據中心很重要, 我想知道它跟 AI 是什麼關係?於是做了點研究, 還拿了一張 Google Cloud 的Machine Leaning Engineer 證書.

4. 至於最花錢的課莫過於這個. 在 Amazon Skill builder 一個月花了 905.21 美金. 其實只跑了兩個 model. 因為菜鳥不懂得用完要下線, 下一個月又白白被多 charge 一次. 真是花錢如流水~~~

5. 年中老闆說部門缺專利, 我一口氣申請了 7 個. 本來想湊十個, 不過部門目標已經達成了。考慮到邊際效益遞減,我還是把腦力保留到 2025, 不需要做無效的攻擊. 整年共獲得 10 個專利, 台灣新增 6 個, 美國 2 個, 大陸 2 個. 當然這些是前幾年申請的.

6. 出差去印度, 解鎖了一個我旅行清單中偏難的項目。可惜出差行程不可能看到什麼大景, 就是到此一遊。主要亮點還是和家人去了日本和土耳其. 家庭旅遊的部份 pilot run了 “帶家人坐商務艙到處去旅行" 的願望. 重點是這年可以完全丟下小孩, 因為她自己跑去澳洲打工度假了.

2024 年都在學技術, 沒讀到幾本書. 本來說要學英日文都沒進展, 說要減重還胖了!? 這、這是冬天的關係吧! I hope so. 總之, 2024 學了一些新知識. 2025 年希望學更多知識, 也希望跟工作做更多結合.

去年年底網路上很多人 po 文說 2025 =452, 所以這是很特別的一年. 同學還找了更多組合, 像是 (1+2+3+4+5+6+7+8+9)2 = 2025 之類. 其實根本就同一件事. 既然如此, 那今年就是海綿寶寶年了! 讓我們用海綿寶寶考駕照的精神迎接一整年的挑戰吧! 诶? 不對! 他好像一直沒考上耶!? 忘掉駕照, 我們學習他的樂觀就好了. 加油!

2024 年終投資回顧

2024 年拜 AI 科技浪潮之賜, 投資又再度創新高了. 今年的大盤強勁, 台灣和美國市場都是. 我也沾光搭上順風車. 雖然比不上眼光精準的單壓高手, All in 台積電什麼的可以漲八成, 至少算是穩定發展.

別人的績效台積電
(不含息)
台股漲幅 (不含息)台灣 50 報酬指數 [1]S&P 500 [2]NasDaq 100 [3]
全年漲幅81.28%28.85%48.96%23.84%24.88%

我自己有兩個版本的投資統計, 第一個計算方式是從 2004 年開始, 從第一簍螃蟹開始, 不靠薪水加持, 只是讓投資和股息再投資自己長大. 因為基期比較低, 所以增幅比較好看, 但總數比較小.

第二個計算方式是把每年上班存下來的薪水都投進去滾雪球, 我想大部分的人都是這樣算的. 甚至我猜網紅老師們也會把開課賣書的錢再投入當作績效, 這樣總數會比較大, 但年增率會比較少.

我的 2024 績效一簍螃蟹版薪資投入版
全年漲幅38.14%25.16%

我自己的投資組合偏美股, 0050 還占不到 10%, 所以績效也比較像美股. 何況買進指數型 ETF 不需要燒腦, 就算雪球滾得比別人慢, 但是一路直下, 從來不用擔心撞到大石頭後砸個粉碎, 頂多就是路上遇到幾個小土坡小水漥之類的.

我之所以要記錄兩個版本的理財績效也是同樣的道理. 大家都知道新竹工程師薪水比較高, 但理財數據如果都加計薪資收入, 最後就很難分辦到底績效是來自投資正確? 還是純粹老闆給得多? 假設我年底結算獲利 30%, 但其中 40 % 來自薪水, 投資其實倒虧 10% , 那不就搞笑了.

抱持著這樣的想法記錄了 20 年, 結果發現了另外一種趣味. 38.14/25.16 ~= 1.52. 雖然兩邊分子分母都不一樣, 但是分子接近. 它反映出我上這 20 年的班 (2024~2004), 合計貢獻了我的總資產的 1/3 左右 (1.5 ~= 3/2). 2/3 還是紮實地來自第一簍螃蟹的滾雪球效應.

0050 的報酬指數 [1] 在 2004/1/2 是 4,796.17, 2024/12/13 是 43,273.81, 一共成長 9.02 倍. 我的績效稍好一點落在 10.5 倍. 所以這 20 年不靠薪水, 也可以累積 10.5 簍螃蟹的資產. 對於大部分的人來說, 如果能乘著時光機回到 20 年前, 跟自己保證未來能安心財富增長到 9 倍, 我想人生的選擇可能會有點不一樣吧! BTW, 能穿越回到 20 年前, 最想告訴自己的應該不是這件事啦!

這也證明只要時間夠長, 投資對地方, 其實退休金不應該是大問題. 第一桶金夠多的, 可以早點退休, 第一桶金少的把 20 年拉長到 30~40 年一樣可以累積足夠資產. 既然 20 年時間都可以無腦 9 倍以上. 40 年有 2 個 20 年, 沒有翻個幾十倍說不過去. 假設有個好工作, 還可以再錦上添花多出 1/2 (佔 1/3). 我統計的這段時間還是包括金融海嘯和 covid-19, 未來 20 年中頂多再慘一些些吧, 這個理論應該沒錯!

或曰, 道理我都懂, 我就是沒錢投資啊!? 那就是另外一個故事了. 正所謂新把戲變不出老狗, 一定要先把小狗養大才有機會變老. 吃土鋁繩巴逆逆講得很好. 專注本業, 有第一桶金之後才能開始滾動雪球. 如此持續操作二十年就可成功. 下方業配省略, 請自行追蹤鋁繩了解.

抒發完感言, 來講今年的缺失. 反正人非聖賢, 要接受自己做不好才會有進步. 然後講一下 2025 年的規劃.

[失誤區]

  • 首先是 Q3 的大跌後, 我從不怎麼跌的 SGOV 和 BERK.B 挪出資金來買 QQQ 和 PFF. 逢低買進是做對了, 但我覺得跌得不夠, 所以幾乎沒砸多少錢. 剩下的只好改成定期定額慢慢買, 這點小小可惜. 當初全部 all in 才有換股操作的意義.

  • Q3 的震盪中, 我只懷抱安心持有的情懷, 完全沒關注 KO 和 SHEL 竟然創高之後一路下跌. 說實在的, 如果不是要寫回顧, 我都沒發現它們跌超過 15% 了. 幸好我在疫情間買得很便宜, 這兩檔的 ROI 還是極好的雙位數百分比, 但若能牢記他們是景氣循環股, 我還有機會賣掉他們換錢, 所以今年他們創 52 週新高就賣!

KO 從年中最高點跌 15.33%, SHEL 從年中最高點跌 16.02%.

[小確幸]

  • 每次美國公布利率政策, 都會造成暴漲暴跌. 特別是暴跌後都會很快漲回來. 如果是從台灣複委託賣股票, 因為資金交割的關係, 其實無法立刻下單買進. 但錢放在美國券商的不同了. 看到 QQQ 暴跌, 可以馬上賣 SGOV, 買 QQQ, 即使我們睡了一覺起來美國已經休市了, 還是可以用盤後賣 + 第二天盤前買接力完成換股操作的交易.
  • 比特幣賣掉後投入股市. 雖然錢不多, 但也是一筆業外收入.

[新計畫]

  • 原則上 buy and hold. 但兩檔景氣循環股 KO 和 SHEL 若創新高, 我會慎重考慮把它賣掉.
  • 先前有一些美金是用 3.95% 的固定利率定存的, 現在美金定存一年的利率只有 2.6%. 所以美金定存到期都不續約, 準備買配息的優先股或是債券.

最後附上持股比例圓餅圖, 成分股跟 Q3 都一樣. 只是有股息再投入和定期定額稍微改變了比例.

主要賺錢還是靠 QQQ, 貢獻 50 % 的成長, 台股 0050 持股少漲幅大, 貢獻 23%, SPY 貢獻 13%, VIG 6%. 然後殼牌股價 Y2Y 跌 4.8%, 因為佔我的市場權重 10%, 雖然有配息還是虧, 合計貢獻年度收益 -0.25%, 成為 2024 年唯一的老鼠屎.

[REF]

[1] https://www.twse.com.tw/zh/indices/ftse/tai50i.html

[2] https://www.macrotrends.net/2526/sp-500-historical-annual-returns

[3] https://www.slickcharts.com/nasdaq100/returns

比特幣出金記

話說很多年前, 我就趕時髦挖比特幣. 後來聽說挖礦的成本 (電費)高於比特幣的價值, 所以就停挖了. 又過了幾年, 聽說雖然比特幣挖不動, 但挖以太幣換比特幣還有賺頭, 所以我又挖了第二次!

當然除了買貴鬆鬆的顯卡, 老婆抱怨經過我房間門口都特別熱 (電費換成喜歡的形式) 之外, 整個電腦都變得不穩. 不但遊戲玩不成, 部落格後台也頻頻當機, 最後只得停工.

最近看到比特幣漲了不少. 於是又開啟 RTX 4090 挖了一下下. 結果本來很穩的電腦, 那個不便宜的 ECC DDR 就這樣燒壞了. 於是我退出江湖, 設法將比特幣出金. 雖然這幾天真的很冷, 挖礦等於開暖氣還賺錢, 還滿懷念的, 哈!

川普當選好像對比特幣有益, 這東西長期應該也是看漲. 不過我只求賺回買顯卡的錢就好了, 所以我算是一面倒地 (又龜速地) 站在賣方. 不幸地, 今年年初起手式就錯了, 我傻傻地從礦場轉帳到自己冷錢包, 這一個動作就被扣了些手續費 0.0001 BTC.

接下來我以為可以找個人交易了, 卻發現場外交易沒那麼簡單. 接著我就做了第二件蠢事, 我把冷錢包的錢轉到幣安, 想說幣安這麼大, 應該很容易賣掉吧! 結果幣安要換美金、甚至換日幣都比較容易, 要找個台幣的賣家根本困難重重. 只好再研究一下那裡好賣? Google 後我找到 Max 交易所.

Max 的認證有點嚴, 我的審查資格搞了好幾天, 比特幣都漲起來了. But, 從幣安轉到 Max, 我又被收一次手續費 0.0000071 BTC. 在心疼手續費之餘, Max 一通過我的身分驗證, 我就市價怒賣比特幣!

成交本身滿快的, 分成兩單被人接走. 然而我想把台幣再轉帳到我的帳戶, 又再被扣了 15 元 NTD 手續費. 在幣安設定帳號時, 它會轉進 1 元新台幣驗證帳戶可用性, 所以算起來我少虧一元. 合計搬家四次後, 手續費總共是 0.0001071 BTC (約 340 新台幣) 和 14 塊新台幣, 合計高達 354 元左右! 股市跌 354 萬都還會漲回來, 這手續費可是一去不回. 總之, 今年總算入袋為安了.

另外, 促使我加速出場的一則新聞是 Google 量子電腦 Willow 的進展. 這個新聞確實讓比特幣跌了一下下 [1]. 其實研究團隊最大的進展在於找到糾錯量子位元 (Error-corrected qubits) 的 pattern, 讓位元數增加時, 糾錯能力可以隨之上升, 把錯誤率壓下來. 因此開啟了更多量子位元的可能.

這讓我好奇究竟量子電腦能否顛覆虛擬貨幣? 稍微研究後發現其實是可以的, 但目前量子電腦都要針對特定用途 (算法) 做設計, 把演算法轉換成疊加態, 才能達到快速計算. 它還不像是個人電腦那樣能夠泛用, 打幾個字就可以寫程式. 所以投資人要評估把剩下的比特幣全部挖完能賺多少, 才知道值不值得為它設計個量子挖礦機? 還是花同樣的力氣去攻略別的標的更划算?

換個角度想, 要是一秒鐘能挖完所有的虛擬貨幣, 那比特幣存在的價值 (公信力) 會剩多少就還不好說? 假設比特幣因此被認為沒有價值, 駭客還不如去破解更保值的東西. 所以這不是送分題. 如果是委內瑞拉要拚一次性挖完比特幣那就還算合理, 因為這本來就是它的法幣 [3], 它說有價值就有價值了, 還不怕別人跟它哄抬挖礦成本.

[REF]

  1. Google Willow量子晶片!即將邁入量子電腦時代!?Google解決什麼關鍵性的問題?
  2. 未來趨勢!一次了解量子電腦將如何掀起運算革命!量子科技原理全解析!
  3. https://0xzx.com/zh-tw/2024090603314843272.html