你感受到過。

你輸入一段提示詞,按下送出,回應在不到一秒內開始串流出來。很順。很即時。你覺得自己像是在對著機器說出心裡話。

然後隔天——同一個模型、同一段提示詞——你等了三秒、五秒。游標閃爍著。什麼都沒有。接著內容一次全部湧出來。

你大概怪罪了你的 Wi‑Fi。

但不是你的 Wi‑Fi。

那幾秒額外的延遲,真正發生的事情,是一段始於你永遠不會去的建築、穿過海底電纜、最後落在一顆 GPU 上的故事;而那顆 GPU 在輪到你之前,正忙著替別人思考。

而如果你是在非洲,或者任何不是維吉尼亞、愛爾蘭、法蘭克福的地方做產品——那段故事裡有一章,是專門寫給你的。


一次 API 呼叫的旅程

讓我們從你按下送出的那一刻,追蹤一次請求。

你的提示詞離開裝置,透過你的 ISP 以資料封包的形式傳送,進入海底光纖電纜,跨越大洋,抵達資料中心,被路由到正確的伺服器,等待一顆 GPU 變得可用,開始處理,然後回應再用同樣的路徑回來。

整趟來回,在感覺上幾乎什麼都沒有發生。

但其實不是什麼都沒有。每一步都要花時間。而其中有些步驟,會因為你站在地球上的位置不同而付出更多成本。


資料中心到底是什麼

在進入有趣的部分之前,先把這件事打好基礎。

資料中心是一棟建築——有時大到好幾個足球場——裡面塞滿了伺服器。那些伺服器就是沒有螢幕的電腦,整齊疊在金屬機架裡,成千上萬台,全年無休,24 小時運作,從不關機。

你發出的每一次 API 呼叫、你在 WhatsApp 上傳送的每一則訊息、每一次 Google 搜尋、每一支 YouTube 影片——全部都會碰到某個地方這樣一棟建築裡的伺服器。

這棟建築要正常運作,需要三樣東西:電力、冷卻,以及連線能力。電力用來驅動伺服器;冷卻用來避免它們融化——伺服器在這樣的密度下會產生驚人的熱量;連線能力則是把這棟建築接到整個網際網路的光纖電纜。

奈及利亞有 17 棟這樣的建築。美國則有超過 5,500 棟。

這個差距很重要。我們等等會回來談。


延遲:沒人警告你的物理問題

延遲是資料從 A 點傳到 B 點再回來所花的時間。

它受限於物理。資料在光纖中傳輸的速度,大約是光速的三分之二。你無法讓它更快,只能把距離縮短。

拉哥斯到倫敦大約是 5,000 公里。以光速三分之二的速度來算,單是距離本身所造成的最低來回時間,大約就要 50 毫秒。再加上路由、壅塞、處理時間,你的請求甚至還沒到伺服器,就已經要 100 到 150 毫秒了。

然後模型還得開始思考。

接著回應再傳回來。

大多數在奈及利亞開發的人,請求都是打到美東一區(維吉尼亞)或歐西區(愛爾蘭或法蘭克福)的 LLM 伺服器。這不是抱怨——伺服器本來就主要在那些地方。但這代表每一次 API 呼叫,光是地理位置就先帶來 100 到 200 毫秒的延遲,還不算推論開始之前的時間。

對串流式聊天機器人來說,你會明顯感受到這點。第一個 token 出現前的那段停頓,不是模型很慢,而是光速在距離上的體現。


推論:GPU 實際在做什麼

當你的提示詞到達伺服器時,它不會像你想像的那樣被處理——不是像搜尋引擎那樣比對關鍵字。

模型會把你的提示詞送進數十億次數學運算中,一層一層地推算出下一個最可能的 token 是什麼。然後是下一個,再下一個。每個 token 都是一次一個、依序產生,直到回應完成。

這就是推論。

token 大致上相當於四分之三個單字。hello 是一個 token,infrastructure 是兩個。你現在正在讀的這段回應,大概會是幾百個 token。

為什麼這很重要?因為每個 token 都要消耗運算資源。較長的提示詞會在輸入端消耗更多運算;較長的回應則會在輸出端消耗更多運算。而這些運算,全都發生在資料中心裡的一顆 GPU 上,消耗著真實的電力。


GPU:為什麼是這種硬體

