2.9 KiB
2.9 KiB
StyleLearner 资源上限开关(默认开启)
概览
StyleLearner 支持资源上限控制,用于约束风格容量与清理行为。开关默认 开启,以防止模型无限膨胀;可在运行时动态关闭。
开关位置与用法(务必看这里)
开关在 代码层,默认开启,不依赖配置文件。
- 全局运行时切换(推荐)
路径: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)。 - 生效时机:调用后立即生效,无需重启。
- 构造时指定(不常用)
StyleLearner(resource_limit_enabled: True|False, ...)StyleLearnerManager(resource_limit_enabled: True|False, ...)
用于自定义实例化逻辑(通常保持默认即可)。
- 默认行为
- 开关默认 开启,即启用容量管理与清理。
- 没有配置文件项;若需持久化开关状态,可自行在启动代码中显式调用
set_resource_limit。
资源上限行为(开启时)
- 容量参数(每个 chat):
max_styles = 2000cleanup_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,或增加定期持久化与压缩策略。