【发布时间】:2017-09-13 18:00:21
【问题描述】:
我正在为我的团队开发一个 Jupyter Notebook,用于对一些专有数据进行分类和分析。我已准备好与团队分享它,以便持续执行和开发。该团队通常拥有 Windows 10 工作站,并且是熟练的工程师,但不是数据科学家。目前没有人使用 Jupyter。
我现在意识到我可能完全错误地判断了 Jupyter 支持这种工作环境的能力。
选项 1:单独安装
这是最坏的情况。任何想要运行或修改笔记本的人都需要安装 Jupyter。 Anaconda 可能是最好的选择,但它的安装又大又丑又吓人。更糟糕的是,每个用户都必须安装和管理其他库。任何需要内核更改的笔记本更改都必须手动应用于每次安装。
当然,作为客户端-服务器,这不是 Jupyter 的意图。
选项 2:一台服务器,多台客户端
显而易见的替代方法是将 Jupyter 服务器托管在可访问网络的计算机上,并让所有用户使用浏览器连接到它。这样一来,只需管理一个共享安装,每个用户只需要一个 URL 即可访问它。
但有一个问题 - 服务器希望笔记本位于自己的文件系统上!所以每个用户都将访问同一个笔记本文件。这使得版本控制非常成问题 - 没有人可以检查他们自己的笔记本副本以进行独立的编辑和提交会话。相反,更改将覆盖唯一的副本,并且必须在服务器上完成提交/恢复/差异(或通过挂载服务器的文件系统)。
选项 3:Docker 镜像中的服务器,每个用户运行一个容器
Docker 来救场?这样我们就可以构建/维护一个服务器镜像(甚至对其进行版本控制),每个用户只需要安装一个 Docker 引擎来实例化镜像(这是一个友好的 8GB 下载!!)。他们连接到自己的容器,通过一些脚本技巧,该容器将指向他们自己的笔记本副本。
这个选项只花了 20 个小时调查,然后发现它从根本上很糟糕。使用内核很棘手,需要很多新技能。但是更多的显示停止 - 显示 Qt 窗口的任何内容都不起作用。我们可以不用 qtconsole,但我们的笔记本的一部分显示了一个文件打开对话框,最好的方法是使用 Qt 小部件。由于 Docker 容器中的服务器需要 X Windows 环境,而客户端在 Windows 浏览器中,因此无法显示 Widget。
Qt 问题是试图让 Docker 选项运行的许多问题中的最后一个问题。从 matplotlib 到路径映射,从 os 库调用到 ipywidgets 的所有内容都需要进行调查、调整、谷歌搜索、切碎和更改才能正常工作。我相当确信这些戏剧会继续上演。
结论
围绕 Jupyter version control 有很多讨论。 read-only sharing 有很多选择。甚至还有一个 project 用于运行时构建 Docker 容器以提供对笔记本的可执行访问。但是在团队环境中使用 Jupyter 的建议很少。
考虑到当服务器与客户端不在同一台机器上本机运行时会出现无穷无尽的复杂情况,我开始相信选项 1 是唯一明智的方法。在我向同事报告糟糕的消息之前,还有其他建议吗?
【问题讨论】:
-
如果您可以使用商业托管产品,请访问 datascience.ibm.com。为了让 Jupyter 笔记本在团队环境中正常工作,我们必须实施大量定制。我认为您不会找到一种简单的方法来推出自己的解决方案。
-
在我们的情况下,我们对此并不满意,但很高兴能意识到这一点。很高兴知道这不是我开箱即用的东西。
标签: jupyter configuration-management