Spaces:
Paused
Paused
|
Download AGENTS.md from HelloSun/testzerogpu: direct link, hf CLI and curl.
- Browser
- Download file 2.41 kB
-
https://huggingface.co/spaces/HelloSun/testzerogpu/resolve/main/AGENTS.md
- Command line
-
hf download hf://spaces/HelloSun/testzerogpu/AGENTS.md
-
curl -L -o AGENTS.md https://huggingface.co/spaces/HelloSun/testzerogpu/resolve/main/AGENTS.md
2.41 kB
A newer version of the Gradio SDK is available: 6.31.0
記憶體上限規則(必遵守)
本機有一支記憶體守衛 /root/memkill.py,每 2 秒掃一次。
規則:我(opencode)啟動的任何程式,記憶體一律不得超過 80 GiB。
守衛行為
- 觸發條件:
opencode 本體 + 我啟動的所有子行程合計 RSS > 80 GiB(單一子行程 > 64 GiB 也直接砍)。 - 處置:對記憶體最肥的那個子行程樹送
SIGKILL(連同它的子行程)。 - opencode 本體永遠不會被砍,只砍我開出去的程式。
- 我在 CLI 看到的現象:該指令 exit code 137 / 顯示
Killed/ 沒有任何輸出。 - 詳細紀錄:
/tmp/memkill.last.json(最新一次)、/tmp/memkill.jsonl(歷史)、/var/log/memkill.log(log)。
cat /tmp/memkill.last.json # 被砍的是哪條指令、峰值多少 GiB
被砍之後我必須做的事(順序不可變)
- 絕對不要用同一種做法重跑一次。 那是確定會再被砍一次。
- 先讀
/tmp/memkill.last.json確認峰值用量與被砍的指令。 - 改用低記憶體做法(見下表),先向用戶說明「原本那條路已因記憶體超標被放棄,改用 O」,再執行。
- 改完仍需要 > 80 GiB 的話:停下來問用戶,不要硬跑、不要偷偷繞過守衛。
低記憶體替代做法
| 原本(會爆) | 改成 |
|---|---|
x=$(cat big)、f.read()、readFileSync 整份 |
cmd | ... > out、while read line、f.read(1<<20) |
| 一次處理整個大檔/大目錄 | 先 du -sh;> 2 GiB 一律 head -n / tail -n + / sed -n '1,50p' 分頁 |
python x.py 載入全部資料 |
generator / 逐 chunk;pandas chunksize=、usecols;numpy.memmap;改 duckdb/sqlite 讓引擎在記憶體外處理 |
| 全部結果留在記憶體 | 分段落盤到 /tmp/part_*,最後 cat part_* > final |
| 高並行/大 batch | -j 1、--batch-size 調小、workers=1、--max-old-space-size、-n 1、xargs -n1 -P1 |
| 對超大檔重複 grep/awk | 先 split -l 100000 big.dat part_,逐檔處理 |
執行前的習慣
- 跑任何吃記憶體的指令前先估量:
du -sh <path>、wc -l <file>。 - 預估會超過 2 GiB 記憶體時,直接改用分批/串流版本,不要先跑再說。
- 需要
prlimit硬上限時用prlimit --data=80G -- <cmd>(**不要用--as**,bun/node 類程式會秒死)。