[index-tts]在Mac上出现内存占用异常的情况

2025-10-28 358 views
7

通过命令行在mac上部署完成后,在试图生成音频时发现内存占用严重过高。

回答

8

我64G内存,在1.5上测试是用满了,并且把swap也用了,超过100G占用了

0

M4 24G内存跑满并占用10G交换空间

1

+1非常容易爆内存(

5

裁了一下输入音频,大伙可以试一下

1

裁了一下输入音频,大伙可以试试

11s的样本用了80G左右,有比之前少10G。

1

RAM占用问题可通过调整MPS水位解决。

9

请问如何调整 mps 水位呢?似乎没法用 ulimit 等方式解决

9

调 MPS 水位(Apple Silicon)

适用范围 原始仓库 目标:仅通过环境变量调整 MPS 内存水位阈值。 两个阈值

PYTORCH_MPS_HIGH_WATERMARK_RATIO:高水位,占物理内存的比例;别到 1。 PYTORCH_MPS_LOW_WATERMARK_RATIO:低水位;配合高水位避免频繁回收。 必须满足:0 < LOW < HIGH < 1。设成 1 或者 LOW >= HIGH 会直接报错(invalid watermark ratio)。 推荐档位(自己选一个)

1:LOW=0.4 HIGH=0.6 2:LOW=0.5 HIGH=0.7 3:LOW=0.6 HIGH=0.8 统一开启回退:PYTORCH_ENABLE_MPS_FALLBACK=1 — 你可以就记一句:先用 0.6 / 0.8,不行再往下调。

一次性设置

跑 WebUI(uv 环境): LOW=0.6 HIGH=0.8 PYTORCH_ENABLE_MPS_FALLBACK=1 PYTORCH_MPS_LOW_WATERMARK_RATIO=$LOW PYTORCH_MPS_HIGH_WATERMARK_RATIO=$HIGH uv run webui.py --host 127.0.0.1 --port 7861 跑任意脚本(示例): LOW=0.6 HIGH=0.8 PYTORCH_ENABLE_MPS_FALLBACK=1 PYTORCH_MPS_LOW_WATERMARK_RATIO=$LOW PYTORCH_MPS_HIGH_WATERMARK_RATIO=$HIGH PYTHONPATH="$PYTHONPATH:." uv run indextts/infer_v2.py

持久化

zsh 用户在 ~/.zshrc 末尾加三行: export PYTORCH_ENABLE_MPS_FALLBACK=1 export PYTORCH_MPS_LOW_WATERMARK_RATIO=0.6 export PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.8 让它生效:source ~/.zshrc

仓库里放一个启动脚本(团队通用)

新建 scripts/run_webui_mps.sh:

!/bin/zsh

: ${LOW:=0.6}; : ${HIGH:=0.8} export PYTORCH_ENABLE_MPS_FALLBACK=1 export PYTORCH_MPS_LOW_WATERMARK_RATIO=$LOW export PYTORCH_MPS_HIGH_WATERMARK_RATIO=$HIGH exec uv run webui.py --host 127.0.0.1 --port 7861 给执行权限:chmod +x scripts/run_webui_mps.sh 用法:LOW=0.5 HIGH=0.7 scripts/run_webui_mps.sh 不改业务代码也能“包裹”运行

新建 run_with_mps.py(放仓库根): import os, sys os.environ.setdefault('PYTORCH_ENABLE_MPS_FALLBACK','1') os.environ.setdefault('PYTORCH_MPS_LOW_WATERMARK_RATIO','0.6') os.environ.setdefault('PYTORCH_MPS_HIGH_WATERMARK_RATIO','0.8') sys.argv += ['--host','127.0.0.1','--port','7861'] import webui; webui.main() 运行:uv run run_with_mps.py 快速校验(确认变量生效了没)

uv run -q python - <<'PY' import os; print('LOW=',os.getenv('PYTORCH_MPS_LOW_WATERMARK_RATIO'),'HIGH=',os.getenv('PYTORCH_MPS_HIGH_WATERMARK_RATIO')) PY