Notebook
JupyterLab 是一款非常流行的机器学习开发工具,它通过友好易用的 Web 界面提供交互式计算环境,支持多种编程语言和执行环境,在机器学习、AI、数据处理、数值模拟、统计建模、数据可视化等领域被广泛使用。
用户可以使用 Notebook CRD 在集群中快速部署一个 JupyterLab 服务,同时本产品还提供 GPU 支持、SSH 访问支持等功能。
创建 Notebook
下面是一个基本的 Notebook 配置示例:
# notebook-tutorial.yaml
apiVersion: tensorstack.dev/v1beta1
kind: Notebook
metadata:
name: tutorial
spec:
type: jupyter
template:
spec:
containers:
- name: notebook
image: t9kpublic/torch-2.1.0-notebook:1.77.1
volumeMounts:
- name: workingdir
mountPath: /t9k/mnt
resources:
requests:
cpu: '8'
memory: 16Gi
nvidia.com/gpu: 1
limits:
cpu: '16'
memory: 32Gi
nvidia.com/gpu: 1
volumes:
- name: workingdir
persistentVolumeClaim:
claimName: tutorial
在该例中,spec.template.spec
字段定义所要创建的 Pod 的规约:
- 指示 Pod 运行一个
notebook
容器 (spec.template.containers
),该容器运行的镜像是t9kpublic/torch-2.1.0-notebook:1.77.1
,这是一个 Notebook 镜像; - 通过
spec.template.spec.volumes
,spec.template.containers[].volumeMounts
指示挂载网络文件系统 PVCtutorial
到/t9k/mnt
; - 通过
spec.template.spec.containers[].resources
指定使用的 CPU、memory、GPU 资源 。
使用 GPU
Notebook 支持通过申请使用 GPU 资源,例如:
apiVersion: tensorstack.dev/v1beta1
kind: Notebook
metadata:
name: tutorial
spec:
type: jupyter
template:
spec:
containers:
- name: notebook
image: t9kpublic/torch-2.1.0-notebook:1.77.1
volumeMounts:
- name: workingdir
mountPath: /t9k/mnt
resources:
limits:
cpu: '16'
memory: 32Gi
nvidia.com/gpu: 1
command: []
volumes:
- name: workingdir
persistentVolumeClaim:
claimName: tutorial
在该例中:
- 申请使用 16 个 CPU、32Gi 内存以及一个 NVIDIA GPU;系统会自动将 Notebook 调度到集群中某个能提供这些资源的节点上。
SSH 访问
Notebook 提供运行 SSH Server 的支持。下面的 Notebook 示例运行一个支持 SSH 连接的 JupyterLab 镜像:
apiVersion: tensorstack.dev/v1beta1
kind: Notebook
metadata:
name: tutorial
spec:
type: jupyter
template:
spec:
containers:
- name: notebook
image: t9kpublic/torch-2.1.0-notebook:1.77.1
volumeMounts:
- name: workingdir
mountPath: /t9k/mnt
resources:
limits:
cpu: '16'
memory: 32Gi
nvidia.com/gpu: 1
volumes:
- name: workingdir
persistentVolumeClaim:
claimName: tutorial
ssh:
authorized_keys:
- example-user
enabled: true
serviceType: ClusterIP
在该例中,用户:
- 设置
spec.ssh.enabled
字段的值为true
,T9k 系统将会自动创建一个处理 SSH 请求的Service
; - 通过
spec.ssh.serviceType
字段指定服务类型为ClusterIP
; - 设置自动挂载存放在
Secret/example-user
中的用户 SSH key;
使用此 SSH 服务需要通过 t9k-pf 工具进行端口转发。
资源回收
T9k 系统提供空闲 Notebook 资源回收的支持。系统在检测到 Notebook 处于空闲状态并超过一定时长时,就会自动删除工作负载以释放计算资源。目前,资源回收仅针对 Jupyter 类型的 Notebook,其他类型(例如 RStudio)的 Notebook 不会被回收。
管理员可设置回收策略,使得:
- Notebook 没有活跃运行超过 1h (管理员可修改此时长)后,标记该 Notebook 为
Idle
。 - Notebook 进入
Idle
状态超过 24h (管理员可修改此时长)后,删除该 Notebook 底层工作负载。
如果需要再次使用该 Notebook,你可以在模型构建控制台中手动点击恢复按钮。
Notebook 镜像
T9k 提供了一些预先构建的镜像,与 JupyterLab 原生镜像相比内置了更丰富的工具包,请参阅 Notebook 标准镜像列表。
在这些镜像中:
- 默认启动一个 JupyterLab 服务。
- 预装了 Python3 以及
tensorflow
、pytorch
、keras
、pandas
、scikit-learn
等常用 Python 包。 - 身份是一个名为
t9kuser
的非root
用户(用户 ID 为 1000,组 ID 为 1000),$HOME
目录为/t9k/mnt
。 - 预装了
tensorboard
插件,你可以在网页中创建 TensorBoard 以可视化数据。
用户也可以自行构建镜像,并上载到镜像 registry 中供使用。
下一步
用户可尝试如下功能:
参考
- T9k 提供的 Notebook 标准镜像列表
- JupyterLab 文档