實際影片長度:14:49.000。原文、繁中、雙語可點擊句子跳轉影片。
0:00.000–0:02.040
zh你有沒有想過一個問題
0:02.040–0:05.840
zh假設今天有一項超神級的最佳化技術
0:05.840–0:08.640
zh宣稱可以讓你的 AI 模型跑得飛快
0:08.640–0:11.600
zh這項最佳化對我日常用 Llama.cpp
0:11.600–0:13.720
zh跑 LLM 的實際感覺有多大
0:13.720–0:16.000
zh平常對話或生成文章
0:16.000–0:17.600
zh真的能快到 40 倍嗎
0:17.600–0:19.960
zh哇 40 倍這個數字
0:19.960–0:23.080
zh聽起來真的很像某種誇張的行銷話術對吧
0:23.080–0:25.280
zh對啊 大家一看到這個標題都瘋了
0:25.280–0:28.360
zh而且這四個針對 Ngram Cache 的修改
0:28.360–0:32.640
zh為什麼能同時做到減少 2.65 倍的峰值記憶體
0:32.640–0:35.360
zh又大幅提升載入與 drafting 速度
0:35.360–0:37.880
zh這聽起來完全違反物理法則嘛
0:37.880–0:41.840
zh就是要馬兒跑得快又要馬兒不吃草
0:41.840–0:43.120
zh這到底怎麼辦到的
0:43.120–0:45.920
zh這個背後的機制其實非常巧妙
0:45.920–0:48.320
zh我們等一下絕對會好好拆解它
0:48.320–0:50.400
zh不過我們今天這場深入探討
0:50.400–0:53.600
zh不只要揭開這個 40 倍加速的技術真相
0:53.600–0:55.360
zh哦 還有別的內幕嗎
0:55.360–0:57.440
zh沒錯 更震撼的是
0:57.440–0:59.840
zh寫出這個神級最佳化的作者
0:59.840–1:01.920
zh居然被主專案封鎖了
1:01.920–1:04.160
zh真的假的 這也太戲劇化了吧
1:04.160–1:07.800
zh維護者僅因誤 Tag 就直接封鎖貢獻者
1:07.800–1:09.480
zh這樣過度反應的門檻
1:09.480–1:12.080
zh是否會嚴重打擊開源社群的貢獻熱情
1:12.080–1:15.360
zh確實 這件事在社群裡炸開了鍋
1:15.360–1:17.920
zh所以我們今天的任務有三個
1:17.920–1:22.000
zh第一 搞懂這個宣稱 41.6 倍加速的
1:22.000–1:23.600
zhNgram Cache 技術真相
1:23.600–1:27.920
zh第二 探討開源社群現在這種緊繃的路線之爭
1:27.920–1:29.440
zh那第三個呢
1:29.440–1:31.680
zh第三就是實務解讀啦
1:31.680–1:34.320
zh不管你是正在評估導入 AI 的企業老闆
1:34.320–1:37.480
zh還是每天在終端機前折騰模型的工程師
1:37.480–1:39.160
zh我們要幫你判斷
1:39.160–1:42.320
zh面對這些看得到但不一定吃得到的技術
1:42.320–1:45.080
zh該怎麼找出能真正落地的策略
1:45.080–1:46.560
zh這個觀念很關鍵
1:46.560–1:50.120
zh所以既然作者被主專案封鎖了
1:50.120–1:52.680
zh我該如何手動將這些分支
1:52.680–1:55.280
zh像是 NgramCacheConstMap
1:55.280–1:57.320
zh與 Daniel Lemire 的 PR
1:57.320–1:59.400
zh合併到我自己的 Fork 來使用
1:59.400–2:02.040
zh這也是工程師們現在最頭痛的問題
2:02.040–2:04.120
zh對 我們稍後會聊到這種
2:04.120–2:06.480
zh自己動手豐衣足食的做法
2:06.480–2:08.640
zh也就是大家俗稱的科學怪人版
2:08.640–2:12.440
zh科學怪人版 聽起來就很硬派
2:12.440–2:14.880
zh那這也讓我想到
2:14.880–2:16.240
zh為什麼像 AMD
2:16.240–2:19.160
zh像是 RDNA3 或者 Strix Halo 等
2:19.160–2:21.680
zh非 NVIDIA 硬體的最佳化 PR
2:21.680–2:23.040
zh常被主線忽略
2:23.040–2:24.680
zh這是社群偏見
2:24.680–2:26.360
zh還是程式碼維護上的考量
2:26.360–2:28.120
zh這個問題非常犀利
2:28.120–2:30.480
zh它牽涉到未來 AI 基礎設施的走向
2:30.480–2:33.400
zh所以 Llama.cpp 為了維持通用性
2:33.400–2:34.680
zh而犧牲極限效能
2:34.680–2:36.840
zh未來是不是專用型 Fork
2:36.840–2:38.920
zh像是 Strix Halo 專用版
2:38.920–2:41.120
zh才是高效能推理的必然趨勢
2:41.120–2:43.280
zh如果我追求極致 Speed Up
2:43.280–2:46.000
zh是不是該直接改用 EXLlama V3
2:46.000–2:48.120
zh或是 Tabby 或其他專用框架
2:48.120–2:50.160
zh而不是繼續折騰 Llama.cpp
2:50.160–2:52.920
zh沒錯 這些都會是我們今天探討的核心
2:52.920–2:55.000
zh那我們就先從大家最關心的
2:55.000–2:57.560
zh那個 42 倍加速的神話開始解密吧
2:57.560–2:59.640
zh好 我真的超級好奇
2:59.640–3:01.120
zh這四個修改
3:01.120–3:02.560
zh到底施了什麼魔法
3:02.560–3:04.680
zh怎麼可能記憶體用量變少
3:04.680–3:05.760
zh速度還能飆升
3:05.760–3:07.800
zh其實要解開這個魔法
3:07.800–3:10.760
zh我們得先跳脫一般對模型生成的想像
3:10.760–3:13.440
zh這麼說 平常我們以為的加速
3:13.440–3:16.480
zh是模型生成每一個 Token 的計算速度變快了
3:16.480–3:18.720
zh但這次的核心技術叫做
3:18.720–3:20.160
enPrompt Lookup Drafting
3:20.160–3:22.560
zh這不是整體的生成速度變快
3:22.560–3:24.440
zh而是針對草稿生成
3:24.440–3:27.560
zh也就是 Drafting 這個特定階段的極致最佳化
3:27.560–3:30.360
zh哦 所以不是每一句話都變快
3:30.360–3:32.920
zh對 一般在跑 LLM 時啊
3:32.920–3:34.480
zh模型吐出每一個字
3:34.480–3:37.360
zh都要把龐大的權重載入 GPU 算過一遍
3:37.360–3:39.720
zh這超級吃記憶體頻寬
3:39.720–3:42.800
zh但 Prompt Lookup Drafting 改變了這個規則
3:42.800–3:44.560
zh它可以說是在猜字
3:44.560–3:48.680
zh猜字 這聽起來有點像手機鍵盤的自動選字
3:48.680–3:49.840
zh概念很像
3:49.840–3:51.800
zh當你餵給它一段 Prompt 時
3:51.800–3:55.600
zh這個機制會在背景快速比對過去的文本規律
3:55.600–3:57.280
zh也就是你提到的 Ngram
3:57.280–4:00.920
zh它如果在前面的上下文看到一樣的文字組合
4:00.920–4:03.520
zh它就不去進行昂貴的神經網路運算
4:03.520–4:07.280
zh而是直接複製貼上下來的幾個字當作草稿
4:07.280–4:08.600
zh原來如此
4:08.600–4:12.320
zh所以龐大的 LLM 只需要做一次單次驗證
4:12.320–4:14.480
zh確認這幾個字合不合理就好了
4:14.480–4:15.960
zh完全正確
4:15.960–4:18.760
zh等於是拿極度廉價的純文字搜尋
4:18.760–4:21.240
zh去交換極度昂貴的 GPU 運算
4:21.240–4:24.880
zh這聽起來就像是傳統的模型生成
4:24.880–4:25.760
zh像是一位大廚
4:25.760–4:27.160
zh你每點一道菜
4:27.160–4:29.920
zh它都要從頭切菜備料開火現做
4:29.920–4:32.800
zh這個比喻很貼切 對吧
4:32.800–4:35.320
zh那這個 Prompt Lookup Drafting
4:35.320–4:37.400
zh就像是大廚注意到
4:37.400–4:40.200
zh你每個禮拜二都點一模一樣的經典牛肉堡
4:40.200–4:43.080
zh所以他在後廚早就把生菜
4:43.080–4:44.840
zh起司跟漢堡排預先疊好了
4:44.840–4:47.920
zh他最後還是得過一下火烤確認品質
4:47.920–4:50.240
zh但備料的時間瞬間歸零
4:50.240–4:52.240
zh自己真的講到重點了
4:52.240–4:53.840
zh把昂貴的現做成本
4:53.840–4:55.840
zh轉換成了極低成本的預處理
4:55.840–4:59.040
zh而且還有另一位知名開發者 Daniel Lemire
4:59.040–5:00.600
zh提出了進一步的最佳化
5:00.600–5:02.480
zh讓這個查找流程變得更快
5:02.480–5:04.120
zh那記憶體呢
5:04.120–5:06.360
zh你剛剛還沒解答我的疑惑
5:06.360–5:07.960
zh既然要記住前面的字
5:07.960–5:10.880
zh難道不需要占用更多記憶體去存快取嗎
5:10.880–5:14.200
zh為什麼峰值記憶體反而減少了 2.65 倍
5:14.200–5:16.840
zh這是因為這四項修改
5:16.840–5:20.320
zh徹底翻新了資料在記憶體中的儲存與查找結構
5:20.320–5:23.160
zh舊的做法是動態配置大量的空間
5:23.160–5:25.440
zh上下文一長記憶體就狂飆
5:25.440–5:28.680
zh也就是常常會發生 out of memory 的狀況
5:28.680–5:31.080
zh沒錯 但這次的最佳化包含了
5:31.080–5:32.560
enN-gram Cache Constant Map
5:32.560–5:35.840
zh它把查找表變成了一種更緊湊的靜態結構
5:35.840–5:38.080
zh不需要把所有狀態都塞進記憶體
5:38.080–5:40.680
zh而是用高效率的索引去指導資料
5:40.680–5:43.320
zh結構變簡單了 記憶體占用就大幅下降
5:43.320–5:45.600
zh哇 如果我是工程師
5:45.600–5:46.800
zh這簡直是救星
5:46.800–5:48.960
zh這代表在邊緣設備
5:48.960–5:51.080
zh或者是資源受限的伺服器上
5:51.080–5:53.160
zh以前會爆記憶體的模型
5:53.160–5:54.960
zh現在有機會順暢跑完了
5:54.960–5:57.840
zh對 那如果我們拉高層次來看
5:57.840–5:59.600
zh如果你是老闆 這代表什麼
5:59.600–6:01.520
zh代表伺服器硬體成本
6:01.520–6:02.840
zh可以省下一大筆錢
6:02.840–6:05.640
zh不用為了應付偶爾飆高的記憶體峰值
6:05.640–6:07.000
zh去採購更貴的硬體
6:07.000–6:08.600
zh完全正確
6:08.600–6:11.000
zh但這裡我要潑一點冷水了
6:11.000–6:13.840
zh哦 要進入現實打擊階段了嗎
6:13.840–6:17.520
zh哈哈 對 因為很多資深使用者實測後發現
6:17.520–6:19.360
zh端到端的實際加速感
6:19.360–6:21.440
zh絕對沒有 42 倍這麼誇張
6:21.440–6:22.560
zh這也就是為什麼
6:22.560–6:24.240
zh我們必須從實驗室數據
6:24.240–6:26.080
zh走向真實世界的應用場景
6:26.080–6:27.440
zh其實我也想問這個
6:27.440–6:29.400
enPrompt Lookup Drafting
6:29.400–6:31.800
zh似乎非常依賴重複性高的文字
6:31.800–6:33.600
zh像是固定的 System Prompt
6:33.600–6:37.680
zh那如果是每次都不一樣的單次隨機提問
6:37.680–6:39.640
zh這項最佳化還有效嗎
6:39.640–6:41.280
zh這就是問題所在
6:41.280–6:43.040
zh如果提示詞高度重複
6:43.040–6:45.720
zhNgram Cache 就像是免費的加速器
6:45.720–6:47.960
zh但如果是高度變動的任務
6:47.960–6:50.320
zh像是每次都問截然不同的創意寫作
6:50.320–6:52.120
zh這個機制幾乎不會觸發
6:52.120–6:55.640
zh所以它是一種極度依賴工作負載
6:55.640–6:57.760
zh也就是 Workload Dependent 的技術咯
6:57.760–7:00.800
zh沒錯 所以我們來聊聊企業該怎麼應用
7:00.800–7:04.160
zh如果你們公司是做特定場景的客服機器人
7:04.160–7:06.320
zh每天都在回答類似的退換貨問題
7:06.320–7:09.320
zh那這項技術就能大幅提升回應速度了
7:09.320–7:12.880
zh對 或者是需要做大量固定格式的文件摘要
7:12.880–7:15.320
zh這時候 Ngram 快取命中率極高
7:15.320–7:16.880
zh你的競爭力就會大幅提升
7:16.880–7:18.480
zh但反過來說
7:18.480–7:21.680
zh如果主管看到新聞上寫 42 倍加速
7:21.680–7:23.200
zh隔天就跑去跟團隊說
7:23.200–7:26.240
zh下個月把我們的 API 速度提升 40 倍
7:26.240–7:27.880
zh這會是一場災難吧
7:27.880–7:30.800
zh絕對是災難 這就是潛在的誤區
7:30.800–7:33.560
zh千萬不要對團隊開出不切實際的 KPI
7:33.560–7:35.760
zh必須先評估自身的 Prompt 使用習慣
7:35.760–7:36.600
zh了解
7:36.600–7:38.920
zh好 那既然我們知道這項技術
7:38.920–7:40.920
zh在特定場景下非常有價值
7:40.920–7:44.120
zh問題來了 為什麼這麼好的最佳化
7:44.120–7:46.240
zh會引發這麼大的社群風暴
7:46.240–7:49.800
zh這就牽涉到開源社群最脆弱的神經了
7:49.800–7:52.360
zh我看新聞的時候真的覺得很離譜
7:52.360–7:54.800
zh這顯然是一個操作上的誤會
7:54.800–7:57.480
zh貢獻者只是在自己的 Fork 測試時
7:57.480–7:59.080
zh標記到 Upstream 協作者
7:59.080–8:01.240
zh維護者直接封鎖
8:01.240–8:02.320
zh會不會太超過了
8:02.320–8:04.760
zh這個舉動確實非常激烈
8:04.760–8:07.120
zh對啊 GitHub 為什麼會允許
8:07.120–8:09.400
zh非 mainline 儲存庫的 PR 操作
8:09.400–8:10.480
zh通知到外部人員
8:10.480–8:13.000
zh導致這種不小心標記到他人
8:13.000–8:14.520
zh而釀成糾紛的情況發生
8:14.520–8:16.480
zh其實 GitHub 的這個設計
8:16.480–8:17.880
zh一直被很多人抱怨
8:17.880–8:20.200
zh只要你打出 at 加上帳號
8:20.200–8:21.920
zh即使是在你自己的分支
8:21.920–8:23.600
zh系統還是會發通知給對方
8:23.600–8:25.840
zh這很容易讓人踩雷
8:25.840–8:28.560
zh那是否有其他人或核心團隊成員
8:28.560–8:30.720
zh能幫忙向維護者協調解鎖
8:30.720–8:33.560
zh目前社群裡有兩種截然不同的聲音
8:33.560–8:35.680
zh反對的這一派就跟你一樣
8:35.680–8:36.920
zh覺得這極度不專業
8:36.920–8:37.920
zh甚至有人說
8:37.920–8:40.600
zh這就是許多優秀專案死亡的原因
8:40.600–8:43.440
zh因為掌權者的傲慢跟守門員心態嗎
8:43.440–8:45.760
zh沒錯 但我們也要看看另一派的觀點
8:45.760–8:47.960
zh他們點出了一个殘酷的現實
8:47.960–8:50.400
zh就是維護者的職業倦怠
8:50.400–8:51.320
zh也就是 burn out
8:51.320–8:54.600
zh因為他們每天要處理的東西太多了
8:54.600–8:57.040
zh對 像 Llama.cpp 這麼熱門的專案
8:57.040–9:00.560
zh維護者每天面對無數的通知 PR 還有 issue
9:00.560–9:02.480
zh在巨大的精神壓力下
9:02.480–9:03.600
zh任何無效的干擾
9:03.600–9:06.320
zh都可能成為壓垮駱駝的最後一根稻草
9:06.320–9:09.480
zh所以這次封鎖 與其說是惡意
9:09.480–9:12.400
zh不如說是處於極限狀態下的過度防衛
9:12.400–9:13.400
zh確實是這樣
9:13.400–9:15.920
zh但這就帶來了一個嚴峻的實務問題
9:15.920–9:17.480
zh既然原作者被封鎖了
9:17.480–9:20.480
zh很多急需這項效能最佳化的工程師該怎麼辦
9:20.480–9:23.320
zh對啊 我該如何手動將這些分支
9:23.320–9:24.800
zh合併到我自己的 Fork 來使用
9:24.800–9:27.080
zh現在很多人會自製大家俗稱的
9:27.080–9:28.200
enFrankenstein Llama
9:28.200–9:30.640
zh也就是科學怪人版的混合版本
9:30.640–9:33.800
zh工程師會自己去把原作者的分支拉下來
9:33.800–9:35.280
zh手動合併進專案裡
9:35.280–9:37.840
zh自己縫合出一個科學怪人版本
9:37.840–9:41.440
zh這聽起來 如果我是企業的技術主管
9:41.440–9:43.080
zh我會覺得風險超高的
9:43.080–9:45.480
zh這是一個非常重要的企業風險警訊
9:45.480–9:49.080
zh如果企業的基礎設施過度依賴單一開源專案
9:49.080–9:52.320
zh特別是這種由少數個人維護的專案
9:52.320–9:55.040
zh當發生這種人事糾紛導致進度停擺時
9:55.040–9:57.720
zh企業就會立刻面臨技術斷層的風險
9:57.720–9:59.120
zh所以一定要有備案
9:59.120–10:00.800
zh就是所謂的 Plan B
10:00.800–10:03.160
zh沒錯 這也帶出了我們今天
10:03.160–10:05.080
zh最後一個重要的趨勢觀察
10:05.080–10:07.240
zh因為主專案合併困難
10:07.240–10:10.040
zh越來越多人轉向使用特定分支了
10:10.040–10:13.160
zh說到特定分支 我一直有個疑問
10:13.160–10:15.960
zh為什麼像 AMD
10:15.960–10:19.240
zh像是 RDNA3 或者 Strix Halo 等
10:19.240–10:21.640
zh非 NVIDIA 硬體的最佳化 PR
10:21.640–10:22.680
zh常被主線忽略
10:22.680–10:26.160
zh這是社群對特定品牌有偏見
10:26.160–10:28.160
zh還是程式碼維護上的考量
10:28.160–10:30.680
zh這絕對是程式碼維護上的考量
10:30.680–10:33.440
zh你想想看 Llama.cpp 的初衷是什麼
10:33.440–10:36.800
zh是為了讓模型在所有的硬體上都能跑
10:36.800–10:37.800
zh也就是通用性
10:37.800–10:40.600
zh對 為了維持這種通用性
10:40.600–10:42.880
zh主線其實已經變成了最小公倍數
10:42.880–10:46.720
zh如果把所有針對特定硬體的底層最佳化都加進去
10:46.720–10:49.160
zh程式碼會變得像義大利麵一樣複雜
10:49.160–10:51.120
zh根本無法維護對吧
10:51.120–10:53.280
zh沒錯 所以這不是偏見
10:53.280–10:56.200
zh而是為了專案存活必須做的妥協
10:56.200–10:58.520
zh那這樣的話
10:58.520–11:02.400
zhLlama.cpp 為了維持通用性而犧牲極限效能
11:02.400–11:04.600
zh未來是不是專用型 Fork
11:04.600–11:07.320
zh例如 EXLlama 或是 Strix 專用版
11:07.320–11:09.440
zh才是高效能推理的必然趨勢
11:09.440–11:12.480
zh目前社群的趨勢確實是擁抱 Fork
11:12.480–11:14.760
zh有人分享在特定硬體上
11:14.760–11:18.480
zh專用分支的速度甚至可以達到主線的 2 到 4 倍
11:18.480–11:21.000
zh哇 那差距很大
11:21.000–11:23.840
zh那如果我就是追求極致的 speed up
11:23.840–11:26.960
zh我是不是該直接改用 EX-LAMA V3
11:26.960–11:29.280
zh或者是 Tabby 這些其他專用框架
11:29.280–11:31.480
zh而不是繼續折騰 Llama.cpp
11:31.480–11:35.040
zh這個決策完全取決於你們公司的戰略定位
11:35.040–11:36.720
zh我們來做個實務解讀吧
11:36.720–11:41.360
zh好啊 如果你們企業的硬體規格是單一且固定的
11:41.360–11:43.920
zh例如老闆一口氣買了一批特定的伺服器
11:43.920–11:47.640
zh那使用專用框架就能壓榨出最大的硬體效益
11:47.640–11:49.520
zh沒錯 但反過來
11:49.520–11:52.000
zh如果你們是軟體服務商 SaaS 公司
11:52.000–11:55.320
zh你的終端客戶可能有千奇百怪的硬體設備
11:55.320–11:58.280
zh有人用 Mac 有人用五年前的舊電腦
11:58.280–12:01.040
zh對 那這時候如果你硬要用
12:01.040–12:03.600
zh追求極致效能的小眾專用框架
12:03.600–12:05.280
zh肯定會是一場維護災難
12:05.280–12:07.680
zh確實 這時候堅守
12:07.680–12:10.720
zhLlama.cpp 這樣泛用且穩定的主線
12:10.720–12:13.040
zh才是減少客訴的明智之舉
12:13.040–12:18.120
zh是的 通用性與極限效能本來就是天平的兩端
12:18.120–12:21.280
zh就像 Linux 過去也有針對特定硬體
12:21.280–12:22.720
zh高度最佳化的分支一樣
12:22.720–12:24.480
zh這是技術發展的常態
12:24.480–12:27.680
zh今天這一集深入探討真的太精彩了
12:27.680–12:31.120
zh我們從一個 42 倍速的神級最佳化出發
12:31.120–12:31.760
zh看懂了它背後
12:31.760–12:34.880
zh其實是拿 Ngram 去猜字的機制
12:34.880–12:38.000
zh沒錯 還順便破解了記憶體減半的秘密
12:38.000–12:40.600
zh接著我們見證了開源社群裡
12:40.600–12:44.080
zh因為一個小小的誤標記而引爆的封鎖危機
12:44.080–12:48.040
zh也看見了熱門專案維護者背後的巨大壓力
12:48.040–12:49.840
zh最後我們跟大家梳理了
12:49.840–12:51.680
zh企業技術選型的戰略思考
12:51.680–12:53.840
zh所以在節目的最後
12:53.840–12:56.160
zh我想留一個開放式的問題給大家思考
12:56.160–12:59.000
zh在 AI 技術迭代這麼快速的時代
12:59.000–13:01.960
zh當通用但稍慢的主流工具
13:01.960–13:06.080
zh與極致但小眾的專用工具擺在你面前時
13:06.080–13:08.880
zh你會為了效能而犧牲穩定性嗎
13:08.880–13:10.680
zh這裡我也要給大家一句
13:10.680–13:12.200
zh最核心的實務提醒
13:12.200–13:16.440
zh記住 不要只看新聞上表面宣稱的幾十倍加速
13:16.440–13:17.680
zh技術好不好
13:17.680–13:22.000
zh永遠要看它能不能在你真實的業務場景中落地生根
13:22.000–13:24.800
zh說得太好了 能落地才是最重要的
13:24.800–13:26.960
zh喜歡我們的深入分析討論嗎
13:26.960–13:29.480
zh記得轉發給有需要的親朋好友
13:29.480–13:32.640
zh並且幫我們按讚訂閱開啟小鈴鐺
13:32.640–13:36.120
zh更多相關資訊連結請參考影片下方的資訊欄
13:36.120–13:38.120
zh最後感謝您的收聽
13:38.120–13:39.960
zh祝您順心 我們下集再會
13:39.960–13:41.480
zh拜拜 拜拜
0:00.000–0:02.040
你有沒有想過一個問題
0:02.040–0:05.840
假設今天有一項超神級的最佳化技術
0:05.840–0:08.640
宣稱可以讓你的 AI 模型跑得飛快
0:08.640–0:11.600
這項最佳化對我日常用 Llama.cpp
0:11.600–0:13.720
跑 LLM 的實際感覺有多大
0:13.720–0:16.000
平常對話或生成文章
0:16.000–0:17.600
真的能快到 40 倍嗎
0:17.600–0:19.960
哇 40 倍這個數字
0:19.960–0:23.080
聽起來真的很像某種誇張的行銷話術對吧
0:23.080–0:25.280
對啊 大家一看到這個標題都瘋了
0:25.280–0:28.360
而且這四個針對 Ngram Cache 的修改
0:28.360–0:32.640
為什麼能同時做到減少 2.65 倍的峰值記憶體
0:32.640–0:35.360
又大幅提升載入與 drafting 速度
0:35.360–0:37.880
這聽起來完全違反物理法則嘛
0:37.880–0:41.840
就是要馬兒跑得快又要馬兒不吃草
0:41.840–0:43.120
這到底怎麼辦到的
0:43.120–0:45.920
這個背後的機制其實非常巧妙
0:45.920–0:48.320
我們等一下絕對會好好拆解它
0:48.320–0:50.400
不過我們今天這場深入探討
0:50.400–0:53.600
不只要揭開這個 40 倍加速的技術真相
0:53.600–0:55.360
哦 還有別的內幕嗎
0:55.360–0:57.440
沒錯 更震撼的是
0:57.440–0:59.840
寫出這個神級最佳化的作者
0:59.840–1:01.920
居然被主專案封鎖了
1:01.920–1:04.160
真的假的 這也太戲劇化了吧
1:04.160–1:07.800
維護者僅因誤 Tag 就直接封鎖貢獻者
1:07.800–1:09.480
這樣過度反應的門檻
1:09.480–1:12.080
是否會嚴重打擊開源社群的貢獻熱情
1:12.080–1:15.360
確實 這件事在社群裡炸開了鍋
1:15.360–1:17.920
所以我們今天的任務有三個
1:17.920–1:22.000
第一 搞懂這個宣稱 41.6 倍加速的
1:22.000–1:23.600
Ngram Cache 技術真相
1:23.600–1:27.920
第二 探討開源社群現在這種緊繃的路線之爭
1:27.920–1:29.440
那第三個呢
1:29.440–1:31.680
第三就是實務解讀啦
1:31.680–1:34.320
不管你是正在評估導入 AI 的企業老闆
1:34.320–1:37.480
還是每天在終端機前折騰模型的工程師
1:37.480–1:39.160
我們要幫你判斷
1:39.160–1:42.320
面對這些看得到但不一定吃得到的技術
1:42.320–1:45.080
該怎麼找出能真正落地的策略
1:45.080–1:46.560
這個觀念很關鍵
1:46.560–1:50.120
所以既然作者被主專案封鎖了
1:50.120–1:52.680
我該如何手動將這些分支
1:52.680–1:55.280
像是 NgramCacheConstMap
1:55.280–1:57.320
與 Daniel Lemire 的 PR
1:57.320–1:59.400
合併到我自己的 Fork 來使用
1:59.400–2:02.040
這也是工程師們現在最頭痛的問題
2:02.040–2:04.120
對 我們稍後會聊到這種
2:04.120–2:06.480
自己動手豐衣足食的做法
2:06.480–2:08.640
也就是大家俗稱的科學怪人版
2:08.640–2:12.440
科學怪人版 聽起來就很硬派
2:12.440–2:14.880
那這也讓我想到
2:14.880–2:16.240
為什麼像 AMD
2:16.240–2:19.160
像是 RDNA3 或者 Strix Halo 等
2:19.160–2:21.680
非 NVIDIA 硬體的最佳化 PR
2:21.680–2:23.040
常被主線忽略
2:23.040–2:24.680
這是社群偏見
2:24.680–2:26.360
還是程式碼維護上的考量
2:26.360–2:28.120
這個問題非常犀利
2:28.120–2:30.480
它牽涉到未來 AI 基礎設施的走向
2:30.480–2:33.400
所以 Llama.cpp 為了維持通用性
2:33.400–2:34.680
而犧牲極限效能
2:34.680–2:36.840
未來是不是專用型 Fork
2:36.840–2:38.920
像是 Strix Halo 專用版
2:38.920–2:41.120
才是高效能推理的必然趨勢
2:41.120–2:43.280
如果我追求極致 Speed Up
2:43.280–2:46.000
是不是該直接改用 EXLlama V3
2:46.000–2:48.120
或是 Tabby 或其他專用框架
2:48.120–2:50.160
而不是繼續折騰 Llama.cpp
2:50.160–2:52.920
沒錯 這些都會是我們今天探討的核心
2:52.920–2:55.000
那我們就先從大家最關心的
2:55.000–2:57.560
那個 42 倍加速的神話開始解密吧
2:57.560–2:59.640
好 我真的超級好奇
2:59.640–3:01.120
這四個修改
3:01.120–3:02.560
到底施了什麼魔法
3:02.560–3:04.680
怎麼可能記憶體用量變少
3:04.680–3:05.760
速度還能飆升
3:05.760–3:07.800
其實要解開這個魔法
3:07.800–3:10.760
我們得先跳脫一般對模型生成的想像
3:10.760–3:13.440
這麼說 平常我們以為的加速
3:13.440–3:16.480
是模型生成每一個 Token 的計算速度變快了
3:16.480–3:18.720
但這次的核心技術叫做
3:18.720–3:20.160
Prompt Lookup Drafting
3:20.160–3:22.560
這不是整體的生成速度變快
3:22.560–3:24.440
而是針對草稿生成
3:24.440–3:27.560
也就是 Drafting 這個特定階段的極致最佳化
3:27.560–3:30.360
哦 所以不是每一句話都變快
3:30.360–3:32.920
對 一般在跑 LLM 時啊
3:32.920–3:34.480
模型吐出每一個字
3:34.480–3:37.360
都要把龐大的權重載入 GPU 算過一遍
3:37.360–3:39.720
這超級吃記憶體頻寬
3:39.720–3:42.800
但 Prompt Lookup Drafting 改變了這個規則
3:42.800–3:44.560
它可以說是在猜字
3:44.560–3:48.680
猜字 這聽起來有點像手機鍵盤的自動選字
3:48.680–3:49.840
概念很像
3:49.840–3:51.800
當你餵給它一段 Prompt 時
3:51.800–3:55.600
這個機制會在背景快速比對過去的文本規律
3:55.600–3:57.280
也就是你提到的 Ngram
3:57.280–4:00.920
它如果在前面的上下文看到一樣的文字組合
4:00.920–4:03.520
它就不去進行昂貴的神經網路運算
4:03.520–4:07.280
而是直接複製貼上下來的幾個字當作草稿
4:07.280–4:08.600
原來如此
4:08.600–4:12.320
所以龐大的 LLM 只需要做一次單次驗證
4:12.320–4:14.480
確認這幾個字合不合理就好了
4:14.480–4:15.960
完全正確
4:15.960–4:18.760
等於是拿極度廉價的純文字搜尋
4:18.760–4:21.240
去交換極度昂貴的 GPU 運算
4:21.240–4:24.880
這聽起來就像是傳統的模型生成
4:24.880–4:25.760
像是一位大廚
4:25.760–4:27.160
你每點一道菜
4:27.160–4:29.920
它都要從頭切菜備料開火現做
4:29.920–4:32.800
這個比喻很貼切 對吧
4:32.800–4:35.320
那這個 Prompt Lookup Drafting
4:35.320–4:37.400
就像是大廚注意到
4:37.400–4:40.200
你每個禮拜二都點一模一樣的經典牛肉堡
4:40.200–4:43.080
所以他在後廚早就把生菜
4:43.080–4:44.840
起司跟漢堡排預先疊好了
4:44.840–4:47.920
他最後還是得過一下火烤確認品質
4:47.920–4:50.240
但備料的時間瞬間歸零
4:50.240–4:52.240
自己真的講到重點了
4:52.240–4:53.840
把昂貴的現做成本
4:53.840–4:55.840
轉換成了極低成本的預處理
4:55.840–4:59.040
而且還有另一位知名開發者 Daniel Lemire
4:59.040–5:00.600
提出了進一步的最佳化
5:00.600–5:02.480
讓這個查找流程變得更快
5:02.480–5:04.120
那記憶體呢
5:04.120–5:06.360
你剛剛還沒解答我的疑惑
5:06.360–5:07.960
既然要記住前面的字
5:07.960–5:10.880
難道不需要占用更多記憶體去存快取嗎
5:10.880–5:14.200
為什麼峰值記憶體反而減少了 2.65 倍
5:14.200–5:16.840
這是因為這四項修改
5:16.840–5:20.320
徹底翻新了資料在記憶體中的儲存與查找結構
5:20.320–5:23.160
舊的做法是動態配置大量的空間
5:23.160–5:25.440
上下文一長記憶體就狂飆
5:25.440–5:28.680
也就是常常會發生 out of memory 的狀況
5:28.680–5:31.080
沒錯 但這次的最佳化包含了
5:31.080–5:32.560
N-gram Cache Constant Map
5:32.560–5:35.840
它把查找表變成了一種更緊湊的靜態結構
5:35.840–5:38.080
不需要把所有狀態都塞進記憶體
5:38.080–5:40.680
而是用高效率的索引去指導資料
5:40.680–5:43.320
結構變簡單了 記憶體占用就大幅下降
5:43.320–5:45.600
哇 如果我是工程師
5:45.600–5:46.800
這簡直是救星
5:46.800–5:48.960
這代表在邊緣設備
5:48.960–5:51.080
或者是資源受限的伺服器上
5:51.080–5:53.160
以前會爆記憶體的模型
5:53.160–5:54.960
現在有機會順暢跑完了
5:54.960–5:57.840
對 那如果我們拉高層次來看
5:57.840–5:59.600
如果你是老闆 這代表什麼
5:59.600–6:01.520
代表伺服器硬體成本
6:01.520–6:02.840
可以省下一大筆錢
6:02.840–6:05.640
不用為了應付偶爾飆高的記憶體峰值
6:05.640–6:07.000
去採購更貴的硬體
6:07.000–6:08.600
完全正確
6:08.600–6:11.000
但這裡我要潑一點冷水了
6:11.000–6:13.840
哦 要進入現實打擊階段了嗎
6:13.840–6:17.520
哈哈 對 因為很多資深使用者實測後發現
6:17.520–6:19.360
端到端的實際加速感
6:19.360–6:21.440
絕對沒有 42 倍這麼誇張
6:21.440–6:22.560
這也就是為什麼
6:22.560–6:24.240
我們必須從實驗室數據
6:24.240–6:26.080
走向真實世界的應用場景
6:26.080–6:27.440
其實我也想問這個
6:27.440–6:29.400
Prompt Lookup Drafting
6:29.400–6:31.800
似乎非常依賴重複性高的文字
6:31.800–6:33.600
像是固定的 System Prompt
6:33.600–6:37.680
那如果是每次都不一樣的單次隨機提問
6:37.680–6:39.640
這項最佳化還有效嗎
6:39.640–6:41.280
這就是問題所在
6:41.280–6:43.040
如果提示詞高度重複
6:43.040–6:45.720
Ngram Cache 就像是免費的加速器
6:45.720–6:47.960
但如果是高度變動的任務
6:47.960–6:50.320
像是每次都問截然不同的創意寫作
6:50.320–6:52.120
這個機制幾乎不會觸發
6:52.120–6:55.640
所以它是一種極度依賴工作負載
6:55.640–6:57.760
也就是 Workload Dependent 的技術咯
6:57.760–7:00.800
沒錯 所以我們來聊聊企業該怎麼應用
7:00.800–7:04.160
如果你們公司是做特定場景的客服機器人
7:04.160–7:06.320
每天都在回答類似的退換貨問題
7:06.320–7:09.320
那這項技術就能大幅提升回應速度了
7:09.320–7:12.880
對 或者是需要做大量固定格式的文件摘要
7:12.880–7:15.320
這時候 Ngram 快取命中率極高
7:15.320–7:16.880
你的競爭力就會大幅提升
7:16.880–7:18.480
但反過來說
7:18.480–7:21.680
如果主管看到新聞上寫 42 倍加速
7:21.680–7:23.200
隔天就跑去跟團隊說
7:23.200–7:26.240
下個月把我們的 API 速度提升 40 倍
7:26.240–7:27.880
這會是一場災難吧
7:27.880–7:30.800
絕對是災難 這就是潛在的誤區
7:30.800–7:33.560
千萬不要對團隊開出不切實際的 KPI
7:33.560–7:35.760
必須先評估自身的 Prompt 使用習慣
7:35.760–7:36.600
了解
7:36.600–7:38.920
好 那既然我們知道這項技術
7:38.920–7:40.920
在特定場景下非常有價值
7:40.920–7:44.120
問題來了 為什麼這麼好的最佳化
7:44.120–7:46.240
會引發這麼大的社群風暴
7:46.240–7:49.800
這就牽涉到開源社群最脆弱的神經了
7:49.800–7:52.360
我看新聞的時候真的覺得很離譜
7:52.360–7:54.800
這顯然是一個操作上的誤會
7:54.800–7:57.480
貢獻者只是在自己的 Fork 測試時
7:57.480–7:59.080
標記到 Upstream 協作者
7:59.080–8:01.240
維護者直接封鎖
8:01.240–8:02.320
會不會太超過了
8:02.320–8:04.760
這個舉動確實非常激烈
8:04.760–8:07.120
對啊 GitHub 為什麼會允許
8:07.120–8:09.400
非 mainline 儲存庫的 PR 操作
8:09.400–8:10.480
通知到外部人員
8:10.480–8:13.000
導致這種不小心標記到他人
8:13.000–8:14.520
而釀成糾紛的情況發生
8:14.520–8:16.480
其實 GitHub 的這個設計
8:16.480–8:17.880
一直被很多人抱怨
8:17.880–8:20.200
只要你打出 at 加上帳號
8:20.200–8:21.920
即使是在你自己的分支
8:21.920–8:23.600
系統還是會發通知給對方
8:23.600–8:25.840
這很容易讓人踩雷
8:25.840–8:28.560
那是否有其他人或核心團隊成員
8:28.560–8:30.720
能幫忙向維護者協調解鎖
8:30.720–8:33.560
目前社群裡有兩種截然不同的聲音
8:33.560–8:35.680
反對的這一派就跟你一樣
8:35.680–8:36.920
覺得這極度不專業
8:36.920–8:37.920
甚至有人說
8:37.920–8:40.600
這就是許多優秀專案死亡的原因
8:40.600–8:43.440
因為掌權者的傲慢跟守門員心態嗎
8:43.440–8:45.760
沒錯 但我們也要看看另一派的觀點
8:45.760–8:47.960
他們點出了一个殘酷的現實
8:47.960–8:50.400
就是維護者的職業倦怠
8:50.400–8:51.320
也就是 burn out
8:51.320–8:54.600
因為他們每天要處理的東西太多了
8:54.600–8:57.040
對 像 Llama.cpp 這麼熱門的專案
8:57.040–9:00.560
維護者每天面對無數的通知 PR 還有 issue
9:00.560–9:02.480
在巨大的精神壓力下
9:02.480–9:03.600
任何無效的干擾
9:03.600–9:06.320
都可能成為壓垮駱駝的最後一根稻草
9:06.320–9:09.480
所以這次封鎖 與其說是惡意
9:09.480–9:12.400
不如說是處於極限狀態下的過度防衛
9:12.400–9:13.400
確實是這樣
9:13.400–9:15.920
但這就帶來了一個嚴峻的實務問題
9:15.920–9:17.480
既然原作者被封鎖了
9:17.480–9:20.480
很多急需這項效能最佳化的工程師該怎麼辦
9:20.480–9:23.320
對啊 我該如何手動將這些分支
9:23.320–9:24.800
合併到我自己的 Fork 來使用
9:24.800–9:27.080
現在很多人會自製大家俗稱的
9:27.080–9:28.200
Frankenstein Llama
9:28.200–9:30.640
也就是科學怪人版的混合版本
9:30.640–9:33.800
工程師會自己去把原作者的分支拉下來
9:33.800–9:35.280
手動合併進專案裡
9:35.280–9:37.840
自己縫合出一個科學怪人版本
9:37.840–9:41.440
這聽起來 如果我是企業的技術主管
9:41.440–9:43.080
我會覺得風險超高的
9:43.080–9:45.480
這是一個非常重要的企業風險警訊
9:45.480–9:49.080
如果企業的基礎設施過度依賴單一開源專案
9:49.080–9:52.320
特別是這種由少數個人維護的專案
9:52.320–9:55.040
當發生這種人事糾紛導致進度停擺時
9:55.040–9:57.720
企業就會立刻面臨技術斷層的風險
9:57.720–9:59.120
所以一定要有備案
9:59.120–10:00.800
就是所謂的 Plan B
10:00.800–10:03.160
沒錯 這也帶出了我們今天
10:03.160–10:05.080
最後一個重要的趨勢觀察
10:05.080–10:07.240
因為主專案合併困難
10:07.240–10:10.040
越來越多人轉向使用特定分支了
10:10.040–10:13.160
說到特定分支 我一直有個疑問
10:13.160–10:15.960
為什麼像 AMD
10:15.960–10:19.240
像是 RDNA3 或者 Strix Halo 等
10:19.240–10:21.640
非 NVIDIA 硬體的最佳化 PR
10:21.640–10:22.680
常被主線忽略
10:22.680–10:26.160
這是社群對特定品牌有偏見
10:26.160–10:28.160
還是程式碼維護上的考量
10:28.160–10:30.680
這絕對是程式碼維護上的考量
10:30.680–10:33.440
你想想看 Llama.cpp 的初衷是什麼
10:33.440–10:36.800
是為了讓模型在所有的硬體上都能跑
10:36.800–10:37.800
也就是通用性
10:37.800–10:40.600
對 為了維持這種通用性
10:40.600–10:42.880
主線其實已經變成了最小公倍數
10:42.880–10:46.720
如果把所有針對特定硬體的底層最佳化都加進去
10:46.720–10:49.160
程式碼會變得像義大利麵一樣複雜
10:49.160–10:51.120
根本無法維護對吧
10:51.120–10:53.280
沒錯 所以這不是偏見
10:53.280–10:56.200
而是為了專案存活必須做的妥協
10:56.200–10:58.520
那這樣的話
10:58.520–11:02.400
Llama.cpp 為了維持通用性而犧牲極限效能
11:02.400–11:04.600
未來是不是專用型 Fork
11:04.600–11:07.320
例如 EXLlama 或是 Strix 專用版
11:07.320–11:09.440
才是高效能推理的必然趨勢
11:09.440–11:12.480
目前社群的趨勢確實是擁抱 Fork
11:12.480–11:14.760
有人分享在特定硬體上
11:14.760–11:18.480
專用分支的速度甚至可以達到主線的 2 到 4 倍
11:18.480–11:21.000
哇 那差距很大
11:21.000–11:23.840
那如果我就是追求極致的 speed up
11:23.840–11:26.960
我是不是該直接改用 EX-LAMA V3
11:26.960–11:29.280
或者是 Tabby 這些其他專用框架
11:29.280–11:31.480
而不是繼續折騰 Llama.cpp
11:31.480–11:35.040
這個決策完全取決於你們公司的戰略定位
11:35.040–11:36.720
我們來做個實務解讀吧
11:36.720–11:41.360
好啊 如果你們企業的硬體規格是單一且固定的
11:41.360–11:43.920
例如老闆一口氣買了一批特定的伺服器
11:43.920–11:47.640
那使用專用框架就能壓榨出最大的硬體效益
11:47.640–11:49.520
沒錯 但反過來
11:49.520–11:52.000
如果你們是軟體服務商 SaaS 公司
11:52.000–11:55.320
你的終端客戶可能有千奇百怪的硬體設備
11:55.320–11:58.280
有人用 Mac 有人用五年前的舊電腦
11:58.280–12:01.040
對 那這時候如果你硬要用
12:01.040–12:03.600
追求極致效能的小眾專用框架
12:03.600–12:05.280
肯定會是一場維護災難
12:05.280–12:07.680
確實 這時候堅守
12:07.680–12:10.720
Llama.cpp 這樣泛用且穩定的主線
12:10.720–12:13.040
才是減少客訴的明智之舉
12:13.040–12:18.120
是的 通用性與極限效能本來就是天平的兩端
12:18.120–12:21.280
就像 Linux 過去也有針對特定硬體
12:21.280–12:22.720
高度最佳化的分支一樣
12:22.720–12:24.480
這是技術發展的常態
12:24.480–12:27.680
今天這一集深入探討真的太精彩了
12:27.680–12:31.120
我們從一個 42 倍速的神級最佳化出發
12:31.120–12:31.760
看懂了它背後
12:31.760–12:34.880
其實是拿 Ngram 去猜字的機制
12:34.880–12:38.000
沒錯 還順便破解了記憶體減半的秘密
12:38.000–12:40.600
接著我們見證了開源社群裡
12:40.600–12:44.080
因為一個小小的誤標記而引爆的封鎖危機
12:44.080–12:48.040
也看見了熱門專案維護者背後的巨大壓力
12:48.040–12:49.840
最後我們跟大家梳理了
12:49.840–12:51.680
企業技術選型的戰略思考
12:51.680–12:53.840
所以在節目的最後
12:53.840–12:56.160
我想留一個開放式的問題給大家思考
12:56.160–12:59.000
在 AI 技術迭代這麼快速的時代
12:59.000–13:01.960
當通用但稍慢的主流工具
13:01.960–13:06.080
與極致但小眾的專用工具擺在你面前時
13:06.080–13:08.880
你會為了效能而犧牲穩定性嗎
13:08.880–13:10.680
這裡我也要給大家一句
13:10.680–13:12.200
最核心的實務提醒
13:12.200–13:16.440
記住 不要只看新聞上表面宣稱的幾十倍加速
13:16.440–13:17.680
技術好不好
13:17.680–13:22.000
永遠要看它能不能在你真實的業務場景中落地生根
13:22.000–13:24.800
說得太好了 能落地才是最重要的
13:24.800–13:26.960
喜歡我們的深入分析討論嗎
13:26.960–13:29.480
記得轉發給有需要的親朋好友
13:29.480–13:32.640
並且幫我們按讚訂閱開啟小鈴鐺
13:32.640–13:36.120
更多相關資訊連結請參考影片下方的資訊欄
13:36.120–13:38.120
最後感謝您的收聽
13:38.120–13:39.960
祝您順心 我們下集再會
13:39.960–13:41.480
拜拜 拜拜
0:00.000–0:02.040
zh你有沒有想過一個問題
你有沒有想過一個問題
0:02.040–0:05.840
zh假設今天有一項超神級的最佳化技術
假設今天有一項超神級的最佳化技術
0:05.840–0:08.640
zh宣稱可以讓你的 AI 模型跑得飛快
宣稱可以讓你的 AI 模型跑得飛快
0:08.640–0:11.600
zh這項最佳化對我日常用 Llama.cpp
這項最佳化對我日常用 Llama.cpp
0:11.600–0:13.720
zh跑 LLM 的實際感覺有多大
跑 LLM 的實際感覺有多大
0:13.720–0:16.000
zh平常對話或生成文章
平常對話或生成文章
0:16.000–0:17.600
zh真的能快到 40 倍嗎
真的能快到 40 倍嗎
0:17.600–0:19.960
zh哇 40 倍這個數字
哇 40 倍這個數字
0:19.960–0:23.080
zh聽起來真的很像某種誇張的行銷話術對吧
聽起來真的很像某種誇張的行銷話術對吧
0:23.080–0:25.280
zh對啊 大家一看到這個標題都瘋了
對啊 大家一看到這個標題都瘋了
0:25.280–0:28.360
zh而且這四個針對 Ngram Cache 的修改
而且這四個針對 Ngram Cache 的修改
0:28.360–0:32.640
zh為什麼能同時做到減少 2.65 倍的峰值記憶體
為什麼能同時做到減少 2.65 倍的峰值記憶體
0:32.640–0:35.360
zh又大幅提升載入與 drafting 速度
又大幅提升載入與 drafting 速度
0:35.360–0:37.880
zh這聽起來完全違反物理法則嘛
這聽起來完全違反物理法則嘛
0:37.880–0:41.840
zh就是要馬兒跑得快又要馬兒不吃草
就是要馬兒跑得快又要馬兒不吃草
0:41.840–0:43.120
zh這到底怎麼辦到的
這到底怎麼辦到的
0:43.120–0:45.920
zh這個背後的機制其實非常巧妙
這個背後的機制其實非常巧妙
0:45.920–0:48.320
zh我們等一下絕對會好好拆解它
我們等一下絕對會好好拆解它
0:48.320–0:50.400
zh不過我們今天這場深入探討
不過我們今天這場深入探討
0:50.400–0:53.600
zh不只要揭開這個 40 倍加速的技術真相
不只要揭開這個 40 倍加速的技術真相
0:53.600–0:55.360
zh哦 還有別的內幕嗎
哦 還有別的內幕嗎
0:55.360–0:57.440
zh沒錯 更震撼的是
沒錯 更震撼的是
0:57.440–0:59.840
zh寫出這個神級最佳化的作者
寫出這個神級最佳化的作者
0:59.840–1:01.920
zh居然被主專案封鎖了
居然被主專案封鎖了
1:01.920–1:04.160
zh真的假的 這也太戲劇化了吧
真的假的 這也太戲劇化了吧
1:04.160–1:07.800
zh維護者僅因誤 Tag 就直接封鎖貢獻者
維護者僅因誤 Tag 就直接封鎖貢獻者
1:07.800–1:09.480
zh這樣過度反應的門檻
這樣過度反應的門檻
1:09.480–1:12.080
zh是否會嚴重打擊開源社群的貢獻熱情
是否會嚴重打擊開源社群的貢獻熱情
1:12.080–1:15.360
zh確實 這件事在社群裡炸開了鍋
確實 這件事在社群裡炸開了鍋
1:15.360–1:17.920
zh所以我們今天的任務有三個
所以我們今天的任務有三個
1:17.920–1:22.000
zh第一 搞懂這個宣稱 41.6 倍加速的
第一 搞懂這個宣稱 41.6 倍加速的
1:22.000–1:23.600
zhNgram Cache 技術真相
Ngram Cache 技術真相
1:23.600–1:27.920
zh第二 探討開源社群現在這種緊繃的路線之爭
第二 探討開源社群現在這種緊繃的路線之爭
1:27.920–1:29.440
zh那第三個呢
那第三個呢
1:29.440–1:31.680
zh第三就是實務解讀啦
第三就是實務解讀啦
1:31.680–1:34.320
zh不管你是正在評估導入 AI 的企業老闆
不管你是正在評估導入 AI 的企業老闆
1:34.320–1:37.480
zh還是每天在終端機前折騰模型的工程師
還是每天在終端機前折騰模型的工程師
1:37.480–1:39.160
zh我們要幫你判斷
我們要幫你判斷
1:39.160–1:42.320
zh面對這些看得到但不一定吃得到的技術
面對這些看得到但不一定吃得到的技術
1:42.320–1:45.080
zh該怎麼找出能真正落地的策略
該怎麼找出能真正落地的策略
1:45.080–1:46.560
zh這個觀念很關鍵
這個觀念很關鍵
1:46.560–1:50.120
zh所以既然作者被主專案封鎖了
所以既然作者被主專案封鎖了
1:50.120–1:52.680
zh我該如何手動將這些分支
我該如何手動將這些分支
1:52.680–1:55.280
zh像是 NgramCacheConstMap
像是 NgramCacheConstMap
1:55.280–1:57.320
zh與 Daniel Lemire 的 PR
與 Daniel Lemire 的 PR
1:57.320–1:59.400
zh合併到我自己的 Fork 來使用
合併到我自己的 Fork 來使用
1:59.400–2:02.040
zh這也是工程師們現在最頭痛的問題
這也是工程師們現在最頭痛的問題
2:02.040–2:04.120
zh對 我們稍後會聊到這種
對 我們稍後會聊到這種
2:04.120–2:06.480
zh自己動手豐衣足食的做法
自己動手豐衣足食的做法
2:06.480–2:08.640
zh也就是大家俗稱的科學怪人版
也就是大家俗稱的科學怪人版
2:08.640–2:12.440
zh科學怪人版 聽起來就很硬派
科學怪人版 聽起來就很硬派
2:12.440–2:14.880
zh那這也讓我想到
那這也讓我想到
2:14.880–2:16.240
zh為什麼像 AMD
為什麼像 AMD
2:16.240–2:19.160
zh像是 RDNA3 或者 Strix Halo 等
像是 RDNA3 或者 Strix Halo 等
2:19.160–2:21.680
zh非 NVIDIA 硬體的最佳化 PR
非 NVIDIA 硬體的最佳化 PR
2:21.680–2:23.040
zh常被主線忽略
常被主線忽略
2:23.040–2:24.680
zh這是社群偏見
這是社群偏見
2:24.680–2:26.360
zh還是程式碼維護上的考量
還是程式碼維護上的考量
2:26.360–2:28.120
zh這個問題非常犀利
這個問題非常犀利
2:28.120–2:30.480
zh它牽涉到未來 AI 基礎設施的走向
它牽涉到未來 AI 基礎設施的走向
2:30.480–2:33.400
zh所以 Llama.cpp 為了維持通用性
所以 Llama.cpp 為了維持通用性
2:33.400–2:34.680
zh而犧牲極限效能
而犧牲極限效能
2:34.680–2:36.840
zh未來是不是專用型 Fork
未來是不是專用型 Fork
2:36.840–2:38.920
zh像是 Strix Halo 專用版
像是 Strix Halo 專用版
2:38.920–2:41.120
zh才是高效能推理的必然趨勢
才是高效能推理的必然趨勢
2:41.120–2:43.280
zh如果我追求極致 Speed Up
如果我追求極致 Speed Up
2:43.280–2:46.000
zh是不是該直接改用 EXLlama V3
是不是該直接改用 EXLlama V3
2:46.000–2:48.120
zh或是 Tabby 或其他專用框架
或是 Tabby 或其他專用框架
2:48.120–2:50.160
zh而不是繼續折騰 Llama.cpp
而不是繼續折騰 Llama.cpp
2:50.160–2:52.920
zh沒錯 這些都會是我們今天探討的核心
沒錯 這些都會是我們今天探討的核心
2:52.920–2:55.000
zh那我們就先從大家最關心的
那我們就先從大家最關心的
2:55.000–2:57.560
zh那個 42 倍加速的神話開始解密吧
那個 42 倍加速的神話開始解密吧
2:57.560–2:59.640
zh好 我真的超級好奇
好 我真的超級好奇
2:59.640–3:01.120
zh這四個修改
這四個修改
3:01.120–3:02.560
zh到底施了什麼魔法
到底施了什麼魔法
3:02.560–3:04.680
zh怎麼可能記憶體用量變少
怎麼可能記憶體用量變少
3:04.680–3:05.760
zh速度還能飆升
速度還能飆升
3:05.760–3:07.800
zh其實要解開這個魔法
其實要解開這個魔法
3:07.800–3:10.760
zh我們得先跳脫一般對模型生成的想像
我們得先跳脫一般對模型生成的想像
3:10.760–3:13.440
zh這麼說 平常我們以為的加速
這麼說 平常我們以為的加速
3:13.440–3:16.480
zh是模型生成每一個 Token 的計算速度變快了
是模型生成每一個 Token 的計算速度變快了
3:16.480–3:18.720
zh但這次的核心技術叫做
但這次的核心技術叫做
3:18.720–3:20.160
enPrompt Lookup Drafting
Prompt Lookup Drafting
3:20.160–3:22.560
zh這不是整體的生成速度變快
這不是整體的生成速度變快
3:22.560–3:24.440
zh而是針對草稿生成
而是針對草稿生成
3:24.440–3:27.560
zh也就是 Drafting 這個特定階段的極致最佳化
也就是 Drafting 這個特定階段的極致最佳化
3:27.560–3:30.360
zh哦 所以不是每一句話都變快
哦 所以不是每一句話都變快
3:30.360–3:32.920
zh對 一般在跑 LLM 時啊
對 一般在跑 LLM 時啊
3:32.920–3:34.480
zh模型吐出每一個字
模型吐出每一個字
3:34.480–3:37.360
zh都要把龐大的權重載入 GPU 算過一遍
都要把龐大的權重載入 GPU 算過一遍
3:37.360–3:39.720
zh這超級吃記憶體頻寬
這超級吃記憶體頻寬
3:39.720–3:42.800
zh但 Prompt Lookup Drafting 改變了這個規則
但 Prompt Lookup Drafting 改變了這個規則
3:42.800–3:44.560
zh它可以說是在猜字
它可以說是在猜字
3:44.560–3:48.680
zh猜字 這聽起來有點像手機鍵盤的自動選字
猜字 這聽起來有點像手機鍵盤的自動選字
3:48.680–3:49.840
zh概念很像
概念很像
3:49.840–3:51.800
zh當你餵給它一段 Prompt 時
當你餵給它一段 Prompt 時
3:51.800–3:55.600
zh這個機制會在背景快速比對過去的文本規律
這個機制會在背景快速比對過去的文本規律
3:55.600–3:57.280
zh也就是你提到的 Ngram
也就是你提到的 Ngram
3:57.280–4:00.920
zh它如果在前面的上下文看到一樣的文字組合
它如果在前面的上下文看到一樣的文字組合
4:00.920–4:03.520
zh它就不去進行昂貴的神經網路運算
它就不去進行昂貴的神經網路運算
4:03.520–4:07.280
zh而是直接複製貼上下來的幾個字當作草稿
而是直接複製貼上下來的幾個字當作草稿
4:07.280–4:08.600
zh原來如此
原來如此
4:08.600–4:12.320
zh所以龐大的 LLM 只需要做一次單次驗證
所以龐大的 LLM 只需要做一次單次驗證
4:12.320–4:14.480
zh確認這幾個字合不合理就好了
確認這幾個字合不合理就好了
4:14.480–4:15.960
zh完全正確
完全正確
4:15.960–4:18.760
zh等於是拿極度廉價的純文字搜尋
等於是拿極度廉價的純文字搜尋
4:18.760–4:21.240
zh去交換極度昂貴的 GPU 運算
去交換極度昂貴的 GPU 運算
4:21.240–4:24.880
zh這聽起來就像是傳統的模型生成
這聽起來就像是傳統的模型生成
4:24.880–4:25.760
zh像是一位大廚
像是一位大廚
4:25.760–4:27.160
zh你每點一道菜
你每點一道菜
4:27.160–4:29.920
zh它都要從頭切菜備料開火現做
它都要從頭切菜備料開火現做
4:29.920–4:32.800
zh這個比喻很貼切 對吧
這個比喻很貼切 對吧
4:32.800–4:35.320
zh那這個 Prompt Lookup Drafting
那這個 Prompt Lookup Drafting
4:35.320–4:37.400
zh就像是大廚注意到
就像是大廚注意到
4:37.400–4:40.200
zh你每個禮拜二都點一模一樣的經典牛肉堡
你每個禮拜二都點一模一樣的經典牛肉堡
4:40.200–4:43.080
zh所以他在後廚早就把生菜
所以他在後廚早就把生菜
4:43.080–4:44.840
zh起司跟漢堡排預先疊好了
起司跟漢堡排預先疊好了
4:44.840–4:47.920
zh他最後還是得過一下火烤確認品質
他最後還是得過一下火烤確認品質
4:47.920–4:50.240
zh但備料的時間瞬間歸零
但備料的時間瞬間歸零
4:50.240–4:52.240
zh自己真的講到重點了
自己真的講到重點了
4:52.240–4:53.840
zh把昂貴的現做成本
把昂貴的現做成本
4:53.840–4:55.840
zh轉換成了極低成本的預處理
轉換成了極低成本的預處理
4:55.840–4:59.040
zh而且還有另一位知名開發者 Daniel Lemire
而且還有另一位知名開發者 Daniel Lemire
4:59.040–5:00.600
zh提出了進一步的最佳化
提出了進一步的最佳化
5:00.600–5:02.480
zh讓這個查找流程變得更快
讓這個查找流程變得更快
5:02.480–5:04.120
zh那記憶體呢
那記憶體呢
5:04.120–5:06.360
zh你剛剛還沒解答我的疑惑
你剛剛還沒解答我的疑惑
5:06.360–5:07.960
zh既然要記住前面的字
既然要記住前面的字
5:07.960–5:10.880
zh難道不需要占用更多記憶體去存快取嗎
難道不需要占用更多記憶體去存快取嗎
5:10.880–5:14.200
zh為什麼峰值記憶體反而減少了 2.65 倍
為什麼峰值記憶體反而減少了 2.65 倍
5:14.200–5:16.840
zh這是因為這四項修改
這是因為這四項修改
5:16.840–5:20.320
zh徹底翻新了資料在記憶體中的儲存與查找結構
徹底翻新了資料在記憶體中的儲存與查找結構
5:20.320–5:23.160
zh舊的做法是動態配置大量的空間
舊的做法是動態配置大量的空間
5:23.160–5:25.440
zh上下文一長記憶體就狂飆
上下文一長記憶體就狂飆
5:25.440–5:28.680
zh也就是常常會發生 out of memory 的狀況
也就是常常會發生 out of memory 的狀況
5:28.680–5:31.080
zh沒錯 但這次的最佳化包含了
沒錯 但這次的最佳化包含了
5:31.080–5:32.560
enN-gram Cache Constant Map
N-gram Cache Constant Map
5:32.560–5:35.840
zh它把查找表變成了一種更緊湊的靜態結構
它把查找表變成了一種更緊湊的靜態結構
5:35.840–5:38.080
zh不需要把所有狀態都塞進記憶體
不需要把所有狀態都塞進記憶體
5:38.080–5:40.680
zh而是用高效率的索引去指導資料
而是用高效率的索引去指導資料
5:40.680–5:43.320
zh結構變簡單了 記憶體占用就大幅下降
結構變簡單了 記憶體占用就大幅下降
5:43.320–5:45.600
zh哇 如果我是工程師
哇 如果我是工程師
5:45.600–5:46.800
zh這簡直是救星
這簡直是救星
5:46.800–5:48.960
zh這代表在邊緣設備
這代表在邊緣設備
5:48.960–5:51.080
zh或者是資源受限的伺服器上
或者是資源受限的伺服器上
5:51.080–5:53.160
zh以前會爆記憶體的模型
以前會爆記憶體的模型
5:53.160–5:54.960
zh現在有機會順暢跑完了
現在有機會順暢跑完了
5:54.960–5:57.840
zh對 那如果我們拉高層次來看
對 那如果我們拉高層次來看
5:57.840–5:59.600
zh如果你是老闆 這代表什麼
如果你是老闆 這代表什麼
5:59.600–6:01.520
zh代表伺服器硬體成本
代表伺服器硬體成本
6:01.520–6:02.840
zh可以省下一大筆錢
可以省下一大筆錢
6:02.840–6:05.640
zh不用為了應付偶爾飆高的記憶體峰值
不用為了應付偶爾飆高的記憶體峰值
6:05.640–6:07.000
zh去採購更貴的硬體
去採購更貴的硬體
6:07.000–6:08.600
zh完全正確
完全正確
6:08.600–6:11.000
zh但這裡我要潑一點冷水了
但這裡我要潑一點冷水了
6:11.000–6:13.840
zh哦 要進入現實打擊階段了嗎
哦 要進入現實打擊階段了嗎
6:13.840–6:17.520
zh哈哈 對 因為很多資深使用者實測後發現
哈哈 對 因為很多資深使用者實測後發現
6:17.520–6:19.360
zh端到端的實際加速感
端到端的實際加速感
6:19.360–6:21.440
zh絕對沒有 42 倍這麼誇張
絕對沒有 42 倍這麼誇張
6:21.440–6:22.560
zh這也就是為什麼
這也就是為什麼
6:22.560–6:24.240
zh我們必須從實驗室數據
我們必須從實驗室數據
6:24.240–6:26.080
zh走向真實世界的應用場景
走向真實世界的應用場景
6:26.080–6:27.440
zh其實我也想問這個
其實我也想問這個
6:27.440–6:29.400
enPrompt Lookup Drafting
Prompt Lookup Drafting
6:29.400–6:31.800
zh似乎非常依賴重複性高的文字
似乎非常依賴重複性高的文字
6:31.800–6:33.600
zh像是固定的 System Prompt
像是固定的 System Prompt
6:33.600–6:37.680
zh那如果是每次都不一樣的單次隨機提問
那如果是每次都不一樣的單次隨機提問
6:37.680–6:39.640
zh這項最佳化還有效嗎
這項最佳化還有效嗎
6:39.640–6:41.280
zh這就是問題所在
這就是問題所在
6:41.280–6:43.040
zh如果提示詞高度重複
如果提示詞高度重複
6:43.040–6:45.720
zhNgram Cache 就像是免費的加速器
Ngram Cache 就像是免費的加速器
6:45.720–6:47.960
zh但如果是高度變動的任務
但如果是高度變動的任務
6:47.960–6:50.320
zh像是每次都問截然不同的創意寫作
像是每次都問截然不同的創意寫作
6:50.320–6:52.120
zh這個機制幾乎不會觸發
這個機制幾乎不會觸發
6:52.120–6:55.640
zh所以它是一種極度依賴工作負載
所以它是一種極度依賴工作負載
6:55.640–6:57.760
zh也就是 Workload Dependent 的技術咯
也就是 Workload Dependent 的技術咯
6:57.760–7:00.800
zh沒錯 所以我們來聊聊企業該怎麼應用
沒錯 所以我們來聊聊企業該怎麼應用
7:00.800–7:04.160
zh如果你們公司是做特定場景的客服機器人
如果你們公司是做特定場景的客服機器人
7:04.160–7:06.320
zh每天都在回答類似的退換貨問題
每天都在回答類似的退換貨問題
7:06.320–7:09.320
zh那這項技術就能大幅提升回應速度了
那這項技術就能大幅提升回應速度了
7:09.320–7:12.880
zh對 或者是需要做大量固定格式的文件摘要
對 或者是需要做大量固定格式的文件摘要
7:12.880–7:15.320
zh這時候 Ngram 快取命中率極高
這時候 Ngram 快取命中率極高
7:15.320–7:16.880
zh你的競爭力就會大幅提升
你的競爭力就會大幅提升
7:16.880–7:18.480
zh但反過來說
但反過來說
7:18.480–7:21.680
zh如果主管看到新聞上寫 42 倍加速
如果主管看到新聞上寫 42 倍加速
7:21.680–7:23.200
zh隔天就跑去跟團隊說
隔天就跑去跟團隊說
7:23.200–7:26.240
zh下個月把我們的 API 速度提升 40 倍
下個月把我們的 API 速度提升 40 倍
7:26.240–7:27.880
zh這會是一場災難吧
這會是一場災難吧
7:27.880–7:30.800
zh絕對是災難 這就是潛在的誤區
絕對是災難 這就是潛在的誤區
7:30.800–7:33.560
zh千萬不要對團隊開出不切實際的 KPI
千萬不要對團隊開出不切實際的 KPI
7:33.560–7:35.760
zh必須先評估自身的 Prompt 使用習慣
必須先評估自身的 Prompt 使用習慣
7:35.760–7:36.600
zh了解
了解
7:36.600–7:38.920
zh好 那既然我們知道這項技術
好 那既然我們知道這項技術
7:38.920–7:40.920
zh在特定場景下非常有價值
在特定場景下非常有價值
7:40.920–7:44.120
zh問題來了 為什麼這麼好的最佳化
問題來了 為什麼這麼好的最佳化
7:44.120–7:46.240
zh會引發這麼大的社群風暴
會引發這麼大的社群風暴
7:46.240–7:49.800
zh這就牽涉到開源社群最脆弱的神經了
這就牽涉到開源社群最脆弱的神經了
7:49.800–7:52.360
zh我看新聞的時候真的覺得很離譜
我看新聞的時候真的覺得很離譜
7:52.360–7:54.800
zh這顯然是一個操作上的誤會
這顯然是一個操作上的誤會
7:54.800–7:57.480
zh貢獻者只是在自己的 Fork 測試時
貢獻者只是在自己的 Fork 測試時
7:57.480–7:59.080
zh標記到 Upstream 協作者
標記到 Upstream 協作者
7:59.080–8:01.240
zh維護者直接封鎖
維護者直接封鎖
8:01.240–8:02.320
zh會不會太超過了
會不會太超過了
8:02.320–8:04.760
zh這個舉動確實非常激烈
這個舉動確實非常激烈
8:04.760–8:07.120
zh對啊 GitHub 為什麼會允許
對啊 GitHub 為什麼會允許
8:07.120–8:09.400
zh非 mainline 儲存庫的 PR 操作
非 mainline 儲存庫的 PR 操作
8:09.400–8:10.480
zh通知到外部人員
通知到外部人員
8:10.480–8:13.000
zh導致這種不小心標記到他人
導致這種不小心標記到他人
8:13.000–8:14.520
zh而釀成糾紛的情況發生
而釀成糾紛的情況發生
8:14.520–8:16.480
zh其實 GitHub 的這個設計
其實 GitHub 的這個設計
8:16.480–8:17.880
zh一直被很多人抱怨
一直被很多人抱怨
8:17.880–8:20.200
zh只要你打出 at 加上帳號
只要你打出 at 加上帳號
8:20.200–8:21.920
zh即使是在你自己的分支
即使是在你自己的分支
8:21.920–8:23.600
zh系統還是會發通知給對方
系統還是會發通知給對方
8:23.600–8:25.840
zh這很容易讓人踩雷
這很容易讓人踩雷
8:25.840–8:28.560
zh那是否有其他人或核心團隊成員
那是否有其他人或核心團隊成員
8:28.560–8:30.720
zh能幫忙向維護者協調解鎖
能幫忙向維護者協調解鎖
8:30.720–8:33.560
zh目前社群裡有兩種截然不同的聲音
目前社群裡有兩種截然不同的聲音
8:33.560–8:35.680
zh反對的這一派就跟你一樣
反對的這一派就跟你一樣
8:35.680–8:36.920
zh覺得這極度不專業
覺得這極度不專業
8:36.920–8:37.920
zh甚至有人說
甚至有人說
8:37.920–8:40.600
zh這就是許多優秀專案死亡的原因
這就是許多優秀專案死亡的原因
8:40.600–8:43.440
zh因為掌權者的傲慢跟守門員心態嗎
因為掌權者的傲慢跟守門員心態嗎
8:43.440–8:45.760
zh沒錯 但我們也要看看另一派的觀點
沒錯 但我們也要看看另一派的觀點
8:45.760–8:47.960
zh他們點出了一个殘酷的現實
他們點出了一个殘酷的現實
8:47.960–8:50.400
zh就是維護者的職業倦怠
就是維護者的職業倦怠
8:50.400–8:51.320
zh也就是 burn out
也就是 burn out
8:51.320–8:54.600
zh因為他們每天要處理的東西太多了
因為他們每天要處理的東西太多了
8:54.600–8:57.040
zh對 像 Llama.cpp 這麼熱門的專案
對 像 Llama.cpp 這麼熱門的專案
8:57.040–9:00.560
zh維護者每天面對無數的通知 PR 還有 issue
維護者每天面對無數的通知 PR 還有 issue
9:00.560–9:02.480
zh在巨大的精神壓力下
在巨大的精神壓力下
9:02.480–9:03.600
zh任何無效的干擾
任何無效的干擾
9:03.600–9:06.320
zh都可能成為壓垮駱駝的最後一根稻草
都可能成為壓垮駱駝的最後一根稻草
9:06.320–9:09.480
zh所以這次封鎖 與其說是惡意
所以這次封鎖 與其說是惡意
9:09.480–9:12.400
zh不如說是處於極限狀態下的過度防衛
不如說是處於極限狀態下的過度防衛
9:12.400–9:13.400
zh確實是這樣
確實是這樣
9:13.400–9:15.920
zh但這就帶來了一個嚴峻的實務問題
但這就帶來了一個嚴峻的實務問題
9:15.920–9:17.480
zh既然原作者被封鎖了
既然原作者被封鎖了
9:17.480–9:20.480
zh很多急需這項效能最佳化的工程師該怎麼辦
很多急需這項效能最佳化的工程師該怎麼辦
9:20.480–9:23.320
zh對啊 我該如何手動將這些分支
對啊 我該如何手動將這些分支
9:23.320–9:24.800
zh合併到我自己的 Fork 來使用
合併到我自己的 Fork 來使用
9:24.800–9:27.080
zh現在很多人會自製大家俗稱的
現在很多人會自製大家俗稱的
9:27.080–9:28.200
enFrankenstein Llama
Frankenstein Llama
9:28.200–9:30.640
zh也就是科學怪人版的混合版本
也就是科學怪人版的混合版本
9:30.640–9:33.800
zh工程師會自己去把原作者的分支拉下來
工程師會自己去把原作者的分支拉下來
9:33.800–9:35.280
zh手動合併進專案裡
手動合併進專案裡
9:35.280–9:37.840
zh自己縫合出一個科學怪人版本
自己縫合出一個科學怪人版本
9:37.840–9:41.440
zh這聽起來 如果我是企業的技術主管
這聽起來 如果我是企業的技術主管
9:41.440–9:43.080
zh我會覺得風險超高的
我會覺得風險超高的
9:43.080–9:45.480
zh這是一個非常重要的企業風險警訊
這是一個非常重要的企業風險警訊
9:45.480–9:49.080
zh如果企業的基礎設施過度依賴單一開源專案
如果企業的基礎設施過度依賴單一開源專案
9:49.080–9:52.320
zh特別是這種由少數個人維護的專案
特別是這種由少數個人維護的專案
9:52.320–9:55.040
zh當發生這種人事糾紛導致進度停擺時
當發生這種人事糾紛導致進度停擺時
9:55.040–9:57.720
zh企業就會立刻面臨技術斷層的風險
企業就會立刻面臨技術斷層的風險
9:57.720–9:59.120
zh所以一定要有備案
所以一定要有備案
9:59.120–10:00.800
zh就是所謂的 Plan B
就是所謂的 Plan B
10:00.800–10:03.160
zh沒錯 這也帶出了我們今天
沒錯 這也帶出了我們今天
10:03.160–10:05.080
zh最後一個重要的趨勢觀察
最後一個重要的趨勢觀察
10:05.080–10:07.240
zh因為主專案合併困難
因為主專案合併困難
10:07.240–10:10.040
zh越來越多人轉向使用特定分支了
越來越多人轉向使用特定分支了
10:10.040–10:13.160
zh說到特定分支 我一直有個疑問
說到特定分支 我一直有個疑問
10:13.160–10:15.960
zh為什麼像 AMD
為什麼像 AMD
10:15.960–10:19.240
zh像是 RDNA3 或者 Strix Halo 等
像是 RDNA3 或者 Strix Halo 等
10:19.240–10:21.640
zh非 NVIDIA 硬體的最佳化 PR
非 NVIDIA 硬體的最佳化 PR
10:21.640–10:22.680
zh常被主線忽略
常被主線忽略
10:22.680–10:26.160
zh這是社群對特定品牌有偏見
這是社群對特定品牌有偏見
10:26.160–10:28.160
zh還是程式碼維護上的考量
還是程式碼維護上的考量
10:28.160–10:30.680
zh這絕對是程式碼維護上的考量
這絕對是程式碼維護上的考量
10:30.680–10:33.440
zh你想想看 Llama.cpp 的初衷是什麼
你想想看 Llama.cpp 的初衷是什麼
10:33.440–10:36.800
zh是為了讓模型在所有的硬體上都能跑
是為了讓模型在所有的硬體上都能跑
10:36.800–10:37.800
zh也就是通用性
也就是通用性
10:37.800–10:40.600
zh對 為了維持這種通用性
對 為了維持這種通用性
10:40.600–10:42.880
zh主線其實已經變成了最小公倍數
主線其實已經變成了最小公倍數
10:42.880–10:46.720
zh如果把所有針對特定硬體的底層最佳化都加進去
如果把所有針對特定硬體的底層最佳化都加進去
10:46.720–10:49.160
zh程式碼會變得像義大利麵一樣複雜
程式碼會變得像義大利麵一樣複雜
10:49.160–10:51.120
zh根本無法維護對吧
根本無法維護對吧
10:51.120–10:53.280
zh沒錯 所以這不是偏見
沒錯 所以這不是偏見
10:53.280–10:56.200
zh而是為了專案存活必須做的妥協
而是為了專案存活必須做的妥協
10:56.200–10:58.520
zh那這樣的話
那這樣的話
10:58.520–11:02.400
zhLlama.cpp 為了維持通用性而犧牲極限效能
Llama.cpp 為了維持通用性而犧牲極限效能
11:02.400–11:04.600
zh未來是不是專用型 Fork
未來是不是專用型 Fork
11:04.600–11:07.320
zh例如 EXLlama 或是 Strix 專用版
例如 EXLlama 或是 Strix 專用版
11:07.320–11:09.440
zh才是高效能推理的必然趨勢
才是高效能推理的必然趨勢
11:09.440–11:12.480
zh目前社群的趨勢確實是擁抱 Fork
目前社群的趨勢確實是擁抱 Fork
11:12.480–11:14.760
zh有人分享在特定硬體上
有人分享在特定硬體上
11:14.760–11:18.480
zh專用分支的速度甚至可以達到主線的 2 到 4 倍
專用分支的速度甚至可以達到主線的 2 到 4 倍
11:18.480–11:21.000
zh哇 那差距很大
哇 那差距很大
11:21.000–11:23.840
zh那如果我就是追求極致的 speed up
那如果我就是追求極致的 speed up
11:23.840–11:26.960
zh我是不是該直接改用 EX-LAMA V3
我是不是該直接改用 EX-LAMA V3
11:26.960–11:29.280
zh或者是 Tabby 這些其他專用框架
或者是 Tabby 這些其他專用框架
11:29.280–11:31.480
zh而不是繼續折騰 Llama.cpp
而不是繼續折騰 Llama.cpp
11:31.480–11:35.040
zh這個決策完全取決於你們公司的戰略定位
這個決策完全取決於你們公司的戰略定位
11:35.040–11:36.720
zh我們來做個實務解讀吧
我們來做個實務解讀吧
11:36.720–11:41.360
zh好啊 如果你們企業的硬體規格是單一且固定的
好啊 如果你們企業的硬體規格是單一且固定的
11:41.360–11:43.920
zh例如老闆一口氣買了一批特定的伺服器
例如老闆一口氣買了一批特定的伺服器
11:43.920–11:47.640
zh那使用專用框架就能壓榨出最大的硬體效益
那使用專用框架就能壓榨出最大的硬體效益
11:47.640–11:49.520
zh沒錯 但反過來
沒錯 但反過來
11:49.520–11:52.000
zh如果你們是軟體服務商 SaaS 公司
如果你們是軟體服務商 SaaS 公司
11:52.000–11:55.320
zh你的終端客戶可能有千奇百怪的硬體設備
你的終端客戶可能有千奇百怪的硬體設備
11:55.320–11:58.280
zh有人用 Mac 有人用五年前的舊電腦
有人用 Mac 有人用五年前的舊電腦
11:58.280–12:01.040
zh對 那這時候如果你硬要用
對 那這時候如果你硬要用
12:01.040–12:03.600
zh追求極致效能的小眾專用框架
追求極致效能的小眾專用框架
12:03.600–12:05.280
zh肯定會是一場維護災難
肯定會是一場維護災難
12:05.280–12:07.680
zh確實 這時候堅守
確實 這時候堅守
12:07.680–12:10.720
zhLlama.cpp 這樣泛用且穩定的主線
Llama.cpp 這樣泛用且穩定的主線
12:10.720–12:13.040
zh才是減少客訴的明智之舉
才是減少客訴的明智之舉
12:13.040–12:18.120
zh是的 通用性與極限效能本來就是天平的兩端
是的 通用性與極限效能本來就是天平的兩端
12:18.120–12:21.280
zh就像 Linux 過去也有針對特定硬體
就像 Linux 過去也有針對特定硬體
12:21.280–12:22.720
zh高度最佳化的分支一樣
高度最佳化的分支一樣
12:22.720–12:24.480
zh這是技術發展的常態
這是技術發展的常態
12:24.480–12:27.680
zh今天這一集深入探討真的太精彩了
今天這一集深入探討真的太精彩了
12:27.680–12:31.120
zh我們從一個 42 倍速的神級最佳化出發
我們從一個 42 倍速的神級最佳化出發
12:31.120–12:31.760
zh看懂了它背後
看懂了它背後
12:31.760–12:34.880
zh其實是拿 Ngram 去猜字的機制
其實是拿 Ngram 去猜字的機制
12:34.880–12:38.000
zh沒錯 還順便破解了記憶體減半的秘密
沒錯 還順便破解了記憶體減半的秘密
12:38.000–12:40.600
zh接著我們見證了開源社群裡
接著我們見證了開源社群裡
12:40.600–12:44.080
zh因為一個小小的誤標記而引爆的封鎖危機
因為一個小小的誤標記而引爆的封鎖危機
12:44.080–12:48.040
zh也看見了熱門專案維護者背後的巨大壓力
也看見了熱門專案維護者背後的巨大壓力
12:48.040–12:49.840
zh最後我們跟大家梳理了
最後我們跟大家梳理了
12:49.840–12:51.680
zh企業技術選型的戰略思考
企業技術選型的戰略思考
12:51.680–12:53.840
zh所以在節目的最後
所以在節目的最後
12:53.840–12:56.160
zh我想留一個開放式的問題給大家思考
我想留一個開放式的問題給大家思考
12:56.160–12:59.000
zh在 AI 技術迭代這麼快速的時代
在 AI 技術迭代這麼快速的時代
12:59.000–13:01.960
zh當通用但稍慢的主流工具
當通用但稍慢的主流工具
13:01.960–13:06.080
zh與極致但小眾的專用工具擺在你面前時
與極致但小眾的專用工具擺在你面前時
13:06.080–13:08.880
zh你會為了效能而犧牲穩定性嗎
你會為了效能而犧牲穩定性嗎
13:08.880–13:10.680
zh這裡我也要給大家一句
這裡我也要給大家一句
13:10.680–13:12.200
zh最核心的實務提醒
最核心的實務提醒
13:12.200–13:16.440
zh記住 不要只看新聞上表面宣稱的幾十倍加速
記住 不要只看新聞上表面宣稱的幾十倍加速
13:16.440–13:17.680
zh技術好不好
技術好不好
13:17.680–13:22.000
zh永遠要看它能不能在你真實的業務場景中落地生根
永遠要看它能不能在你真實的業務場景中落地生根
13:22.000–13:24.800
zh說得太好了 能落地才是最重要的
說得太好了 能落地才是最重要的
13:24.800–13:26.960
zh喜歡我們的深入分析討論嗎
喜歡我們的深入分析討論嗎
13:26.960–13:29.480
zh記得轉發給有需要的親朋好友
記得轉發給有需要的親朋好友
13:29.480–13:32.640
zh並且幫我們按讚訂閱開啟小鈴鐺
並且幫我們按讚訂閱開啟小鈴鐺
13:32.640–13:36.120
zh更多相關資訊連結請參考影片下方的資訊欄
更多相關資訊連結請參考影片下方的資訊欄
13:36.120–13:38.120
zh最後感謝您的收聽
最後感謝您的收聽
13:38.120–13:39.960
zh祝您順心 我們下集再會
祝您順心 我們下集再會
13:39.960–13:41.480
zh拜拜 拜拜
拜拜 拜拜

