0050 放空記

睡不著來更新過年期間另一件搞笑的事. 年後上班第一天, 電視說台股補跌. 我出門前特別看了眼 APP, 確認我的 0050 的確跌了不少. 大盤和 0050 兩者當然是連動的, 只是電視頂多報台積電股價, 不會講到0050. 所以我早上真的還有看到股票的身影. 然後我想說如果一路跌下去的話, 中午就來撿便宜. 先去上班吧.

結果開工日也是頗忙, 中午吃完午餐都快一點了. 這時猛然想起要確認股價竟跌到那裡?興沖沖地打開 APP 一看! 诶? 我的股票呢? 怎麼連一股都沒有了! 庫存為 0 !! 難道是我早上不小心按到賣出嗎?還是被手機被駭客入侵啦?但就算被盜賣了也是要先有個成交回報, 然後才能轉帳給駭客啊? 怎麼看來看去都像是憑空消失呢? 害我傻住了一會兒.

忽然我又靈光一閃 – 其實是窮舉法搜尋完了. 難道是那好幾年都無人問津的股票借券, 終於被借去放空了? 我指尖微抖地在 APP 裡面亂點, 不確定完整的 flow 的是什麼的情況下, 最後在 “雙向借券" 裡面 “借出" 的那一頁, 看到 “賀成交" ! 這讓我鬆了一口氣, 至少知道它們的下落了.

