【问题标题】:cache_size effect on SVC processing timecache_size 对 SVC 处理时间的影响
【发布时间】:2018-05-08 05:50:44
【问题描述】:

我进行了交叉验证的 SVC 分析。阅读 svc 的 scikit-learn 文档,我看到了:

"内核缓存大小:对于SVC、SVR、nuSVC和NuSVR,对于较大的问题,内核缓存的大小对运行时间影响很大。如果您有足够的可用RAM,建议将cache_size设置为更高值大于默认值 200(MB),例如 500(MB) 或 1000(MB)。"

http://scikit-learn.org/stable/modules/svm.html

因此,我多次重新运行分析,并使用多个不同的 cache_size 值(50、100、200、800、1200、2000、4000、8000)对结果进行计时。

cache_size小于2000时,我的完整分析大约需要11.2秒,而cache_size大于2000时,时间会跳到40秒。

分析在具有 16 GB 内存的现代计算机上进行。

我想知道是否有人知道为什么处理时间对于任何低于 2000 的缓存值都不会改变的可能原因,以及为什么处理时间会随着值的增加而更长。同样,计算机有 16 gigs 的 ram,并且在 cache_size 的任何值下都没有出现其他速度减慢的迹象。

谢谢大家的意见。

【问题讨论】:

  • 只是猜测,但如果缓存大小为 4000 或 8000MB,您可能会显着减少可用于处理的 RAM。这可能会减慢实际算法的速度。
  • @amanbirs 这是可能的。这对我来说很有意义 - 如果缓存只是一个存储东西以供以后使用的地方,那么在较小的问题中可以快速达到某个性能“上限”是有道理的,在这种情况下,向缓存添加更多空间只会消除这种可能性使用该 RAM 进行实际计算。
  • 是的,特别是如果缓存大小 = 8GB。 Tha 是总 RAM 的一半。可用的 RAM 可能比这要少得多。
  • 从理论的角度来看,我会说:它不应该放慢速度。带上你最喜欢的进程管理器,观察整个任务期间的内存消耗。如果你达到了限制,就会发生垃圾并减慢速度。

标签: performance scikit-learn


【解决方案1】:

您注意到缓存 > 2000 MB 的速度变慢可能是这个错误的结果:https://github.com/scikit-learn/scikit-learn/issues/8012(有符号 32 位整数溢出)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-31
    • 2021-01-08
    • 2013-07-04
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    相关资源
    最近更新 更多