影片筆記:不用換顯卡也能暴增 42 倍?Llama.cpp 榨出你沒想到的隱藏效能 ⚡🤯

<!-- VIDEONOTE_PUBLICATION_WARNINGS_BEGIN -->

⚠️ 全文快速校讀發現待確認修正

本筆記已完成可閱讀的逐字稿與時間跳轉;下列為待處理問題,建議播放原片確認。

  • 待修正:⚠️ 全文快速校讀:已套用暫定修正,請確認(segment=63 已先套用暫定修正:像是 Goofl Strix 專用版 → 像是 Strix Halo 專用版;segment=66 已先套用暫定修正:是不是該直接改用 XLama V3 → 是不是該直接改用 EXLlama V3)
  • 待修正:逐字稿可先使用,但有待校正清單(segment=281 rapid_semantic_review: 全文速讀上下文判斷;尚未回聽或交叉比對)

<!-- VIDEONOTE_PUBLICATION_WARNINGS_END -->

一句話總結

影片解析 Llama.cpp 透過 Ngram Cache 與 Prompt Lookup Drafting 技術,在特定重複性高負載下宣稱可達 40 倍以上加速,但強調此效能高度依賴工作負載,並深入探討開源社群因技術爭議引發的封鎖事件,以及企業在「通用性」與「極限效能」間的硬體選型策略。

