diff --git a/charts/evi-test-tool-2.1.0/Chart.yaml b/charts/evi-test-tool-2.1.0/Chart.yaml new file mode 100644 index 0000000..fa08d98 --- /dev/null +++ b/charts/evi-test-tool-2.1.0/Chart.yaml @@ -0,0 +1,6 @@ +apiVersion: v2 +appVersion: 1.16.0 +description: A Helm chart for Kubernetes +name: evi-test-tool +type: application +version: 2.1.0 diff --git a/charts/evi-test-tool-2.1.0/config-cpu-pipe/queryPipeline.json b/charts/evi-test-tool-2.1.0/config-cpu-pipe/queryPipeline.json new file mode 100644 index 0000000..3093658 --- /dev/null +++ b/charts/evi-test-tool-2.1.0/config-cpu-pipe/queryPipeline.json @@ -0,0 +1,76 @@ +{ + "Nodes": [ + { + "Node Class Name": "RawImageInputNode", + "Node Name": "Input", + "Thread Number": "1", + "Is Source Node": "true" + }, + { + "Node Class Name": "CPUJpegDecoderNode", + "Node Name": "Decoder", + "Thread Number": "1", + "Is Source Node": "false" + }, + { + "Node Class Name": "DetectionNode_CPU", + "Node Name": "Detection", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "InferReqNumber=(INT)6;InferStreams=(INT)6;CPUBindThread=(STRING)NUMA;ModelPath=(STRING)vehicle-detection-evi-0.0.1/FP16-INT8/vehicle-detection-evi-001.xml;ModelProcConfPath=(STRING)vehicle-detection-evi-0.0.1/vehicle-detection-evi-001.model_proc.json;Threshold=(FLOAT)0.8;MaxROI=(INT)0" + }, + { + "Node Class Name": "ClassificationNode_CPU", + "Node Name": "Attribute", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "InferReqNumber=(INT)6;InferStreams=(INT)6;CPUBindThread=(STRING)NUMA;ModelPath=(STRING)vehicle-attributes-recognition-barrier-0039/FP16-INT8/vehicle-attributes-recognition-barrier-0039.xml;LabelFile=(STRING)vehicle-attributes-recognition-barrier-0039/vehicle-attributes-recognition-barrier-0039.model_proc.json" + }, + { + "Node Class Name": "FeatureExtractionNode_CPU", + "Node Name": "FeatureExtraction", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "InferReqNumber=(INT)6;InferStreams=(INT)6;CPUBindThread=(STRING)NUMA;ModelPath=(STRING)fe-pytorch-0.0.1/INT8/fe-pytorch-0.0.1.xml;Threshold=(FLOAT)0.1;Quantization_Scale=(FLOAT)411.317" + }, + { + "Node Class Name": "LLOutputNode", + "Node Name": "Output", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "BufferType=(STRING)String" + } + ], + "Links": [ + { + "Previous Node": "Input", + "Previous Node Port": "0", + "Next Node": "Decoder", + "Next Node Port": "0" + }, + { + "Previous Node": "Decoder", + "Previous Node Port": "0", + "Next Node": "Detection", + "Next Node Port": "0" + }, + { + "Previous Node": "Detection", + "Previous Node Port": "0", + "Next Node": "Attribute", + "Next Node Port": "0" + }, + { + "Previous Node": "Attribute", + "Previous Node Port": "0", + "Next Node": "FeatureExtraction", + "Next Node Port": "0" + }, + { + "Previous Node": "FeatureExtraction", + "Previous Node Port": "0", + "Next Node": "Output", + "Next Node Port": "0" + } + ] +} diff --git a/charts/evi-test-tool-2.1.0/config-cpu-pipe/strucPipeline.json b/charts/evi-test-tool-2.1.0/config-cpu-pipe/strucPipeline.json new file mode 100644 index 0000000..e3894ce --- /dev/null +++ b/charts/evi-test-tool-2.1.0/config-cpu-pipe/strucPipeline.json @@ -0,0 +1,76 @@ +{ + "Nodes": [ + { + "Node Class Name": "StorageImageInputNode", + "Node Name": "Input", + "Thread Number": "1", + "Is Source Node": "true" + }, + { + "Node Class Name": "CPUJpegDecoderNode", + "Node Name": "Decoder", + "Thread Number": "1", + "Is Source Node": "false" + }, + { + "Node Class Name": "DetectionNode_CPU", + "Node Name": "Detection", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "InferReqNumber=(INT)6;InferStreams=(INT)6;CPUBindThread=(STRING)NUMA;ModelPath=(STRING)vehicle-detection-evi-0.0.1/FP16-INT8/vehicle-detection-evi-001.xml;ModelProcConfPath=(STRING)vehicle-detection-evi-0.0.1/vehicle-detection-evi-001.model_proc.json;Threshold=(FLOAT)0.8;MaxROI=(INT)0" + }, + { + "Node Class Name": "ClassificationNode_CPU", + "Node Name": "Attribute", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "InferReqNumber=(INT)6;InferStreams=(INT)6;CPUBindThread=(STRING)NUMA;ModelPath=(STRING)vehicle-attributes-recognition-barrier-0039/FP16-INT8/vehicle-attributes-recognition-barrier-0039.xml;LabelFile=(STRING)vehicle-attributes-recognition-barrier-0039/vehicle-attributes-recognition-barrier-0039.model_proc.json" + }, + { + "Node Class Name": "FeatureExtractionNode_CPU", + "Node Name": "FeatureExtraction", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "InferReqNumber=(INT)6;InferStreams=(INT)6;CPUBindThread=(STRING)NUMA;ModelPath=(STRING)fe-pytorch-0.0.1/INT8/fe-pytorch-0.0.1.xml;Threshold=(FLOAT)0.1;Quantization_Scale=(FLOAT)411.317" + }, + { + "Node Class Name": "LLResultSinkNode", + "Node Name": "Output", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "BufferType=(STRING)String" + } + ], + "Links": [ + { + "Previous Node": "Input", + "Previous Node Port": "0", + "Next Node": "Decoder", + "Next Node Port": "0" + }, + { + "Previous Node": "Decoder", + "Previous Node Port": "0", + "Next Node": "Detection", + "Next Node Port": "0" + }, + { + "Previous Node": "Detection", + "Previous Node Port": "0", + "Next Node": "Attribute", + "Next Node Port": "0" + }, + { + "Previous Node": "Attribute", + "Previous Node Port": "0", + "Next Node": "FeatureExtraction", + "Next Node Port": "0" + }, + { + "Previous Node": "FeatureExtraction", + "Previous Node Port": "0", + "Next Node": "Output", + "Next Node Port": "0" + } + ] +} diff --git a/charts/evi-test-tool-2.1.0/config-cpu-pipe/videoStrucPipeline.json b/charts/evi-test-tool-2.1.0/config-cpu-pipe/videoStrucPipeline.json new file mode 100644 index 0000000..e912e41 --- /dev/null +++ b/charts/evi-test-tool-2.1.0/config-cpu-pipe/videoStrucPipeline.json @@ -0,0 +1,128 @@ +{ + "Nodes": [ + { + "Node Class Name": "StorageVideoInputNode", + "Node Name": "Input", + "Thread Number": "1", + "Is Source Node": "true" + }, + { + "Node Class Name": "VideoDecoderNode", + "Node Name": "Decoder", + "Thread Number": "1", + "Is Source Node": "false" + }, + { + "Node Class Name": "DetectionNode_CPU", + "Node Name": "Detection", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "InferReqNumber=(INT)6;InferStreams=(INT)6;CPUBindThread=(STRING)NUMA;ModelPath=(STRING)vehicle-detection-evi-0.0.1/FP16-INT8/vehicle-detection-evi-001.xml;ModelProcConfPath=(STRING)vehicle-detection-evi-0.0.1/vehicle-detection-evi-001.model_proc.json;Threshold=(FLOAT)0.8;MaxROI=(INT)0" + }, + { + "Node Class Name": "TrackerNode_CPU", + "Node Name": "Tracker", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "TrackerType=(STRING)zero_term_imageless" + }, + { + "Node Class Name": "QualityAssessNode", + "Node Name": "QualityAssess", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "InferReqNumber=(INT)6;InferStreams=(INT)6;CPUBindThread=(STRING)NUMA;QualityMode=(INT)1;ImageSize=(INT)320;ModelPath=(STRING)vehicle-qnet-0.0.1/FP16/quality-assess-001.xml;InferStreams=(INT)0" + }, + { + "Node Class Name": "ObjectSelectNode", + "Node Name": "Select", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "FrameInterval=(INT)30;TopK=(INT)1" + }, + { + "Node Class Name": "StorageImageUploadNode", + "Node Name": "UploadImage", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "MediaType=(STRING)video;DataSource=(STRING)vehicle" + }, + { + "Node Class Name": "ClassificationNode_CPU", + "Node Name": "Attribute", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "InferReqNumber=(INT)6;InferStreams=(INT)6;CPUBindThread=(STRING)NUMA;ModelPath=(STRING)vehicle-attributes-recognition-barrier-0039/FP16-INT8/vehicle-attributes-recognition-barrier-0039.xml;LabelFile=(STRING)vehicle-attributes-recognition-barrier-0039/vehicle-attributes-recognition-barrier-0039.model_proc.json" + }, + { + "Node Class Name": "FeatureExtractionNode_CPU", + "Node Name": "FeatureExtraction", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "InferReqNumber=(INT)6;InferStreams=(INT)6;CPUBindThread=(STRING)NUMA;ModelPath=(STRING)fe-pytorch-0.0.1/INT8/fe-pytorch-0.0.1.xml;Threshold=(FLOAT)0.1;Quantization_Scale=(FLOAT)411.317" + }, + { + "Node Class Name": "LLResultSinkNode", + "Node Name": "Output", + "Thread Number": "1", + "Is Source Node": "false", + "Configure String": "BufferType=(STRING)String" + } + ], + "Links": [ + { + "Previous Node": "Input", + "Previous Node Port": "0", + "Next Node": "Decoder", + "Next Node Port": "0" + }, + { + "Previous Node": "Decoder", + "Previous Node Port": "0", + "Next Node": "Detection", + "Next Node Port": "0" + }, + { + "Previous Node": "Detection", + "Previous Node Port": "0", + "Next Node": "Tracker", + "Next Node Port": "0" + }, + { + "Previous Node": "Tracker", + "Previous Node Port": "0", + "Next Node": "QualityAssess", + "Next Node Port": "0" + }, + { + "Previous Node": "QualityAssess", + "Previous Node Port": "0", + "Next Node": "Select", + "Next Node Port": "0" + }, + { + "Previous Node": "Select", + "Previous Node Port": "0", + "Next Node": "UploadImage", + "Next Node Port": "0" + }, + { + "Previous Node": "UploadImage", + "Previous Node Port": "0", + "Next Node": "Attribute", + "Next Node Port": "0" + }, + { + "Previous Node": "Attribute", + "Previous Node Port": "0", + "Next Node": "FeatureExtraction", + "Next Node Port": "0" + }, + { + "Previous Node": "FeatureExtraction", + "Previous Node Port": "0", + "Next Node": "Output", + "Next Node Port": "0" + } + ] +} diff --git a/charts/evi-test-tool-2.1.0/configs/evi-test-tool.json b/charts/evi-test-tool-2.1.0/configs/evi-test-tool.json new file mode 100644 index 0000000..3ec9175 --- /dev/null +++ b/charts/evi-test-tool-2.1.0/configs/evi-test-tool.json @@ -0,0 +1,54 @@ +{ + "version": "1.0", + "name": "EVITestTool", + "Local": { + "storageSDKConfigPath": "/opt/evi_test_tool/configuration/storage-sdk.json", + "triAIInferenceConfigDIR": "/opt/evi_test_tool/config-cpu-pipe", + "mediaPath": "/opt/data/images", + "mediaMetadataPath": "/opt/data/metadata_ms", + "mediaType": "image", + "mediaSuffix": "jpg", + "mediaObjectType":"vehicle", + "processStep": "all" + }, + + "AIServer": { + "address": "evi-ai-inference", + "port": "50051" + }, + + "ClusteringServer": { + "address": "evi-clustering-archiving", + "port": "8080", + "clusteringReqPath": "/app/submit" + }, + + "TriggerStructure": { + "startTimeStamp": "1628569500000", + "endTimeStamp": "1628614620000", + "mediaReqPath": "/new_query" + }, + + "TriggerCluster": { + "startTimeStamp": "1628614620000", + "endTimeStamp": "1628811600000", + "mediaReqPath": "/new_query" + }, + + "DataSource": { + "mediaSuffix": [ + "jpg", + "h264", + "h265" + ], + "mediaTypeList": [ + "image", + "video" + ], + "objectTypeList": [ + "person", + "vehicle" + ] + } +} + diff --git a/charts/evi-test-tool-2.1.0/configs/storage-sdk.json b/charts/evi-test-tool-2.1.0/configs/storage-sdk.json new file mode 100644 index 0000000..ad07990 --- /dev/null +++ b/charts/evi-test-tool-2.1.0/configs/storage-sdk.json @@ -0,0 +1,30 @@ +{ + "version": 1, + "name": "row data source", + "video_image": { + "address": "evi-minio-service", + "port": "9000", + "rootUser": "/opt/evi_test_tool/credential/minio/rootUser", + "rootPassword": "/opt/evi_test_tool/credential/minio/rootPassword" + }, + "video_image_attributes": { + "flask_server_address": "evi-storage-rest", + "flask_server_port": "9900", + "prefix": "v1", + "media": "/media" + }, + "mediatype": [ + "image", + "video" + ], + "datasource": [ + "person", + "vehicle" + ], + "psql": { + "host": "evi-postgresql", + "port": "5432", + "user": "hce", + "database": "hce" + } +} diff --git a/charts/evi-test-tool-2.1.0/templates/configmap.yaml b/charts/evi-test-tool-2.1.0/templates/configmap.yaml new file mode 100644 index 0000000..4fa2979 --- /dev/null +++ b/charts/evi-test-tool-2.1.0/templates/configmap.yaml @@ -0,0 +1,32 @@ +# INTEL CONFIDENTIAL +# +# Copyright (C) 2022 Intel Corporation. +# +# This software and the related documents are Intel copyrighted materials, and your use of +# them is governed by the express license under which they were provided to you (License). +# Unless the License provides otherwise, you may not use, modify, copy, publish, distribute, +# disclose or transmit this software or the related documents without Intel's prior written permission. +# +# This software and the related documents are provided as is, with no express or implied warranties, +# other than those that are expressly stated in the License. + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + namespace: {{ .Values.global.namespace.value }} + name: {{ .Values.configMap.configTools.value }} +data: +{{ (.Files.Glob "configs/**.json").AsConfig | indent 2 }} + +--- +{{- if .Values.configMap.configAI.create -}} +apiVersion: v1 +kind: ConfigMap +metadata: + namespace: {{ .Values.global.namespace.value }} + name: {{ .Values.configMap.configAI.value }} +data: +{{ (.Files.Glob "config-cpu-pipe/**.json").AsConfig | indent 2 }} +{{- end -}} + diff --git a/charts/evi-test-tool-2.1.0/templates/deployment.yaml b/charts/evi-test-tool-2.1.0/templates/deployment.yaml new file mode 100644 index 0000000..fea33ce --- /dev/null +++ b/charts/evi-test-tool-2.1.0/templates/deployment.yaml @@ -0,0 +1,101 @@ +# INTEL CONFIDENTIAL +# +# Copyright (C) 2022-2023 Intel Corporation. +# +# This software and the related documents are Intel copyrighted materials, and your use of +# them is governed by the express license under which they were provided to you (License). +# Unless the License provides otherwise, you may not use, modify, copy, publish, distribute, +# disclose or transmit this software or the related documents without Intel's prior written permission. +# +# This software and the related documents are provided as is, with no express or implied warranties, +# other than those that are expressly stated in the License. + +--- +{{- if .Values.global.namespace.create -}} +apiVersion: v1 +kind: Namespace +metadata: + name: {{ .Values.global.namespace.value }} +{{ if .Values.global.namespace.istioInjection.create }} + labels: + istio-injection: enabled +{{ end }} +{{- end -}} + +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: sa-evi-test-tool + namespace: {{ .Values.global.namespace.value }} + labels: + account: evi-test-tool +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: evi-test-tool + namespace: {{ .Values.global.namespace.value }} +spec: + selector: + matchLabels: + app: evi-test-tool + replicas: 1 + template: + metadata: + labels: + app: evi-test-tool + sidecar.istio.io/inject: "{{ .Values.istioInjection }}" + version: v1 + spec: + nodeSelector: + feature.node.kubernetes.io/cpu-cpuid.AVX512VNNI: 'true' + feature.node.kubernetes.io/cpu-cpuid.AVX2: 'true' + serviceAccountName: sa-evi-test-tool + containers: + - name: evi-test-tool + image: "{{ .Values.image.repository }}:{{ .Values.image.Version }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: [ "/bin/bash", "-ce", "tail -f /dev/null" ] + ports: + - containerPort: {{ .Values.image.port }} + volumeMounts: + #pod path + - name: test-data + mountPath: {{ .Values.persistent.podMountPath }} + - name: config-evi-test-tool + mountPath: {{ .Values.configMap.configTools.podMountPath }} + - name: config-ai + mountPath: {{ .Values.configMap.configAI.podMountPath }} + - name: minio-secret + mountPath: "/opt/evi_test_tool/credential/minio/" + readOnly: true + - name: psql-secret-volume + readOnly: true + mountPath: "/opt/evi_test_tool/credential/psql" + securityContext: + # readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + resources: + limits: + cpu: "8" + memory: 10Gi + requests: + cpu: "1" + memory: 1Gi + volumes: + - name: test-data + persistentVolumeClaim: + claimName: pvc-evi-test-tool-data + - name: config-evi-test-tool + configMap: + name: {{ .Values.configMap.configTools.value }} + - name: config-ai + configMap: + name: {{ .Values.configMap.configAI.value }} + - name: minio-secret + secret: + secretName: minio + - name: psql-secret-volume + secret: + secretName: {{ .Values.secret.secretName }} diff --git a/charts/evi-test-tool-2.1.0/templates/pv-tools.yaml b/charts/evi-test-tool-2.1.0/templates/pv-tools.yaml new file mode 100644 index 0000000..efec207 --- /dev/null +++ b/charts/evi-test-tool-2.1.0/templates/pv-tools.yaml @@ -0,0 +1,38 @@ +# INTEL CONFIDENTIAL +# +# Copyright (C) 2022 Intel Corporation. +# +# This software and the related documents are Intel copyrighted materials, and your use of +# them is governed by the express license under which they were provided to you (License). +# Unless the License provides otherwise, you may not use, modify, copy, publish, distribute, +# disclose or transmit this software or the related documents without Intel's prior written permission. +# +# This software and the related documents are provided as is, with no express or implied warranties, +# other than those that are expressly stated in the License. + +--- +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: pv-evi-test-tool + labels: + app: evi-test-tool +spec: + capacity: + storage: {{ .Values.persistent.pvCapacity }} + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: local-storage + local: + path: {{ .Values.local.dataPath }} + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - {{ .Values.local.hostName }} + diff --git a/charts/evi-test-tool-2.1.0/templates/pvc-tools.yml b/charts/evi-test-tool-2.1.0/templates/pvc-tools.yml new file mode 100644 index 0000000..d31c341 --- /dev/null +++ b/charts/evi-test-tool-2.1.0/templates/pvc-tools.yml @@ -0,0 +1,26 @@ +# INTEL CONFIDENTIAL +# +# Copyright (C) 2022 Intel Corporation. +# +# This software and the related documents are Intel copyrighted materials, and your use of +# them is governed by the express license under which they were provided to you (License). +# Unless the License provides otherwise, you may not use, modify, copy, publish, distribute, +# disclose or transmit this software or the related documents without Intel's prior written permission. +# +# This software and the related documents are provided as is, with no express or implied warranties, +# other than those that are expressly stated in the License. + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: pvc-evi-test-tool-data + namespace: {{ .Values.global.namespace.value }} +spec: + storageClassName: local-storage + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.persistent.pvCapacity }} + diff --git a/charts/evi-test-tool-2.1.0/templates/secret.yaml b/charts/evi-test-tool-2.1.0/templates/secret.yaml new file mode 100644 index 0000000..47c62c6 --- /dev/null +++ b/charts/evi-test-tool-2.1.0/templates/secret.yaml @@ -0,0 +1,24 @@ +# INTEL CONFIDENTIAL +# +# Copyright (C) 2022 Intel Corporation. +# +# This software and the related documents are Intel copyrighted materials, and your use of +# them is governed by the express license under which they were provided to you (License). +# Unless the License provides otherwise, you may not use, modify, copy, publish, distribute, +# disclose or transmit this software or the related documents without Intel's prior written permission. +# +# This software and the related documents are provided as is, with no express or implied warranties, +# other than those that are expressly stated in the License. + +--- +apiVersion: v1 +kind: Secret +metadata: + name: minio + namespace: {{ .Values.global.namespace.value }} + labels: + app: minio +type: Opaque +data: + rootUser: {{ .Values.storage.minio.rootUser }} + rootPassword: {{ .Values.storage.minio.rootPassword }} diff --git a/charts/evi-test-tool-2.1.0/values.yaml b/charts/evi-test-tool-2.1.0/values.yaml new file mode 100644 index 0000000..9d37985 --- /dev/null +++ b/charts/evi-test-tool-2.1.0/values.yaml @@ -0,0 +1,56 @@ +# INTEL CONFIDENTIAL +# +# Copyright (C) 2022-2023 Intel Corporation. +# +# This software and the related documents are Intel copyrighted materials, and your use of +# them is governed by the express license under which they were provided to you (License). +# Unless the License provides otherwise, you may not use, modify, copy, publish, distribute, +# disclose or transmit this software or the related documents without Intel's prior written permission. +# +# This software and the related documents are provided as is, with no express or implied warranties, +# other than those that are expressly stated in the License. + +--- +# Default values for tools. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +image: + repository: evi-test-tool + Version: 1.1 + port: 80 + pullPolicy: IfNotPresent + +global: + namespace: + create: true + value: evi-test-tool + istioInjection: + create: true + +istioInjection: true + +persistent: + pvCapacity: 20Gi + podMountPath: /opt/data + +configMap: + configTools: + value: evi-test-tool-cfg + podMountPath: /opt/evi_test_tool/configuration + configAI: + create: true + value: ai-structuring-cfg + podMountPath: /opt/evi_test_tool/config-cpu-pipe + +local: + dataPath: /home/data + hostName: nodea + +storage: + minio: + rootUser: "" + rootPassword: "" + +secret: + secretName: sqldbsecret