賀!

今天是 2024/9/17, 也是龍年的中秋節. 平安是福, 此為首賀!

桃園地景節 – 憲光二村

再賀的是: 經過 2 年漫長的等待, 我比較滿意的其中一個專利, 終於在美國通過了. 其實這個專利有四胞胎. 台灣四個都過了. 美國也過了第一個, 這是好的開始.

猶憶我 2022 年有點囂張地記錄下 2 個月得到 3 個美國專利的戰績, 這兩年老天就讓我校正回歸. 足足乾旱了兩年. 才等到現在我的第 9 號! 希望它的兄弟姊妹都能夠登上影神圖.

最後一賀是: 自從黑悟空在黑風大王那裡卡住之後, 我就用上了 “悟空 多功能修改器" 鎖血看劇情. 剛剛也告一段落. 雖然沒有全收集. 不過 " 81 難" 好歹觀賞完 64 難. 可以收工了.

黑悟空真的比較難打. 我承認如果不作弊我絕對打不贏楊戩和大聖殘軀. 我自信能跟二郎神一博的技能是翹二郎腿。

每次天命人被打死都要拔頭上的一根毛去土地廟上香. 我在想,如果遊戲夠寫實的話. 天命人將會變成禿子. 跟一拳超人一樣 (變強了頭也禿了) !

這張比天真頂好看一點

BTW, 跟艾爾登法環 DLC 相比. 那邊我只有最後一隻拉塔恩打不過是靠毒死的. 其他多打兩下還 OK. 頂多就是把搖桿玩壞, 必須要買新的而已.

為黃金律法犧牲的 gamepad

雖然官方日前更新削弱拉塔恩的戰力, 但毒死也是一種實力. 我不想重打了. 何況光是下毒失敗都死了好多次.

隱身丟出腐敗壺之後, 用擬態樹枝假裝是石獅子.

用 Multi-LLM 解釋投資風險

Coursera 有一門新的課 [1], 由該公司老闆 Andrew 介紹 CrewAI 來講課. 主要是講多個 LLM 怎麼應用. 課程不長, 有 Lab, 沒證書. 看在老闆推薦的份上, 我也來蹭一下.

用最簡單的話來講, 它的技術就是叫每個 Agent 執行一個 task. 雖然大家平平都是 LLM, 但是指定了不同的角色, 每個 agent 就會各自專注在它的 task 上, 達到互相幫忙的結果. 當然每個 agent 的排列方式 (hierachy) 會影響他們共事的結果.

可不可 search 網路? 需不需要 human input, 可不可以非同步? 這些在 CrewAI 這家公司的 library 中都可以設定. 每個 agent 透過 memory 互相溝通, 因此即使不指定誰 (agent) 要傳訊息給誰 (other agents), 資料也可以共用.

有個 Lab 很好玩, 就是建立一個 crew 去分析買股票的風險. 它的架構是 Crew 叫 agent 做 task. Task 就只是明訂工作內容 (description) 和預期成果 (expect output), 然後註明給哪個 agent. Agent 要指定 role, goal, backstroy (工作指導), 標記可以用那些 tools? 標記可不可以餵資料給別人 (delegation), log 要多詳細 (verbose).

from crewai import Crew, Process
from langchain_openai import ChatOpenAI

# Define the crew with agents and tasks
financial_trading_crew = Crew(
    agents=[data_analyst_agent, 
            trading_strategy_agent, 
            execution_agent, 
            risk_management_agent],
    
    tasks=[data_analysis_task, 
           strategy_development_task, 
           execution_planning_task, 
           risk_assessment_task],
    
    manager_llm=ChatOpenAI(model="gpt-3.5-turbo", 
                           temperature=0.7),
    process=Process.hierarchical,
    verbose=True
)

Crew kickoff 之後, agent 就會去做事. 至於要做什麼? 寫在 input string 裡, 相當於一個 prompt. 舉例指定用 1000 元去買 Nvidia, 風險承受度中等, 應該如何操作? 在課程的例子中, 因為指定 process 是 hierachy. 所以叫第一個 agent 去做 data analysis, 它有 search 網路的 tool, 因此就會各個網站 search Nvidia 的新聞. 總結出 10 條. 交給下一棒 Trade agent.

Trade agent 的工作是要分析標的物的統計值, 它也有網路工具. 所以它也去找了一堆網站. 總結出 Nvidia 的評價.

Based on the information gathered from various analyst forecasts and recommendations, the average 12-month price target for NVDA is $130.68, with the highest target being $200.00 and the lowest at $90.00. The consensus rating for NVDA is “Strong Buy," supported by 38 buy ratings and 3 hold ratings. The stock has a current price of $135.58. The analysis suggests that there is a potential -3.61% downside from the current price based on the average price target. The historical performance of NVDA shows consistent outperformance relative to the industry.

