multinode-perftest/nccl-perftest/templates/statefulset.yaml

73 lines
2.4 KiB
YAML

apiVersion: apps/v1
kind: StatefulSet
metadata:
name: {{ include "nccl-perftest.name" . }}
labels:
{{- include "nccl-perftest.labels" . | nindent 4 }}
spec:
serviceName: {{ include "nccl-perftest.name" . }}
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "nccl-perftest.selectorLabels" . | nindent 6 }}
template:
metadata:
labels:
{{- include "nccl-perftest.selectorLabels" . | nindent 8 }}
annotations:
k8s.v1.cni.cncf.io/networks: {{ .Values.network.nadName }}
spec:
containers:
- name: worker
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
privileged: false
capabilities:
add:
- IPC_LOCK
command:
- bash
- -lc
- |
cp /config_scripts/* /workspace/ && \
chmod +x /workspace/run.sh && \
cd /workspace && ./run.sh; \
sleep infinity
env:
- name: NNODES
value: {{ .Values.replicaCount | quote }}
- name: NPROC_PER_NODE
value: {{ .Values.training.nprocPerNode | quote }}
- name: MASTER_ADDR
value: "{{ include "nccl-perftest.name" . }}-0.{{ include "nccl-perftest.name" . }}"
- name: MASTER_PORT
value: {{ .Values.training.masterPort | quote }}
resources:
limits:
nvidia.com/gpu: {{ .Values.resources.gpu | quote }}
nvidia.com/hostdev: {{ .Values.resources.hostdev }}
requests:
nvidia.com/gpu: {{ .Values.resources.gpu | quote }}
nvidia.com/hostdev: {{ .Values.resources.hostdev }}
volumeMounts:
- name: scripts
mountPath: /config_scripts
- name: shared-memory
mountPath: /dev/shm
- name: cifar-data
mountPath: /workspace/data/cifar-10-batches-py
volumes:
- name: scripts
configMap:
name: {{ include "nccl-perftest.name" . }}-scripts
defaultMode: 0755
- name: shared-memory
emptyDir:
medium: Memory
sizeLimit: {{ .Values.shmSize }}
- name: cifar-data
hostPath:
path: {{ .Values.volumes.dataset.hostPath }}
type: Directory