{
  "schema": "videonote.subtitle_normalize.v1",
  "input_cue_count": 339,
  "kept_cue_count": 339,
  "dropped_cue_count": 0,
  "duplicate_merged_count": 0,
  "overlap_repaired_count": 0,
  "rolling_prefix_removed_count": 0,
  "timing_uncertain_count": 0,
  "coverage_ratio": 0.924049,
  "gaps": [],
  "issues": [],
  "cues": [
    {
      "id": 0,
      "start": 0.0,
      "end": 2.04,
      "text": "你有沒有想過一個問題",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 1,
      "start": 2.04,
      "end": 5.84,
      "text": "假設今天有一項超神級的最佳化技術",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 2,
      "start": 5.84,
      "end": 8.64,
      "text": "宣稱可以讓你的 AI 模型跑得飛快",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 3,
      "start": 8.64,
      "end": 11.6,
      "text": "這項最佳化對我日常用 Llama.cpp",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 4,
      "start": 11.6,
      "end": 13.72,
      "text": "跑 LLM 的實際感覺有多大",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 5,
      "start": 13.72,
      "end": 16.0,
      "text": "平常對話或生成文章",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 6,
      "start": 16.0,
      "end": 17.6,
      "text": "真的能快到 40 倍嗎",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 7,
      "start": 17.6,
      "end": 19.96,
      "text": "哇 40 倍這個數字",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 8,
      "start": 19.96,
      "end": 23.08,
      "text": "聽起來真的很像某種誇張的行銷話術對吧",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 9,
      "start": 23.08,
      "end": 25.28,
      "text": "對啊 大家一看到這個標題都瘋了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 10,
      "start": 25.28,
      "end": 28.36,
      "text": "而且這四個針對 Ngram Cache 的修改",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 11,
      "start": 28.36,
      "end": 32.64,
      "text": "為什麼能同時做到減少 2.65 倍的峰值記憶體",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 12,
      "start": 32.64,
      "end": 35.36,
      "text": "又大幅提升載入與 drafting 速度",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 13,
      "start": 35.36,
      "end": 37.88,
      "text": "這聽起來完全違反物理法則嘛",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 14,
      "start": 37.88,
      "end": 41.84,
      "text": "就是要馬兒跑得快又要馬兒不吃草",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 15,
      "start": 41.84,
      "end": 43.12,
      "text": "這到底怎麼辦到的",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 16,
      "start": 43.12,
      "end": 45.92,
      "text": "這個背後的機制其實非常巧妙",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 17,
      "start": 45.92,
      "end": 48.32,
      "text": "我們等一下絕對會好好拆解它",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 18,
      "start": 48.32,
      "end": 50.4,
      "text": "不過我們今天這場深入探討",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 19,
      "start": 50.4,
      "end": 53.6,
      "text": "不只要揭開這個 40 倍加速的技術真相",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 20,
      "start": 53.6,
      "end": 55.36,
      "text": "哦 還有別的內幕嗎",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 21,
      "start": 55.36,
      "end": 57.44,
      "text": "沒錯 更震撼的是",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 22,
      "start": 57.44,
      "end": 59.84,
      "text": "寫出這個神級最佳化的作者",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 23,
      "start": 59.84,
      "end": 61.92,
      "text": "居然被主專案封鎖了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 24,
      "start": 61.92,
      "end": 64.16,
      "text": "真的假的 這也太戲劇化了吧",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 25,
      "start": 64.16,
      "end": 67.8,
      "text": "維護者僅因誤 Tag 就直接封鎖貢獻者",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 26,
      "start": 67.8,
      "end": 69.48,
      "text": "這樣過度反應的門檻",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 27,
      "start": 69.48,
      "end": 72.08,
      "text": "是否會嚴重打擊開源社群的貢獻熱情",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 28,
      "start": 72.08,
      "end": 75.36,
      "text": "確實 這件事在社群裡炸開了鍋",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 29,
      "start": 75.36,
      "end": 77.92,
      "text": "所以我們今天的任務有三個",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 30,
      "start": 77.92,
      "end": 82.0,
      "text": "第一 搞懂這個宣稱 41.6 倍加速的",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 31,
      "start": 82.0,
      "end": 83.6,
      "text": "Ngram Cache 技術真相",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 32,
      "start": 83.6,
      "end": 87.92,
      "text": "第二 探討開源社群現在這種緊繃的路線之爭",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 33,
      "start": 87.92,
      "end": 89.44,
      "text": "那第三個呢",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 34,
      "start": 89.44,
      "end": 91.68,
      "text": "第三就是實務解讀啦",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 35,
      "start": 91.68,
      "end": 94.32,
      "text": "不管你是正在評估導入 AI 的企業老闆",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 36,
      "start": 94.32,
      "end": 97.48,
      "text": "還是每天在終端機前折騰模型的工程師",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 37,
      "start": 97.48,
      "end": 99.16,
      "text": "我們要幫你判斷",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 38,
      "start": 99.16,
      "end": 102.32,
      "text": "面對這些看得到但不一定吃得到的技術",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 39,
      "start": 102.32,
      "end": 105.08,
      "text": "該怎麼找出能真正落地的策略",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 40,
      "start": 105.08,
      "end": 106.56,
      "text": "這個觀念很關鍵",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 41,
      "start": 106.56,
      "end": 110.12,
      "text": "所以既然作者被主專案封鎖了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 42,
      "start": 110.12,
      "end": 112.68,
      "text": "我該如何手動將這些分支",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 43,
      "start": 112.68,
      "end": 115.28,
      "text": "像是 NgramCacheConstMap",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 44,
      "start": 115.28,
      "end": 117.32,
      "text": "與 Daniel Lemire 的 PR",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 45,
      "start": 117.32,
      "end": 119.4,
      "text": "合併到我自己的 Fork 來使用",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 46,
      "start": 119.4,
      "end": 122.04,
      "text": "這也是工程師們現在最頭痛的問題",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 47,
      "start": 122.04,
      "end": 124.12,
      "text": "對 我們稍後會聊到這種",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 48,
      "start": 124.12,
      "end": 126.48,
      "text": "自己動手豐衣足食的做法",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 49,
      "start": 126.48,
      "end": 128.64,
      "text": "也就是大家俗稱的科學怪人版",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 50,
      "start": 128.64,
      "end": 132.44,
      "text": "科學怪人版 聽起來就很硬派",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 51,
      "start": 132.44,
      "end": 134.88,
      "text": "那這也讓我想到",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 52,
      "start": 134.88,
      "end": 136.24,
      "text": "為什麼像 AMD",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 53,
      "start": 136.24,
      "end": 139.16,
      "text": "像是 RDNA3 或者 Strix Halo 等",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 54,
      "start": 139.16,
      "end": 141.68,
      "text": "非 NVIDIA 硬體的最佳化 PR",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 55,
      "start": 141.68,
      "end": 143.04,
      "text": "常被主線忽略",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 56,
      "start": 143.04,
      "end": 144.68,
      "text": "這是社群偏見",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 57,
      "start": 144.68,
      "end": 146.36,
      "text": "還是程式碼維護上的考量",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 58,
      "start": 146.36,
      "end": 148.12,
      "text": "這個問題非常犀利",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 59,
      "start": 148.12,
      "end": 150.48,
      "text": "它牽涉到未來 AI 基礎設施的走向",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 60,
      "start": 150.48,
      "end": 153.4,
      "text": "所以 Llama.cpp 為了維持通用性",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 61,
      "start": 153.4,
      "end": 154.68,
      "text": "而犧牲極限效能",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 62,
      "start": 154.68,
      "end": 156.84,
      "text": "未來是不是專用型 Fork",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 63,
      "start": 156.84,
      "end": 158.92,
      "text": "像是 Goofl Strix 專用版",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 64,
      "start": 158.92,
      "end": 161.12,
      "text": "才是高效能推理的必然趨勢",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 65,
      "start": 161.12,
      "end": 163.28,
      "text": "如果我追求極致 Speed Up",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 66,
      "start": 163.28,
      "end": 166.0,
      "text": "是不是該直接改用 XLama V3",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 67,
      "start": 166.0,
      "end": 168.12,
      "text": "或是 Tabby 或其他專用框架",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 68,
      "start": 168.12,
      "end": 170.16,
      "text": "而不是繼續折騰 Llama.cpp",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 69,
      "start": 170.16,
      "end": 172.92,
      "text": "沒錯 這些都會是我們今天探討的核心",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 70,
      "start": 172.92,
      "end": 175.0,
      "text": "那我們就先從大家最關心的",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 71,
      "start": 175.0,
      "end": 177.56,
      "text": "那個 42 倍加速的神話開始解密吧",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 72,
      "start": 177.56,
      "end": 179.64,
      "text": "好 我真的超級好奇",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 73,
      "start": 179.64,
      "end": 181.12,
      "text": "這四個修改",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 74,
      "start": 181.12,
      "end": 182.56,
      "text": "到底施了什麼魔法",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 75,
      "start": 182.56,
      "end": 184.68,
      "text": "怎麼可能記憶體用量變少",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 76,
      "start": 184.68,
      "end": 185.76,
      "text": "速度還能飆升",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 77,
      "start": 185.76,
      "end": 187.8,
      "text": "其實要解開這個魔法",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 78,
      "start": 187.8,
      "end": 190.76,
      "text": "我們得先跳脫一般對模型生成的想像",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 79,
      "start": 190.76,
      "end": 193.44,
      "text": "這麼說 平常我們以為的加速",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 80,
      "start": 193.44,
      "end": 196.48,
      "text": "是模型生成每一個 Token 的計算速度變快了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 81,
      "start": 196.48,
      "end": 198.72,
      "text": "但這次的核心技術叫做",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 82,
      "start": 198.72,
      "end": 200.16,
      "text": "Prompt Lookup Drafting",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 83,
      "start": 200.16,
      "end": 202.56,
      "text": "這不是整體的生成速度變快",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 84,
      "start": 202.56,
      "end": 204.44,
      "text": "而是針對草稿生成",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 85,
      "start": 204.44,
      "end": 207.56,
      "text": "也就是 Drafting 這個特定階段的極致最佳化",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 86,
      "start": 207.56,
      "end": 210.36,
      "text": "哦 所以不是每一句話都變快",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 87,
      "start": 210.36,
      "end": 212.92,
      "text": "對 一般在跑 LLM 時啊",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 88,
      "start": 212.92,
      "end": 214.48,
      "text": "模型吐出每一個字",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 89,
      "start": 214.48,
      "end": 217.36,
      "text": "都要把龐大的權重載入 GPU 算過一遍",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 90,
      "start": 217.36,
      "end": 219.72,
      "text": "這超級吃記憶體頻寬",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 91,
      "start": 219.72,
      "end": 222.8,
      "text": "但 Prompt Lookup Drafting 改變了這個規則",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 92,
      "start": 222.8,
      "end": 224.56,
      "text": "它可以說是在猜字",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 93,
      "start": 224.56,
      "end": 228.68,
      "text": "猜字 這聽起來有點像手機鍵盤的自動選字",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 94,
      "start": 228.68,
      "end": 229.84,
      "text": "概念很像",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 95,
      "start": 229.84,
      "end": 231.8,
      "text": "當你餵給它一段 Prompt 時",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 96,
      "start": 231.8,
      "end": 235.6,
      "text": "這個機制會在背景快速比對過去的文本規律",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 97,
      "start": 235.6,
      "end": 237.28,
      "text": "也就是你提到的 Ngram",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 98,
      "start": 237.28,
      "end": 240.92,
      "text": "它如果在前面的上下文看到一樣的文字組合",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 99,
      "start": 240.92,
      "end": 243.52,
      "text": "它就不去進行昂貴的神經網路運算",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 100,
      "start": 243.52,
      "end": 247.28,
      "text": "而是直接複製貼上下來的幾個字當作草稿",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 101,
      "start": 247.28,
      "end": 248.6,
      "text": "原來如此",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 102,
      "start": 248.6,
      "end": 252.32,
      "text": "所以龐大的 LLM 只需要做一次單次驗證",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 103,
      "start": 252.32,
      "end": 254.48,
      "text": "確認這幾個字合不合理就好了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 104,
      "start": 254.48,
      "end": 255.96,
      "text": "完全正確",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 105,
      "start": 255.96,
      "end": 258.76,
      "text": "等於是拿極度廉價的純文字搜尋",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 106,
      "start": 258.76,
      "end": 261.24,
      "text": "去交換極度昂貴的 GPU 運算",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 107,
      "start": 261.24,
      "end": 264.88,
      "text": "這聽起來就像是傳統的模型生成",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 108,
      "start": 264.88,
      "end": 265.76,
      "text": "像是一位大廚",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 109,
      "start": 265.76,
      "end": 267.16,
      "text": "你每點一道菜",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 110,
      "start": 267.16,
      "end": 269.92,
      "text": "它都要從頭切菜備料開火現做",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 111,
      "start": 269.92,
      "end": 272.8,
      "text": "這個比喻很貼切 對吧",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 112,
      "start": 272.8,
      "end": 275.32,
      "text": "那這個 Prompt Lookup Drafting",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 113,
      "start": 275.32,
      "end": 277.4,
      "text": "就像是大廚注意到",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 114,
      "start": 277.4,
      "end": 280.2,
      "text": "你每個禮拜二都點一模一樣的經典牛肉堡",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 115,
      "start": 280.2,
      "end": 283.08,
      "text": "所以他在後廚早就把生菜",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 116,
      "start": 283.08,
      "end": 284.84,
      "text": "起司跟漢堡排預先疊好了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 117,
      "start": 284.84,
      "end": 287.92,
      "text": "他最後還是得過一下火烤確認品質",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 118,
      "start": 287.92,
      "end": 290.24,
      "text": "但備料的時間瞬間歸零",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 119,
      "start": 290.24,
      "end": 292.24,
      "text": "自己真的講到重點了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 120,
      "start": 292.24,
      "end": 293.84,
      "text": "把昂貴的現做成本",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 121,
      "start": 293.84,
      "end": 295.84,
      "text": "轉換成了極低成本的預處理",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 122,
      "start": 295.84,
      "end": 299.04,
      "text": "而且還有另一位知名開發者 Daniel Lemire",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 123,
      "start": 299.04,
      "end": 300.6,
      "text": "提出了進一步的最佳化",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 124,
      "start": 300.6,
      "end": 302.48,
      "text": "讓這個查找流程變得更快",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 125,
      "start": 302.48,
      "end": 304.12,
      "text": "那記憶體呢",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 126,
      "start": 304.12,
      "end": 306.36,
      "text": "你剛剛還沒解答我的疑惑",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 127,
      "start": 306.36,
      "end": 307.96,
      "text": "既然要記住前面的字",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 128,
      "start": 307.96,
      "end": 310.88,
      "text": "難道不需要占用更多記憶體去存快取嗎",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 129,
      "start": 310.88,
      "end": 314.2,
      "text": "為什麼峰值記憶體反而減少了 2.65 倍",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 130,
      "start": 314.2,
      "end": 316.84,
      "text": "這是因為這四項修改",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 131,
      "start": 316.84,
      "end": 320.32,
      "text": "徹底翻新了資料在記憶體中的儲存與查找結構",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 132,
      "start": 320.32,
      "end": 323.16,
      "text": "舊的做法是動態配置大量的空間",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 133,
      "start": 323.16,
      "end": 325.44,
      "text": "上下文一長記憶體就狂飆",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 134,
      "start": 325.44,
      "end": 328.68,
      "text": "也就是常常會發生 out of memory 的狀況",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 135,
      "start": 328.68,
      "end": 331.08,
      "text": "沒錯 但這次的最佳化包含了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 136,
      "start": 331.08,
      "end": 332.56,
      "text": "N-gram Cache Constant Map",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 137,
      "start": 332.56,
      "end": 335.84,
      "text": "它把查找表變成了一種更緊湊的靜態結構",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 138,
      "start": 335.84,
      "end": 338.08,
      "text": "不需要把所有狀態都塞進記憶體",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 139,
      "start": 338.08,
      "end": 340.68,
      "text": "而是用高效率的索引去指導資料",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 140,
      "start": 340.68,
      "end": 343.32,
      "text": "結構變簡單了 記憶體占用就大幅下降",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 141,
      "start": 343.32,
      "end": 345.6,
      "text": "哇 如果我是工程師",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 142,
      "start": 345.6,
      "end": 346.8,
      "text": "這簡直是救星",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 143,
      "start": 346.8,
      "end": 348.96,
      "text": "這代表在邊緣設備",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 144,
      "start": 348.96,
      "end": 351.08,
      "text": "或者是資源受限的伺服器上",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 145,
      "start": 351.08,
      "end": 353.16,
      "text": "以前會爆記憶體的模型",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 146,
      "start": 353.16,
      "end": 354.96,
      "text": "現在有機會順暢跑完了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 147,
      "start": 354.96,
      "end": 357.84,
      "text": "對 那如果我們拉高層次來看",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 148,
      "start": 357.84,
      "end": 359.6,
      "text": "如果你是老闆 這代表什麼",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 149,
      "start": 359.6,
      "end": 361.52,
      "text": "代表伺服器硬體成本",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 150,
      "start": 361.52,
      "end": 362.84,
      "text": "可以省下一大筆錢",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 151,
      "start": 362.84,
      "end": 365.64,
      "text": "不用為了應付偶爾飆高的記憶體峰值",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 152,
      "start": 365.64,
      "end": 367.0,
      "text": "去採購更貴的硬體",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 153,
      "start": 367.0,
      "end": 368.6,
      "text": "完全正確",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 154,
      "start": 368.6,
      "end": 371.0,
      "text": "但這裡我要潑一點冷水了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 155,
      "start": 371.0,
      "end": 373.84,
      "text": "哦 要進入現實打擊階段了嗎",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 156,
      "start": 373.84,
      "end": 377.52,
      "text": "哈哈 對 因為很多資深使用者實測後發現",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 157,
      "start": 377.52,
      "end": 379.36,
      "text": "端到端的實際加速感",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 158,
      "start": 379.36,
      "end": 381.44,
      "text": "絕對沒有 42 倍這麼誇張",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 159,
      "start": 381.44,
      "end": 382.56,
      "text": "這也就是為什麼",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 160,
      "start": 382.56,
      "end": 384.24,
      "text": "我們必須從實驗室數據",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 161,
      "start": 384.24,
      "end": 386.08,
      "text": "走向真實世界的應用場景",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 162,
      "start": 386.08,
      "end": 387.44,
      "text": "其實我也想問這個",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 163,
      "start": 387.44,
      "end": 389.4,
      "text": "Prompt Lookup Drafting",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 164,
      "start": 389.4,
      "end": 391.8,
      "text": "似乎非常依賴重複性高的文字",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 165,
      "start": 391.8,
      "end": 393.6,
      "text": "像是固定的 System Prompt",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 166,
      "start": 393.6,
      "end": 397.68,
      "text": "那如果是每次都不一樣的單次隨機提問",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 167,
      "start": 397.68,
      "end": 399.64,
      "text": "這項最佳化還有效嗎",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 168,
      "start": 399.64,
      "end": 401.28,
      "text": "這就是問題所在",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 169,
      "start": 401.28,
      "end": 403.04,
      "text": "如果提示詞高度重複",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 170,
      "start": 403.04,
      "end": 405.72,
      "text": "Ngram Cache 就像是免費的加速器",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 171,
      "start": 405.72,
      "end": 407.96,
      "text": "但如果是高度變動的任務",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 172,
      "start": 407.96,
      "end": 410.32,
      "text": "像是每次都問截然不同的創意寫作",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 173,
      "start": 410.32,
      "end": 412.12,
      "text": "這個機制幾乎不會觸發",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 174,
      "start": 412.12,
      "end": 415.64,
      "text": "所以它是一種極度依賴工作負載",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 175,
      "start": 415.64,
      "end": 417.76,
      "text": "也就是 Workload Dependent 的技術咯",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 176,
      "start": 417.76,
      "end": 420.8,
      "text": "沒錯 所以我們來聊聊企業該怎麼應用",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 177,
      "start": 420.8,
      "end": 424.16,
      "text": "如果你們公司是做特定場景的客服機器人",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 178,
      "start": 424.16,
      "end": 426.32,
      "text": "每天都在回答類似的退換貨問題",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 179,
      "start": 426.32,
      "end": 429.32,
      "text": "那這項技術就能大幅提升回應速度了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 180,
      "start": 429.32,
      "end": 432.88,
      "text": "對 或者是需要做大量固定格式的文件摘要",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 181,
      "start": 432.88,
      "end": 435.32,
      "text": "這時候 Ngram 快取命中率極高",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 182,
      "start": 435.32,
      "end": 436.88,
      "text": "你的競爭力就會大幅提升",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 183,
      "start": 436.88,
      "end": 438.48,
      "text": "但反過來說",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 184,
      "start": 438.48,
      "end": 441.68,
      "text": "如果主管看到新聞上寫 42 倍加速",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 185,
      "start": 441.68,
      "end": 443.2,
      "text": "隔天就跑去跟團隊說",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 186,
      "start": 443.2,
      "end": 446.24,
      "text": "下個月把我們的 API 速度提升 40 倍",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 187,
      "start": 446.24,
      "end": 447.88,
      "text": "這會是一場災難吧",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 188,
      "start": 447.88,
      "end": 450.8,
      "text": "絕對是災難 這就是潛在的誤區",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 189,
      "start": 450.8,
      "end": 453.56,
      "text": "千萬不要對團隊開出不切實際的 KPI",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 190,
      "start": 453.56,
      "end": 455.76,
      "text": "必須先評估自身的 Prompt 使用習慣",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 191,
      "start": 455.76,
      "end": 456.6,
      "text": "了解",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 192,
      "start": 456.6,
      "end": 458.92,
      "text": "好 那既然我們知道這項技術",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 193,
      "start": 458.92,
      "end": 460.92,
      "text": "在特定場景下非常有價值",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 194,
      "start": 460.92,
      "end": 464.12,
      "text": "問題來了 為什麼這麼好的最佳化",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 195,
      "start": 464.12,
      "end": 466.24,
      "text": "會引發這麼大的社群風暴",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 196,
      "start": 466.24,
      "end": 469.8,
      "text": "這就牽涉到開源社群最脆弱的神經了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 197,
      "start": 469.8,
      "end": 472.36,
      "text": "我看新聞的時候真的覺得很離譜",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 198,
      "start": 472.36,
      "end": 474.8,
      "text": "這顯然是一個操作上的誤會",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 199,
      "start": 474.8,
      "end": 477.48,
      "text": "貢獻者只是在自己的 Fork 測試時",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 200,
      "start": 477.48,
      "end": 479.08,
      "text": "標記到 Upstream 協作者",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 201,
      "start": 479.08,
      "end": 481.24,
      "text": "維護者直接封鎖",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 202,
      "start": 481.24,
      "end": 482.32,
      "text": "會不會太超過了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 203,
      "start": 482.32,
      "end": 484.76,
      "text": "這個舉動確實非常激烈",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 204,
      "start": 484.76,
      "end": 487.12,
      "text": "對啊 GitHub 為什麼會允許",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 205,
      "start": 487.12,
      "end": 489.4,
      "text": "非 mainline 儲存庫的 PR 操作",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 206,
      "start": 489.4,
      "end": 490.48,
      "text": "通知到外部人員",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 207,
      "start": 490.48,
      "end": 493.0,
      "text": "導致這種不小心標記到他人",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 208,
      "start": 493.0,
      "end": 494.52,
      "text": "而釀成糾紛的情況發生",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 209,
      "start": 494.52,
      "end": 496.48,
      "text": "其實 GitHub 的這個設計",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 210,
      "start": 496.48,
      "end": 497.88,
      "text": "一直被很多人抱怨",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 211,
      "start": 497.88,
      "end": 500.2,
      "text": "只要你打出 at 加上帳號",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 212,
      "start": 500.2,
      "end": 501.92,
      "text": "即使是在你自己的分支",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 213,
      "start": 501.92,
      "end": 503.6,
      "text": "系統還是會發通知給對方",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 214,
      "start": 503.6,
      "end": 505.84,
      "text": "這很容易讓人踩雷",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 215,
      "start": 505.84,
      "end": 508.56,
      "text": "那是否有其他人或核心團隊成員",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 216,
      "start": 508.56,
      "end": 510.72,
      "text": "能幫忙向維護者協調解鎖",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 217,
      "start": 510.72,
      "end": 513.56,
      "text": "目前社群裡有兩種截然不同的聲音",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 218,
      "start": 513.56,
      "end": 515.68,
      "text": "反對的這一派就跟你一樣",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 219,
      "start": 515.68,
      "end": 516.92,
      "text": "覺得這極度不專業",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 220,
      "start": 516.92,
      "end": 517.92,
      "text": "甚至有人說",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 221,
      "start": 517.92,
      "end": 520.6,
      "text": "這就是許多優秀專案死亡的原因",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 222,
      "start": 520.6,
      "end": 523.44,
      "text": "因為掌權者的傲慢跟守門員心態嗎",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 223,
      "start": 523.44,
      "end": 525.76,
      "text": "沒錯 但我們也要看看另一派的觀點",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 224,
      "start": 525.76,
      "end": 527.96,
      "text": "他們點出了一个殘酷的現實",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 225,
      "start": 527.96,
      "end": 530.4,
      "text": "就是維護者的職業倦怠",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 226,
      "start": 530.4,
      "end": 531.32,
      "text": "也就是 burn out",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 227,
      "start": 531.32,
      "end": 534.6,
      "text": "因為他們每天要處理的東西太多了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 228,
      "start": 534.6,
      "end": 537.04,
      "text": "對 像 Llama.cpp 這麼熱門的專案",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 229,
      "start": 537.04,
      "end": 540.56,
      "text": "維護者每天面對無數的通知 PR 還有 issue",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 230,
      "start": 540.56,
      "end": 542.48,
      "text": "在巨大的精神壓力下",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 231,
      "start": 542.48,
      "end": 543.6,
      "text": "任何無效的干擾",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 232,
      "start": 543.6,
      "end": 546.32,
      "text": "都可能成為壓垮駱駝的最後一根稻草",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 233,
      "start": 546.32,
      "end": 549.48,
      "text": "所以這次封鎖 與其說是惡意",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 234,
      "start": 549.48,
      "end": 552.4,
      "text": "不如說是處於極限狀態下的過度防衛",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 235,
      "start": 552.4,
      "end": 553.4,
      "text": "確實是這樣",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 236,
      "start": 553.4,
      "end": 555.92,
      "text": "但這就帶來了一個嚴峻的實務問題",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 237,
      "start": 555.92,
      "end": 557.48,
      "text": "既然原作者被封鎖了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 238,
      "start": 557.48,
      "end": 560.48,
      "text": "很多急需這項效能最佳化的工程師該怎麼辦",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 239,
      "start": 560.48,
      "end": 563.32,
      "text": "對啊 我該如何手動將這些分支",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 240,
      "start": 563.32,
      "end": 564.8,
      "text": "合併到我自己的 Fork 來使用",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 241,
      "start": 564.8,
      "end": 567.08,
      "text": "現在很多人會自製大家俗稱的",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 242,
      "start": 567.08,
      "end": 568.2,
      "text": "Frankenstein Llama",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 243,
      "start": 568.2,
      "end": 570.64,
      "text": "也就是科學怪人版的混合版本",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 244,
      "start": 570.64,
      "end": 573.8,
      "text": "工程師會自己去把原作者的分支拉下來",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 245,
      "start": 573.8,
      "end": 575.28,
      "text": "手動合併進專案裡",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 246,
      "start": 575.28,
      "end": 577.84,
      "text": "自己縫合出一個科學怪人版本",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 247,
      "start": 577.84,
      "end": 581.44,
      "text": "這聽起來 如果我是企業的技術主管",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 248,
      "start": 581.44,
      "end": 583.08,
      "text": "我會覺得風險超高的",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 249,
      "start": 583.08,
      "end": 585.48,
      "text": "這是一個非常重要的企業風險警訊",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 250,
      "start": 585.48,
      "end": 589.08,
      "text": "如果企業的基礎設施過度依賴單一開源專案",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 251,
      "start": 589.08,
      "end": 592.32,
      "text": "特別是這種由少數個人維護的專案",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 252,
      "start": 592.32,
      "end": 595.04,
      "text": "當發生這種人事糾紛導致進度停擺時",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 253,
      "start": 595.04,
      "end": 597.72,
      "text": "企業就會立刻面臨技術斷層的風險",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 254,
      "start": 597.72,
      "end": 599.12,
      "text": "所以一定要有備案",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 255,
      "start": 599.12,
      "end": 600.8,
      "text": "就是所謂的 Plan B",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 256,
      "start": 600.8,
      "end": 603.16,
      "text": "沒錯 這也帶出了我們今天",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 257,
      "start": 603.16,
      "end": 605.08,
      "text": "最後一個重要的趨勢觀察",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 258,
      "start": 605.08,
      "end": 607.24,
      "text": "因為主專案合併困難",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 259,
      "start": 607.24,
      "end": 610.04,
      "text": "越來越多人轉向使用特定分支了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 260,
      "start": 610.04,
      "end": 613.16,
      "text": "說到特定分支 我一直有個疑問",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 261,
      "start": 613.16,
      "end": 615.96,
      "text": "為什麼像 AMD",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 262,
      "start": 615.96,
      "end": 619.24,
      "text": "像是 RDNA3 或者 Strix Halo 等",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 263,
      "start": 619.24,
      "end": 621.64,
      "text": "非 NVIDIA 硬體的最佳化 PR",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 264,
      "start": 621.64,
      "end": 622.68,
      "text": "常被主線忽略",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 265,
      "start": 622.68,
      "end": 626.16,
      "text": "這是社群對特定品牌有偏見",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 266,
      "start": 626.16,
      "end": 628.16,
      "text": "還是程式碼維護上的考量",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 267,
      "start": 628.16,
      "end": 630.68,
      "text": "這絕對是程式碼維護上的考量",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 268,
      "start": 630.68,
      "end": 633.44,
      "text": "你想想看 Llama.cpp 的初衷是什麼",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 269,
      "start": 633.44,
      "end": 636.8,
      "text": "是為了讓模型在所有的硬體上都能跑",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 270,
      "start": 636.8,
      "end": 637.8,
      "text": "也就是通用性",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 271,
      "start": 637.8,
      "end": 640.6,
      "text": "對 為了維持這種通用性",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 272,
      "start": 640.6,
      "end": 642.88,
      "text": "主線其實已經變成了最小公倍數",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 273,
      "start": 642.88,
      "end": 646.72,
      "text": "如果把所有針對特定硬體的底層最佳化都加進去",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 274,
      "start": 646.72,
      "end": 649.16,
      "text": "程式碼會變得像義大利麵一樣複雜",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 275,
      "start": 649.16,
      "end": 651.12,
      "text": "根本無法維護對吧",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 276,
      "start": 651.12,
      "end": 653.28,
      "text": "沒錯 所以這不是偏見",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 277,
      "start": 653.28,
      "end": 656.2,
      "text": "而是為了專案存活必須做的妥協",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 278,
      "start": 656.2,
      "end": 658.52,
      "text": "那這樣的話",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 279,
      "start": 658.52,
      "end": 662.4,
      "text": "Llama.cpp 為了維持通用性而犧牲極限效能",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 280,
      "start": 662.4,
      "end": 664.6,
      "text": "未來是不是專用型 Fork",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 281,
      "start": 664.6,
      "end": 667.32,
      "text": "例如 Grafo 或是 Strix 專用版",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 282,
      "start": 667.32,
      "end": 669.44,
      "text": "才是高效能推理的必然趨勢",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 283,
      "start": 669.44,
      "end": 672.48,
      "text": "目前社群的趨勢確實是擁抱 Fork",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 284,
      "start": 672.48,
      "end": 674.76,
      "text": "有人分享在特定硬體上",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 285,
      "start": 674.76,
      "end": 678.48,
      "text": "專用分支的速度甚至可以達到主線的 2 到 4 倍",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 286,
      "start": 678.48,
      "end": 681.0,
      "text": "哇 那差距很大",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 287,
      "start": 681.0,
      "end": 683.84,
      "text": "那如果我就是追求極致的 speed up",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 288,
      "start": 683.84,
      "end": 686.96,
      "text": "我是不是該直接改用 EX-LAMA V3",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 289,
      "start": 686.96,
      "end": 689.28,
      "text": "或者是 Tabby 這些其他專用框架",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 290,
      "start": 689.28,
      "end": 691.48,
      "text": "而不是繼續折騰 Llama.cpp",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 291,
      "start": 691.48,
      "end": 695.04,
      "text": "這個決策完全取決於你們公司的戰略定位",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 292,
      "start": 695.04,
      "end": 696.72,
      "text": "我們來做個實務解讀吧",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 293,
      "start": 696.72,
      "end": 701.36,
      "text": "好啊 如果你們企業的硬體規格是單一且固定的",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 294,
      "start": 701.36,
      "end": 703.92,
      "text": "例如老闆一口氣買了一批特定的伺服器",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 295,
      "start": 703.92,
      "end": 707.64,
      "text": "那使用專用框架就能壓榨出最大的硬體效益",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 296,
      "start": 707.64,
      "end": 709.52,
      "text": "沒錯 但反過來",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 297,
      "start": 709.52,
      "end": 712.0,
      "text": "如果你們是軟體服務商 SaaS 公司",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 298,
      "start": 712.0,
      "end": 715.32,
      "text": "你的終端客戶可能有千奇百怪的硬體設備",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 299,
      "start": 715.32,
      "end": 718.28,
      "text": "有人用 Mac 有人用五年前的舊電腦",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 300,
      "start": 718.28,
      "end": 721.04,
      "text": "對 那這時候如果你硬要用",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 301,
      "start": 721.04,
      "end": 723.6,
      "text": "追求極致效能的小眾專用框架",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 302,
      "start": 723.6,
      "end": 725.28,
      "text": "肯定會是一場維護災難",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 303,
      "start": 725.28,
      "end": 727.68,
      "text": "確實 這時候堅守",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 304,
      "start": 727.68,
      "end": 730.72,
      "text": "Llama.cpp 這樣泛用且穩定的主線",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 305,
      "start": 730.72,
      "end": 733.04,
      "text": "才是減少客訴的明智之舉",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 306,
      "start": 733.04,
      "end": 738.12,
      "text": "是的 通用性與極限效能本來就是天平的兩端",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 307,
      "start": 738.12,
      "end": 741.28,
      "text": "就像 Linux 過去也有針對特定硬體",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 308,
      "start": 741.28,
      "end": 742.72,
      "text": "高度最佳化的分支一樣",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 309,
      "start": 742.72,
      "end": 744.48,
      "text": "這是技術發展的常態",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 310,
      "start": 744.48,
      "end": 747.68,
      "text": "今天這一集深入探討真的太精彩了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 311,
      "start": 747.68,
      "end": 751.12,
      "text": "我們從一個 42 倍速的神級最佳化出發",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 312,
      "start": 751.12,
      "end": 751.76,
      "text": "看懂了它背後",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 313,
      "start": 751.76,
      "end": 754.88,
      "text": "其實是拿 Ngram 去猜字的機制",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 314,
      "start": 754.88,
      "end": 758.0,
      "text": "沒錯 還順便破解了記憶體減半的秘密",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 315,
      "start": 758.0,
      "end": 760.6,
      "text": "接著我們見證了開源社群裡",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 316,
      "start": 760.6,
      "end": 764.08,
      "text": "因為一個小小的誤標記而引爆的封鎖危機",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 317,
      "start": 764.08,
      "end": 768.04,
      "text": "也看見了熱門專案維護者背後的巨大壓力",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 318,
      "start": 768.04,
      "end": 769.84,
      "text": "最後我們跟大家梳理了",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 319,
      "start": 769.84,
      "end": 771.68,
      "text": "企業技術選型的戰略思考",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 320,
      "start": 771.68,
      "end": 773.84,
      "text": "所以在節目的最後",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 321,
      "start": 773.84,
      "end": 776.16,
      "text": "我想留一個開放式的問題給大家思考",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 322,
      "start": 776.16,
      "end": 779.0,
      "text": "在 AI 技術迭代這麼快速的時代",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 323,
      "start": 779.0,
      "end": 781.96,
      "text": "當通用但稍慢的主流工具",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 324,
      "start": 781.96,
      "end": 786.08,
      "text": "與極致但小眾的專用工具擺在你面前時",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 325,
      "start": 786.08,
      "end": 788.88,
      "text": "你會為了效能而犧牲穩定性嗎",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 326,
      "start": 788.88,
      "end": 790.68,
      "text": "這裡我也要給大家一句",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 327,
      "start": 790.68,
      "end": 792.2,
      "text": "最核心的實務提醒",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 328,
      "start": 792.2,
      "end": 796.44,
      "text": "記住 不要只看新聞上表面宣稱的幾十倍加速",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 329,
      "start": 796.44,
      "end": 797.68,
      "text": "技術好不好",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 330,
      "start": 797.68,
      "end": 802.0,
      "text": "永遠要看它能不能在你真實的業務場景中落地生根",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 331,
      "start": 802.0,
      "end": 804.8,
      "text": "說得太好了 能落地才是最重要的",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 332,
      "start": 804.8,
      "end": 806.96,
      "text": "喜歡我們的深入分析討論嗎",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 333,
      "start": 806.96,
      "end": 809.48,
      "text": "記得轉發給有需要的親朋好友",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 334,
      "start": 809.48,
      "end": 812.64,
      "text": "並且幫我們按讚訂閱開啟小鈴鐺",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 335,
      "start": 812.64,
      "end": 816.12,
      "text": "更多相關資訊連結請參考影片下方的資訊欄",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 336,
      "start": 816.12,
      "end": 818.12,
      "text": "最後感謝您的收聽",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 337,
      "start": 818.12,
      "end": 819.96,
      "text": "祝您順心 我們下集再會",
      "source": "source_caption",
      "timing_uncertain": false
    },
    {
      "id": 338,
      "start": 819.96,
      "end": 821.48,
      "text": "拜拜 拜拜",
      "source": "source_caption",
      "timing_uncertain": false
    }
  ]
}