接一下到了 execution agent. 它有甚麼大膽的創見嗎? 沒有. 即使它收到這麼明顯地看多訊息: Considering the historical performance and analyst forecasts, developing a trading strategy that aligns with the bullish sentiment towards NVDA could be a profitable approach, especially for day trading preferences.

它還是說我要上網查看看, 然後歸納出 5 點結論:

Execution Plan for NVDA:
1. Utilize historical performance data to identify key trends and patterns in NVDA’s stock price movements.
2. Implement a strategy that leverages the ‘Strong Buy’ recommendation and average 12-month price target of $130.68.
3. Monitor market trends and movements closely to capitalize on potential trading opportunities presented by NVDA’s growth potential.
4. Develop a risk management strategy that aligns with the user-defined risk tolerance (Medium) and trading preferences (Day Trading).
5. Regularly review and adjust the execution plan based on new market data and insights to optimize trading outcomes for NVDA.

接著回到 Crew. 它根據風險承受度為 Medium 這個條件, 再上網去跑一輪. 對每個網站的內容做一個小結論. 最後叫 risk management agent 彙總, 結果就是給安全牌 (因為風險承受度不高).

Overall, the risk analysis for NVDA’s trading strategies should focus on understanding the potential risks associated with each strategy, assessing the firm’s risk tolerance, and implementing appropriate safeguards to manage and mitigate risks effectively.

我認為畢竟 Crew 收到的指令就是風險承受度中等而已. 已經預設立場, 不用問 AI 也知道結果. 當我把風險承受度改為 Ultra High 重跑一次. 這次它的結論就變狠了! 建議了一些選擇權策略: Straddle Strategy、Iron Condor Strategy 、Long Call Butterfly Spread Strategy、LEAPS Contracts Strategy 等等.

這告訴我們兩件事.:

  1. CrewAI 使用 multi LLM 的功效很強大. 大家做完自己的事就交給同事 (co-worker), 各司其職. 可以用同一個 LLM 做出一群同事開會的效果!
  2. 你跟 AI 講我風險承受度低, AI 就叫你保守. 你說你不怕死, AI 就叫你玩選擇權. 這些不用問 AI, 應該是問施主你自己就好了.

[REF]

  1. https://www.coursera.org/learn/multi-ai-agent-systems-with-crewai/home/welcome

Amazon 聊天機器人實作導航

我在 Amazon [1] 看到一個聊天機器人的課, 只需要花 1.5 小時. 我想說這時間我行啊, 就跟著跑了一遍流程.

不過呢? 跟某些網課一樣, 它只帶你走流程. 做完之後覺得有點空虛. 所以決定再複習一次我在哪裡? 我是誰? 我做了什麼?

Step 1: 選定 LLM. 在 SageMaker 下找到課程指定的 model (Flan T5 XL), 設置 Inference 用的端點 (endpoint). 也就是下圖中間的部分.

Step 2: 賦予 LLM 網路搜尋的能力. Amazon 的套件叫做 Kendra, 也就是上圖下方偏左的綠色方塊. Kendra 可以從指定的 data source 找資料進來, 例如 shared point, one drive. 這樣就滿有實用性. 但課程建議選 Amazon S3.

Step 3: 賦予語音文字轉換的能力. 採用的套件是 Amazon Lex, 也就是上圖下方偏右的綠色方塊. 預設它的 Inten (意圖?) 會叫 Kendra 去 search. 等等! 那 LLM 在幹啥? 原來會把問題和 Kendra 打包去問 LLM. 官方課程說明如下:

  • Retrieve relevant information from your Kendra index.
  • Package that information along with the original question into a prompt.
  • Send the prompt to your LLM endpoint.
  • Return the LLM’s response to your Lex V2 bot.

到這一步, 網頁上已經可以有 build 和 test 的按鈕可以選. Build 完可以 test, 但回答一般問題的能力很差.

Step 4: 增加 RAG 能力. 在上圖上方的藍色區塊是 Amazon Cloud9 這個 IDE 環境. 我們在這裡編出 RAG 的 code. 它綁定:

  • Your AWS REGION
  • Your Account ID
  • Your Kendra index ID
  • Your Large Language Model endpoint name

然後把它們 build 出一個 docker image, 放到 repository. 不意外地, 它必須是 Amazon 家的 ECR (Elastic Contain Registry).

這一動需要一些時間, 可以休息一下.

