跳转到主要内容

Dask的JupyterLab扩展。

项目描述

Dask JupyterLab扩展

Build Status Version Downloads Dependencies

此软件包提供了一种JupyterLab扩展,用于管理Dask集群,以及将Dask的仪表板图表直接嵌入到JupyterLab面板中。

Dask Extension

说明视频(5分钟)

Dask + JupyterLab Screencast

需求

JupyterLab >= 1.0 distributed >= 1.24.1

安装

要安装Dask JupyterLab扩展,您需要已安装JupyterLab。对于JupyterLab < 3.0版本,您还需要Node.js版本 >= 12。这些可以通过多种途径获得。Python用户常用的途径之一是conda包管理器。

conda install jupyterlab
conda install -c conda-forge nodejs

JupyterLab 4.x

为支持JupyterLab 4,安装扩展的最新版本。您应该能够使用pip或conda安装此扩展并立即开始使用,例如:

pip install dask-labextension

JupyterLab 3.x

对于JupyterLab 3.x,使用最新支持的版本6.2.0

pip install dask-labextension==6.2.0

JupyterLab 2.x

在JupyterLab 3.0之前,客户端和服务器组件需要分别安装,机器上需要有Node。

服务器组件可以通过pip或conda-forge安装

pip install 'dask_labextension<5'
conda install -c conda-forge 'dask-labextension<5'

然后您可以使用以下命令将客户端扩展构建到JupyterLab中:

jupyter labextension install dask-labextension

如果您正在运行Notebook 5.2或更早版本,可以通过运行以下命令启用服务器扩展:

jupyter serverextension enable --py --sys-prefix dask_labextension

Dask集群管理配置

此扩展具有启动和管理多种Dask集群的能力,包括本地集群和Kubernetes集群。如何启动这些集群的选项通过dask配置系统设置,通常是磁盘上的.yml文件。

默认情况下,该扩展启动一个LocalCluster,其配置如下:

labextension:
  factory:
    module: 'dask.distributed'
    class: 'LocalCluster'
    args: []
    kwargs: {}
  default:
    workers: null
    adapt:
      null
      # minimum: 0
      # maximum: 10
  initial:
    []
    # - name: "My Big Cluster"
    #   workers: 100
    # - name: "Adaptive Cluster"
    #   adapt:
    #     minimum: 0
    #     maximum: 50

在此配置中,factory提供了创建集群所需的模块、类名和参数。default键描述了集群的初始工作者数量以及它是否是自适应的。initial键提供了在笔记本服务器启动时启动的初始集群列表。

除了LocalCluster外,此扩展还被用于启动其他几种Dask集群对象,其中一些示例包括

  • 使用SLURM集群:
labextension:
    factory:
      module: 'dask_jobqueue'
       class: 'SLURMCluster'
       args: []
       kwargs: {}
  • 使用PBS集群:
labextension:
  factory:
    module: 'dask_jobqueue'
    class: 'PBSCluster'
    args: []
    kwargs: {}
labextension:
  factory:
    module: dask_kubernetes
    class: KubeCluster
    args: []
    kwargs: {}

配置默认布局

此扩展可以存储Dask仪表板窗格的默认布局,如果您经常需要相同的仪表板图表,则非常有用。您可以通过命令面板启动默认布局,或者通过转到文件菜单并选择“启动Dask仪表板布局”。

默认布局可以通过JupyterLab配置系统(使用JSON编辑器或用户界面)进行配置。通过编写一个JSON对象来指定布局,该对象以您想要打开的单个图表作为键。每个图表都使用moderef打开。其中mode表示图表如何添加到工作区。例如,如果您想分割一个面板并将新面板添加到右侧,请选择split-right。其他选项是split-topsplit-bottomsplit-lefttab-aftertab-beforeref表示应用mode的面板,可能是其他仪表板面板的名称。如果refnull,则相关面板将被添加到布局层次结构的顶部。

一个默认布局的具体示例是

{
  "individual-task-stream": {
    "mode": "split-right",
    "ref": null
  },
  "individual-workers-memory": {
    "mode": "split-bottom",
    "ref": "individual-task-stream"
  },
  "individual-progress": {
    "mode": "split-right",
    "ref": "individual-workers-memory"
  }
}

该布局将任务流添加到工作区的右侧,然后在任务流下方添加工作者内存图表,然后将进度图表添加到工作者内存图表的右侧。

开发安装

JupyterLab开发文档中所述,对于labextension的开发安装,您可以在当前目录中运行以下命令:

jlpm  # Install npm package dependencies
jlpm build  # Compile the TypeScript sources to Javascript
jupyter labextension develop . --overwrite  # Install the current directory as an extension

重建扩展

jlpm build

然后您应该能够刷新 JupyterLab 页面,它会获取扩展程序的变化。

要运行可编辑的服务器扩展程序的安装,请运行:

pip install -e .
jupyter serverextension enable --sys-prefix dask_labextension

发布

此扩展包含一个用 TypeScript 编写的客户端组件和一个用 Python 编写的服务器端组件。前端在构建过程中编译为 JavaScript,并作为静态资产与 Python 包一起分发。

发布流程

这需要安装 nodebuildhatchtwine

# To set version (e.g. 7.0.0). hatch will update version string in package.json
hatch version "7.0.0"

# Examples of bumping version
# minor bump
hatch version minor  # Bumps to 7.1.0
# beta pre-release bump
# If published to pypi this can be installed with the --pre flag to pip
hatch version b  # Bumps to 7.1.0b0
# bump minor and beta
hatch version minor,b  # Bumps to 7.2.0b0
# release all of the --pre-release flags such as alpha beta rc
hatch release  # Bumps to 7.2.0

# git commit after bumping version
git add package.json && git commit -m "Bump version: {version}"
# Tag this version
git tag {version}

# Finally push to main, build and upload package to PyPI
git push upstream main && git push upstream main --tags  # pushes to GitHub
python -m build .  # Build the package
twine upload dist/*  # Upload the package to PyPI

处理 JavaScript 包版本冲突

与 Python 不同,JavaScript 包可以包含同一依赖项的多个版本。通常,yarn 包管理器可以很好地处理这个问题,但偶尔您可能会遇到冲突版本或意外的包膨胀。您可以尝试通过去重依赖关系来修复此问题。

jlpm yarn-deduplicate -s fewer

项目详情


下载文件

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

源分布

dask_labextension-7.0.0.tar.gz (1.6 MB 查看哈希值)

上传时间

构建分布

dask_labextension-7.0.0-py3-none-any.whl (39.5 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面