notebook

Jupyter Notebook弹性使用Kubernetes集群GPU资源

在前面介绍了Kubernetes集群中提高GPU资源使用率的两个途径:1,GPU虚拟化,共享使用GPU。2,弹性调度,动态地创建和销毁占用GPU资源的Jupyter Pod。今天主要介绍如何通过腾讯开源的tkestack/elastic-jupyter-operator实现GPU资源弹性调度。 弹性调度原理 Jupyter Enterprise Gateway Jupyter Enterprise Gateway是一个支持多用户和多集群环境的可插拔框架。这样Jupyter Notebook能够在分布式集群中启动远程内核,远程内核可以在使用时创建,在空闲时销毁,不再需要一直占用宝贵的GPU资源。 tkestack/elastic-jupyter-operator 在使用Jupyter Enterprise Gateway过程中,我们需要将远程内核配置到Gateway注册,启动远程内核实例。elastic-jupyter-operator解决了这个过程自动化问题,动态地管理内核,为Gateway生成内核配置,并增加了KernelLauncher新方法,实现Kernel Pod的生命周期管理。通过kubeflow-launcher在Kubernetes中创建jupyter kernel Pod,当Kernel空闲时,删除Kernel的CR,实现Kernel占用资源的回收释放。 部署使用 部署elastic-jupyter-operator kubectl apply -f ./hack/enterprise_gateway/prepare.yaml make deploy 创建Gateway CR apiVersion: kubeflow.tkestack.io/v1alpha1 kind: JupyterGateway metadata: name: jupytergateway-elastic-tensorflow spec: cullIdleTimeout: 10 cullInterval: 10 logLevel: DEBUG image: ccr.ccs.tencentyun.com/kubeflow-oteam/enterprise-gateway:dev # Use the kernel which is defined in JupyterKernelSpec CR. defaultKernel: python-tensorflow kernels: - python-tensorflow 创建KernelSpec CR和KernelTemplate CR apiVersion: kubeflow.tkestack.io/v1alpha1 kind: JupyterKernelSpec metadata: name: python-tensorflow spec: language: Python displayName: "Elastic tensorlfow Kernel on Kubernetes" image: elyra/kernel-tf-py:2.

继续阅读

Jupyter Notebook共享使用Kubernetes集群的GPU资源

在Kubernetes集群中如何提高算力资源使用效率一直受到用户关注,公司内部有限GPU资源如何得到充分利用,1,GPU虚拟化,将GPU硬件由独享变成共享使用;2,弹性调度,当申请占用的GPU资源空闲时,释放资源给有需要的用户使用。本篇先介绍如何将GPU虚拟化,如何使用虚拟化的GPU资源。GPU虚拟化的开源解决方案有几个,我们选择的是阿里云的GPU共享方案。 | 安装Nvidia Docker运行时 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \ && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update sudo apt-get install -y nvidia-docker2 sudo apt install nvidia-container-toolkit sudo systemctl restart docker sudo tee /etc/docker/daemon.json <<EOF { "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com"], "storage-driver": "overlay2", "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } } } EOF sudo docker run --rm --gpus all nvidia/cuda:11.

继续阅读