當初會想要借券, 都是受到華倫大的影響. 他總是在臉書曬他的借券收入. 一年能多賺個好幾萬塊. 我想說輸人不輸陣, 我也有股票可以出借啊! 所以我多年前就設定了 3% 利息, 等勇者上鉤 (這是一個 “夢幻西餐廳" 幫菜色定價的概念 [1]). 不料華倫大的股票很多人借, 我的股票就是沒人要. 我只好試試 2% 幾天, 再試試 1% 幾天, 最後賤價 0.3% 都借不出去. 然後我就忘記了….

本圖取材自華倫存股臉書. (facebook.com/teacherwarrenc)

結果就在那個 DeepSeek moment, 很多 0050 成分股都可以用 1% 出借的那一天, 我的 0050 也被借去放空了! 我自己是死忠看多大盤的, 甚至 buy and hold, 當然不可能去放空! 更別說空大盤! 但要是高手技癢想放空, 歡迎多加利用, 大家各取所需, 只是我下次會把利率訂高一點.

畢竟, 認識的跟我借錢的人常常會忘記還、或是懶得還. 還是借給不認識的人比較不會傷感情. 只是這為數不少的 $$$, 雖然有證券公司作莊, 不至於被賴帳. 但我看著庫存空空如也, 也是有點落寞. 打開 APP 又不能幹嘛. 喔, 對了, 前幾天可以參加印能科技和威剛的抽籤啦!

股票借出後, 名字就會登記給別人. 往後股價漲跌、股東會 (紀念品)、配息什麼的就都不甘我的事了. 至於重要的股息, 會由券商把轉給我; 其中二代健保補充費、股利所得都是扣對方的. 我覺得這個對我節稅也有利. 此外, 我還可以隨時召回 – 只是要提早一個月申請.

適逢元大要將 0050 分割, 營業員問我要不要召回以參加投票 [2]. 其實我沒太大意願投票, 畢竟幾張股票又影響不了大局. 但我的確有點想念它們, 所以請營業員順便幫我召回. 於是乎, 這次 0050 放空記, 就以小賺 “收驚費" 告一段落.

哇! 關機前看到歷史的一刻. QQQ 540.71, SPY 613.1, 我商務艙的錢有人付了….

[REF]

  1. 【心得】Bistro 夢幻西餐廳:決戰全台灣。五星通關★夢幻菜單
  2. 0050分割議案 4月2日至4月21日進行電子、郵寄投票

資產配置小檢討

今天整理記事本, 翻出了幾十年前的數據. 包括我第一個完整的工作年 (1990) 的收入是 348,727 元. 2020 年的 “生涯" 理財目標赫然已經達成之類的 – 不過現在通膨這麼嚴重, 我已經不客氣地把目標又調高一倍了. 這些年投資獲利不錯, QQQ 10 年才成長 443.41%, 我拜薪水加成和運氣不錯之賜得以更上一層樓, 真是祖上積德. 現在對我比較重要的是資產配置, 兼顧成長和穩定的現金流.

剛剛搜到一個網站 [1] , 可以免費比較我近期擁有股票的含息報酬率 (它不支援的台股和日股).下面這張圖中可以看到: 藍綠色 QQQ (NASDAQ 100) 績效遙遙領先, 包括第二名紅色的 SPY (S&P500).

墊底的不意外就是不太會成長的 PFF (特別股) 和 SHEL (殼牌石油). 這兩個配息都超過 4%, 但殼牌股價變動劇烈, 甚至蝕本! 如果存股的目的都是領息, 存 PFF 會安心一點. 但殼牌也不會都不做事, 如果它某個投資做對了, 也會產生資本利得.

最值得檢討的反而是中間幾支, 要成長有配息, 要配息有成長, 我已經陸續在調整這部分.

以 VIG 來說, 它最大兩檔成份股是 Microsoft 和 Apple, 也持有很多消費性類股. 由於它的選股策略就是穩定配息, 所以不像 QQQ 那樣容易暴漲暴跌. 可惜它的配息殖利率扣完稅只有 1.15% 左右. 如果不在意這 1.15% 的收入, 全部改為 QQQ, 最後的總回報將會比較好.

同理, NOBL 的成長比 VIG 差, 但配息稅後 1.46% 稍好. 如果要做明確的資產配置, 這個折衷的投資可能既吃不到 AI 大爆發, 配息又不夠支撐中產階級生活. 在過去低利的時代, 如果個性保守, 選 NOBL或是 VIG 都有道理. 但現在利率基期高, 科技又在爆發期, 我認為不是理想的選擇.

比較意外的是 KO (可口可樂). 它的稅後配息約 1.92% 勝過前兩者, 成長性正常地比 VIG 和 NOBL 都差, 看起來屬於雞肋性質. 但如果比較 20 年績效, 它還贏過 S&P 500 的 SPY [2]. 所以說老巴真的賺翻了! 當然, 如果比 1 年, 5 年, 10 年, 15 年, 那都是 SPY 贏沒有懸念.

然而, 拜川普總統說要大徵進口鋁鐵關稅之賜, KO 決定增加寶特瓶減少使用鋁罐 [3]. 寶特瓶當然成本更低些, 既然塑膠吸管都可以用了, 寶特瓶也不算是什麼汙染 (美國人心理上). 我要說的是 KO YTD 上漲 10.62%, 下圖可以看到 KO 曲線末端往上翹! 如果它突破歷史高點, 我就把它換掉.

我把自己當作一家公司來看. 總資產的 60% 放在指數型基金, 當大盤每年平均成長 8 ~ 10%, 這家公司每年就成長 4.8~6%. 另外 40% 的資產放在配息 4% 以上的固定收益投資, 故總資產的 16% 大致就是這家公司發給員工的薪水. 即使公司營收可能會暴起暴落, 但只要薪水還發得出來就沒問題! 不得已要裁員的話, 先裁女兒 – 妳趕快嫁人吧!

[REF]

  1. https://portfolioslab.com/tools/stock-comparison
  2. https://www.alphaspread.com/comparison/nyse/ko/vs/indx/gspc
  3. https://finance.technews.tw/2025/02/12/aluminum-tariffs-could-raise-soda-prices-coke-ceo-says/

債券到期收益率小程式

話說過年前的目標還包括撿便宜股票這部分, 果真大陸同胞藉著 DeepSeek 賜我一個低點, 這怎麼能不好好把握呢?

2025/1/27, Nvidia 大跌那天晚上, 老婆在旁邊慫恿我說: 子時算第二天, 要不要早點拜拜, 這樣明天早餐就可以吃拜完的年貨了. 我一面看著 QQQ 跌到 512, 一面拒絕她. “哪有人半夜拜拜, 又不是吃宵夜.". 稍微分心一下, QQQ 又漲回 514.

“再胡思亂想可能就要錯過行情啦~~~", 我原始的爬蟲腦提醒我. 於是我看著帳戶裡的數字. 用剛從澳洲玩回來的數學邏輯, 掐指一算, 這個乘 20 倍就是 OO 台幣. 好, 全梭了! 哈! 市價買進,瞬間成交!

But, 過年比較晚睡, 混了幾個小時, 我忽然覺醒了! 诶? 美金不是應該 x 32 嗎? 那不是 OO 是 OOO 啊! 就這樣, 我下了史上最多位數台幣的買單, 以後也不太可能再突破了.

市值型我應該算買好買滿了. 接下來要思考配息收入. 畢竟入 QQQ 這大門以後, 只有把 PFF 當作固定收益的來源. 它真的是最好的嗎? 年假也是一個可以研究的好時間. However, 現在配息股票, 債券 ETF 五花八門, 看得我眼花撩亂. 以前還可以靠網龍大富翁選個股, 現在要靠什麼呢?

在網路上逛了一下, 的確有 ETF 篩選器. 但它們的標的, 不是電子就是金融為主, 兩個我都不太喜歡. 債券方面, 網路上有免費的 YTM (Yield to Maturity) 計算機, 不過限制很多, 根本不實用. 難道這些人不知道現在軟體工程師最不值錢嗎? 我乾脆叫 AI “寫" 了一個. 附在後面. 包括 debug 也是叫 AI 自己反省! “為什麼算出來比標準答案低?" 它就會自己找出哪裡邏輯錯誤了, 哈!

其中, Clean YTM不包括前手息. Dirty YTM 包含前手息 – 要補償即時的債息給前一手賣家, 所以算出來會低一點. 到期日可以是 X.Y 年, 有的免費網頁上居然要求只能輸入整數, 那半年配不是還要動腦四捨五入才知道配息幾期? 這種事叫電腦做就好了啊!

程式寫好之後. …. 其實唯一的用途是: 證明證券公司寫的預期收益率是 clean TYM, 如果加計前手息, 即使兩者只差一點點, 但想要 4% 收益率, 實際只有 3.99% 會覺得不完美. ^^

[後記] 加碼用 Bolt [1] 做成網頁, 前後不到 3 分鐘.

https://aquamarine-peony-b9fe05.netlify.app/

[REF]

  1. https://dessign.net/bolt-new-ai/
  2. 原始檔
繼續閱讀「債券到期收益率小程式」

訓練模型需要多少計算量?

DeepSeek 問世後, 很多人討論它需要多少計算量? 我在此做個小整理.

基本上, 而一個 neural node 至少有 weighting 和 bias 要訓練. 而每層輸出共用一個 bias. 請 DeepSeek R1 想了 17 秒, 整理如下:

  • 對於 Dense layer, 參數 = Node 數 + 1.
  • 對於 convolution layer, 參數 = channel 數 * width * height + 1.
  • 對於 RNN layer, 參數 = (輸入維度 + hidden state 維度 h) * h + h.
  • 對於 LSTM, 參數=RNN * 4.
  • 對於 L 層 transformer, 參數 = L * (12h2 + 13h) * Vh ~= 12Lh2 , 其中 V 是 vocabulary size (詞表). [3]

如果是做研究, 可能要參考 [2] 的表 1.

不管是哪一種 weighting parameter, 只要可以被訓練, 我們就算它一個參數. 至於不能訓練的, 像是 ReLU, 這些都不會列入參數, 只會佔據 memory 和 CPU time.

接下來的問題是每個參數要被算幾次才完成 training. 如果去問 AI 的話, 有些回答真的很離譜, 像是 Gemini 算出來比別人大好幾個數量級; 有些 model 會說要除以 batch size. 實際上 batch size 只影響 gradient 的更新頻率. batch 愈多次應該要乘愈多次而不是除. 所以還是問人類比較可靠 [3], DeepSeek R1 也還行, 只是它想了 128 秒.

FLOP s≈ 6 × 參數數量 × 訓練總 token 總數.

例如 GPT-3 175B 參數, 訓練 300B token, 需要 3.15 * 1023 FLOPS. 和官方公布的 3.14* 1023 FLOPS 接近.

其中 6 來自 forward (矩陣, activation) 2 次計算和 backward (梯度, 參數更新) 的 4 次相加. 至於訓練總 token 數, 其實已經吸收了 batch size 參數. 這邊再找個證據.

根據 [2], 跳過各種英文或數學, 3.3 或 5.1. 裡面都引用了 C = 6NBS. 其中 C = training computing, B = batch size, S = number of parameter updates (訓練總 token 數), and N = non-embedding parameter count (參數數量).

什麼是 non-embedding parameter? 就是所有的 parameter 扣掉 token 和 position embedding . 包括:

  • Dense/Linear layers
  • Attention layers
  • Convolutional layers
  • Batch normalization layers
  • Any other trainable layers except embeddings

另外根據 Chinchilla 法則 [5], 訓練量應為參數的 20 倍. 所以 BS = 20N. 前面提到的 GPT-3 175B, 大約需要 3500 B token 的訓練才達到最佳效果. 它只訓練了 300B token, 理論上還有進步空間. 據說這是因為 GPT-3 發表於 2020 年, 而 Chinchilla 法則發表於 2022 年.

再回到風暴的起點, Deepseek 自稱是用 2.788K (pre-train 2664K) H800 GPU hours train 14.8 T tokens. 然而, 如果用上面的 6ND, 搭配 H800 Spec. 和論文中的數據 [7], MFU (Model FLOPS Utilization) 會超過 100%, 完全不合理.

MFU = 訓練需要的算力 / GPU 提供的算力 = (6 * 14.8T * 671B) / (2664 K Hours * 3600 second/Hours * 3026 TFLOPS) = 205%.

其中 MOE, MLA, MTP 可能有省到算力, 但就算把 MFU 壓到 100% 都解釋不通. 當然也可以說 DeepSeek 說謊 – 短報時數. 解決不了問題就解決人. 哈!

歸納起來, 此時不能用 6ND, 要參考 [8]. 用 “3 * 計算 Deepseek v3 的所有 forward 操作" 來代替 6ND. 如此就可以算出 MFU = 35~45% [6], 這樣起碼是落在合理範圍 (< 60%).

其實 [3] 和 [6] 都寫得很好, [6] 尤其完整. 不過我悶著頭寫了一大段才 reference 到他們, 只好改一改重點, 讓它們當配角了.

附帶一提. GPU 卡上的 RAM size, 決定了要用幾張卡才塞得下整個 model 的參數. Training 時要存 weighting, activation function, optimizer, gradient, 抓個 4 倍. Inference 時需要weighting, activation 和 bias. 抓 2.5 倍. 這是一般狀況, 非特別指DeepSeek.

[REF]

  1. GPT-3, The Model Simply Knows! – Analixa
  2. Scaling Laws for Neural Language Models
  3. AI大模型训练相关参数如何估算?有这一篇就够了
  4. https://zhuanlan.zhihu.com/p/606038646
  5. https://arxiv.org/pdf/2203.15556
  6. 【LLM 專欄】Deepseek v3 的訓練時間到底合不合理?淺談 LLM Training efficiency
  7. https://en.wikipedia.org/wiki/DeepSeek
  8. https://zhuanlan.zhihu.com/p/16445683081

DeepSeek 重點分解 – PTX和蒸餾

先前做了一些 DeepSeek 算法上的研讀, 不過其實它的亮點還有很多. 這邊補充一小一大兩個東西. 第一個是 PTX, 第二個是蒸餾.

先前在 “輝達之道" 那篇稍微提到 PTX (Parallel Thread Execution). 在還沒有 CUDA 之前, 輝達就可以使用 Cg, OpenGL 或是 PTX 寫程式. 根據幾篇報導 [1-2] 指出, 這次 DeepSeek 不使用 CUDA, 直接使用 PTX 所以榨出更多的效能.

效能問題只是一個角度, 就好像說我的 code 都是用組合語言寫的, 所以效能更好. 人家可能說你神經病. 但跳過 CUDA 確實不一樣. 很多人認為, 就算大陸做出一個新模型, 效能更好, 還是逃不開輝達的 CUDA, 所以輝達的護城河仍在!像是我相當佩服得美投君 [3] 的新片也是這樣想.

[3] 影片 8’37″

不過我更願意相信, DeepSeek 有意擺脫 CUDA, 而不只是單純為了提升效能. 首先 PTX 類似 Java, 是 just in time 的編譯器 (virtual ISA), 針對不同的硬體可以做二次移植. 其次是 AMD GPU 和華為的 NPU 都支援 DeepSeek [4]. 華為的 Huawei Ascend NPU [5] 是什麼概念呢? 它可以中國產商不買輝達 GPU, 美國掐不住它的脖子 [6-7].

其次談一下蒸餾 (distillation). 我們知道這是一個老師教學生的演算法, 大模型教小模型, 小模型甚至能青出於藍, 但計算量就省下來了! DeepSeek 是一個大模型, 就算 MOE 等方法可以讓它只激活部分參數, 那還是很巨大啊!

但讓世人震撼的另外一面是 DeepSeek R1! 現在如果問 DeepSeek 關於它自己的技術, 它會有點故意誤導, 不知道是不是政治干擾? 根據 HuggingFace 上的說明: “DeepSeek-R1-Zero & DeepSeek-R1 are trained based on DeepSeek-V3-Base." [8] 但 DeepSeek 自己倒是說 “R1 可能是 DeepSeek 的早期版本或基础版本", 連自己的身世都胡扯, 哈!

回到正題, R1 比 V3 更強大 [8], 它對標的是 OpenAI o1 – 1217. V3 是最右邊偏矮的那一個. AI 要做得好, 除了硬體和演算法, 就是要靠好的教材. V3 反映了演算法, R1 彰顯的就是好的教材.

R1 有兩個版本, DeepSeek R1 和 DeepSeek R1- Zero. 在官網講得有點不清楚, 我先引用曲博的影片 [9], 再補充名詞解釋.

R1-Zero = V3 + RL => 無盡的重複、可讀性差、語言混雜 => 有缺點.

R1 參考下圖.

[9] 17’19″

其中:

  • RL = large-scale reinforcement learning, SFT = supervisor fine tuning,
  • cold start = 通常是指參數是未訓練過、隨機的. 但 SFT 後再 cold start 有點怪怪的. 這部分還不理解.
  • GRPO (group relative Policy Optimization) = 群內相對評比. 也就是標準答案不從外面給, 而是自己比較哪個答案好? 例如寫兩段 code, 誰的效率高自己知道.

接下來就是蒸餾的部分, DeepSeek 推出了它當老師教小模型的版本. 其中交 Qwen2.5-32B 就已經很厲害, 教 Llama 70B 的部分, 在下表 [8] 的比試幾乎全勝! 只有 CodeForces rating 這項還輸 o1-mini 而已.

這表示什麼呢? 這說明就算你的系統還跑不了 V3 或是更優化的 R1, 只要用它去教小模型, 小模型也堪用. 像是它教出來的 Qwen 只有 1.5B, 好幾項測試都還贏 OpenAI 的 Claude 3.5 Sonnet, 這個還要花錢買耶 (我! QQ). Qwen 卻是 open source.

所以我感覺 DeepSeek 的發布不只是火力展示, 它的目的是要從算法、數據 (能教人是好老師) 兩方面展示不輸老美的優勢. 強強相爭, 以後 AI 會進步地更快吧! 只要不消滅人類都是好事!

[後記]

寫完之後, 發現老高也來評論了 [11]. 他講到一個值得補充的地方. ChatGPT 4o 對標 DeepSeek V3, 訴求全能. ChatGPT 01 對標 DeepSeek R1, 訴求推理過程 (chain of thought).

[REF]

  1. DeepSeek 绕开 CUDA 垄断,针对英伟达 PTX 进行优化实现最大性能,英伟达护城河还在吗
  2. https://technews.tw/2025/01/29/deepseek-bypass-cuda-and-using-ptx-for-better-optimization/
  3. https://www.youtube.com/watch?v=81cbmeXTQcg
  4. https://huggingface.co/deepseek-ai/DeepSeek-V3
  5. https://medium.com/huawei-developers/world-of-huawei-ascend-future-with-npus-5843c18993f3
  6. https://blog.csdn.net/qq_54958500/article/details/144064251
  7. https://udn.com/news/story/7333/8022387
  8. https://huggingface.co/deepseek-ai/DeepSeek-R1
  9. https://www.youtube.com/watch?v=spoPf8CjjBo
  10. https://www.bnext.com.tw/article/79507/claude-3.5-sonnet-best-ai?
  11. https://www.youtube.com/watch?v=uKBI1Ea8VO0