核心重點

  • 技術機制:利用 Ngram 比對重複文本規律,以廉價的文字搜尋取代昂貴的 GPU 神經網路運算,主要優化「草稿生成(Drafting)」階段,並透過 N-gram Cache Constant Map 降低記憶體峰值。
  • 效能現實:宣稱的 40-42 倍加速高度依賴「工作負載(Workload Dependent)」。在 System Prompt 重複或固定格式任務中效果顯著,但在隨機創意寫作等高變動場景中幾乎無效。
  • 社群爭議:發生貢獻者在 Fork 測試時誤標記上游協作者,遭維護者直接封鎖的事件,引發關於開源社群「維護者倦怠(Burn out)」與過度反應的討論。
  • 企業策略:若硬體單一固定,可考慮專用框架(如 EXLlama V3、Tabby 或特定硬體 Fork)追求極致效能;若需支援多樣化硬體(SaaS 服務),則應堅持 Llama.cpp 主線的通用性,避免維護災難。

詳細大綱

I. 技術解密:40 倍加速的魔法與現實

  • 核心機制:Prompt Lookup Drafting
  • 非整體生成速度變快,而是針對「草稿生成(Drafting)」階段的最佳化。
  • 原理:在背景比對過去文本規律(Ngram),若看到相同文字組合,直接複製貼上作為草稿。
  • 效益:用極度廉價的純文字搜尋,交換極度昂貴的 GPU 運算。
  • 比喻:如同大廚預先備好經典牛肉堡的食材,最後僅需過火烤確認品質,而非每道菜都從頭切菜備料。
  • 記憶體優化:N-gram Cache Constant Map
  • 舊做法:動態配置大量空間,上下文一長易發生 Out of Memory。
  • 新做法:將查找表轉為緊湊的靜態結構,使用高效率索引指導資料,大幅降低記憶體占用(宣稱減少 2.65 倍峰值記憶體)。
  • 受益者:邊緣設備或資源受限的伺服器,有機會順暢運行以前會爆記憶體的模型。
  • 效能評估:實驗室數據 vs. 真實世界
  • 宣稱加速:40 倍至 42 倍(提及 41.6 倍)。
  • 實際限制:高度依賴工作負載(Workload Dependent)。
  • 適用場景:固定 System Prompt、客服機器人回答類似問題、大量固定格式文件摘要(命中率極高)。
  • 不適用場景:每次不同的單次隨機提問、創意寫作(機制幾乎不觸發)。
  • 企業警示:勿對團隊開出不切實際的 KPI(如要求 API 速度提升 40 倍),需先評估 Prompt 使用習慣。

