分享到plurk 分享到twitter 分享到facebook

版本 ca0ff4a3d0cd93f08782c36ec5f288b7e326a7b8

User/vestata

Changes from ca0ff4a3d0cd93f08782c36ec5f288b7e326a7b8 to 9dbc3868c41558d13ee4cf22df6f8f8fc6cd8ba5

---
title: vestata (黃士昕)
categories: User
...

# 簡介
* 國立成功大學 工程科學研究所 114 級(2023-2025)

* GitHub: [`vestata`](https://github.com/vestata)
* HackMD: [`tony268596`](https://hackmd.io/@tony268596)


# 2024 Linux 核心實作 春季班 自我評量
## 成果發表和貢獻
自評分數: 2 分

並未對 linux 核心或是教材做出貢獻,閱讀教材中在 [LLaMA Now Goes Faster on CPUs](https://justine.lol/matmul/) 有發現錯別字但是未予以理會,在 [第一周測驗第二題](https://hackmd.io/NqdkZCHNTC2oKjtUsQfjgQ?view#%E6%94%B9%E9%80%B2%E6%96%B9%E6%A1%881) 發現程式缺漏但是僅口頭告知授課老師,但是並未正式提交修正紀錄。「誠實面對自己」不應該因為是細節而忽略。


## 作業/隨堂測驗
自評分數: 9 分

* Homework1: [GitHub](https://github.com/vestata/lab0-c) / [HackMD](https://hackmd.io/@tony268596/linux2024-homework1)
* Homework2: [HackMD](https://hackmd.io/@tony268596/linux2024-homework2)
* Homework3: [GitHub](https://github.com/vestata/lab0-c.git) / [HackMD](https://hackmd.io/@tony268596/linux2024-homework1) (同 Homework1)
* Homework4: [HackMD](https://hackmd.io/@tony268596/linux2024-homework4)
* Homework5: [HackMD](https://hackmd.io/@tony268596/linux2024-homework5)
* Homework6: [GitHub](https://github.com/vestata/ksort) / [HackMD](https://hackmd.io/@tony268596/linux2024-homework6)
* 矩陣相乘相關: [HackMD](https://hackmd.io/@tony268596/Hy4EWvXM0)

在 Homework1、Homework3 中使用 linux 核心中的 LIST API 完成 queue 實作,使用 Fisher–Yates shuffle 演算法實作 shuffle 命令,實作 timsort 在部分排序場合相對 lib/list_sort 降底 50% 比較次數,實作 MCTS/negamax 兩種算法並行對戰。Homework4 中分析 `ilog2()` 在不同實作手段的比較。在 Homework5 有對與老師一對一討論之後的每個問題做回應。對 linux 作業系統更為熟悉,好好重新學習 C 語言,學會怎麼寫好 git commit message,學會讀規格書,學習 perf、GDB、gnuplot、valgrind 等不同工具軟體。

## 期末專題
自評分數: 9 分

* [LLaMA 效能分析](https://hackmd.io/@sysprog/ryIUgeJBC)

在期末專題中,我先實測 [matmul](https://github.com/attractivechaos/matmul) 與 [Matrix_Multiply_using_Arm_Neon_and_Avx](https://github.com/ruthreshx/Matrix_Multiply_using_Arm_Neon_and_Avx) 兩個矩陣相乘的手法,並研讀了 [LLaMA Now Goes Faster on CPUs](https://justine.lol/matmul/) 理解 llama.cpp 的效能瓶頸,並對於量化與矩陣相乘進行研究。llama.cpp 是一個 30 萬行程式碼的專案並快速更新,翻閱過往的開發紀錄,逐一分析其中量化與矩陣相乘的底層實作原理,整理出相對應文件以利往後的開發。

## 與授課教師的互動
自評分數: 10 分

* 2024-03-21 22:00 課後討論
* 2024-05-02 22:00 課後討論
* 2024-05-06 14:00 第一次與授課教師進行一對一討論,對 [第九週測驗題 第二題](https://hackmd.io/@sysprog/linux2024-quiz9#%E6%B8%AC%E9%A9%97-2) 進行延伸討論,對答紀錄於 Homework5: [HackMD](https://hackmd.io/@tony268596/linux2024-homework5)
* 2024-05-18 13:30 第二次與授課教師進行一對一討論,研讀 [LLaMA Now Goes Faster on CPUs](https://justine.lol/matmul/) 並與老師討論期末專題的方向。
* 2024-06-18 至 2024-06-24 以 messenger 私訊授課老師均無回應。
* 2024-07-06 11:30 第三次與授課教師進行一對一討論,向授課老師詢問期末專題中數學分析,老師引導相關的課程與參考論文。


## 所見所聞所感
自評分數: 10 分

在第一次作業 lab0-c 撰寫開發紀錄時,老師提醒我注意撰寫規範,從資訊科技詞彙翻譯及詞彙對照表對應到最細節的 git diff 位移量都被糾正,讓我了解到細節的重要性。在 2024-03-21 第一次實體上課時,老師與同學課後討論排序測試,我口頭提醒老師在 timsort 排序檢測是否 stable 時尚未設定 seq 數值,會導致無法判斷是否 stable [Hackmd](https://hackmd.io/NqdkZCHNTC2oKjtUsQfjgQ#%E6%94%B9%E9%80%B2%E6%96%B9%E6%A1%881)。

在 2024-05-02 第十一週的實體課程中,我與老師討論第六次作業,當時我在測試不同排序方法時遇到程式無回應的問題(未使用 vng),老師告訴我要限縮問題,好好理解自己在做什麼,讓我反省自己往往太急於寫程式,未理解實作的目標。在期末專題時,我也希望能理解實作的內容。

在 LLaMA 效能分析 中,這是一個 30 萬行程式碼的專案,並且迅速更新。要理解這個專案的底層邏輯讓我感到挫折,常常覺得無法完成或時做出期末專題。但我回想到閱讀〈因為自動飲料機而延畢的那一年〉文中作者遇到的困難,我也從「想做」這個題目開始,不斷翻閱 llama.cpp 的 commit message,理解作者撰寫程式碼的目的與緣由。最終,我完成了網路上唯一對 llama.cpp 中 q4_0 量化手段與矩陣手法的整理。雖然這與 Linux 核心沒有直接對應,但如同〈因為自動飲料機而延畢的那一年〉作者的紀錄影響了修課的同學們,我希望我的整理能幫助正在開發 llama.cpp 的其他人,也希望自己能靠這份寶貴的經驗繼續成長。
在 LLaMA 效能分析 中,這是一個 30 萬行程式碼的專案,並且迅速更新。要理解這個專案的底層邏輯讓我感到挫折,常常覺得無法完成或時做出期末專題。但我回想到閱讀〈因為自動飲料機而延畢的那一年〉文中作者遇到的困難,我也從「想做」這個題目開始,不斷翻閱 llama.cpp 的 commit message,理解作者撰寫程式碼的目的與緣由。最終,我完成了網路上少數對 llama.cpp 中 q4_0 量化手段與矩陣手法的整理。雖然這與 Linux 核心沒有直接對應,但如同〈因為自動飲料機而延畢的那一年〉作者的紀錄影響了修課的同學們,我希望我的整理能幫助正在開發 llama.cpp 的其他人,也希望自己能靠這份寶貴的經驗繼續成長。


## 給實驗室指導教授的學習回顧
自評分數: 8 分

* 2024-03-01 15:27 二月份學習回顧:我學習到撰寫清晰易懂的 git commit 訊息的重要性。回顧與實驗室學長一起開發的專案,如果當時能規範撰寫 git commit 訊息並提高程式碼質量,必能有效提升工作效率。通過學習,我不僅熟悉了 Linux 作業系統,還提高了在「工業物聯網」課程中擔任助教的教學能力。

* 2024-04-01 17:11 三月份學習回顧:在第三次作業中,我將 MCTS 和 negamax 算法結合到利用 Linux kernel list API 開發的 queue 項目中,面臨了極大的挑戰。通過學習 jserv/ttt 專案中的算法,我複習了 AI 基礎理論並深入理解了其在實際項目中的應用,增進了我對複雜系統中決策過程的理解。

* 2024-06-04 09:58 五月份學習回顧:在期末專題中,我研究了 llama.cpp 和 llamafile 這兩個的大型語言專案,學習其量化方法及 PyTorch 在處理大型語言模型時的限制。探討不同資料型態和準確度對困惑度的影響,並研究提升矩陣乘法效能的方法。

四月份學習回顧未寄給指導教授並 Cc.授課教師,其他月份皆有詳細向指導教授回報。

## 自我評量
* GEOMEAN = $(2*9*9*10*10*8)^{\frac{1}{6}}$ = 7.1137
* 方案 B:1 + floor(GEOMEAN) = 1 + 7 = 8