Files
Mofox-Core/docs/style_learner_resource_limit.md
2025-12-16 11:38:56 +08:00

2.9 KiB
Raw Blame History

StyleLearner 资源上限开关(默认开启)

概览

StyleLearner 支持资源上限控制,用于约束风格容量与清理行为。开关默认 开启,以防止模型无限膨胀;可在运行时动态关闭。

开关位置与用法(务必看这里)

开关在 代码层,默认开启,不依赖配置文件。

  1. 全局运行时切换(推荐)
    路径:src/chat/express/style_learner.py 暴露的单例 style_learner_manager
from src.chat.express.style_learner import style_learner_manager

# 关闭资源上限(放开容量,谨慎使用)
style_learner_manager.set_resource_limit(False)

# 再次开启资源上限
style_learner_manager.set_resource_limit(True)
  • 影响范围:实时作用于已创建的全部 learner逐个同步 resource_limit_enabled)。
  • 生效时机:调用后立即生效,无需重启。
  1. 构造时指定(不常用)
  • StyleLearner(resource_limit_enabled: True|False, ...)
  • StyleLearnerManager(resource_limit_enabled: True|False, ...)
    用于自定义实例化逻辑(通常保持默认即可)。
  1. 默认行为
  • 开关默认 开启,即启用容量管理与清理。
  • 没有配置文件项;若需持久化开关状态,可自行在启动代码中显式调用 set_resource_limit

资源上限行为(开启时)

  • 容量参数(每个 chat
    • max_styles = 2000
    • cleanup_threshold = 0.9≥90% 容量触发清理)
    • cleanup_ratio = 0.2(清理低价值风格约 20%
  • 价值评分结合使用频率log 平滑)与最近使用时间(指数衰减),得分低者优先清理。
  • 仅对单个 learner 的容量管理生效LRU 淘汰逻辑保持不变。

⚙️ 开关作用面:

  • 开启:在 add_style 时会检查容量并触发 _cleanup_styles;预测/学习逻辑不变。
  • 关闭:不再触发容量清理,但 LRU 管理器仍可能在进程层面淘汰不活跃 learner。

I/O 与健壮性

  • 模型与元数据保存采用原子写(.tmp + os.replace),避免部分写入。
  • pickle 使用 HIGHEST_PROTOCOL,并执行 fsync 确保落盘。

兼容性

  • 默认开启,无需修改配置文件;关闭后行为与旧版本类似。
  • 已有模型文件可直接加载,开关仅影响运行时清理策略。

何时建议开启/关闭

  • 开启(默认):内存/磁盘受限,或聊天风格高频增长,需防止模型膨胀。
  • 关闭:需要完整保留所有历史风格且资源充足,或进行一次性数据收集实验。

监控与调优建议

  • 监控:每 chat 风格数量、清理触发次数、删除数量、预测延迟 p95。
  • 如清理过于激进:提高 cleanup_threshold 或降低 cleanup_ratio
  • 如内存/磁盘依旧偏高:降低 max_styles,或增加定期持久化与压缩策略。