Skip to main content

用于在 Jupyter Notebooks 中使用的工具集合

项目描述

NB工具

用于监控正在运行的 Jupyter Notebook 并与之交互的工具集合。

安装应该很简单:

pip install py-nbtools

NBstat

这个包的主要工具是nbstat / nbwatch命令行实用程序。它在安装时添加,并显示每个正在运行的 Jupyter Notebook 的每个进程的详细资源利用率。一张gif胜过一千个字:

在该watch模式下,您可以点击按钮来修改显示的视图:

  • tab—来回交换视图nbwatchdevicewatch
  • b— 切换某些资源的条形表示:除了其值之外,还显示彩色条。
  • m— 切换某些资源的移动平均列:值是最新迭代的平均值。
  • s— 切换表格分隔符。

我们还添加了显示具有相同信息和参数的转置视图的devicestatdevicewatch命令。

有关更多信息,请查看完整的用户文档:不同表格视图、命令行选项和即用型片段的说明。

故障排除:PID 命名空间、用户权限和僵尸进程

NVIDIA 驱动程序的一个已知问题nvidia-smi在全局命名空间中报告设备上的进程 PID,而不是在容器命名空间中,这不允许将容器进程的 PID 与其设备 PID 匹配。有一些解决方法:

  • --pid=host标志传递给docker run.
  • 修补 NVIDIA 驱动程序以正确处理 PID 命名空间。
  • [仅限 Linux] 手动检查/proc/PID/文件以识别容器内每个进程的主机 PID 的回退。

虽然nbstat为容器提供了几个后备方案(并打算随着时间的推移为更多环境提供Linux支持),但防弹的方法是使用. 添加它可以立即解决大部分问题。--pid=hostdocker run

有时会在 NVIDIA 设备上发生的另一件事是僵尸进程:通过错误地终止使用 GPU 的进程,您最终可能会陷入设备内存被不存在的进程占用的情况。据我所知,不重启是没有办法杀死它们的,nbstat只是用红色标记这些过程。

为了检查进程的某些属性,我们依赖于在命令运行时已经提供了所有必要的权限。nbstat对某些属性有一些后备,我目前致力于在拒绝访问文件的情况下改进错误处理。

贡献

如果您有兴趣贡献,请查看开发者/贡献者页面。它包含关于图书馆内部运作的详细描述、我的设计选择和背后的动机,以及对沿途复杂性的讨论。

pylint_notebook

无耻地取自pylint 页面:

使用 Python 代码检查 Jupyter Notebooks 中的错误、尝试执行编码标准并查找代码异味的函数。它还可以查找某些类型错误,可以推荐有关如何重构特定块的建议,并可以为您提供有关代码复杂性的详细信息。

使用它很简单:

from nbtools import pylint_notebook
pylint_notebook(path_to_ipynb,             # If not provided, use path to the current notebook
                disable='invalid-name',    # Disable specified Pylint checks. Can be a list.
                enable='import-error')     # Enable  specified Pylint checks. Can be a list.

在后台,它将.ipynb笔记本转换为.py脚本,创建自定义.pylintrc配置,运行pylint并删除所有临时文件。在教程中了解有关其用法的更多信息。

run_notebook

eval为以编程方式运行 Jupyter Notebooks提供类似的接口。我们使用它来运行易于使用的交互式测试:如果出现任何故障,可以直接使用已经设置好的环境进行修复。

from nbtools import run_notebook
run_notebook(path_to_ipynb,                       # Which notebook to run
             out_path_ipynb,                      # Where to save result
             inputs={'learning_rate': 0.05,},     # Pass variables to notebook
             outputs=['accuracy'])                # Extract variables from notebook

set_gpus

选择空闲设备并设置CUDA_VISIBLE_DEVICES环境变量,以便当前进程只能看到它们。

消除了大量与 GPU 使用相关的错误和意外行为。

from nbtools import set_gpus
set_gpus(n=2,                              # Number of devices to set.
         min_free_memory=0.7,              # Minimum amount of free memory on device to consider it free.
         max_processes=3)                  # Maximum amount of  processes  on device to consider it free.

其他功能

from nbtools import (in_notebook,          # Return True if executed inside of Jupyter Notebook
                     get_notebook_path,    # If executed in Jupyter Notebook, return its absolute path
                     get_notebook_name,    # If executed in Jupyter Notebook, return its name
                     notebook_to_script)   # Convert Jupyter Notebook to an executable Python script.
                                           # Works well with magics and command line executions.

目标

这个库最初是一个工具容器,是我作为 ML 研究员时遇到/开发的。由于一些函数在多次重构迭代中幸存下来,我决定共享该库,以便更容易完善它们并在不同环境中进行测试。

该项目的另一个目标是展示如何在真实世界的示例中与 Jupyter API 进行通信:您可以在一个地方找到收集的相同信息,而不是阅读大量的 stackoverflow 线程,并粗略了解它的可能性什么不是。

致谢

nbstat模块基于gpustat构建。多年来使用gpustat让我对可能的改进有了一个想法,这些改进是在这个库中实现的。虽然实现方式不同,但通读gpustat的代码对于开发来说是必不可少的。

动画 GIF 是使用Terminalizer创建的:除了安装的常见问题外,该工具本身也很棒。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

py-nbtools-0.9.5.tar.gz (42.1 kB 查看哈希

已上传 source