jupyter/ipython实验容器,用于gpu和通用ram重用和内存泄漏检测。

ipyexperiments的Python项目详细描述


pypi ipyexperiments versionConda ipyexperiments versionAnaconda-Server Badgeipyexperiments python compatibilityipyexperiments license

ipyexperiments

jupyter/ipython实验容器和实用程序,用于分析和回收gpu和通用ram,以及检测内存泄漏。

关于

该模块的主要目的是帮助校准深度学习笔记本电脑中的超参数,以适应可用的GPU和通用RAM,但是,当然,在内存限制是一个恒定问题的任何其他用途中,它都是有用的。它对于检测代码中的内存泄漏也很有用。

这个包正在慢慢演变成一套不同的帮助模块,旨在帮助诊断内存泄漏问题,并使这些问题的调试变得容易。

目前,该软件包包含几个模块:

  1. IpyExperiments-用于ipython/jupyter实验的智能容器(documentation
  2. CellLogger-每单元内存分析器(documentation
  3. ipythonutils-异常时ipython内存泄漏的解决方法(documentation
  4. mem调试/分析实用程序(documentation

使用此框架,您可以运行多个后续实验,而无需一直重新启动内核,特别是当您用完GPU内存时-这是大家熟悉的“CUDA:内存不足”错误。当这种情况发生时,您只需返回开始实验的笔记本单元,更改超参数,然后重新运行更新的实验,直到它适合可用内存。这比不断重启内核、重新运行整个笔记本电脑效率更高、更不容易出错。

作为额外的奖励,您可以访问内存消耗数据,因此您可以使用它来自动发现超参数,以满足硬件的独特内存限制。

这个模块背后的想法非常简单——它实现了一个类似python函数的功能,在运行结束时,它的局部变量会被销毁,给我们返回内存,除了它可以跨多个jupyter笔记本单元(或ipython)工作。此外,它还运行gc.collect()以立即释放带有循环引用的行为不好的变量,并回收general和gpu ram。它还有助于发现内存泄漏,并在幕后执行各种其他有用的操作。

如果需要更细粒度的内存分析,CellLogger子系统在与jupyter或ipython中的每行代码一起使用时,报告每个单元级别上的ram使用情况。一旦命令或单元格完成执行,就会自动获取资源使用情况报告。

目前该子系统记录了gpu-ram、通用ram和执行时间。但它可以扩展到跟踪其他重要的事情。虽然有各种类似的记录器,但这个实现的主要重点是帮助跟踪gpu,其主要稀缺资源是gpu ram。

Usage demo

安装

  • 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,了解该系统的工作原理。

文档

  1. IPyExperiments
  2. CellLogger sub-system
  3. ipython utils
  4. mem debug/profiling utils

贡献和测试

请看CONTRIBUTING.md

历史记录

可以找到详细的更改历史记录here

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么程序显示空结果?   java应用程序在测试设备上调试时工作正常,但在发布版apk中没有,它没有获得post。来自firebase的类变量   java Android:从主活动按钮确定在listview中选中哪个复选框   在Spring中添加@OneToOne注释时启动ApplicationContext时发生java错误   用JAVA Android实现矩阵计算的最快方法   SpringJava语义有没有更好的编写方法?   java从hashmap中减去两个值后返回最小差值的键?   Java中的静态初始化顺序:Netty 4.0.7的例外   java如何检查用户输入是否为字符串   循环Java计数单词索引   java如何使用以下代码将视频流传输到Android异步Http服务器?   java如何在jtable的所有行中循环   java如何使用maven将unicode插入mysql   java使用安卓加速远程数据检索   java试图模拟麦克风(javax.sound.sampled)   swing SwingWorker从不归还任何东西?(爪哇)   首次在Android Studio上未加载java LibGDX文件   java如何在多个Mysql服务器上设置限制和偏移?   如何防止从java连接到mongodb时登录控制台?