輔助寫程式的AI(下)
之前的文章數次提及AI製作程式,真的是因為這件事太重要了,我認為是第四次工業革命的關鍵核心技術,多講幾次並不為過。
首先,LLM彌補了人類使用的自然語言和電腦語言之間的落差,因此只要能將腦中的知識和想法用任何主流的自然語言,例如英文、中文,清楚表達出來,就能夠轉換成各類資訊系統所採用的各種電腦語言、文件格式,如此一來人們不必透過學習程式設計或是與程式設計師溝通,只要以慣用的語言就可以直接把知識和想法傳達給電腦,大大降低與電腦溝通的門檻。以精準醫療技術的研發為例,醫師和程式師之間的溝通往往有很多障礙,這是最難的部分。一方面程式師多半缺乏醫學專業知識,另一方面醫師難以將其專業技能與經驗轉換成演算法。我的研究團隊與醫師討論心血管斷層掃瞄影像的時候,有些模糊不清的地方,醫師會說:「這應該是XXX,因為YYY和ZZZ。」但聽完之後,我們還是不知道如何將醫師的推理(Reasoning)轉換成可具體操作的演算法,必須先搞清楚XXX、YYY、ZZZ這些較為高階抽象的醫學概念才行,但這要花費不少時間和心力。
試想,如果有一個具備相關醫學知識的LLM,能夠理解上述醫師的推理,將之轉換成演算法,不就太好了嗎?除了精準醫療之外,還有很多專業領域都有機會運用LLM來降低演算法開發的門檻,加速新技術的研發。我個人對精準醫療的研究較為感興趣,因為有機會造福自己和他人,算是一種「自求多福」的作為。
接下來,有了演算法之後,LLM可以產生程式,進一步提高效率和可靠度。

LLM常見的Transformer架構
要知道LLM雖然可以直接處理資訊,速度往往比人類快上許多倍,但其速度和效率仍然遠遠不如一般的程式。因為即便是小型的語言模型,運作的過程也會花費相當高的算力。目前大多數的語言模型採用的Transformer架構,如左圖所示,必須先將輸入的資訊轉換成內部的代碼(Token),經過很多層的神經網路的處理之後找出最適合的答案作為輸出。語言模型的層數越多、每層的神經網路越龐大,耗費的算力就越高。
舉例來說,我的Macbook Pro筆電,算是較高階的個人電腦,配備Apple M3 Max處理機和128GB記憶體,可以下載Llama3.3-70B的8位元版本的模型來跑,輸出的速度略高於5 tokens/sec,仍算是堪用,無需擔心隱私機敏資料外洩。
然而,這顆擁有16個CPU核心、40個GPU核心的M3 Max處理機,可是能夠在一秒鐘執行1.42 x 1013次32位元浮點數計算(14.2 TFLOPS),以及完成400GB的記憶體存取,相較之下,可知採用LLM做數據處理的效率極低,差了12個數量級!
所以如果想處理大量的數據的話,該如何是好?如上所述,請LLM將要做的處理工作(演算法)轉換為程式,再以程式來進行數據處理,就能進行高效率處理。其實,有些厲害的LLM已經會做這件事情了,讀者可以試試看。
另外,關於可靠度,LLM的運作相當複雜,不見得每次都產生同樣的結果,時常出現難以解釋的失誤,因此要牢靠的話,可能還是用程式去做比較好。
更進一步探究,在一些跟時間賽跑或者和對手競爭的場合,例如即時的預測、股票交易、發展更強大的AI,如何進行更快速的資訊處理呢?可否請LLM產生更快的平行計算程式碼、設計更高效率的晶片呢?當然有可能,只是在現階段仍然需要專家的智慧來教導LLM做這些事情,這也是我目前所致力的研究議題。
話說最後這類研發工作,原本會做的人就不多,尤其是涉及高效能計算(HPC)和複雜的系統軟硬體協同設計領域的,門檻相對較高,而且議題非常多,既可以用AI來協助,又比較不怕在短期內被AI取代。不過,想要成為專家並不容易,要有人領進門,也要不斷精進自己才行。