stageload
用于逐阶段加载模型的小型库,自带守护器,通过监控 macOS 交换空间和空闲内存,在超出预算前向进程组发送信号终止任务。
时间轴 (近 90 天)
使用 stageload 的 release(module) 将参数和缓冲区移到 meta 设备并按阶段『开始加载、结束释放』运行 Qwen-Image-2.1(文本编码器 16.3 GB 与 transformer 13.3 GB 一次只加载一个)时,同一台 Mac 上峰值降到 19.0 GB,两次运行 swap 都没有增长。
stageload 守护器不需要 root 权限,只会终止命令及其进程组
stageload 守护器使用退出码 3 表示守护器终止了命令,4 表示没有找到启动空间
stageload run 命令可以将任务放入同一台机器的队列中,按通道(lane)和所有者(owner)进行公平调度
stageload guard 命令可以等到 kern.memorystatus_level 至少为指定百分比才启动命令,并在交换空间增长超过预算或空闲内存连续两次低于阈值时终止命令
stageload 的守护器和计量器读取的是 macOS 计数器(libproc、sysctl),因此只能在 Mac 上运行
守护器先向命令的整个进程组发送 SIGTERM,五秒后再发送 SIGKILL,向进程组而非单个 PID 发送可以避免孤儿进程
stageload 每次运行会为命令及其下所有进程写入内存轨迹,并在 ~/.stageload/history.jsonl 中记录一行
全部知识事实 (8)
stageload guard 命令可以等到 kern.memorystatus_level 至少为指定百分比才启动命令,并在交换空间增长超过预算或空闲内存连续两次低于阈值时终止命令
50%待验证stageload 守护器不需要 root 权限,只会终止命令及其进程组
50%待验证stageload 守护器使用退出码 3 表示守护器终止了命令,4 表示没有找到启动空间
50%待验证stageload run 命令可以将任务放入同一台机器的队列中,按通道(lane)和所有者(owner)进行公平调度
50%待验证stageload 每次运行会为命令及其下所有进程写入内存轨迹,并在 ~/.stageload/history.jsonl 中记录一行
50%待验证stageload 的守护器和计量器读取的是 macOS 计数器(libproc、sysctl),因此只能在 Mac 上运行
50%待验证守护器先向命令的整个进程组发送 SIGTERM,五秒后再发送 SIGKILL,向进程组而非单个 PID 发送可以避免孤儿进程
50%待验证使用 stageload 的 release(module) 将参数和缓冲区移到 meta 设备并按阶段『开始加载、结束释放』运行 Qwen-Image-2.1(文本编码器 16.3 GB 与 transformer 13.3 GB 一次只加载一个)时,同一台 Mac 上峰值降到 19.0 GB,两次运行 swap 都没有增长。
50%