II. 社群爭議:封鎖事件與維護者困境

  • 事件回顧
  • 貢獻者在 Fork 測試時,標記(Tag)到 Upstream 協作者。
  • 維護者直接封鎖貢獻者,引發社群炸鍋。
  • GitHub 機制問題:在非 mainline 儲存庫的 PR 操作中,打出 @ 加上帳號仍會發通知給對方,易釀成糾紛。
  • 觀點對立
  • 反對派:認為維護者過度反應、不專業,掌權者的傲慢與守門員心態可能導致優秀專案死亡。
  • 維護者視角:面臨巨大的「職業倦怠(Burn out)」與精神壓力。處理無數通知、PR 與 Issue,無效干擾可能成為壓垮駱駝的最後一根稻草,封鎖視為極限狀態下的過度防衛。
  • 實務應對:科學怪人版(Frankenstein Llama)
  • 因原作者被封鎖,工程師手動將原作者分支(如 NgramCacheConstMap)與 Daniel Lemire 的 PR 合併到自己的 Fork。
  • 企業風險:基礎設施過度依賴單一開源專案,若發生人事糾紛導致進度停擺,面臨技術斷層風險。
  • 建議:企業需有 Plan B,評估自行縫合版本的風險。

III. 硬體生態與技術選型戰略

  • 通用性 vs. 極限效能
  • Llama.cpp 初衷:讓模型在所有硬體上都能跑(通用性)。
  • 主線妥協:為維持通用性,主線成為「最小公倍數」,若加入所有特定硬體底層最佳化,程式碼將如義大利麵般複雜無法維護。
  • 非 NVIDIA 硬體困境:AMD(提及 RDNA3、Strix Halo)等硬體的最佳化 PR 常被主線忽略,非因偏見,而是程式碼維護考量。
  • 專用框架與 Fork 的趨勢
  • 社群趨勢:擁抱特定硬體分支(Fork),特定硬體上專用分支速度可達主線 2 到 4 倍。
  • 替代方案提及:EXLlama V3、Tabby、Strix 專用版。
  • 企業決策模型
  • 情境 A:硬體單一固定
  • 例如:一口氣購買特定規格伺服器。
  • 策略:使用專用框架或專用分支,壓榨最大硬體效益。
  • 情境 B:軟體服務商(SaaS)
  • 例如:終端客戶硬體千奇百怪(Mac、舊電腦等)。
  • 策略:堅守 Llama.cpp 泛用且穩定的主線,減少客訴與維護災難。
  • 結論:通用性與極限效能是天平兩端,如同 Linux 針對特定硬體的最佳化分支,是技術發展常態。

