你感受到過。
你輸入一段提示詞,按下送出,回應在不到一秒內開始串流出來。很順。很即時。你覺得自己像是在對著機器說出心裡話。
然後隔天——同一個模型、同一段提示詞——你等了三秒、五秒。游標閃爍著。什麼都沒有。接著內容一次全部湧出來。
你大概怪罪了你的 Wi‑Fi。
但不是你的 Wi‑Fi。
那幾秒額外的延遲,真正發生的事情,是一段始於你永遠不會去的建築、穿過海底電纜、最後落在一顆 GPU 上的故事;而那顆 GPU 在輪到你之前,正忙著替別人思考。
而如果你是在非洲,或者任何不是維吉尼亞、愛爾蘭、法蘭克福的地方做產品——那段故事裡有一章,是專門寫給你的。
讓我們從你按下送出的那一刻,追蹤一次請求。
你的提示詞離開裝置,透過你的 ISP 以資料封包的形式傳送,進入海底光纖電纜,跨越大洋,抵達資料中心,被路由到正確的伺服器,等待一顆 GPU 變得可用,開始處理,然後回應再用同樣的路徑回來。
整趟來回,在感覺上幾乎什麼都沒有發生。
但其實不是什麼都沒有。每一步都要花時間。而其中有些步驟,會因為你站在地球上的位置不同而付出更多成本。
在進入有趣的部分之前,先把這件事打好基礎。
資料中心是一棟建築——有時大到好幾個足球場——裡面塞滿了伺服器。那些伺服器就是沒有螢幕的電腦,整齊疊在金屬機架裡,成千上萬台,全年無休,24 小時運作,從不關機。
你發出的每一次 API 呼叫、你在 WhatsApp 上傳送的每一則訊息、每一次 Google 搜尋、每一支 YouTube 影片——全部都會碰到某個地方這樣一棟建築裡的伺服器。
這棟建築要正常運作,需要三樣東西:電力、冷卻,以及連線能力。電力用來驅動伺服器;冷卻用來避免它們融化——伺服器在這樣的密度下會產生驚人的熱量;連線能力則是把這棟建築接到整個網際網路的光纖電纜。
奈及利亞有 17 棟這樣的建築。美國則有超過 5,500 棟。
這個差距很重要。我們等等會回來談。
延遲是資料從 A 點傳到 B 點再回來所花的時間。
它受限於物理。資料在光纖中傳輸的速度,大約是光速的三分之二。你無法讓它更快,只能把距離縮短。
拉哥斯到倫敦大約是 5,000 公里。以光速三分之二的速度來算,單是距離本身所造成的最低來回時間,大約就要 50 毫秒。再加上路由、壅塞、處理時間,你的請求甚至還沒到伺服器,就已經要 100 到 150 毫秒了。
然後模型還得開始思考。
接著回應再傳回來。
大多數在奈及利亞開發的人,請求都是打到美東一區(維吉尼亞)或歐西區(愛爾蘭或法蘭克福)的 LLM 伺服器。這不是抱怨——伺服器本來就主要在那些地方。但這代表每一次 API 呼叫,光是地理位置就先帶來 100 到 200 毫秒的延遲,還不算推論開始之前的時間。
對串流式聊天機器人來說,你會明顯感受到這點。第一個 token 出現前的那段停頓,不是模型很慢,而是光速在距離上的體現。
當你的提示詞到達伺服器時,它不會像你想像的那樣被處理——不是像搜尋引擎那樣比對關鍵字。
模型會把你的提示詞送進數十億次數學運算中,一層一層地推算出下一個最可能的 token 是什麼。然後是下一個,再下一個。每個 token 都是一次一個、依序產生,直到回應完成。
這就是推論。
token 大致上相當於四分之三個單字。hello 是一個 token,infrastructure 是兩個。你現在正在讀的這段回應,大概會是幾百個 token。
為什麼這很重要?因為每個 token 都要消耗運算資源。較長的提示詞會在輸入端消耗更多運算;較長的回應則會在輸出端消耗更多運算。而這些運算,全都發生在資料中心裡的一顆 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