AI 生圖與影片
GPU「卡住不動」急救筆記:先查資源清乾淨了沒,再考慮重啟
GPU 100% 不代表任務還活著。很多卡死是上一個步驟的顯存沒有還乾淨,下一步要不到連續空間。重啟是最貴的解法,先試只清這一段的殘留。
一個核心觀念
「GPU 使用率 100%」不代表任務還活著。很多卡死狀況其實是:某個步驟結束後,它用過的顯存沒有乾淨地還回去(術語叫「碎片化」),下一個步驟想要一塊連續夠大的顯存卻要不到,於是卡在那裡動彈不得。但因為卡住的那一刻剛好還有運算在跑,監控畫面看起來還是滿載。
多數人第一直覺是「資源不夠、重啟吧」,但重啟是最貴的解法,所有模型都要重新載入。真正該先做的是局部清理:只清剛才那個步驟留下的殘留,不動其他還在正常運作的部分。
按步驟做
Step 1:先確認是不是真的卡死,不是只是算得比較久
打開 GPU 監控(Windows 用工作管理員的效能頁,或用 nvidia-smi),持續看 30 秒到 1 分鐘:
- 顯存用量、使用率一直在小幅跳動:還在正常運算,耐心等。
- 數字完全凍結,同時任務進度條也完全不動:這才是真卡死,進下一步。
Step 2:找你的框架有沒有「清空快取」或「卸載模型」的功能
不同框架叫法不同,概念差不多。例如 PyTorch 底層有 torch.cuda.empty_cache();ComfyUI 這類節點式工具,擴充套件裡通常有現成的「清理/卸載」節點,可以直接拖進畫布,不用自己寫程式。
不確定有沒有、不知道怎麼叫出來,把下面這段貼給 AI 助手(換成你的工具名稱):
我在用 [你的工具名稱],跑到一半卡住不動,GPU 顯示還在滿載但進度沒變化。這個框架的底層有沒有清空 GPU 快取或卸載模型的函式或功能?我要怎麼在我的流程裡加進去?請一步一步教我,我是新手。
Step 3:把清理動作插在「容易出問題的兩個步驟中間」
關鍵是位置。清理要卡在「可能留下殘留的那一步」和「下一步」之間,形成一道關卡,逼流程一定要先清乾淨才能往下走。只在最開頭清一次,中間的殘留還是會留著。
Step 4:跑一次,比較清理前後的總耗時
加了清理步驟後,任務應該不再卡死,而且總耗時不會明顯變長(清理本身通常只要幾秒)。如果清理之後還是卡,或明顯變慢很多,代表問題可能不是碎片化,要往別的方向查,例如真的資源不夠、或別的程式在搶用。
你一定會踩的坑
- 以為「清空快取」等於解決一切卡死。它只解決「殘留資源沒還回去」這一種原因。清理後不卡了、但輸出內容本身有別的問題,那是另一件事,分開排查,一次只驗證一個變因。
- 清理步驟放錯位置,等於沒放。如果清理節點沒有真的卡在資料流的路徑上(下一步一定要等它跑完才能繼續),框架可能認為它跟主流程無關,直接跳過或提早執行。確保清理步驟的輸出有被下一步用到,哪怕只是把資料原封不動傳下去。
- 只測一次就以為修好了。卡死通常跟跑了多久、跑了幾輪有關。至少連續跑 2 到 3 輪,或換不同輸入再測一次。
一句話總結
GPU 卡住不動時,先假設是「上一輪的東西沒清乾淨」,而不是「這台機器不夠力」。多數框架都有現成的清理功能,插進流程中間當關卡,通常比整組重啟便宜很多。
萬用救援:卡住怎麼問 AI
我在用 [工具/框架名稱,版本號如果知道也附上],想要達成 [你的目標]。我卡在這一步:[描述具體卡住的動作]。錯誤訊息或異常現象是:[貼上完整錯誤訊息,或描述「沒有錯誤訊息,但進度是這樣異常」]。我已經試過:[列出試過的方法]。請你:1) 先幫我判斷可能的根本原因,不要急著給程式碼;2) 確認原因後,一步一步教我怎麼修,假設我是新手。
重點是「先問原因、再要步驟」。直接要程式碼,常常拿到一個看起來能跑、但沒解決根本問題的答案。
這是踩坑實錄與 AI 工具實測系列的一部分。想收到後續完整 SOP,訂閱電子報。
支持這裡的內容:前往 Ko-fi 斗內