[{"data":1,"prerenderedAt":2218},["ShallowReactive",2],{"site-info":3,"post-broken-on-arrival-quantized-models":99,"related-zh-TW-broken-on-arrival-quantized-models":1019},{"id":4,"company":5,"extension":16,"meta":17,"services":18,"social":96,"stem":97,"__hash__":98},"site\u002Fsite.yml",{"name":6,"nameEn":7,"email":8,"address":9,"addressEn":10,"lineUrl":11,"lineId":12,"duns":13,"youtube":14,"youtubeId":15},"銡策數位有限公司","Jecision Digital Co., Ltd.","contact@jecision.com","231 新北市新店區北新路二段 262 號 3 樓之 3","3F.-3, No. 262, Sec. 2, Beixin Rd., Xindian Dist., New Taipei City 231, Taiwan","https:\u002F\u002Fline.me\u002FR\u002Fti\u002Fp\u002F@374qnumi","@374qnumi","963905705","https:\u002F\u002Fwww.youtube.com\u002Fshorts\u002F6UE0WTmyjsg","6UE0WTmyjsg","yml",{},[19,43,69],{"key":20,"zh":21,"en":32},"audit",{"title":22,"tagline":23,"summary":24,"points":25,"deliverable":29,"detail":30,"duration":31},"企業 AI 導入健檢","先看清楚，再花錢","60 分鐘線上訪談，盤點最耗時、最依賴人力的營運環節；我們會告訴你哪些工作現在就能交給 AI、哪些還不成熟。",[26,27,28],"現況盤點：梳理日常營運中最耗時、最依賴人力的環節","痛點診斷：判斷哪些工作現在就能交給 AI，哪些建議先保留人力","可行性評估：依你的業務特性與預算，篩選適合的模型與工具","《企業 AI 導入建議報告書》（PDF）","含 1–2 個「開發成本最低、成效最明顯」的優先項目、技術棧建議、預期節省的人力時間與下一步","訪談 60 分鐘，報告書 3 個工作天內交付",{"title":33,"tagline":34,"summary":35,"points":36,"deliverable":40,"detail":41,"duration":42},"AI Readiness Audit","Look before you spend","A 60-minute remote audit of the workflows that eat the most time and people-power — and an honest answer on what AI can take over today, and what it cannot.",[37,38,39],"Audit the daily workflows that consume the most time and headcount","Triage which tasks AI can own today, and which should stay human","Shortlist the models and tools that fit your budget and constraints","AI Adoption Recommendation Report (PDF)","One or two highest-ROI entry points, a recommended tech stack, expected hours saved, and the concrete next step","60-minute call, report delivered within 3 business days",{"key":44,"zh":45,"en":56},"prompt",{"title":46,"tagline":47,"summary":48,"points":49,"deliverable":53,"detail":54,"duration":55},"提示詞工程","讓 AI 穩定產出，而不是碰運氣","針對你的實際任務設計提示詞與多步驟工作流，並做極限測試，確保換了資料、換了人操作也不會走鐘。",[50,51,52],"客製提示詞：ChatGPT、Claude、Gemini、Midjourney 等主流工具的專屬模板","除錯與優化：修掉幻覺、格式跑掉、時好時壞的問題","工作流建置：把複雜任務拆成多步驟提示詞與可重複的 SOP","提示詞文件或設定檔","附使用說明與範例，並提供 1 對 1 教學，確保你與團隊能自己維護","依任務複雜度報價，通常 3–7 個工作天",{"title":57,"tagline":58,"summary":59,"points":60,"deliverable":66,"detail":67,"duration":68},"Prompt Engineering","Make AI produce reliably, not by luck","Prompt sets and multi-step workflows designed for your actual tasks, stress-tested so they keep working when the data or the operator changes.",[61,62,64],"Custom prompts for ChatGPT, Claude, Gemini, Midjourney and friends",{"Debugging and tuning":63},"kill hallucinations, broken formats and flaky output",{"Workflow design":65},"break complex work into repeatable multi-step SOPs","Prompt library or exportable config","Ships with usage notes and examples, plus a 1:1 walkthrough so your team can maintain it","Quoted by complexity, typically 3–7 business days",{"key":70,"zh":71,"en":82},"poc",{"title":72,"tagline":73,"summary":74,"points":75,"deliverable":79,"detail":80,"duration":81},"極速 PoC","五天，看到能跑的東西","不談架構藍圖，直接做一個能動的雛形。五個工作天內交付線上可操作的智能體，用你真實的資料驗證。",[76,77,78],"Day 1：15 分鐘對焦，鎖定單一痛點與資料盤點","Day 2–4：模型串接、邏輯設計與雛形開發","Day 5：Demo 展示與 AI 擴展建議書","可線上操作的智能體雛形","交付範圍為概念驗證與展示，不含後續維運或大規模伺服器部署；要進階成完整系統會另行報價","5 個工作天",{"title":83,"tagline":84,"summary":85,"points":86,"deliverable":93,"detail":94,"duration":95},"Rapid PoC","Five days to something that runs","No architecture decks — a working prototype built in five business days, validated against your real data.",[87,89,91],{"Day 1":88},"15-minute scoping call, one pain point, data inventory",{"Day 2–4":90},"model integration, logic design, prototype build",{"Day 5":92},"live demo plus an AI expansion recommendation","A runnable online agent prototype","Proof of concept and demo scope only; ongoing operations and large-scale deployment are quoted separately","5 business days",[],"site","XTwARfVAOcrXNiKehsM6V6cdkd2HXy4d5yZVrSWrI3Q",{"zh":100,"en":600},{"id":101,"title":102,"author":103,"body":104,"cover":580,"coverAlt":581,"date":582,"description":583,"draft":584,"extension":585,"featured":584,"lang":586,"meta":587,"navigation":588,"ogImage":589,"path":590,"seo":591,"slug":592,"stem":593,"tags":594,"translationKey":592,"updated":598,"__hash__":599},"blog\u002Fblog\u002Fzh-TW\u002Fbroken-on-arrival-quantized-models.md","你下載的量化模型可能是壞的，而且 checksum 驗不出來","Jecision",{"type":105,"value":106,"toc":567},"minimark",[107,119,123,130,133,136,144,148,151,158,164,175,178,181,188,199,206,210,213,277,280,286,290,293,300,307,310,314,317,422,432,443,446,459,469,483,486,506,509,514,520,527,530,554],[108,109,110],"blockquote",{},[111,112,113,114,118],"p",{},"數字來自 arXiv 2609.05881v3 與作者的 ",[115,116,117],"code",{},"quantcheck"," 稽核資料；「今天還在不在」是我們自己查的，腳本在文末。",[120,121,122],"h2",{"id":122},"先講一個畫面",[111,124,125,126,129],{},"你在筆電上 ",[115,127,128],{},"ollama pull qwen2.5-coder:3b","，選了一個 2-bit 的版本，因為記憶體不夠。",[111,131,132],{},"模型跑起來了，有回應，速度也不錯。但你叫它寫一個排序函式，它寫出來的東西編譯不過；再試一題，還是不過。",[111,134,135],{},"你會先懷疑自己：prompt 寫錯？溫度太高？還是這顆模型本來就這麼弱？",[111,137,138,139,143],{},"有一篇論文把這個懷疑變成了普查：",[140,141,142],"strong",{},"Ollama 官方庫裡 305 個「能寫程式」的模型 tag，有 7 個在 164 題 HumanEval+ 上幾乎全錯。"," 其中六個一題都沒對。",[120,145,147],{"id":146},"最反直覺的地方檔案是好的","最反直覺的地方：檔案是好的",[111,149,150],{},"如果模型壞了，你會想「是不是下載壞了、檔案損毀」。",[111,152,153,154,157],{},"作者把其中五個檔案從原始權重重新量化回來，",[140,155,156],{},"tensor 對 tensor 比對，完全一致","。Qwen2.5-Coder-3B 那四個 tag，434 個 tensor 全部相同。",[111,159,160,161],{},"也就是說：",[140,162,163],{},"這些檔案是「正確的壞檔案」。",[111,165,166,167,170,171,174],{},"checksum 會過、檔案大小會對、",[115,168,169],{},"ollama show"," 看起來一切正常——因為檔案真的沒問題。壞的是",[140,172,173],{},"量化的配方","：同樣的權重、同樣的工具鏈、同樣的 tensor 組合，少了校準，就把模型壓成了不會寫程式的形狀。",[120,176,177],{"id":177},"為什麼會這樣",[111,179,180],{},"量化是「把權重從 16 bit 壓到 2–4 bit」。壓的過程要不斷決定「這個誤差要丟給哪個權重」。",[111,182,183,184,187],{},"預設的做法是均勻地丟；比較好的做法是",[140,185,186],{},"看校準資料","，把誤差集中在不重要的權重上——llama.cpp 的 importance matrix（imatrix）就是做這件事。",[111,189,190,191,194,195,198],{},"沒有 imatrix，小模型在低 bit 特別容易崩。這次的七個 suspects 全部落在 ",[140,192,193],{},"q2_K 到 q3_K_L、模型 ≤4B"," 這個範圍；同一個範圍有 48 個 tag，等於 ",[140,196,197],{},"14.6%","。",[111,200,201,202,205],{},"但要注意：",[140,203,204],{},"配方本身不能預測成敗","。同樣的無校準配方，Qwen2.5-Coder-1.5B 的 q2_K–q3_K_L 全部正常（13–15 題）。所以不是「低 bit 一定壞」，是「壞了你不會知道」。",[120,207,209],{"id":208},"加回校準救回大部分","加回校準，救回大部分",[111,211,212],{},"作者固定權重、工具鏈與 tensor 組合，只補上 imatrix：",[214,215,216,232],"table",{},[217,218,219],"thead",{},[220,221,222,226,229],"tr",{},[223,224,225],"th",{},"Tag",[223,227,228],{},"原本",[223,230,231],{},"補 imatrix 後（滿分 164）",[233,234,235,247,257,267],"tbody",{},[220,236,237,241,244],{},[238,239,240],"td",{},"Qwen2.5-Coder-3B q2_K",[238,242,243],{},"0",[238,245,246],{},"106–113",[220,248,249,252,254],{},[238,250,251],{},"Qwen2.5-Coder-3B q3_K_M",[238,253,243],{},[238,255,256],{},"76–89",[220,258,259,262,264],{},[238,260,261],{},"Qwen2.5-Coder-3B q3_K_L",[238,263,243],{},[238,265,266],{},"80–86",[220,268,269,272,274],{},[238,270,271],{},"Qwen2.5-Coder-3B q3_K_S",[238,273,243],{},[238,275,276],{},"13–30（救不回）",[111,278,279],{},"（論文摘要寫「0 → 76–113」；上面是 v3.4 稽核資料的分級數字，我以資料為準。）",[111,281,282,285],{},[140,283,284],{},"同一顆模型、同樣的位元數，只差一張校準表，從 0 題變成三位數。"," 這就是「量化不只是壓縮，是配方」的意思。",[120,287,289],{"id":288},"另一種壞法少了-chat-template","另一種壞法：少了 chat template",[111,291,292],{},"七個 suspects 之外，作者還測了 22 個 Hugging Face 社群檔案，其中兩個（TheBloke 的 deepseek-coder-6.7B Q3_K_M／Q4_K_M）在普查時只對 5、6 題。",[111,294,295,296,299],{},"原因不是量化，是",[140,297,298],{},"檔案沒有附 chat template","。Ollama 找不到 template，就用預設的 ChatML 去套，跟模型原本的指令格式不合——30 個回答裡有 28 個自己接出幻覺的對話輪。",[111,301,302,303,306],{},"補上正確 template 之後：",[140,304,305],{},"98 與 101 題","（滿分 164）。",[111,308,309],{},"所以「跑得起來」跟「它能好好回答」之間，還隔著一個 template。",[120,311,313],{"id":312},"我們今天查了這些-tag-還在","我們今天查了：這些 tag 還在",[111,315,316],{},"文章不能只講九月的事。我們拿稽核資料裡的 blob digest，去比對 Ollama registry 今天的 manifest：",[214,318,319,334],{},[217,320,321],{},[220,322,323,325,328,331],{},[223,324,225],{},[223,326,327],{},"稽核時的 digest",[223,329,330],{},"今天",[223,332,333],{},"狀態",[233,335,336,350,362,374,386,398,410],{},[220,337,338,341,344,347],{},[238,339,340],{},"qwen2.5-coder:3b-instruct-q2_K",[238,342,343],{},"14c4247b8ce4…",[238,345,346],{},"相同",[238,348,349],{},"還在",[220,351,352,355,358,360],{},[238,353,354],{},"qwen2.5-coder:3b-instruct-q3_K_S",[238,356,357],{},"81d167af7fa3…",[238,359,346],{},[238,361,349],{},[220,363,364,367,370,372],{},[238,365,366],{},"qwen2.5-coder:3b-instruct-q3_K_M",[238,368,369],{},"9bb5d28b842a…",[238,371,346],{},[238,373,349],{},[220,375,376,379,382,384],{},[238,377,378],{},"qwen2.5-coder:3b-instruct-q3_K_L",[238,380,381],{},"7a88dc11faae…",[238,383,346],{},[238,385,349],{},[220,387,388,391,394,396],{},[238,389,390],{},"phi3.5:3.8b-mini-instruct-q2_K",[238,392,393],{},"54d47caa8bf3…",[238,395,346],{},[238,397,349],{},[220,399,400,403,406,408],{},[238,401,402],{},"llama3.2:1b-instruct-q2_K",[238,404,405],{},"d1ede02a2111…",[238,407,346],{},[238,409,349],{},[220,411,412,415,418,420],{},[238,413,414],{},"llama3.2:1b-instruct-q3_K_S",[238,416,417],{},"81881dcc12ec…",[238,419,346],{},[238,421,349],{},[111,423,424,427,428,431],{},[140,425,426],{},"七個都還在，digest 跟當時一模一樣。"," 這不是歷史事件，是你今天 ",[115,429,430],{},"ollama pull"," 就可能拿到的檔案。",[111,433,434,435,438,439,442],{},"（查法：",[115,436,437],{},"https:\u002F\u002Fregistry.ollama.ai\u002Fv2\u002Flibrary\u002F\u003Cmodel>\u002Fmanifests\u002F\u003Ctag>","，比對 ",[115,440,441],{},"application\u002Fvnd.ollama.image.model"," 那層的 digest。腳本在文末。）",[120,444,445],{"id":445},"你現在該做的三件事",[111,447,448,451,452,454,455,458],{},[140,449,450],{},"一、篩選。"," 作者釋出了 ",[115,453,117],{},"：對每個 tag 跑 15 題螢幕測試。成本大約 ",[140,456,457],{},"30 秒生成","（4090、不含下載）。66 個通過螢幕測試的重測，沒有一個是壞的——所以它是個堪用的預檢。",[111,460,461,464,465,468],{},[140,462,463],{},"二、如果你自己發佈量化模型","：補上 imatrix，然後",[140,466,467],{},"在發佈前跑一次功能測試","。registry 不會幫你測。",[111,470,471,474,475,478,479,482],{},[140,472,473],{},"三、檢查 chat template。"," ",[115,476,477],{},"ollama show \u003Cmodel> --template","；如果印出 ",[115,480,481],{},"{{ .Prompt }}","，代表沒有 template，模型可能用錯格式回答。",[120,484,485],{"id":485},"別過度解讀",[487,488,489,493,496,503],"ul",{},[490,491,492],"li",{},"2.3% 是「Ollama 官方庫、能寫程式、8GB 以下」這個子集的比例，不是所有量化模型",[490,494,495],{},"只測程式碼能力（HumanEval+）；perplexity 只能當預檢，不能當功能證明",[490,497,498,499,502],{},"七個是",[140,500,501],{},"下限","：deepseek-coder-1.3B 全系列（含 fp16）都只對 1–6 題，無法用群組基線判定，作者沒有把它們算進去",[490,504,505],{},"作者是獨立研究者，資料與工具都公開，但這是單一 registry、單一 runtime 版本的結果",[120,507,508],{"id":508},"結論",[111,510,511],{},[140,512,513],{},"可重現，不等於可用。",[111,515,516,517,519],{},"檔案一致、checksum 通過、",[115,518,169],{}," 正常——這些都只證明「檔案是你以為的那個檔案」，不證明「模型會做事」。",[111,521,522,523,526],{},"所以問題不是「量化能不能用」，是它",[140,524,525],{},"有沒有被測過","。目前答案是：registries 沒有，所以你得自己測。",[528,529],"hr",{},[111,531,532],{},[533,534,535,536,543,544,543,549,198],"em",{},"原始資料：",[537,538,542],"a",{"href":539,"rel":540},"https:\u002F\u002Farxiv.org\u002Fabs\u002F2609.05881",[541],"nofollow","arXiv 2609.05881v3","、",[537,545,548],{"href":546,"rel":547},"https:\u002F\u002Fgithub.com\u002Faditi-p31\u002Fquantcheck",[541],"quantcheck（稽核資料與工具）",[537,550,553],{"href":551,"rel":552},"https:\u002F\u002Fgithub.com\u002Follama\u002Follama\u002Fissues\u002F18252",[541],"Ollama issue #18252",[111,555,556],{},[533,557,558,559,562,563,566],{},"我們比對 digest 的腳本：",[115,560,561],{},"scripts\u002Fcheck-ollama-tags.ts","。跑 ",[115,564,565],{},"npm run check:ollama -- --list"," 會列出這七個 tag 今天的 digest 與稽核值是否一致。",{"title":568,"searchDepth":569,"depth":569,"links":570},"",2,[571,572,573,574,575,576,577,578,579],{"id":122,"depth":569,"text":122},{"id":146,"depth":569,"text":147},{"id":177,"depth":569,"text":177},{"id":208,"depth":569,"text":209},{"id":288,"depth":569,"text":289},{"id":312,"depth":569,"text":313},{"id":445,"depth":569,"text":445},{"id":485,"depth":569,"text":485},{"id":508,"depth":569,"text":508},"\u002Fimages\u002Fblog\u002Fbroken-on-arrival-quantized-models.svg","量化模型檔案完整但功能失效的示意圖，checksum 打勾、程式碼全錯","2026-11-02","有人把 Ollama 官方庫 305 個程式碼模型全跑了一遍，發現 7 個低 bit 量化版幾乎全錯。但檔案沒有壞——重建回來 tensor 完全一致，所以 checksum 抓不到。這篇講它怎麼發生的、你現在能做的三件事。",false,"md","zh-TW",{},true,"\u002Fimages\u002Fblog\u002Fbroken-on-arrival-quantized-models.jpg","\u002Fblog\u002Fzh-tw\u002Fbroken-on-arrival-quantized-models",{"title":102,"description":583},"broken-on-arrival-quantized-models","blog\u002Fzh-TW\u002Fbroken-on-arrival-quantized-models",[595,596,597],"quantization","local-llm","gguf",null,"iM5l1m1nXRGY-pGG2MmAYggyxY9V2uAe132PQbEixw8",{"id":601,"title":602,"author":103,"body":603,"cover":1008,"coverAlt":1009,"date":582,"description":1010,"draft":584,"extension":585,"featured":584,"lang":1011,"meta":1012,"navigation":588,"ogImage":1013,"path":1014,"seo":1015,"slug":592,"stem":1016,"tags":1017,"translationKey":592,"updated":598,"__hash__":1018},"blog\u002Fblog\u002Fen\u002Fbroken-on-arrival-quantized-models.md","Your quantized model might be broken",{"type":105,"value":604,"toc":997},[605,613,617,623,626,629,635,639,642,649,656,666,670,673,680,689,695,699,702,751,754,760,764,767,774,780,783,787,790,881,887,896,900,913,919,930,934,952,956,961,967,974,976],[108,606,607],{},[111,608,609,610,612],{},"Numbers come from arXiv 2609.05881v3 and the author's ",[115,611,117],{}," audit data. Whether the bad files are still being served is our own check; the method is at the end.",[120,614,616],{"id":615},"a-scene","A scene",[111,618,619,620,622],{},"You are on a laptop. You run ",[115,621,128],{},", choosing a 2-bit tag because memory is tight.",[111,624,625],{},"The model starts. It answers, and it is fast. Then you ask for a sorting function and the code does not compile. You try another task; same thing.",[111,627,628],{},"Your first instinct is to blame yourself: the prompt? the temperature? maybe this model is just weak?",[111,630,631,632],{},"A paper turned that doubt into a census: ",[140,633,634],{},"of 305 code-capable tags in the official Ollama library, seven solved at most six of 164 HumanEval+ tasks. Six solved none.",[120,636,638],{"id":637},"the-counter-intuitive-part-the-files-are-fine","The counter-intuitive part: the files are fine",[111,640,641],{},"When a model misbehaves, you suspect a corrupt download.",[111,643,644,645,648],{},"The author rebuilt five of the seven from the original weights with llama.cpp. Comparing tensor by tensor, ",[140,646,647],{},"all five matched exactly"," — 434 tensors for the Qwen2.5-Coder-3B tags.",[111,650,651,652,655],{},"So these are not corrupt files. They are ",[140,653,654],{},"correctly reproduced broken artifacts",".",[111,657,658,659,661,662,665],{},"Checksums pass. File sizes match. ",[115,660,169],{}," looks normal. Because the file really is exactly what it claims to be. What is broken is the ",[140,663,664],{},"quantization recipe",": same weights, same toolchain, same tensor mix, but without calibration the model collapsed into a shape that cannot write code.",[120,667,669],{"id":668},"why-this-happens","Why this happens",[111,671,672],{},"Quantization squeezes weights from 16 bits down to 2–4 bits. Every step has to decide where the rounding error lands.",[111,674,675,676,679],{},"The default approach spreads it evenly. The better approach uses ",[140,677,678],{},"calibration data"," — llama.cpp's importance matrix (imatrix) — to push error away from the weights that matter, based on activation statistics.",[111,681,682,683,686,687,655],{},"Without imatrix, small models at low bit are the ones that fall apart. All seven suspects sit in ",[140,684,685],{},"q2_K through q3_K_L, in models of at most 4B parameters",". That subgroup contains 48 tags, so the failure rate inside it is ",[140,688,197],{},[111,690,691,692,655],{},"But the recipe alone does not predict failure: the same uncalibrated recipe left Qwen2.5-Coder-1.5B functional (13–15 of 15). The problem is not \"low bit always breaks\". It is that ",[140,693,694],{},"when it breaks, you cannot tell",[120,696,698],{"id":697},"calibration-rescues-most-of-them","Calibration rescues most of them",[111,700,701],{},"Holding weights, toolchain and tensor mix fixed, adding only an imatrix:",[214,703,704,716],{},[217,705,706],{},[220,707,708,710,713],{},[223,709,225],{},[223,711,712],{},"Before",[223,714,715],{},"After imatrix (of 164)",[233,717,718,726,734,742],{},[220,719,720,722,724],{},[238,721,240],{},[238,723,243],{},[238,725,246],{},[220,727,728,730,732],{},[238,729,251],{},[238,731,243],{},[238,733,256],{},[220,735,736,738,740],{},[238,737,261],{},[238,739,243],{},[238,741,266],{},[220,743,744,746,748],{},[238,745,271],{},[238,747,243],{},[238,749,750],{},"13–30 (still weak)",[111,752,753],{},"(The paper's abstract says \"0 → 76–113\"; the per-level numbers above come from the v3.4 audit data, which we treat as authoritative.)",[111,755,756,757],{},"Same model, same bit width, one calibration table: ",[140,758,759],{},"from zero tasks to three digits.",[120,761,763],{"id":762},"another-failure-mode-a-missing-chat-template","Another failure mode: a missing chat template",[111,765,766],{},"Beyond the seven, the author also tested 22 popular Hugging Face community files. Two of them (TheBloke's deepseek-coder-6.7B Q3_K_M and Q4_K_M) scored 5 and 6 of 15 in the census.",[111,768,769,770,773],{},"The cause was not quantization but a ",[140,771,772],{},"missing chat template",". With no template, Ollama falls back to a default ChatML format that does not match the model's instruction format: 28 of 30 answers ran on into invented chat turns.",[111,775,776,777,655],{},"With the right template: ",[140,778,779],{},"98 and 101 of 164",[111,781,782],{},"So \"it runs\" and \"it answers properly\" are separated by a template.",[120,784,786],{"id":785},"we-checked-the-bad-tags-are-still-being-served","We checked: the bad tags are still being served",[111,788,789],{},"A September incident is only interesting if it is still downloadable. We compared the blob digests in the audit data against the current Ollama registry manifests:",[214,791,792,807],{},[217,793,794],{},[220,795,796,798,801,804],{},[223,797,225],{},[223,799,800],{},"Audited digest",[223,802,803],{},"Today",[223,805,806],{},"Status",[233,808,809,821,831,841,851,861,871],{},[220,810,811,813,815,818],{},[238,812,340],{},[238,814,343],{},[238,816,817],{},"same",[238,819,820],{},"still served",[220,822,823,825,827,829],{},[238,824,354],{},[238,826,357],{},[238,828,817],{},[238,830,820],{},[220,832,833,835,837,839],{},[238,834,366],{},[238,836,369],{},[238,838,817],{},[238,840,820],{},[220,842,843,845,847,849],{},[238,844,378],{},[238,846,381],{},[238,848,817],{},[238,850,820],{},[220,852,853,855,857,859],{},[238,854,390],{},[238,856,393],{},[238,858,817],{},[238,860,820],{},[220,862,863,865,867,869],{},[238,864,402],{},[238,866,405],{},[238,868,817],{},[238,870,820],{},[220,872,873,875,877,879],{},[238,874,414],{},[238,876,417],{},[238,878,817],{},[238,880,820],{},[111,882,883,886],{},[140,884,885],{},"Seven out of seven are still there, with identical digests."," This is not history; it is something you can pull today.",[111,888,889,890,892,893,895],{},"(Method: fetch ",[115,891,437],{}," and compare the ",[115,894,441],{}," layer digest. Script at the end.)",[120,897,899],{"id":898},"three-things-you-can-do-now","Three things you can do now",[111,901,902,905,906,908,909,912],{},[140,903,904],{},"Screen."," The author released ",[115,907,117],{},", a 15-task screen per tag. It costs about ",[140,910,911],{},"30 seconds of generation"," (on a 4090, excluding download). None of 66 sampled tags that passed the screen turned out to be non-functional, so it works as a pre-filter.",[111,914,915,918],{},[140,916,917],{},"If you publish quantizations:"," add an imatrix, and run a functional test before publishing. Registries will not do it for you.",[111,920,921,474,924,926,927,929],{},[140,922,923],{},"Check the chat template.",[115,925,477],{},"; if it prints ",[115,928,481],{},", there is no template and the model may be answering in the wrong format.",[120,931,933],{"id":932},"do-not-over-read-this","Do not over-read this",[487,935,936,939,942,949],{},[490,937,938],{},"2.3% is the share of official, code-capable, ≤8 GB tags — not of all quantized models",[490,940,941],{},"Only coding ability was tested (HumanEval+); perplexity is a pre-check, not proof of function",[490,943,944,945,948],{},"Seven is a ",[140,946,947],{},"lower bound",": all 12 deepseek-coder-1.3B tags, including fp16, score 1–6 of 15, so a group baseline cannot judge them and the author does not count them",[490,950,951],{},"The author is an independent researcher; data and tools are public, but this is one registry and one runtime version",[120,953,955],{"id":954},"conclusion","Conclusion",[111,957,958],{},[140,959,960],{},"Exact reproducibility is not function.",[111,962,963,964,966],{},"Identical tensors, a passing checksum, a normal ",[115,965,169],{}," — all of that proves the file is the file. None of it proves the model can do the job.",[111,968,969,970,973],{},"So the question is not whether quantized models are usable. It is ",[140,971,972],{},"whether anyone tested whether this one is",". Right now the registries have not, which leaves it to you.",[528,975],{},[111,977,978],{},[533,979,980,981,984,985,984,988,991,992,994,995,655],{},"Sources: ",[537,982,542],{"href":539,"rel":983},[541],", ",[537,986,117],{"href":546,"rel":987},[541],[537,989,553],{"href":551,"rel":990},[541],". Our digest check: ",[115,993,561],{},"; run ",[115,996,565],{},{"title":568,"searchDepth":569,"depth":569,"links":998},[999,1000,1001,1002,1003,1004,1005,1006,1007],{"id":615,"depth":569,"text":616},{"id":637,"depth":569,"text":638},{"id":668,"depth":569,"text":669},{"id":697,"depth":569,"text":698},{"id":762,"depth":569,"text":763},{"id":785,"depth":569,"text":786},{"id":898,"depth":569,"text":899},{"id":932,"depth":569,"text":933},{"id":954,"depth":569,"text":955},"\u002Fimages\u002Fblog\u002Fen\u002Fbroken-on-arrival-quantized-models.svg","A quantized model file that passes its checksum but fails every coding task","Someone tested every code-capable tag in Ollama's library. Seven low-bit quantizations failed nearly all tasks, yet the files were exact rebuilds. Checksums pass; the recipe is broken.","en",{},"\u002Fimages\u002Fblog\u002Fen\u002Fbroken-on-arrival-quantized-models.jpg","\u002Fblog\u002Fen\u002Fbroken-on-arrival-quantized-models",{"title":602,"description":1010},"blog\u002Fen\u002Fbroken-on-arrival-quantized-models",[595,596,597],"tOVVVr1HmeG95b9UhxSxh_uy4dZQvyUwEripBKmKjww",[1020,1520],{"id":1021,"title":1022,"author":103,"body":1023,"cover":1506,"coverAlt":1507,"date":1508,"description":1509,"draft":584,"extension":585,"featured":584,"lang":586,"meta":1510,"navigation":588,"ogImage":1511,"path":1512,"seo":1513,"slug":1514,"stem":1515,"tags":1516,"translationKey":1514,"updated":598,"__hash__":1519},"blog\u002Fblog\u002Fzh-TW\u002Fstrata-125b-on-12gb.md","125B 模型，12GB 顯卡，94 tok\u002Fs",{"type":105,"value":1024,"toc":1494},[1025,1042,1045,1048,1051,1054,1060,1067,1071,1074,1089,1092,1096,1103,1106,1109,1113,1119,1122,1172,1175,1178,1184,1191,1195,1198,1201,1204,1207,1268,1275,1280,1287,1290,1296,1302,1308,1311,1314,1320,1327,1334,1338,1341,1348,1351,1399,1402,1409,1416,1419,1439,1442,1445,1448,1455,1468,1471,1491],[108,1026,1027],{},[111,1028,1029,1030,1035,1036,1041],{},"這篇沒有我們的實測。數據來自 Qwen 官方發布、",[537,1031,1034],{"href":1032,"rel":1033},"https:\u002F\u002Fgithub.com\u002FBlockYugaLabs\u002FStrata",[541],"Strata 開源專案"," 的說明，以及一位對岸開發者的",[537,1037,1040],{"href":1038,"rel":1039},"https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1WwJy6EEuN\u002F",[541],"公開實測影片","。文中會標明哪個數字是誰給的。",[120,1043,1044],{"id":1044},"三個數字",[111,1046,1047],{},"125B 的模型。12GB 的顯示卡。94 tok\u002Fs。",[111,1049,1050],{},"半年前，這三個數字放在一起是笑話。當時想在家用電腦跑 27B 的模型，量化後 20GB，加上 KV cache，你得有 24GB 的卡才勉強開到 128K 上下文。",[111,1052,1053],{},"現在 125B 跑在 12GB 上，而且不是「能跑」，是「比你讀字還快」。",[111,1055,1056,1057,198],{},"真正變的不是模型變聰明，是",[140,1058,1059],{},"模型有多大，和硬體要多好，已經開始脫鉤",[111,1061,1062,1063,1066],{},"先講清楚前提：94 tok\u002Fs 是 RTX 5070（12GB）搭配 ",[140,1064,1065],{},"64GB 系統記憶體","的成績。只有 32GB 記憶體的話，只能跑砍半的 Coder 版本。這不是「插一張卡就好」的故事。",[120,1068,1070],{"id":1069},"兩個限制被分別繞過","兩個限制，被分別繞過",[111,1072,1073],{},"大模型跑不動，卡在兩件事：",[1075,1076,1077,1083],"ol",{},[490,1078,1079,1082],{},[140,1080,1081],{},"裝不下","：權重是硬的。這顆模型加上 51B 的 n-gram 查表，量化後檔案還是 70–80GB。",[490,1084,1085,1088],{},[140,1086,1087],{},"算不動","：每個 token 都要讓所有參數參與計算。",[111,1090,1091],{},"Qwen3.8-Flash-Next 處理了第二個，Strata 處理了第一個。",[120,1093,1095],{"id":1094},"第一個限制不是每個專家都要上班","第一個限制：不是每個專家都要上班",[111,1097,1098,1099,1102],{},"Flash-Next 是 MoE（混合專家）架構。官方數字是 125B 總參數、",[140,1100,1101],{},"6B 激活","：每個 token 的計算量，大約等於一個 6B 模型。",[111,1104,1105],{},"打個比方：傳統稠密模型是「公司裡每個部門都得參與每一個案子」，MoE 是「只叫相關的幾個部門進來開會」。",[111,1107,1108],{},"所以「算不動」這件事，先解決了一半。",[120,1110,1112],{"id":1111},"第二個限制把整台電腦當成一台機器","第二個限制：把整台電腦當成一台機器",[111,1114,1115,1116,198],{},"但 6B 的計算量，不代表 6B 的記憶體——",[140,1117,1118],{},"125B 的權重還是得存在某個地方",[111,1120,1121],{},"Strata 的做法是不要全部塞進顯存，按「多常用」分三層放（見圖 1）：",[214,1123,1124,1137],{},[217,1125,1126],{},[220,1127,1128,1131,1134],{},[223,1129,1130],{},"層",[223,1132,1133],{},"放什麼",[223,1135,1136],{},"佔用",[233,1138,1139,1150,1161],{},[220,1140,1141,1144,1147],{},[238,1142,1143],{},"顯存 VRAM",[238,1145,1146],{},"最常命中的專家",[238,1148,1149],{},"12–24 GB",[220,1151,1152,1155,1158],{},[238,1153,1154],{},"系統記憶體",[238,1156,1157],{},"全部專家（開機時載入）",[238,1159,1160],{},"約 47 GB",[220,1162,1163,1166,1169],{},[238,1164,1165],{},"SSD",[238,1167,1168],{},"其餘權重與 n-gram 查表",[238,1170,1171],{},"檔案總量 70–80 GB",[111,1173,1174],{},"（47GB 是那位開發者在 IQ3_S 量化下的實測；官方建議 64GB 記憶體就是為了裝下這一層。）",[111,1176,1177],{},"跑起來的時候，GPU 算它手上的專家；沒命中的，要嘛走 PCIe 搬進顯存，要嘛直接讓 CPU 用記憶體裡的權重算。",[111,1179,1180,1181,198],{},"這就是為什麼 12GB 的卡能跑——",[140,1182,1183],{},"顯存不再是「裝不裝得下」的容器，而是「快取多大」的問題",[111,1185,1186],{},[1187,1188],"img",{"alt":1189,"src":1190},"如圖 1：三層記憶體階層——顯存放熱門專家、記憶體放全部專家、SSD 放冷門權重與 n-gram 查表","\u002Fimages\u002Fblog\u002Fstrata-125b-on-12gb\u002F01-memory-tiers.svg",[120,1192,1194],{"id":1193},"還有一個加速器猜然後驗證","還有一個加速器：猜，然後驗證",[111,1196,1197],{},"除了省記憶體，Strata 還用了投機解碼：小模型先猜接下來幾個 token，大模型一次驗證。",[111,1199,1200],{},"猜對就省下好幾步，官方數字大約快 1.6–1.8 倍。",[120,1202,1203],{"id":1203},"實際多快",[111,1205,1206],{},"官方在 RTX 5070（12GB 顯存、64GB RAM）上測到的：",[214,1208,1209,1222],{},[217,1210,1211],{},[220,1212,1213,1216,1219],{},[223,1214,1215],{},"量化",[223,1217,1218],{},"寫答案",[223,1220,1221],{},"讀 prompt（32K）",[233,1223,1224,1235,1246,1257],{},[220,1225,1226,1229,1232],{},[238,1227,1228],{},"Q2_0",[238,1230,1231],{},"94 tok\u002Fs",[238,1233,1234],{},"2,650 tok\u002Fs",[220,1236,1237,1240,1243],{},[238,1238,1239],{},"IQ2_XS",[238,1241,1242],{},"79 tok\u002Fs",[238,1244,1245],{},"2,090 tok\u002Fs",[220,1247,1248,1251,1254],{},[238,1249,1250],{},"IQ3_XXS",[238,1252,1253],{},"62 tok\u002Fs",[238,1255,1256],{},"1,750 tok\u002Fs",[220,1258,1259,1262,1265],{},[238,1260,1261],{},"IQ3_S",[238,1263,1264],{},"53 tok\u002Fs",[238,1266,1267],{},"1,620 tok\u002Fs",[111,1269,1270,1271,1274],{},"24GB 的卡更快。那位開發者在他的 4090 + 64GB RAM 上實測：",[140,1272,1273],{},"解碼約 140 tok\u002Fs、prefill 約 4,400 tok\u002Fs","，256K 上下文開滿也還跑得動。",[108,1276,1277],{},[111,1278,1279],{},"他第一次測到 203 tok\u002Fs，後來發現是 benchmark 沒把 reasoning 時間與快取命中算進去。修正後才是 140。這種「先懷疑自己的量測」比數字本身更有價值。",[111,1281,1282,1283,1286],{},"要注意上面那張表的「讀 prompt 2,650 tok\u002Fs」是快取熱起來之後的數字。",[140,1284,1285],{},"冷啟動第一次讀長文會慢很多","——官方文件寫的是每 30,000 tokens 約一分鐘，大約 500 tok\u002Fs。",[120,1288,1289],{"id":1289},"代價",[111,1291,1292,1295],{},[140,1293,1294],{},"一、量化到 2-bit。"," 94 tok\u002Fs 是 Q2_0 的數字，那是很兇的壓縮。要品質就得犧牲速度——IQ3_S 剩 53 tok\u002Fs。這是取捨，不是免費的。",[111,1297,1298,1301],{},[140,1299,1300],{},"二、記憶體與啟動。"," 開機要把 35–55GB 載進記憶體，電腦會卡 1–3 分鐘；整個程序佔用超過 50GB。32GB 的機器只能跑 Coder 變體（砍掉一半專家），官方也提醒它在中文本表現較弱。",[111,1303,1304,1307],{},[140,1305,1306],{},"三、一次一個請求。"," 預設不支援併發，第二個請求要排隊。開併發得調參數，12GB 的卡上會讓每個回答變慢。",[120,1309,1310],{"id":1310},"調參的迷思",[111,1312,1313],{},"Strata 有不少參數可調：PCIE_FRAC（GPU 與 CPU 怎麼分攤計算）、CPU Workers、MTP 深度、KVGROW。",[111,1315,1316,1317,198],{},"那位開發者花了大量時間做矩陣測試，他的結論是：",[140,1318,1319],{},"官方自動校準就夠了",[111,1321,1322,1323,1326],{},"他自己測出的「快 5%、快 9%」，多跑幾輪就消失，有時候還反過來。原因是速度受當下生成的內容、專家路由狀態、MTP 命中率、GPU 快取影響——這些變異比參數本身還大。這是",[140,1324,1325],{},"在他那台機器上","的結論，換硬體要重新驗證。",[111,1328,1329,1330,1333],{},"有一個參數值得單獨提：",[140,1331,1332],{},"KVGROW","。預設開 256K 上下文時，引擎會先把整段 KV cache 的顯存預留起來，結果短對話也沒位置放熱專家，速度掉到最慢檔。KVGROW 讓 cache 跟著實際用量長大：短對話快，長對話才讓位。",[120,1335,1337],{"id":1336},"所以該不該自架","所以，該不該自架？",[111,1339,1340],{},"先把興奮放一邊，算一算。匯率抓 1 美元 ≈ NT$31.5。",[111,1342,1343,1344,1347],{},"Qwen3.8-Flash 的 API 價格是 ",[140,1345,1346],{},"$0.16 \u002F 百萬 input token、$0.47 \u002F 百萬 output","——output 是 input 的三倍，這段先只算 input，方便比較。",[111,1349,1350],{},"一台跑得舒服的機器（4090 或同級 + 64GB RAM）大約台幣 8–10 萬。",[214,1352,1353,1366],{},[217,1354,1355],{},[220,1356,1357,1360,1363],{},[223,1358,1359],{},"每月 input 用量",[223,1361,1362],{},"API 成本",[223,1364,1365],{},"自架電費",[233,1367,1368,1379,1389],{},[220,1369,1370,1373,1376],{},[238,1371,1372],{},"1,000 萬 token",[238,1374,1375],{},"約 NT$50",[238,1377,1378],{},"NT$250–370",[220,1380,1381,1384,1387],{},[238,1382,1383],{},"1 億 token",[238,1385,1386],{},"約 NT$500",[238,1388,1378],{},[220,1390,1391,1394,1397],{},[238,1392,1393],{},"10 億 token",[238,1395,1396],{},"約 NT$5,000",[238,1398,1378],{},[111,1400,1401],{},"電費怎麼算的：推論時約 350W，每天用兩小時、其餘時間閒置 80W，一個月約 74 度；台電累進電價抓每度 NT$3–5，就是每個月 250–370 元。24 小時滿載的話是 250 度左右，大約 NT$750–1,250。",[111,1403,1404,1405,1408],{},"看表就知道結論：",[140,1406,1407],{},"每月十億 token 以下，API 連電費都比較便宜","，還沒算機器折舊。",[111,1410,1411,1412,1415],{},"粗算回本點：",[115,1413,1414],{},"10 萬 ÷ (5,000 − 370) ≈ 22 個月","——那是每月十億 token 的量才成立。對絕大多數中小企業，這個量級不會出現。",[111,1417,1418],{},"那自架還有什麼意義？三個：",[487,1420,1421,1427,1433],{},[490,1422,1423,1426],{},[140,1424,1425],{},"隱私","：資料不出門。這是最難用錢換的",[490,1428,1429,1432],{},[140,1430,1431],{},"離線","：工廠、船上、沒有網路的現場",[490,1434,1435,1438],{},[140,1436,1437],{},"不受限","：不用擔心費率調整、政策變更、API 下架",[111,1440,1441],{},"如果你不屬於這三種，用 API 就好，而且會用得比自架開心。",[120,1443,1444],{"id":1444},"真正的重點",[111,1446,1447],{},"這篇想說的不是「125B 好強」。",[111,1449,1450,1451,1454],{},"是",[140,1452,1453],{},"模型大小已經不能拿來判斷硬體需求了","。同樣 125B，你可以用 360GB 的伺服器跑，也可以用 12GB 的遊戲卡跑——差別只在於有沒有人幫你把記憶體階層調度好。",[111,1456,1457,1458,1462,1463,1467],{},"這也是我們做",[537,1459,1461],{"href":1460},"\u002Fservices","地端部署","時真正在處理的問題：不是「這顆模型跑不跑得動」，而是「你的瓶頸在哪一層」。我們在",[537,1464,1466],{"href":1465},"\u002Fwork\u002Fembedded-vision-background","資源受限裝置","上累積的經驗，換到 LLM 上其實是同一件事。",[111,1469,1470],{},"如果你正在評估要不要自架，先問三個問題：",[1075,1472,1473,1479,1485],{},[490,1474,1475,1478],{},[140,1476,1477],{},"每月 token 量有沒有到億級？"," 沒有，API 幾乎一定更划算。",[490,1480,1481,1484],{},[140,1482,1483],{},"資料能不能出門？"," 不能，才輪到自架。",[490,1486,1487,1490],{},[140,1488,1489],{},"有沒有 64GB 記憶體與一張 12GB 以上的卡？"," 沒有，連門檻都不到。",[111,1492,1493],{},"三題有兩題是「否」，答案就是 API。",{"title":568,"searchDepth":569,"depth":569,"links":1495},[1496,1497,1498,1499,1500,1501,1502,1503,1504,1505],{"id":1044,"depth":569,"text":1044},{"id":1069,"depth":569,"text":1070},{"id":1094,"depth":569,"text":1095},{"id":1111,"depth":569,"text":1112},{"id":1193,"depth":569,"text":1194},{"id":1203,"depth":569,"text":1203},{"id":1289,"depth":569,"text":1289},{"id":1310,"depth":569,"text":1310},{"id":1336,"depth":569,"text":1337},{"id":1444,"depth":569,"text":1444},"\u002Fimages\u002Fblog\u002Fstrata-125b-on-12gb.svg","125B 模型跑在 12GB 顯卡上的示意圖","2026-10-24","Strata 讓 125B 的 Qwen3.8-Flash-Next 跑在 12GB 顯卡的遊戲機上，解碼 94 tok\u002Fs。拆解它靠什麼做到、代價在哪裡，以及中小企業該不該自架。",{},"\u002Fimages\u002Fblog\u002Fstrata-125b-on-12gb.jpg","\u002Fblog\u002Fzh-tw\u002Fstrata-125b-on-12gb",{"title":1022,"description":1509},"strata-125b-on-12gb","blog\u002Fzh-TW\u002Fstrata-125b-on-12gb",[596,1517,1518],"qwen","inference","AzAFYoV9JKM6X1-qHOAhv64-PaZVkfvITS_J8_39_Oc",{"id":1521,"title":1522,"author":103,"body":1523,"cover":2203,"coverAlt":2204,"date":2205,"description":2206,"draft":584,"extension":585,"featured":584,"lang":586,"meta":2207,"navigation":588,"ogImage":2208,"path":2209,"seo":2210,"slug":2211,"stem":2212,"tags":2213,"translationKey":2211,"updated":598,"__hash__":2217},"blog\u002Fblog\u002Fzh-TW\u002Fshared-trunk-four-modalities.md","共用維度：升維的新方向",{"type":105,"value":1524,"toc":2184},[1525,1530,1533,1536,1539,1542,1555,1561,1564,1567,1573,1579,1585,1591,1595,1601,1610,1613,1616,1621,1624,1640,1643,1646,1651,1655,1658,1663,1666,1673,1679,1683,1686,1692,1695,1699,1702,1708,1711,1714,1725,1728,1731,1737,1740,1743,1747,1750,1753,1759,1766,1769,1772,1778,1781,1785,1788,1791,1794,1800,1804,1807,1867,1870,2036,2039,2042,2048,2054,2060,2066,2069,2072,2075,2081,2087,2093,2103,2114,2120,2124,2127,2133,2136,2149,2155,2161,2163],[108,1526,1527],{},[111,1528,1529],{},"這篇沒有我們的實測。數字都來自論文與模型卡，連結在文末；判斷是我們的，會標明。",[120,1531,1532],{"id":1532},"先講一個場景",[111,1534,1535],{},"假設你要做一個「公司內部什麼都能搜」的系統。",[111,1537,1538],{},"合約是 PDF，發票是掃描件，會議是錄音，產品照是圖檔。",[111,1540,1541],{},"多模態過去有兩條路：一條是養四個模型——文字嵌入、視覺嵌入、語音轉文字、音訊分類，四套向量空間互不相通，最後再加一層對齊；另一條是把一個模型做得很大，大到能吞下所有模態。",[111,1543,1544,1545,1550,1551,1554],{},"2026 年 10 月，Google 的 ",[537,1546,1549],{"href":1547,"rel":1548},"https:\u002F\u002Farxiv.org\u002Fabs\u002F2610.37364",[541],"EmbeddingGemma 2"," 示範了第三條：",[140,1552,1553],{},"共用語意 backbone，把不同模態的容量隔離在分支裡","。純文字跑起來只要 271M；需要視覺再打開視覺分支，需要聲音再打開音訊分支。",[111,1556,1557,1558],{},"它真正值錢的地方不是「一個模型吃四種資料」，而是：",[140,1559,1560],{},"升維不必讓整個模型一起變胖。",[120,1562,1563],{"id":1563},"升維的舊帳單",[111,1565,1566],{},"要理解這條新路，先看舊路的成本。",[111,1568,1569,1572],{},[140,1570,1571],{},"第一是乘法。"," 稠密模型的帳單是參數量乘上 token 數。想多一種能力，就得把所有東西一起放大。",[111,1574,1575,1578],{},[140,1576,1577],{},"第二是梯度打架。"," 同一組權重要同時滿足「這個像素是貓」和「這個詞是主詞」。兩邊梯度方向不同，互相拉扯。多任務學習裡叫負遷移。",[111,1580,1581,1584],{},[140,1582,1583],{},"第三是輸入幾何不同。"," 文字是離散的 token、影像是像素網格、聲音是波形。它們連「什麼是一個單位」都不一樣。",[111,1586,1587,1588],{},"這三個帳單不是要證明多模態不可行，而是說明為什麼舊路走到某個尺寸就開始不划算。",[140,1589,1590],{},"新方向的價值，就是換一種付帳方式。",[120,1592,1594],{"id":1593},"新方向共用維度隔離容量","新方向：共用維度，隔離容量",[111,1596,1597,1598],{},"EmbeddingGemma 2 的做法是：",[140,1599,1600],{},"拆在入口，合在語意。",[1602,1603,1608],"pre",{"className":1604,"code":1606,"language":1607},[1605],"language-text","圖片\u002F影片\u002F聲音 ──[各自的編碼器]──> soft token ──[同一個 24 層 transformer]──> 向量\n                   ↑ 分開                              ↑ 共用\n","text",[115,1609,1606],{"__ignoreMap":568},[111,1611,1612],{},"模態編碼器各自處理低階特徵（像素、波形），輸出變成「soft token」——連續向量，跟文字 token 一樣可以排進序列，但不需要對應任何一個字。高階語意則全部交給同一個 transformer。",[111,1614,1615],{},"參數這樣分：主幹（文字也走這裡）271M、視覺編碼器 167M、音訊編碼器 305M。",[111,1617,1618],{},[140,1619,1620],{},"注意那個 305M：音訊編碼器比整個文字主幹還大。",[111,1622,1623],{},"這正是新方向的關鍵。容量掛在分支上，於是它可以被關掉：",[1625,1626,1629,1630,1629,1636],"figure",{"className":1627},[1628],"article-figure","\n  ",[1631,1632],"video",{"src":1633,"poster":1634,"autoPlay":588,"loop":588,"muted":588,"playsInline":588,"ariaLabel":1635},"\u002Fimages\u002Fblog\u002Fshared-trunk-four-modalities\u002Fsplit.mp4","\u002Fimages\u002Fblog\u002Fshared-trunk-four-modalities\u002Fsplit-poster.jpg","參數分配與實際載入記憶體",[1637,1638,1639],"figcaption",{},"左邊是參數分配；右邊是實際載入。分支可以按需打開——這就是「升維不必變胖」的機制。",[111,1641,1642],{},"在 Pixel 11 Pro 上、Q4_C 量化下，峰值記憶體（含 runtime 編譯開銷）：純文字 191 MB、文字加影像 447 MB、全模態 567 MB。",[111,1644,1645],{},"而且文字品質沒有犧牲。它的 271M 文字路徑，多語 MTEB 平均 61.36；前一代 308M 是 61.15。參數更少、還多扛三種模態，文字沒有掉。",[111,1647,1648],{},[140,1649,1650],{},"這就是這條路最有希望的地方：升維可以是「選擇性打開」，不是「整體膨脹」。",[120,1652,1654],{"id":1653},"兩種拆法兩張帳單","兩種拆法，兩張帳單",[111,1656,1657],{},"同樣是「共用主幹、隔離容量」，可以拆在不同地方。目前兩種主流答案：",[1659,1660,1662],"h3",{"id":1661},"moe拆在模型中間","MoE：拆在模型中間",[111,1664,1665],{},"同一層裡放很多專家，每個 token 只走其中幾個，由 router 決定。",[111,1667,1668,1669,1672],{},"它換到的是：",[140,1670,1671],{},"容量與「每 token 計算量」脫鉤。"," 參數可以很多，但每個 token 只碰一小塊。",[111,1674,1675,1676],{},"代價是訓練變難：router 崩塌、專家負載不均、梯度稀疏。",[140,1677,1678],{},"MoE 用訓練的難度，換推論的成本。",[1659,1680,1682],{"id":1681},"embeddinggemma-2拆在入口","EmbeddingGemma 2：拆在入口",[111,1684,1685],{},"異質的模態交給設計好的編碼器，同質的語意交給共用主幹。",[111,1687,1668,1688,1691],{},[140,1689,1690],{},"容量與「常駐記憶體」脫鉤。"," 你不需要為了偶爾用一次影片檢索，讓整個模型常駐。",[111,1693,1694],{},"兩者解的不是同一道題，也不互斥。一個在計算上省，一個在記憶體上省。",[120,1696,1698],{"id":1697},"早融合與晚融合在哪一層開始對齊","早融合與晚融合：在哪一層開始對齊",[111,1700,1701],{},"如果你聽過 CLIP，會覺得「這不就是多模態嗎」。",[111,1703,1704,1705,198],{},"差別在",[140,1706,1707],{},"合併點",[111,1709,1710],{},"晚融合（CLIP、SigLIP）：兩個完整編碼器各自跑完，最後用對比損失對齊。兩塔之間沒有資訊交換。",[111,1712,1713],{},"早融合（EmbeddingGemma 2）：編碼完就變成 soft token，塞進同一個 transformer，所有模態在上面混在一起。",[1625,1715,1629,1717,1629,1722],{"className":1716},[1628],[1631,1718],{"src":1719,"poster":1720,"autoPlay":588,"loop":588,"muted":588,"playsInline":588,"ariaLabel":1721},"\u002Fimages\u002Fblog\u002Fshared-trunk-four-modalities\u002Fflow.mp4","\u002Fimages\u002Fblog\u002Fshared-trunk-four-modalities\u002Fflow-poster.jpg","晚融合與早融合的資料流",[1637,1723,1724],{},"差別不在「有沒有對齊」，在「在哪一層開始對齊」——這決定能不能學到跨模態的交互。",[111,1726,1727],{},"晚融合的好處是兩個塔可以各自很強；代價是學不到跨模態的交互——圖片裡的文字、影片的原聲、簡報裡圖表跟標題的關係。",[111,1729,1730],{},"早融合的代價是所有模態要擠進同一個狹窄通道。它的模型維度只有 512，總共 24 層。（這是我們的解讀：刻意選窄。）",[111,1732,1733,1734],{},"它的賭注是：",[140,1735,1736],{},"語意空間夠窄，才逼得出真正的共同表示。",[120,1738,1739],{"id":1739},"三個支持這條路的證據",[111,1741,1742],{},"論文做了消融實驗，其中三個對「共用主幹」這個方向特別有說服力。",[1659,1744,1746],{"id":1745},"拿掉文字專屬的機制全部變好","拿掉文字專屬的機制，全部變好",[111,1748,1749],{},"Gemma 的 per-layer embeddings 原本多一個查找表，作用是把 token 資訊注入中間層。EmbeddingGemma 2 把查找表拿掉，只保留投影。",[111,1751,1752],{},"整體從 55.07 變成 55.46；影像 54.57 → 54.67、影片 47.13 → 47.82、視覺文件 61.76 → 62.37。這些消融是訓練過程中的中間配方，不等於最終模型（最終 MMEB-v2 整體是 59.01）。",[111,1754,1755,1758],{},[140,1756,1757],{},"拿掉反而全部變好","，連純文字也是。論文給的理由是：查找表對非文字模態「沒有直接訊號」，還額外佔記憶體。",[111,1760,1761,1762,1765],{},"我們的解讀是：",[140,1763,1764],{},"共同空間不是靠加東西達成的，是靠拿掉東西。"," 任何讓某一模態「繞過」共同空間的機制，都會拉低整體。",[1659,1767,1768],{"id":1768},"視覺編碼器不能凍結",[111,1770,1771],{},"可訓練的整體 52.27、影像 50.10、影片 43.26；凍結後掉到 48.18、44.35、39.24，差 4.1 分。",[111,1773,1774,1775],{},"很多多模態模型會凍結模態編碼器，省成本又保留原本能力。這篇的結果是：",[140,1776,1777],{},"編碼器要被訓練去適應共同空間。",[111,1779,1780],{},"對這條路來說這是好消息也是提醒——共用主幹不是免費的，它要求每個分支往同一個地方收斂，而收斂是可以被訓練出來的。",[1659,1782,1784],{"id":1783},"音訊編碼器是凍結的而音訊剛好只打平","音訊編碼器是凍結的，而音訊剛好只打平",[111,1786,1787],{},"論文寫得很清楚：音訊編碼器跟 Gemma 4 E2B\u002FE4B 完全相同，訓練期間凍結。",[111,1789,1790],{},"而音訊是它跟對手最接近的一項：MAEB 的 Mean(Task) 49.87，Jina Omni Nano 50.14，差 0.27 分。Mean(Type) 則是 48.65 對 55.31，沒有打平。對照之下，影像 57.28 對 55.43、影片 50.67 對 35.87，都是明顯領先。",[111,1792,1793],{},"作者自己也留了一句：「透過進一步訓練音訊編碼器，可能也會有類似的增益。」",[111,1795,1796,1799],{},[140,1797,1798],{},"這是我們的推測，不是論文的結論","：把音訊解凍，這一項可能拉開。但他們沒做，所以只能說「有這個可能」——這正是這條路還沒走完的地方。",[120,1801,1803],{"id":1802},"怎麼用選型不是排名","怎麼用：選型不是排名",[111,1805,1806],{},"選型要看的是「你的場景需要什麼」，不是「誰第一名」。",[214,1808,1809,1822],{},[217,1810,1811],{},[220,1812,1813,1816,1819],{},[223,1814,1815],{},"你的用途",[223,1817,1818],{},"可以這樣選",[223,1820,1821],{},"理由",[233,1823,1824,1835,1846,1856],{},[220,1825,1826,1829,1832],{},[238,1827,1828],{},"純文字檢索／RAG",[238,1830,1831],{},"Qwen3 或 Jina 的純文字模型",[238,1833,1834],{},"同尺寸下分數更高、模型更小",[220,1836,1837,1840,1843],{},[238,1838,1839],{},"文字加圖片搜尋",[238,1841,1842],{},"EmbeddingGemma 2 或 SigLIP 類專門模型",[238,1844,1845],{},"取決於要不要一份 checkpoint 打全部",[220,1847,1848,1851,1853],{},[238,1849,1850],{},"影片、聲音、混合模態",[238,1852,1549],{},[238,1854,1855],{},"影片領先 15–20 分，原生音訊比先轉文字好約 12 分",[220,1857,1858,1861,1864],{},[238,1859,1860],{},"手機／離線、記憶體吃緊",[238,1862,1863],{},"EmbeddingGemma 2 純文字版",[238,1865,1866],{},"191 MB，而且只載入需要的編碼器",[111,1868,1869],{},"幾個值得一起看的數字：",[214,1871,1872,1900],{},[217,1873,1874],{},[220,1875,1876,1879,1882,1885,1888,1891,1894,1897],{},[223,1877,1878],{},"模型",[223,1880,1881],{},"參數",[223,1883,1884],{},"多語文字",[223,1886,1887],{},"英文文字",[223,1889,1890],{},"程式碼",[223,1892,1893],{},"多模態整體",[223,1895,1896],{},"影像",[223,1898,1899],{},"影片",[233,1901,1902,1937,1961,1990,2013],{},[220,1903,1904,1908,1911,1914,1917,1922,1927,1932],{},[238,1905,1906],{},[140,1907,1549],{},[238,1909,1910],{},"744M",[238,1912,1913],{},"61.36",[238,1915,1916],{},"68.46",[238,1918,1919],{},[140,1920,1921],{},"78.68",[238,1923,1924],{},[140,1925,1926],{},"59.01",[238,1928,1929],{},[140,1930,1931],{},"57.28",[238,1933,1934],{},[140,1935,1936],{},"50.67",[220,1938,1939,1942,1945,1948,1951,1954,1957,1959],{},[238,1940,1941],{},"EmbeddingGemma 1",[238,1943,1944],{},"308M",[238,1946,1947],{},"61.15",[238,1949,1950],{},"69.67",[238,1952,1953],{},"68.76",[238,1955,1956],{},"—",[238,1958,1956],{},[238,1960,1956],{},[220,1962,1963,1966,1969,1974,1979,1981,1984,1987],{},[238,1964,1965],{},"Jina Embed v5 Omni Nano",[238,1967,1968],{},"986M",[238,1970,1971],{},[140,1972,1973],{},"65.52",[238,1975,1976],{},[140,1977,1978],{},"71.11",[238,1980,1956],{},[238,1982,1983],{},"43.61",[238,1985,1986],{},"31.56",[238,1988,1989],{},"30.73",[220,1991,1992,1995,1998,2001,2004,2007,2009,2011],{},[238,1993,1994],{},"Qwen3-Embedding-0.6B",[238,1996,1997],{},"596M",[238,1999,2000],{},"64.34",[238,2002,2003],{},"70.47",[238,2005,2006],{},"75.42",[238,2008,1956],{},[238,2010,1956],{},[238,2012,1956],{},[220,2014,2015,2018,2021,2023,2025,2027,2030,2033],{},[238,2016,2017],{},"InterestFM UIR CAFe 0.5B",[238,2019,2020],{},"894M",[238,2022,1956],{},[238,2024,1956],{},[238,2026,1956],{},[238,2028,2029],{},"49.33",[238,2031,2032],{},"55.43",[238,2034,2035],{},"35.87",[111,2037,2038],{},"（— 代表論文該欄沒有分數；論文用 ∗ 標「不支援」、– 標「沒有分數」，兩者不是同一件事。數字皆來自論文 Table 6。）",[111,2040,2041],{},"三件事值得注意。",[111,2043,2044,2047],{},[140,2045,2046],{},"第一，跟前代比，文字幾乎沒變，但多出了三種模態。"," 真正的差別不是分數，是「多出來的功能沒有把原本的能力吃掉」。",[111,2049,2050,2053],{},[140,2051,2052],{},"第二，純文字它輸給專門模型。"," Jina 多語贏 4.2 分、英文贏 2.7 分；Qwen3 贏 3.0 分。而且 744M 是「全部載入」的數字，純文字實際只跑 271M。論文附錄也給了答案：268M 的 harrier-oss-v1-270m 多語 66.5、212M 的 jina-embed-v5-text-nano 65.5，都比它高。這兩個是純文字專家模型。",[111,2055,2056,2057],{},"但這不是缺點，是分工。",[140,2058,2059],{},"你要一份能升維的 checkpoint，跟你要一個最強的文字模型，是兩個不同的需求。",[111,2061,2062,2065],{},[140,2063,2064],{},"第三，多模態它領先很多。"," 影片 50.67，Jina 30.73、InterestFM 35.87，差距 15 到 20 分。影像 57.28 對 55.43，贏得不誇張但穩定。",[111,2067,2068],{},"聲音方面：同一個模型，原生音訊 69.54，先轉文字（ASR）只有 57.59——差約 12 分。聲音裡的非語言資訊，轉文字就沒了。（前代的 ASR 是 50.95；拿它跟這代的 69.54 比會得到 18.6 分，但那是跨世代比較，不是模態差距。）",[120,2070,2071],{"id":2071},"還沒走完的地方",[111,2073,2074],{},"一條新路值不值得押注，要看它還缺什麼。這裡有四件事。",[111,2076,2077,2080],{},[140,2078,2079],{},"純文字不是最強。"," 論文說的 Pareto frontier 是「品質與參數量」的效率前沿（贏過兩到十二倍大的模型），不是每個單項都第一。",[111,2082,2083,2086],{},[140,2084,2085],{},"視覺文件還有空間。"," 在 280 token 預算下 VisDoc 67.84，Jina Omni Nano 71.34。掃描件、表格、排版複雜的文件靠細粒度視覺細節，而論文也說提高 token 預算對 VisDoc 還有增益——這比較像「還沒調到最好」，不是天花板。",[111,2088,2089,2092],{},[140,2090,2091],{},"量化對聲音傷害最大。"," bfloat16 換到 int4，文字幾乎無感（61.36 → 60.84），聲音掉 5.6 分（69.54 → 63.92）。不過論文註明 float 與量化跑的是不同評測 harness，這個降幅含 harness 差異，不能全算在量化頭上。",[111,2094,2095,2098,2099,2102],{},[140,2096,2097],{},"同一個 token 預算，對三種任務方向不同。"," 影像是每幀 280、影片是每幀 140 訓練出來的；把推論預算從 280 提到 560：視覺文件大幅改善（63.38 → 67.62）、影像飽和、",[140,2100,2101],{},"影片反而變差","（48.51 → 46.52）。論文說原因是過長的序列稀釋了注意力與 mean-pooled 表示。",[1625,2104,1629,2106,1629,2111],{"className":2105},[1628],[1631,2107],{"src":2108,"poster":2109,"autoPlay":588,"loop":588,"muted":588,"playsInline":588,"ariaLabel":2110},"\u002Fimages\u002Fblog\u002Fshared-trunk-four-modalities\u002Fbudget.mp4","\u002Fimages\u002Fblog\u002Fshared-trunk-four-modalities\u002Fbudget-poster.jpg","視覺 token 預算對影像、影片、視覺文件的影響",[1637,2112,2113],{},"同一個旋鈕，三種方向。影像的訓練值是 280、影片是 140；影片在 280 之後還在進步，掉的是 280 → 560。",[111,2115,2116,2117],{},"所以部署時，這個旋鈕要按任務分開調——",[140,2118,2119],{},"這不是缺陷，是這條路給你的控制權。",[120,2121,2123],{"id":2122},"結論升維的新方向","結論：升維的新方向",[111,2125,2126],{},"回到那個場景。你不再需要在「四個模型」與「一個大模型」之間二選一。",[111,2128,2129,2132],{},[140,2130,2131],{},"共用維度，容量隔離在分支","：同一個語意空間，需要什麼模態就打開什麼分支。",[111,2134,2135],{},"兩種拆法，各換一張帳單：",[108,2137,2138,2144],{},[111,2139,2140,2143],{},[140,2141,2142],{},"MoE"," 拆在模型中間。同質的專家，用學出來的 router 決定誰上班。換到「容量 vs 每 token 計算」的脫鉤。",[111,2145,2146,2148],{},[140,2147,1549],{}," 拆在入口。異質的模態，用設計好的編碼器決定誰處理。換到「容量 vs 常駐記憶體」的脫鉤。",[111,2150,2151,2152],{},"一個共同的教訓：",[140,2153,2154],{},"拆不是為了變大，是為了讓某些東西可以被關掉。",[111,2156,2157,2158],{},"而它最反直覺、也最值得記住的一課是——",[140,2159,2160],{},"共同空間是拿掉專屬機制換來的，不是加更多模組換來的。",[528,2162],{},[111,2164,2165],{},[533,2166,2167,2168,543,2172,2177,2178,2183],{},"我們沒有實測這顆模型的部署難度、工具鏈支援或實際延遲，所以這篇不建議你直接遷移。要做的話，先量三件事：你的文字主幹到底多大、分支能不能關、跨模態查詢佔比多少。原始資料：",[537,2169,2171],{"href":1547,"rel":2170},[541],"論文 arXiv 2610.37364",[537,2173,2176],{"href":2174,"rel":2175},"https:\u002F\u002Fai.google.dev\u002Fgemma\u002Fdocs",[541],"Gemma 文件","。MoE 的相關工作見 ",[537,2179,2182],{"href":2180,"rel":2181},"https:\u002F\u002Farxiv.org\u002Fabs\u002F2610.37386",[541],"arXiv 2610.37386","（channel selection，不是 MoE 綜述）。",{"title":568,"searchDepth":569,"depth":569,"links":2185},[2186,2187,2188,2189,2194,2195,2200,2201,2202],{"id":1532,"depth":569,"text":1532},{"id":1563,"depth":569,"text":1563},{"id":1593,"depth":569,"text":1594},{"id":1653,"depth":569,"text":1654,"children":2190},[2191,2193],{"id":1661,"depth":2192,"text":1662},3,{"id":1681,"depth":2192,"text":1682},{"id":1697,"depth":569,"text":1698},{"id":1739,"depth":569,"text":1739,"children":2196},[2197,2198,2199],{"id":1745,"depth":2192,"text":1746},{"id":1768,"depth":2192,"text":1768},{"id":1783,"depth":2192,"text":1784},{"id":1802,"depth":569,"text":1803},{"id":2071,"depth":569,"text":2071},{"id":2122,"depth":569,"text":2123},"\u002Fimages\u002Fblog\u002Fshared-trunk-four-modalities.svg","參數分配圖：主幹 271M、視覺 167M、音訊 305M，容量隔離在分支，需要時才載入","2026-11-01","多模態過去只有兩條路：養四個模型，或把一個模型做大。EmbeddingGemma 2 示範第三條——共用語意 backbone，把容量隔離在分支。純文字只載入 271M，需要時再打開視覺與音訊。這篇講這條路怎麼走、代價在哪、什麼時候值得用。",{},"\u002Fimages\u002Fblog\u002Fshared-trunk-four-modalities.jpg","\u002Fblog\u002Fzh-tw\u002Fshared-trunk-four-modalities",{"title":1522,"description":2206},"shared-trunk-four-modalities","blog\u002Fzh-TW\u002Fshared-trunk-four-modalities",[2214,2215,2216],"multimodal","embedding","model-design","pJvRGZyuC8339uRXXK3bnnd35lxoy_07t8wNLSWB1Is",1793619493901]