這邊的架構採用常見的 RAG + LangChain [3]. 也就是上面架構圖下方的橘色 Lambda 字樣那個方塊. RAG 和 LangChain 是少數沒看見 Amazon logo 的地方.

Step 5: 做好的 Docker 放在哪裡跑呢? 當然要順便推銷一下 Amazon Lambda [2]. 它號稱不用佈署後台就可以執行, 而且有免費方案.

所以我們在 Lambda create function 並指定 image 的 URI 就是 Amazon ECR image repository 底下的 rag-kendra-llm-lex 這個 docker. 然後設定 IAM (Intent, Access Management) 的參數.

Step 6. 搞定後台之後, 接著要搞定前台. 首先在 Amazon 的 Lex, 做一些規定好 (=死) 的設定. 建立出一個名叫 WebAppBot 的機器人. 為了讓 Amazon 前台後台能夠相認, 不意外前台也有一個 ID, 例如: V5R1NOLHRM.

Step 7. 現在前台後台都有了. 還缺什麼呢? 缺一個雲端平台讓人找到 WebAppBot! 這時候 Amazon Cloudformation [4] 就出來了.

等等! 我剛剛以為 Lambda 不就搞定所有了? 可惜並不是. Lambda 處理的是雲端運算的資源. Cloudformation 處理的是 “Speed up cloud provisioning with infrastructure as cod". 也就是寫寫 code 就設定好雲端了. 兩者的功用的不同恰如章節名稱所示.

TASK 4.2: DEPLOY THE IMAGE AS A LAMBDA FUNCTION

Task 5: Deploy a web app with Cloudformation

Cloudformation 的資源叫做 stack, 所以我們 create stack, 取名叫 LexWebApp, 並且指定連到前述 WebAppBot (ID), 和 AccountID.

光是網頁設定還不夠. 此處要真正 build LexWebApp, 例如指定跑在 AMD 還是 X86 上等底層的 code. 這時用到 Amazon CodeBuild.

Step 8. 感覺應該都沒事了. 但課程說 webAPP 不應該連到 LexBot, 而是連到它的 alias. 這樣才能一面背景維護, 又維持服務在線. 所以重 build 連到 alias 的 lambda 了. 在 cloudformation 以 WebAppUrl 指到的 URL launch LexWebApp.

OK! 這就是我對這個課程的理解. 它用了置入性行銷的手法, 把自家的產品介紹了一輪. 我有學到新的東西嗎? 有, 我對 Amazon 賣的東西更理解了. 但是在技術上, 有點空虛就是了. 所以我又用了一天來回顧我花的 1.5 小時, 讓它更有意義一點!

[REF]

  1. https://explore.skillbuilder.aws/
  2. https://aws.amazon.com/tw/pm/lambda/
  3. RAG實作教學,LangChain + Llama2 |創造你的個人LLM
  4. https://aws.amazon.com/tw/cloudformation/

程式語言雜記

最近幾天在天竺國出差, 剛好有機會面試印度人. 我問到: 既然您的專長是 Android, 為何語言的專長是 C 和 C++, 沒有 Java 呢? 印度人說, 因為他做 Android 時已經升管理職, 所以沒有 coding Java 的機會.

話說一隻手指指向別人, 就有四隻指頭指向自己. 當初 Sun Micron 找工研院電通所合作發展 Java 下線時, 我也去受訓拿到一張 Java 講師證. 但後來沒機會用上, 日久愈來愈生疏, 最後也覺得還是藏拙比較不尷尬. 哈!

至於 C++, 我剛好有個網路課程只剩幾個小時沒上完. 正好就今天處理了. 畢竟從天竺轉機回台灣這兩天, 加起來睡不到十小時, 累到幾乎無法思考大事. 這麼難用的時間, 碰上簡單的課程和超簡單的最後一個作業, 真是天作之合. (Adjacency List 那個作業就難多了, 題意說明落落長, class 定義在哪裡要自己找出來).

這門課雖然用到一些 C++, 重點還是講資料結構. 例如: Dijkstra’s algorithm wasn’t able to find the shortest path if edge has negative weight. 翻譯成白話是: 假如我們的工作流程中有人扯後腿, 怎麼優化都會鬼打牆. 基本上這堂課還不錯.

當初會上 Coursera 是為了學 AI. 為了發揮最大投資效益, 我買了一年Plus 會員吃到飽來學習 Tensorflow, LLM, 和其他 AI 的訓練課程. 基本上能選的課, 我聽得差不多了, 甚至還產生了心得. 像是同樣的生成式 AI 課程, Google 版重視 AI 倫理, Amazon 版重視 AWS 生態系實作, IBM 版重視如何用在 project 管理, DeepLearning AI 重視知識完整性等等.