工具 / 模型 / 名詞整理

  • Llama.cpp:主要討論的 C++ 推理庫。
  • LLM:大型語言模型。
  • Ngram Cache:技術核心機制之一。
  • Prompt Lookup Drafting:草稿生成最佳化技術名稱。
  • N-gram Cache Constant Map:記憶體結構最佳化技術名稱。
  • Daniel Lemire:知名開發者,提出進一步最佳化。
  • GitHub:程式碼託管平台,提及 PR 與通知機制。
  • AMD:硬體廠商。
  • RDNA3:提及的非 NVIDIA 硬體架構。
  • Strix Halo:提及的非 NVIDIA 硬體架構。
  • EXLlama V3:提及的專用框架/版本。
  • Tabby:提及的專用框架。
  • Strix 專用版:提及的專用分支。
  • Frankenstein Llama:俗稱的「科學怪人版」混合版本。
  • Linux:作為通用性與專用分支類比的作業系統。

操作流程整理

  1. 評估工作負載:確認應用場景是否為高重複性(如固定 System Prompt、客服機器人、固定格式摘要)。若是隨機創意寫作,該加速技術可能無效。
  2. 硬體環境診斷:
  • 若硬體單一固定(如專屬伺服器):評估使用專用框架(EXLlama V3, Tabby)或特定硬體 Fork 以追求極致效能。
  • 若需支援多樣化硬體(SaaS 服務):堅持使用 Llama.cpp 主線,確保通用性與穩定性。
  1. 技術實作與監控:
  • 若採用 Llama.cpp 相關優化,監控記憶體峰值(N-gram Cache Constant Map 可減少 2.65 倍峰值)。
  • 理解加速主要發生在「草稿生成(Drafting)」階段,透過 Ngram 比對重複文本規律,以文字搜尋取代 GPU 運算。
  1. 風險管理:
  • 若依賴開源專案,需警惕維護者倦怠與社群爭議可能導致的技術斷層。
  • 建立 Plan B,評估自行縫合版本(如合併原作者分支與 Daniel Lemire PR)的風險。

