2024年12月24日 星期二
[閒聊 ] ChatGPT
非長久的一段時間沒更新了,趁現在大致上事情應該忙得差不多的時候,聊聊最近在忙的東西。
前陣子一直在忙關於 Thermal Interface Material Reliability Test 的相關的一些測試,包含測試工具,設定,測試的流程,測試腳本和資料的此裡,諸如此類的東西,繁而都沒在做設計的工作。從剛開始的測試軟體,已經測了大概有兩到三個月的時間吧? 結果客人那邊換了人接手後又推翻了,也就是這兩三個月算是做白工。接下來就是更換測試軟體,定義整個測試流程,如何儲存資料,架設祭器,到正式上線測試。我想這整個部分,留待下次再介紹。這次先聊一下 ChatGPT。
由於小弟我口袋空空,所以只能用免費版的 ChatGPT。再剛開始用 ChatGPT 的時候,只會跟 ChatGPT 聊天打屁,問問習近平是不是獨裁者之類的,不過,這一類的話題,不僅 ChatGPT 不會回答,甚至其他聊天機器人也不會回答,看來習近平的勢力還是無遠弗屆的。離題了....後來聽說,ChatGPT 可以幫忙寫程式,我就找 ChatGPT 幫我寫程式了,尤其是詢問一些 Linux 的指令,對 ChatGPT 一點難度都沒有。恰巧,TIM Reliability Test 測試數據需要處理(實際上好像另外有人會處理,我只需要上傳測試數據就可以了?),索性就叫 ChatGPT 幫我搞個 Linux 腳本。
在此,先說明一下測試數據這一部分,後面便不再說明了。由於測試會持續非長久的時間,當初預計是測試三個月,現在已經延長到五個月了。而客人那邊怕機器有問題,或者說儲存裝置有問題而使得資料遺失,所以,每測試 2000 個 Cycle 後,就要另外存成一個檔案,當然還有另外一個原因是,原本儲存的數據是用 redfish 把所有資料不管三七二十一全部儲存下來,所以資料量非常龐大,沒測試多久,就把儲存空間塞滿,所以採用了分檔的方式去儲存測試結果。雖然,後來不用 redfish 來儲存結果,但分檔的方式仍舊保留。所以,一個完整的測試結果,就是把分檔的資料把他合併起來。
在測試最前期的時候,由於檔案不多,所以在 Linux 下還,合併檔案還算蠻快的。後來,隨著資料愈來愈龐大,不知道是我的方法錯誤,還是 Linux 下確實不適合? 總之,用 Linux script 來處理,需要花費非常多的時間處理數據,而且,我有二十台的機器要處理。所以,我決定換工具了。
後來,選的工具是 MATLAB。對我來說,Linux script 和 MATLAB 最大的差異是,我多少還受過一點 Linux script 的汙染,而 MATLAB 我則純潔得像白紙一樣 - 一竅不通。所以,只能完全求助 ChatGPT 的協助了。意想不到的是,寫 MATLAB 的腳本對 ChatGPT 也不是件難事。反正 MATLAB 計算能力應該比 Linux script 強上許多,所以,又增加了一些功能,例如,每個 Test Cycle 的 CPU 溫度的最大最小值,每個 CPU HSK Thermal Impedance 的平均值,在 MATLAB 都可以完成,並且這工具也 MATLAB 腳本也用了好長一段時間,都沒什麼問題。直到....最近....
目前,已經測試快四個月了,所以數據的資料量更為龐大,從一台機器的所有數,先從合併檔案,去除無用的數據,時間戳重新編排,取需需要的部分,計算,輸出,光是一台測試機器的數據,就要花超過二十分鐘的時間來處理,這意味著,我愈來愈難準時下班了,所以,進行了第一次的改版,引入平行處理。還是老樣子,叫 ChatGPT 來幫我改吧....
所有的流程都沒改變,唯一不一樣的是改用平行處理的方式,理論上,對 ChatGPT 來說,應該不是件難事,但這看似簡單的東西,確足足讓我踢了好幾次鐵板。ChatGPT 不僅引入平行處理,但也把整個邏輯改掉,也就是說,跑出來的結果是錯誤的。這一部分,我不知道是哪裡的問題。我已經把原本可以正確執行的 code 餵給 ChatGPT,照理說,ChatGPT 應該要可以分析程式的邏輯,將可以平行處理的部分,改為平行處理,結果,我發現我高估他了。ChatGPT 雖然可以分析 code,但邏輯能力似乎沒有我想像的那麼強。最後,我試把程式分成好幾個部分,一個部分,一個部分慢慢做,才拼出完整的 code。但....我又錯了....MATLAB 的平行處理,反而更慢。詢問 ChatGPT 的結果,他的說法是,如果分成三個部分 A B C 同時處理,如果 A 部分先處理完,那麼原本處理 A 的資源,並不會轉到 B C 處理,所以,時間反而更慢。大家不是說 GPU 有多威嗎? 所以,又把腦筋動到 GPU 的身上。
還是一樣,呼叫 ChatGPT,這一次順利多了,因為我只把需要花費最多時間的那一部分改成 GPU 來處理,其他仍是原本的方式,並且取消了一些原本平行處理的部分,所以這一次改 Code,明顯的順利多了。只是,唉....天不從人願,看著處理過程,GPU 負載沒啥動啊....後來詢問 ChatGPT 原因,可能是雖然我的資料量很大,但卡在資料的傳輸上面,但真因是不是這個已經不重要,重要的是,我花了這麼多時間,得到的還是可能無法準時下班,這是不能接受的....
最後,使出大絕招....應該說,我的原始 code 有個大缺點,就是所有的數據都是從頭開始處理,也就是說,這次處理第一筆到第七百筆的數據,下週處理的是第一筆到第一千四百筆的數據,而不是只處理第七百筆到第一千四百筆的數據,所以隨著資料的增加,處理的時間就會愈長。這樣有一個好處,就是我只要把所有分檔放在同一個目錄下,按一下執行,眼睛睜開就好了,算是懶人方式,但缺點就是處理時間回隨著資料增加而增長。所以,目前最終的版本是,針對最花時間的那個步驟,採取只處理新增的部分。缺點是,我必須手動輸入要從第幾筆數據開始處理,以及將新增的數據,手動與就數據合併,但最大的優點是....不僅可以準時下班,還可以去串門子.....
說說結論吧....
1. 目前免費的 ChatGPT 在邏輯上可能沒那麼聰明
2. 如果程式結構龐大,分成不同的部分,一部分一部分慢慢處理。不僅 ChatGPT 較容易解決,在除錯部分也方便許多。
3. 不要一次餵太長的 code,免費的 ChatGPT 吃不完,而且野吐不完整,所以用 2 的方式去處理。
其實,最重要的是,如何將測試數據,取出有用的資料,這才是重點。所以,我是覺得 ChatGPT 最大的協助是,如何從測試數據中,用有效的工具取出有用的數據。我想這才是最重要的。
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言