其中上過最硬的課算是 Scrimba 的 Learn Embeddings and Vector Databases (RAG 相關). 因為我 Java script 確實有點生鏽了, 跟不太上講師 trace code. 基本上, 各門各派用的語言都不同, 加強程式語言能力才能了解實作細節, 體會複雜度, 甚至是交程式作業 (現在電腦改程式作業好簡單). 這些能力不是 AI 可以替我們感同身受的, 也是最不會被 AI 取代的 – 至少我這麼認為.

IC 設計公司營收排名 2023

2023 年 IC 設計公司的營收也出來了. 很快整理一版. 初步可以看出衰退的公司還是比較多一點, 包括龍頭大 M 也衰退不少. 但是因為它遙遙領先, 所以對排名完全沒有影響.

但咱們螃蟹公司衰退 15% 就被站好站穩的聯詠打回老三了.

排名公司股號2023 (K NTD)成長率 (%)
1聯發科2454433,446,330 -21.02
2聯詠3034110,428,698  0.43
3瑞昱2379  95,179,276 -14.86
 群聯 [*]829943,039,805  -23.49
 新唐 [*]491935,348,149-15.58
4奇景光電HIMX28,896,008944M (est)
 旺宏 [*]2337 27,623,608 -36.48
5世芯-KY366126,973,261123.22
6創意344326,240,714  9.16
 擎亞 [*]809622,441,731-3.92
7慧榮SIMO19,278,000630M (est)
8瑞鼎359218,346,622-19.61
9矽創8016 16,722,891 -7.24
10天鈺496116,276,245 -17.30
11矽力641515,404,936-34.48
12譜瑞-KY496613,769,800-35.1
13達發科技652613,575,561  -27.72
14敦泰354513,568,371 4.78
15威盛238812,646,878 36.03
16義隆245812,058,515-7.46
17智原303511,965,574 -8.42
18晶豪科300611,884,121 -26.68
19致新80817,910,870 -6.05
20祥碩52696,401,26721.97
21聯陽3014  6,276,443 20.42
22原相3227 5,844,52111.84
23凌陽24015,535,421 -17.45
24茂達61385,416,250-15.13
25昇佳電子6732 4,542,81712.85
26愛普65314,215,894 -17.27
27神盾64623,848,59517
28宜特 [*]3289 3,811,7191.84
29信驊52743,130,395 -39.92
30力旺35293,050,325-5.17
31力智67193,037,375 -50.08
32立積49682,984,581 -12.96
33偉詮24362,885,560 -0.09
34富鼎82612,851,177 -27.10
35鈺創53512,661,968-43.18
36大中64352,656,692-11.58
37晶焱64112,637,708-6.17
38松翰5471 2,609,937 -22.19
39盛群62022,596,067-56.85
40創惟6104 2,515,564-22.45
41尼克森3317 2,464,539-5.7
42沛亨6291 2,168,271 53.04
43凌通49522,167,031 -31.63
44威鋒電子67562,035,103-31.13
45安國8054 1,990,21523.94
46聚積3527 1,856,324 -26.76
47晶宏31411,852,884-26.36
48杰力5299 1,733,182 -25.76
49點序6485  1,684,631 -12.33
50普誠6129 1,659,499-15
51凌陽創新52361,650,050 7.03
52M3166431,612,33718.54
53揚智30411,439,913-45.69
54系微6231 1,342,462 -4.56
55九齊6494 1,332,996-24.98
56倚強32191,157,209-22.04
57禾瑞亞35561,142,860-19.46
58通嘉35881,141,594-30.04
59研通6229 1,100,816 -31.41
60虹冠32571,073,890 98.05
61晶心科6533 1,057,818 13.52
62海德威32681,050,416 -14.67
63宏觀6568 996,020 -23.57
64亞信3169 887,618-33.54
65類比科3438 879,686 -15.09
66迅杰6243 875,342 22.62
67九暘8040717,970 -44.88
68驊訊6237 417,639-42.44
69笙泉3122371,284-27.33
70旺玖6233 360,522-17.75
71笙科5272 333,525 -34.51
72金麗科3228301,776-27.46
73鑫創3259  275,641 -31.54
74瑞築6198253,483 6,863.82
75聯傑3094 242,572-21.01
76佑華微8024239,116 -46.44
77矽統2363 187,184 2.73
78通泰5487161,094  -31.67
79凱鈺5468118,758 -25.69
80點晶3288 98,084-15.52
81世紀民生531484,787360.65
82合邦610348,144-37.78
83太欣5302 12,262 9.14