jupyter/ipython实验容器,用于gpu和通用ram重用和内存泄漏检测。
ipyexperiments的Python项目详细描述
ipyexperiments
jupyter/ipython实验容器和实用程序,用于分析和回收gpu和通用ram,以及检测内存泄漏。
关于
该模块的主要目的是帮助校准深度学习笔记本电脑中的超参数,以适应可用的GPU和通用RAM,但是,当然,在内存限制是一个恒定问题的任何其他用途中,它都是有用的。它对于检测代码中的内存泄漏也很有用。
这个包正在慢慢演变成一套不同的帮助模块,旨在帮助诊断内存泄漏问题,并使这些问题的调试变得容易。
目前,该软件包包含几个模块:
IpyExperiments
-用于ipython/jupyter实验的智能容器(documentation)CellLogger
-每单元内存分析器(documentation)ipython
utils-异常时ipython内存泄漏的解决方法(documentation)mem
调试/分析实用程序(documentation)
使用此框架,您可以运行多个后续实验,而无需一直重新启动内核,特别是当您用完GPU内存时-这是大家熟悉的“CUDA:内存不足”错误。当这种情况发生时,您只需返回开始实验的笔记本单元,更改超参数,然后重新运行更新的实验,直到它适合可用内存。这比不断重启内核、重新运行整个笔记本电脑效率更高、更不容易出错。
作为额外的奖励,您可以访问内存消耗数据,因此您可以使用它来自动发现超参数,以满足硬件的独特内存限制。
这个模块背后的想法非常简单——它实现了一个类似python函数的功能,在运行结束时,它的局部变量会被销毁,给我们返回内存,除了它可以跨多个jupyter笔记本单元(或ipython)工作。此外,它还运行gc.collect()
以立即释放带有循环引用的行为不好的变量,并回收general和gpu ram。它还有助于发现内存泄漏,并在幕后执行各种其他有用的操作。
如果需要更细粒度的内存分析,CellLogger
子系统在与jupyter或ipython中的每行代码一起使用时,报告每个单元级别上的ram使用情况。一旦命令或单元格完成执行,就会自动获取资源使用情况报告。
目前该子系统记录了gpu-ram、通用ram和执行时间。但它可以扩展到跟踪其他重要的事情。虽然有各种类似的记录器,但这个实现的主要重点是帮助跟踪gpu,其主要稀缺资源是gpu ram。
安装
PYPI:
pip install ipyexperiments
条件:
conda install -c fastai -c stason ipyexperiments
偏差:
pip install git+https://github.com/stas00/ipyexperiments.git
用法
下面是一个使用^{
请注意,我添加了一个视觉引导空间来演示这个想法,但是,当然,它不是有效的python代码。
cell 1: exp1 = IPyExperimentsPytorch()
cell 2: learn1 = language_model_learner(data_lm, bptt=60, drop_mult=0.25, pretrained_model=URLs.WT103)
cell 3: learn1.lr_find()
cell 4: del exp1
cell 5: exp2 = IPyExperimentsPytorch()
cell 6: learn2 = language_model_learner(data_lm, bptt=70, drop_mult=0.3, pretrained_model=URLs.WT103)
cell 7: learn2.lr_find()
cell 8: del exp2
演示
请参见this demo notebook,了解该系统的工作原理。
文档
贡献和测试
历史记录
可以找到详细的更改历史记录here。