值得注意的限制或風險

  • 效能依賴性:宣稱的 40-42 倍加速高度依賴工作負載,在隨機提問或創意寫作中幾乎無效,企業勿開出不切實際的 KPI。
  • 社群不穩定性:開源專案可能因維護者倦怠或溝通誤會(如標記通知導致封鎖)而產生技術斷層,依賴單一專案有風險。
  • 維護複雜度:為特定硬體加入最佳化會使程式碼複雜化,主線為維持通用性可能忽略特定硬體優化,導致非 NVIDIA 硬體使用者需依賴 Fork。

逐字稿辨識疑點

  • 加速倍數不一致:分段筆記中分別出現「40 倍」、「41.6 倍」、「42 倍加速」,需查證原始數據來源以確認精確數字。
  • Strix Halo:AMD 產品線名稱,需確認是否為正確的產品代號或口誤。
  • EXLlama V3:需查證該框架版本號是否準確,或是否為口誤。
  • Upstream 協作者:提及貢獻者標記到 Upstream 協作者導致封鎖,需查證具體的技術細節與 GitHub 通知機制邏輯。
  • NgramCacheConstMap:程式碼或分支名稱,需查證是否為正確的變數名或分支名。
  • Daniel Lemire 的 PR:需查證具體的 Pull Request 編號或內容。

可延伸追問

  • 在實際企業部署中,如何量化評估「工作負載」是否適合使用 Prompt Lookup Drafting?
  • 對於 SaaS 服務商,如何在保持 Llama.cpp 主線通用性的同時,應對客戶對效能的極高要求?
  • 開源社群的「維護者倦怠」現象是否有具體的機制或工具可以緩解,以避免技術專案因人事糾紛而停擺?
  • 除了 EXLlama V3 和 Tabby,目前還有哪些專用框架或 Fork 在特定硬體上表現優異?

尚未產生學習筆記

請在 Telegram 指令最後加上「學習」,例如:videonote 網址 英文 雙語 學習