apiVersion: config.k8s.io/v1alpha1
kind: Krmfile
openAPI:
  definitions:
    io.k8s.cli.setters.CHECKPOINT_DIR:
      description: checkpoint dir basename
      x-k8s-cli:
        setter:
          name: CHECKPOINT_DIR
          value: checkpoints
          isSet: true
          required: true
          setBy: model-builder
    io.k8s.cli.substitutions.CHECKPOINT_PATH:
      x-k8s-cli:
        substitution:
          name: CHECKPOINT_PATH
          pattern: ${NFS_PATH}/${USER_NAME}/${MODEL_NAME}/${CHECKPOINT_DIR}
          values:
          - marker: ${NFS_PATH}
            ref: '#/definitions/io.k8s.cli.setters.NFS_PATH'
          - marker: ${USER_NAME}
            ref: '#/definitions/io.k8s.cli.setters.USER_NAME'
          - marker: ${MODEL_NAME}
            ref: '#/definitions/io.k8s.cli.setters.MODEL_NAME'
          - marker: ${CHECKPOINT_DIR}
            ref: '#/definitions/io.k8s.cli.setters.CHECKPOINT_DIR'
    io.k8s.cli.setters.DATASET_DIR:
      description: input dataset directory
      x-k8s-cli:
        setter:
          name: DATASET_DIR
          value: /datasets
          isSet: true
          required: true
          setBy: model-builder
    io.k8s.cli.substitutions.DEPLOYMENT_NAME:
      x-k8s-cli:
        substitution:
          name: DEPLOYMENT_NAME
          pattern: ${MODEL_NAME}-deployment
          values:
          - marker: ${MODEL_NAME}
            ref: '#/definitions/io.k8s.cli.setters.MODEL_NAME'
    io.k8s.cli.setters.FS_ID:
      type: integer
      description: owner id of mounted volumes
      x-k8s-cli:
        setter:
          name: FS_ID
          value: "0"
          isSet: true
          setBy: model-builder
          required: true
    io.k8s.cli.substitutions.FS_ID_VALUE:
      x-k8s-cli:
        substitution:
          name: FS_ID_VALUE
          pattern: "${FS_ID}"
          values:
          - marker: ${FS_ID}
            ref: '#/definitions/io.k8s.cli.setters.FS_ID'
    io.k8s.cli.setters.GROUP_ID:
      type: integer
      description: process group id
      x-k8s-cli:
        setter:
          name: GROUP_ID
          value: "0"
          isSet: true
          setBy: model-builder
          required: true
    io.k8s.cli.substitutions.GROUP_ID_VALUE:
      x-k8s-cli:
        substitution:
          name: GROUP_ID_VALUE
          pattern: "${GROUP_ID}"
          values:
          - marker: ${GROUP_ID}
            ref: '#/definitions/io.k8s.cli.setters.GROUP_ID'
    io.k8s.cli.setters.GROUP_NAME:
      description: process group name
      x-k8s-cli:
        setter:
          name: GROUP_NAME
          value: root
          isSet: true
          setBy: model-builder
          required: true
    io.k8s.cli.substitutions.IMAGE:
      description: image name
      x-k8s-cli:
        substitution:
          name: IMAGE
          pattern: ${REGISTRY}/intel/recommendation:${IMAGE_VERSION}-${MODEL_NAME}${IMAGE_SUFFIX}
          values:
          - marker: ${REGISTRY}
            ref: '#/definitions/io.k8s.cli.setters.REGISTRY'
          - marker: ${IMAGE_VERSION}
            ref: '#/definitions/io.k8s.cli.setters.IMAGE_VERSION'
          - marker: ${MODEL_NAME}
            ref: '#/definitions/io.k8s.cli.setters.MODEL_NAME'
          - marker: ${IMAGE_SUFFIX}
            ref: '#/definitions/io.k8s.cli.setters.IMAGE_SUFFIX'
    io.k8s.cli.setters.IMAGE_VERSION:
      description: image version
      x-k8s-cli:
        setter:
          name: IMAGE_VERSION
          value: tf-2.3.0-imz-2.2.0
          isSet: true
          setBy: model-builder
    io.k8s.cli.setters.IMAGE_SUFFIX:
      description: appended to image name
      x-k8s-cli:
        setter:
          name: IMAGE_SUFFIX
          value: ""
          isSet: true
          setBy: model-builder
    io.k8s.cli.substitutions.MODEL_COMMAND:
      x-k8s-cli:
        substitution:
          name: MODEL_COMMAND
          pattern: ${MODEL_DIR}/quickstart/${MODEL_SCRIPT}
          values:
          - marker: ${MODEL_DIR}
            ref: '#/definitions/io.k8s.cli.setters.MODEL_DIR'
          - marker: ${MODEL_SCRIPT}
            ref: '#/definitions/io.k8s.cli.setters.MODEL_SCRIPT'
    io.k8s.cli.substitutions.MODEL_CONFIGMAP_NAME:
      x-k8s-cli:
        substitution:
          name: MODEL_CONFIGMAP_NAME
          pattern: mlops-scripts-${MODEL_NAME}
          values:
          - marker: ${MODEL_NAME}
            ref: '#/definitions/io.k8s.cli.setters.MODEL_NAME'
    io.k8s.cli.setters.MODEL_DIR:
      description: container model directory
      x-k8s-cli:
        setter:
          name: MODEL_DIR
          value: /workspace/wide-deep-large-ds-fp32-training
          setBy: model-builder
    io.k8s.cli.setters.MODEL_NAME:
      description: name use-case
      x-k8s-cli:
        setter:
          name: MODEL_NAME
          value: wide-deep-large-ds-fp32-training
          isSet: true
          setBy: model-builder
    io.k8s.cli.setters.MODEL_SCRIPT:
      description: model script name
      x-k8s-cli:
        setter:
          name: MODEL_SCRIPT
          value: fp32_training_check_accuracy.sh
          isSet: true
          setBy: model-builder
    io.k8s.cli.setters.NFS_PATH:
      description: nfs path
      x-k8s-cli:
        setter:
          name: NFS_PATH
          value: /nfs
          isSet: true
          required: true
          setBy: model-builder
    io.k8s.cli.setters.NFS_SERVER:
      description: nfs server
      x-k8s-cli:
        setter:
          name: NFS_SERVER
          value: 0.0.0.0
          isSet: true
          required: true
          setBy: model-builder
    io.k8s.cli.setters.OUTPUT_DIR:
      description: output dir basename
      x-k8s-cli:
        setter:
          name: OUTPUT_DIR
          value: output
          isSet: true
          required: true
          setBy: model-builder
    io.k8s.cli.substitutions.OUTPUT_PATH:
      x-k8s-cli:
        substitution:
          name: OUTPUT_PATH
          pattern: ${NFS_PATH}/${USER_NAME}/${MODEL_NAME}/${OUTPUT_DIR}
          values:
          - marker: ${NFS_PATH}
            ref: '#/definitions/io.k8s.cli.setters.NFS_PATH'
          - marker: ${USER_NAME}
            ref: '#/definitions/io.k8s.cli.setters.USER_NAME'
          - marker: ${MODEL_NAME}
            ref: '#/definitions/io.k8s.cli.setters.MODEL_NAME'
          - marker: ${OUTPUT_DIR}
            ref: '#/definitions/io.k8s.cli.setters.OUTPUT_DIR'
    io.k8s.cli.setters.REGISTRY:
      description: image location
      x-k8s-cli:
        setter:
          name: REGISTRY
          value: docker.io
          isSet: true
          setBy: model-builder
    io.k8s.cli.setters.REPLICAS:
      type: integer
      description: replica number
      x-k8s-cli:
        setter:
          name: REPLICAS
          value: "3"
          isSet: true
          setBy: model-builder
    io.k8s.cli.substitutions.REPLICAS_VALUE:
      x-k8s-cli:
        substitution:
          name: REPLICAS_VALUE
          pattern: "${REPLICAS}"
          values:
          - marker: ${REPLICAS}
            ref: '#/definitions/io.k8s.cli.setters.REPLICAS'
    io.k8s.cli.setters.RETRY_LIMIT:
      type: integer
      description: replica number
      x-k8s-cli:
        setter:
          name: RETRY_LIMIT
          value: "10"
          isSet: true
          setBy: model-builder
    io.k8s.cli.substitutions.SERVER_NAME:
      x-k8s-cli:
        substitution:
          name: SERVER_NAME
          pattern: ${MODEL_NAME}-server
          values:
          - marker: ${MODEL_NAME}
            ref: '#/definitions/io.k8s.cli.setters.MODEL_NAME'
    io.k8s.cli.substitutions.SERVICE_NAME:
      x-k8s-cli:
        substitution:
          name: SERVICE_NAME
          pattern: ${MODEL_NAME}-service
          values:
          - marker: ${MODEL_NAME}
            ref: '#/definitions/io.k8s.cli.setters.MODEL_NAME'
    io.k8s.cli.setters.TARGET_ACCURACY:
      type: number
      description: target accuracy
      x-k8s-cli:
        setter:
          name: TARGET_ACCURACY
          value: "0.74"
          isSet: true
          setBy: model-builder
          required: true
    io.k8s.cli.substitutions.TARGET_ACCURACY_VALUE:
      x-k8s-cli:
        substitution:
          name: TARGET_ACCURACY_VALUE
          pattern: "${TARGET_ACCURACY}"
          values:
          - marker: ${TARGET_ACCURACY}
            ref: '#/definitions/io.k8s.cli.setters.TARGET_ACCURACY'
    io.k8s.cli.setters.TF_SERVING_PORT:
      type: integer
      description: tf serving port
      x-k8s-cli:
        setter:
          name: TF_SERVING_PORT
          value: "8501"
          isSet: true
          setBy: model-builder
          required: true
    io.k8s.cli.substitutions.TF_SERVING_PORT_VALUE:
      x-k8s-cli:
        substitution:
          name: TF_SERVING_PORT_VALUE
          pattern: "${TF_SERVING_PORT}"
          values:
          - marker: ${TF_SERVING_PORT}
            ref: '#/definitions/io.k8s.cli.setters.TF_SERVING_PORT'
    io.k8s.cli.setters.USER_ID:
      type: integer
      description: process owner id
      x-k8s-cli:
        setter:
          name: USER_ID
          value: "0"
          isSet: true
          setBy: model-builder
          required: true
    io.k8s.cli.substitutions.USER_ID_VALUE:
      x-k8s-cli:
        substitution:
          name: USER_ID_VALUE
          pattern: "${USER_ID}"
          values:
          - marker: ${USER_ID}
            ref: '#/definitions/io.k8s.cli.setters.USER_ID'
    io.k8s.cli.setters.USER_NAME:
      description: process owner name
      x-k8s-cli:
        setter:
          name: USER_NAME
          value: root
          isSet: true
          setBy: model-builder
          required: true