你的筆電有 CPU——中央處理器。它是為一般用途設計的:跑瀏覽器、編譯程式碼、處理作業系統。它很快,但一次主要做一件事。

GPU——圖形處理器——原本是為了渲染電玩遊戲而設計的。它有成千上萬個較小的核心,可以同時進行大量計算。後來發現,這種平行架構正好符合 LLM 推論的需求:在數十億個參數上同時執行相同的數學運算。

一顆用來做 LLM 推論的高階 GPU——例如 NVIDIA H100——價格大約是 30,000 美元。一個執行前沿模型的資料中心,會有成千上萬顆這樣的 GPU。

當你呼叫 LLM API 時,你的請求會被路由到其中一顆 GPU。如果那顆 GPU 正在處理別人的請求,你的就得等待。這個等待是真實存在的。它會以你那邊的延遲形式顯現出來。

這也正是速率限制真正要控制的東西:硬體的實際容量。


冷啟動:為什麼第一次請求比較慢

你可能有注意到,有時候很久沒呼叫之後,第一次請求明顯比較慢。

這不是你的錯覺。這叫做冷啟動。

模型很大。前沿模型的權重可能有數百 GB——這些數字代表模型學到了什麼。這些權重在推論開始前,必須先載入 GPU 記憶體。如果一段時間沒有請求進來,系統可能會把模型部分卸載,以釋放記憶體給其他用途。

第一個請求就得等模型重新載入。後續請求則直接命中已經熱身好的模型,所以感覺更快。

無伺服器 LLM 部署尤其容易出現這種情況。流量低時,你付的費用比較少;但使用者會感受到安靜一段時間後的第一個請求比較慢。


為什麼特別是奈及利亞

奈及利亞的 17 座資料中心——其中 14 座在拉哥斯——幾乎全靠柴油發電機運作。國家電網平均每天只提供 4 小時電力。每一座資料中心都靠全天候燃燒柴油的發電機來補足缺口。

這很昂貴。這也是為什麼在電力穩定的市場裡,當地雲端基礎設施的擴張速度會比較快,而在這裡卻沒那麼快。

對你這個開發者的直接後果是:你發出的每一次 LLM API 呼叫,都是路由到一台不在奈及利亞的伺服器。很多時候甚至不在西非,也常常不在非洲大陸上。你每一個請求、每一個使用者,都在為這段距離付出延遲成本。

這不是軟體問題,這是地理與基礎設施問題。而且它會直接影響你的 AI 產品在使用者手中的體驗。


這對你在開發時代表什麼

三個實用的做法:

串流回應。 不要等完整回應出來才顯示任何內容。隨著 token 陸續到來就串流顯示,能讓體驗感覺快很多,即使實際上沒有變快。因為使用者看到「有東西正在發生」,主觀延遲就會大幅降低。

積極快取。 如果你在重複呼叫相同或幾乎相同的提示詞,就把回應快取起來。推論很昂貴,延遲也很昂貴。快取可以在重複查詢時把兩者都消掉。

為任務選對模型。 一個 700 億參數的模型,比 70 億參數的模型更慢也更貴。對很多任務——分類、資訊擷取、短篇生成——較小的模型就已足夠,而且回傳結果快得多。前沿模型不一定永遠是正確工具。


更大的圖像

資料中心之所以存在,是因為運算必須存在於某個實體空間中。要讓 AI 看起來輕而易舉,背後其實需要電力、水、土地與連線基礎設施。

非洲的人口占全球 18%,但全球資料中心容量不到 1%。這個大陸所產生的數位需求,和它實際擁有的基礎設施之間的落差,就是延遲的來源、依賴的來源,以及價值被抽走的地方。

一旦你知道這是物理問題,不是程式碼問題,你看事情的角度就會改變。當你知道 Equinix、AWS 和 Microsoft 掌握了這個大陸大多數可用容量時,你對這件事的理解也會改變。

多半不是你的程式碼有問題。是某個地方一棟靠柴油運作的建築。


這篇文章在研究、架構與編修上有 AI 的協助。論點、例子與觀點都是我自己的。至於其中哪裡有錯,也一樣是我的。


原文出處:https://dev.to/dannwaneri/what-actually-happens-when-you-call-an-llm-api-28l6


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝15   💬3   ❤️3
624
🥈
我愛JS
📝2   💬3   ❤️3
113
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登