當初買 13900K CPU 的時候是號稱消費級的最高選擇, 從來很少機會可以操它到usage全滿; 開發指標我一直的主張是最好能自適應(adaptive), 而不是去最佳化找參數; 最近在AI的輔助下, 搞了不少 Python 的新鮮玩意兒, 趁這個機會用最佳化把這顆CPU操到滿百20分鐘左右, 也算不枉它狂暴的能力了
這是一套經過嚴格壓力測試、物理隔離、且參數最佳化的戰鬥機器:
CPU 核心:P-Cores @ 5.5GHz (All Core, E-Cores Disabled, HT Disabled) 。
Ring (快取):4.9GHz (穩定甜蜜點)。
電壓設定:Vcore 1.33V + VccSA 1.28V (兼顧效能與 4 DIMMs 穩定性)。
記憶體:DDR4-3200 64GB (4x16GB) @ 1.35V
軟體架構:
Excel/DDE 鎖定 Core 2, 3 。
eLeader/Python 鎖定 Core 4, 5 (物理中心,干擾最小) 。
XQ 報價 鎖定 Core 6, 7 。
---
參數最佳化引擎 opt.py 完工報告
我們已經成功建立並整合了高效能的參數掃描引擎 opt.py,並且對舊有的 bt.py 做了完全向後相容的無損重構。
特色與技術亮點
TIP
隨機採樣 (Random Search) 理論基礎 當參數可能組合逼近數十萬種時,隨機抽選 10,000 組就能有 95% 以上的機率抓到全域前 1% 的頂尖參數,是一種極具效率且主流的分析手法。
- 零延遲快取池 (Zero-latency RAM Cache):在多核心切換運算時,最耗時的就是「重新讀取 20 萬筆 CSV 並做 K 棒重採樣」。我們運用了
initializer機制,在每個 CPU 核心啟動的那一瞬間,就偷偷先把1m,2m,3m,5m的 K 棒完全載入常駐記憶體,這讓每次參數測試的讀檔前置時間趨近於 0。 - 免改寫注入技術 (Dependency Injection):我們稍微優化了
bt.py的參數介面,讓opt.py能藉由假造一個名為DynamicConfig的超輕量物件,直接覆蓋config.py中的參數並灌入bt.py中。這樣完全不用重寫幾百行的回測邏輯。 - 無縫多核心運算 (Multiprocessing):自動偵測作業系統的 CPU 總核心數,並切出
N - 1個核心建立運算池 (Pool),火力全開同時對 Numba C 引擎進行壓力測試。 - 輸出淨化 (Stdout Silence):我們精準地運用了
with open(os.devnull, 'w')攔截了bt.py底層的print輸出,防止多核心同時輸出把你的畫面洗掉,只留下非常乾淨漂亮的動態進度條。


0 comments :
張貼留言