Docker容器内多用户版JupyterHub支持GPU

前一篇文章介绍了Docker下安装多用户版的JupyterHub,但安装完毕后会遇到一个问题:Docker内无法使用GPU,这对JupyterHub来说是致命的。今天就来一起梳理下如何解决这个问题。

nvidia-docker

原以为nvidia docker是最佳解决方案,安装完nvidia-docker后在运行Docker时加上 –gpu all指令让容器支持GPU,但是该实现方案只是让Jupyterhub的容易可支持GPU,针对多用户版本的JupyterHub,每个用户会生成一个单独的容器。而单用户容器是由DockerSpawner由API create_container生成的。create_container并不支持—gpus参数:https://github.com/docker/docker-py/issues/2395

解决方案:

1、卸载Docker 19.03,降级安装18.09版本的Docker:

2、安装旧版nvidia-docker,即nvidia-docker2

如果以前安装过nvidia-docker 1.0版本,需要先将其删除:

添加相关库并进行安装

配置nvidia-docker2,把默认的Runtime设为nvidia。

以上内容加入/etc/docker/daemon.json文件中,然后重启dockerd。

jupyterhub/singleuser

jupyterhub/singleuser本身没有安装任何显卡驱动,解决方案是重新进行Build。

jupyterhub/singleuser的Dockerfile我们可以看到它的BASE_IMAGE为jupyter/base-notebook。

再来看下jupyter/base-notebook的Dockerfile

解决方案:修改jupyter/base-notebook的BASE IMAGE为:nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04

Dockerfile中涉及到的相关文件可从https://github.com/jupyter/docker-stacks/tree/master/base-notebook 获取。

微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

时间序列趋势判断

判断时间序列数据是上升还是下降是我们常见的问题。比如某个股票在过去一年整体趋势是上升还是下降。我们可以通过画图

WordPress LaTeX插件更换记录

由于自己的博客要插入很多的公式,所以需要依赖LaTeX插件来帮忙实现。先前一直使用的是WP QuickLaTe

聚类算法之Affinity Propagation(AP)

Affinity Propagation算法简介 AP(Affinity Propagation)通常被翻译为

2 Replies to “Docker容器内多用户版JupyterHub支持GPU”

  1. 一种不需要降级Docker的方法:
    依然使用Docker 19.03
    修改DockerSpawner代码
    dockerspawner.py

    在start方法中,create_container之前添加如下代码(虽然docker的python sdk不支持–gpus参数,但是可以通过host_config的DeviceRequests设置):
    device_request = {
    ‘Capabilities’: [[‘gpu’]], # not sure which capabilities are really needed
    ‘Count’: -1, # enable all gpus
    }
    create_kwargs[‘host_config’][‘DeviceRequests’] = [device_request]

    依然需要修改jupyter/base-notebook的BASE IMAGE为:nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04

发表评论

电子邮件地址不会被公开。 必填项已用*标注