cuvis-ai-schemas 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cuvis_ai_schemas/__init__.py +5 -0
- cuvis_ai_schemas/discovery/__init__.py +6 -0
- cuvis_ai_schemas/enums/__init__.py +5 -0
- cuvis_ai_schemas/enums/types.py +30 -0
- cuvis_ai_schemas/execution/__init__.py +12 -0
- cuvis_ai_schemas/execution/context.py +41 -0
- cuvis_ai_schemas/execution/monitoring.py +83 -0
- cuvis_ai_schemas/extensions/__init__.py +3 -0
- cuvis_ai_schemas/extensions/ui/__init__.py +8 -0
- cuvis_ai_schemas/extensions/ui/port_display.py +159 -0
- cuvis_ai_schemas/grpc/__init__.py +3 -0
- cuvis_ai_schemas/grpc/v1/__init__.py +11 -0
- cuvis_ai_schemas/grpc/v1/cuvis_ai_pb2.py +240 -0
- cuvis_ai_schemas/grpc/v1/cuvis_ai_pb2.pyi +1046 -0
- cuvis_ai_schemas/grpc/v1/cuvis_ai_pb2_grpc.py +1290 -0
- cuvis_ai_schemas/pipeline/__init__.py +17 -0
- cuvis_ai_schemas/pipeline/config.py +238 -0
- cuvis_ai_schemas/pipeline/ports.py +48 -0
- cuvis_ai_schemas/plugin/__init__.py +6 -0
- cuvis_ai_schemas/plugin/config.py +118 -0
- cuvis_ai_schemas/plugin/manifest.py +95 -0
- cuvis_ai_schemas/training/__init__.py +40 -0
- cuvis_ai_schemas/training/callbacks.py +137 -0
- cuvis_ai_schemas/training/config.py +135 -0
- cuvis_ai_schemas/training/data.py +73 -0
- cuvis_ai_schemas/training/optimizer.py +94 -0
- cuvis_ai_schemas/training/run.py +198 -0
- cuvis_ai_schemas/training/scheduler.py +69 -0
- cuvis_ai_schemas/training/trainer.py +40 -0
- cuvis_ai_schemas-0.1.0.dist-info/METADATA +111 -0
- cuvis_ai_schemas-0.1.0.dist-info/RECORD +34 -0
- cuvis_ai_schemas-0.1.0.dist-info/WHEEL +5 -0
- cuvis_ai_schemas-0.1.0.dist-info/licenses/LICENSE +190 -0
- cuvis_ai_schemas-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"""Shared type enums for cuvis-ai ecosystem."""
|
|
2
|
+
|
|
3
|
+
from enum import StrEnum
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ExecutionStage(StrEnum):
|
|
7
|
+
"""Execution stages for node filtering.
|
|
8
|
+
|
|
9
|
+
Nodes can specify which stages they should execute in to enable
|
|
10
|
+
stage-aware graph execution (e.g., loss nodes only in training).
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
ALWAYS = "always"
|
|
14
|
+
TRAIN = "train"
|
|
15
|
+
VAL = "val"
|
|
16
|
+
VALIDATE = "val"
|
|
17
|
+
TEST = "test"
|
|
18
|
+
INFERENCE = "inference"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class ArtifactType(StrEnum):
|
|
22
|
+
"""Types of artifacts with different validation/logging policies.
|
|
23
|
+
|
|
24
|
+
Attributes
|
|
25
|
+
----------
|
|
26
|
+
IMAGE : str
|
|
27
|
+
Image artifact - expects shape (H, W, 1) monocular or (H, W, 3) RGB
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
IMAGE = "image"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"""Execution context schemas."""
|
|
2
|
+
|
|
3
|
+
from collections.abc import Iterator
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from cuvis_ai_schemas.execution.context import Context
|
|
7
|
+
from cuvis_ai_schemas.execution.monitoring import Artifact, Metric
|
|
8
|
+
|
|
9
|
+
# Type alias for data streaming
|
|
10
|
+
InputStream = Iterator[dict[str, Any]]
|
|
11
|
+
|
|
12
|
+
__all__ = ["Context", "Artifact", "Metric", "InputStream"]
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""Execution context for pipeline execution."""
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
|
|
5
|
+
from cuvis_ai_schemas.enums.types import ExecutionStage
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@dataclass
|
|
9
|
+
class Context:
|
|
10
|
+
"""Execution context passed to executor and nodes.
|
|
11
|
+
|
|
12
|
+
Contains runtime information that doesn't flow through data edges.
|
|
13
|
+
This replaces mutable global state with explicit context parameters.
|
|
14
|
+
|
|
15
|
+
Attributes
|
|
16
|
+
----------
|
|
17
|
+
stage : ExecutionStage
|
|
18
|
+
Execution stage: "train", "val", "test", "inference"
|
|
19
|
+
epoch : int
|
|
20
|
+
Current training epoch
|
|
21
|
+
batch_idx : int
|
|
22
|
+
Current batch index within epoch
|
|
23
|
+
global_step : int
|
|
24
|
+
Global training step across all epochs
|
|
25
|
+
|
|
26
|
+
Examples
|
|
27
|
+
--------
|
|
28
|
+
>>> context = Context(stage=ExecutionStage.TRAIN, epoch=5, batch_idx=42, global_step=1337)
|
|
29
|
+
>>> executor.forward(context=context, batch=batch)
|
|
30
|
+
|
|
31
|
+
Notes
|
|
32
|
+
-----
|
|
33
|
+
Future extensions for distributed training:
|
|
34
|
+
- rank: int (process rank in distributed training)
|
|
35
|
+
- world_size: int (total number of processes)
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
stage: ExecutionStage = ExecutionStage.INFERENCE
|
|
39
|
+
epoch: int = 0
|
|
40
|
+
batch_idx: int = 0
|
|
41
|
+
global_step: int = 0
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"""Monitoring schemas for artifacts and metrics."""
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
from typing import TYPE_CHECKING
|
|
5
|
+
|
|
6
|
+
from cuvis_ai_schemas.enums.types import ArtifactType, ExecutionStage
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
import numpy as np
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class Artifact:
|
|
14
|
+
"""Artifact for logging visualizations and data to monitoring systems.
|
|
15
|
+
|
|
16
|
+
Attributes
|
|
17
|
+
----------
|
|
18
|
+
name : str
|
|
19
|
+
Name/identifier for the artifact
|
|
20
|
+
value : np.ndarray
|
|
21
|
+
Numpy array containing the artifact data (shape validated by type)
|
|
22
|
+
el_id : int
|
|
23
|
+
Element ID (e.g., batch item index, image index)
|
|
24
|
+
desc : str
|
|
25
|
+
Human-readable description of the artifact
|
|
26
|
+
type : ArtifactType
|
|
27
|
+
Type of artifact, determines validation and logging policy
|
|
28
|
+
stage : ExecutionStage
|
|
29
|
+
Execution stage when artifact was generated
|
|
30
|
+
epoch : int
|
|
31
|
+
Training epoch when artifact was generated
|
|
32
|
+
batch_idx : int
|
|
33
|
+
Batch index when artifact was generated
|
|
34
|
+
|
|
35
|
+
Examples
|
|
36
|
+
--------
|
|
37
|
+
>>> import numpy as np
|
|
38
|
+
>>> artifact = Artifact(
|
|
39
|
+
... name="heatmap_img_0",
|
|
40
|
+
... value=np.random.rand(256, 256, 3),
|
|
41
|
+
... el_id=0,
|
|
42
|
+
... desc="Anomaly heatmap for first image",
|
|
43
|
+
... type=ArtifactType.IMAGE
|
|
44
|
+
... )
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
name: str
|
|
48
|
+
value: "np.ndarray"
|
|
49
|
+
el_id: int
|
|
50
|
+
desc: str
|
|
51
|
+
type: ArtifactType
|
|
52
|
+
stage: ExecutionStage = ExecutionStage.INFERENCE
|
|
53
|
+
epoch: int = 0
|
|
54
|
+
batch_idx: int = 0
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@dataclass
|
|
58
|
+
class Metric:
|
|
59
|
+
"""Metric for logging scalar values to monitoring systems.
|
|
60
|
+
|
|
61
|
+
Attributes
|
|
62
|
+
----------
|
|
63
|
+
name : str
|
|
64
|
+
Name/identifier for the metric
|
|
65
|
+
value : float
|
|
66
|
+
Scalar metric value
|
|
67
|
+
stage : ExecutionStage
|
|
68
|
+
Execution stage when metric was recorded
|
|
69
|
+
epoch : int
|
|
70
|
+
Training epoch when metric was recorded
|
|
71
|
+
batch_idx : int
|
|
72
|
+
Batch index when metric was recorded
|
|
73
|
+
|
|
74
|
+
Examples
|
|
75
|
+
--------
|
|
76
|
+
>>> metric = Metric(name="loss/train", value=0.123, stage=ExecutionStage.TRAIN)
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
name: str
|
|
80
|
+
value: float
|
|
81
|
+
stage: ExecutionStage = ExecutionStage.INFERENCE
|
|
82
|
+
epoch: int = 0
|
|
83
|
+
batch_idx: int = 0
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"""UI display extensions for PortSpec."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from cuvis_ai_schemas.pipeline.ports import PortSpec
|
|
9
|
+
|
|
10
|
+
# Default RGB colors for different data types
|
|
11
|
+
# Extended with hyperspectral/cuvis-ai specific types for comprehensive UI support
|
|
12
|
+
DTYPE_COLORS: dict[str, tuple[int, int, int]] = {
|
|
13
|
+
# === PyTorch Tensor Types ===
|
|
14
|
+
"torch.Tensor": (100, 150, 255), # Blue for generic tensors
|
|
15
|
+
"tensor": (255, 200, 150), # Peach for generic tensor type
|
|
16
|
+
# Floating point types - warm orange/yellow tones
|
|
17
|
+
"torch.float16": (255, 180, 80), # Light orange
|
|
18
|
+
"torch.float32": (255, 150, 50), # Orange
|
|
19
|
+
"torch.float64": (255, 120, 30), # Dark orange
|
|
20
|
+
"torch.bfloat16": (255, 200, 100), # Pale orange
|
|
21
|
+
"float16": (255, 180, 80),
|
|
22
|
+
"float32": (255, 150, 50),
|
|
23
|
+
"float64": (255, 120, 30),
|
|
24
|
+
"float": (150, 255, 150), # Green for Python floats
|
|
25
|
+
# Integer types - cool blue tones
|
|
26
|
+
"torch.int8": (150, 200, 255), # Light blue
|
|
27
|
+
"torch.int16": (120, 180, 255), # Medium blue
|
|
28
|
+
"torch.int32": (100, 160, 255), # Blue
|
|
29
|
+
"torch.int64": (80, 140, 255), # Dark blue
|
|
30
|
+
"torch.uint8": (180, 220, 255), # Pale blue
|
|
31
|
+
"torch.uint16": (160, 210, 255), # Light pale blue
|
|
32
|
+
"int8": (150, 200, 255),
|
|
33
|
+
"int16": (120, 180, 255),
|
|
34
|
+
"int32": (100, 160, 255),
|
|
35
|
+
"int64": (80, 140, 255),
|
|
36
|
+
"uint8": (180, 220, 255),
|
|
37
|
+
"uint16": (160, 210, 255),
|
|
38
|
+
"int": (255, 200, 100), # Orange for Python ints
|
|
39
|
+
# Boolean types - green
|
|
40
|
+
"torch.bool": (100, 220, 100), # Green
|
|
41
|
+
"bool": (255, 150, 150), # Pink for Python bools (keep original for backward compat)
|
|
42
|
+
# Complex types - purple tones
|
|
43
|
+
"torch.complex64": (200, 150, 255), # Light purple
|
|
44
|
+
"torch.complex128": (180, 120, 255), # Purple
|
|
45
|
+
# === Python Built-in Types ===
|
|
46
|
+
"str": (200, 200, 200), # Gray for strings
|
|
47
|
+
"list": (180, 180, 255), # Light blue for lists
|
|
48
|
+
"dict": (255, 180, 255), # Light purple for dicts
|
|
49
|
+
"object": (180, 180, 180), # Gray for generic objects
|
|
50
|
+
# === Hyperspectral/Cuvis-AI Specific Types ===
|
|
51
|
+
"cube": (255, 180, 100), # Orange-ish (hyperspectral data cube)
|
|
52
|
+
"mask": (150, 255, 150), # Light green (binary/segmentation mask)
|
|
53
|
+
"wavelengths": (100, 200, 255), # Light blue (spectral wavelength array)
|
|
54
|
+
"bbox": (255, 150, 150), # Light red (bounding box coordinates)
|
|
55
|
+
"points": (200, 255, 200), # Pale green (point cloud/coordinates)
|
|
56
|
+
"labels": (255, 200, 200), # Light pink (classification labels)
|
|
57
|
+
"indices": (200, 180, 255), # Light purple (index array)
|
|
58
|
+
"scalar": (255, 255, 180), # Light yellow (single value)
|
|
59
|
+
"image": (200, 255, 255), # Light cyan (2D image output)
|
|
60
|
+
# === Special/Generic Types ===
|
|
61
|
+
"any": (255, 255, 255), # White (accepts anything)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
DEFAULT_COLOR = (200, 200, 200) # Light gray for unknown types
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class PortDisplaySpec:
|
|
68
|
+
"""UI display wrapper for PortSpec providing color and formatting.
|
|
69
|
+
|
|
70
|
+
This class wraps a PortSpec and adds UI-specific display properties
|
|
71
|
+
like colors and formatted tooltips.
|
|
72
|
+
|
|
73
|
+
Attributes
|
|
74
|
+
----------
|
|
75
|
+
port_spec : PortSpec
|
|
76
|
+
The underlying port specification
|
|
77
|
+
|
|
78
|
+
Examples
|
|
79
|
+
--------
|
|
80
|
+
>>> from cuvis_ai_schemas.pipeline.ports import PortSpec
|
|
81
|
+
>>> port = PortSpec(dtype="torch.Tensor", shape=(1, 3, 224, 224))
|
|
82
|
+
>>> display = PortDisplaySpec(port)
|
|
83
|
+
>>> display.color
|
|
84
|
+
(100, 150, 255)
|
|
85
|
+
>>> display.format_tooltip()
|
|
86
|
+
'torch.Tensor\\nShape: (1, 3, 224, 224)'
|
|
87
|
+
"""
|
|
88
|
+
|
|
89
|
+
def __init__(self, port_spec: PortSpec) -> None:
|
|
90
|
+
"""Initialize display spec.
|
|
91
|
+
|
|
92
|
+
Parameters
|
|
93
|
+
----------
|
|
94
|
+
port_spec : PortSpec
|
|
95
|
+
Port specification to wrap
|
|
96
|
+
"""
|
|
97
|
+
self.port_spec = port_spec
|
|
98
|
+
|
|
99
|
+
@property
|
|
100
|
+
def color(self) -> tuple[int, int, int]:
|
|
101
|
+
"""Get RGB color for this port's dtype.
|
|
102
|
+
|
|
103
|
+
Returns
|
|
104
|
+
-------
|
|
105
|
+
tuple[int, int, int]
|
|
106
|
+
RGB color tuple (0-255 range)
|
|
107
|
+
"""
|
|
108
|
+
dtype_str = str(self.port_spec.dtype)
|
|
109
|
+
|
|
110
|
+
# Try exact match first
|
|
111
|
+
if dtype_str in DTYPE_COLORS:
|
|
112
|
+
return DTYPE_COLORS[dtype_str]
|
|
113
|
+
|
|
114
|
+
# Try to extract typename for partial matches
|
|
115
|
+
if hasattr(self.port_spec.dtype, "__name__"):
|
|
116
|
+
typename = self.port_spec.dtype.__name__
|
|
117
|
+
if typename in DTYPE_COLORS:
|
|
118
|
+
return DTYPE_COLORS[typename]
|
|
119
|
+
|
|
120
|
+
# Check if it contains "Tensor"
|
|
121
|
+
if "Tensor" in dtype_str or "tensor" in dtype_str:
|
|
122
|
+
return DTYPE_COLORS["torch.Tensor"]
|
|
123
|
+
|
|
124
|
+
return DEFAULT_COLOR
|
|
125
|
+
|
|
126
|
+
@property
|
|
127
|
+
def display_name(self) -> str:
|
|
128
|
+
"""Get formatted display name for the dtype.
|
|
129
|
+
|
|
130
|
+
Returns
|
|
131
|
+
-------
|
|
132
|
+
str
|
|
133
|
+
Human-readable dtype name
|
|
134
|
+
"""
|
|
135
|
+
if hasattr(self.port_spec.dtype, "__name__"):
|
|
136
|
+
return self.port_spec.dtype.__name__
|
|
137
|
+
return str(self.port_spec.dtype)
|
|
138
|
+
|
|
139
|
+
def format_tooltip(self) -> str:
|
|
140
|
+
"""Format a tooltip string for UI display.
|
|
141
|
+
|
|
142
|
+
Returns
|
|
143
|
+
-------
|
|
144
|
+
str
|
|
145
|
+
Formatted tooltip with dtype, shape, and description
|
|
146
|
+
"""
|
|
147
|
+
lines = [self.display_name]
|
|
148
|
+
|
|
149
|
+
if self.port_spec.shape:
|
|
150
|
+
shape_str = ", ".join(str(d) for d in self.port_spec.shape)
|
|
151
|
+
lines.append(f"Shape: ({shape_str})")
|
|
152
|
+
|
|
153
|
+
if self.port_spec.description:
|
|
154
|
+
lines.append(f"\\n{self.port_spec.description}")
|
|
155
|
+
|
|
156
|
+
if self.port_spec.optional:
|
|
157
|
+
lines.append("[Optional]")
|
|
158
|
+
|
|
159
|
+
return "\\n".join(lines)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Generated proto files for cuvis.ai gRPC API v1."""
|
|
2
|
+
|
|
3
|
+
__all__: list[str] = []
|
|
4
|
+
|
|
5
|
+
try:
|
|
6
|
+
from cuvis_ai_schemas.grpc.v1 import cuvis_ai_pb2, cuvis_ai_pb2_grpc
|
|
7
|
+
|
|
8
|
+
__all__ = ["cuvis_ai_pb2", "cuvis_ai_pb2_grpc"]
|
|
9
|
+
except ImportError:
|
|
10
|
+
# Proto files not generated yet or proto extra not installed
|
|
11
|
+
pass
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
2
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
|
3
|
+
# source: cuvis_ai/grpc/v1/cuvis_ai.proto
|
|
4
|
+
# Protobuf Python Version: 6.31.1
|
|
5
|
+
"""Generated protocol buffer code."""
|
|
6
|
+
|
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
11
|
+
from google.protobuf.internal import builder as _builder
|
|
12
|
+
|
|
13
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
14
|
+
_runtime_version.Domain.PUBLIC, 6, 31, 1, "", "cuvis_ai/grpc/v1/cuvis_ai.proto"
|
|
15
|
+
)
|
|
16
|
+
# @@protoc_insertion_point(imports)
|
|
17
|
+
|
|
18
|
+
_sym_db = _symbol_database.Default()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
|
22
|
+
b'\n\x1f\x63uvis_ai/grpc/v1/cuvis_ai.proto\x12\x0b\x63uvis_ai.v1"L\n\x06Tensor\x12\r\n\x05shape\x18\x01 \x03(\x03\x12!\n\x05\x64type\x18\x02 \x01(\x0e\x32\x12.cuvis_ai.v1.DType\x12\x10\n\x08raw_data\x18\x03 \x01(\x0c"l\n\x07\x43ontext\x12*\n\x05stage\x18\x01 \x01(\x0e\x32\x1b.cuvis_ai.v1.ExecutionStage\x12\r\n\x05\x65poch\x18\x02 \x01(\x05\x12\x11\n\tbatch_idx\x18\x03 \x01(\x05\x12\x13\n\x0bglobal_step\x18\x04 \x01(\x05"&\n\x0ePipelineConfig\x12\x14\n\x0c\x63onfig_bytes\x18\x01 \x01(\x0c""\n\nDataConfig\x12\x14\n\x0c\x63onfig_bytes\x18\x01 \x01(\x0c"\'\n\x0fOptimizerConfig\x12\x14\n\x0c\x63onfig_bytes\x18\x01 \x01(\x0c"\'\n\x0fSchedulerConfig\x12\x14\n\x0c\x63onfig_bytes\x18\x01 \x01(\x0c"\'\n\x0f\x43\x61llbacksConfig\x12\x14\n\x0c\x63onfig_bytes\x18\x01 \x01(\x0c"~\n\x10PipelineMetadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x0f\n\x07\x63reated\x18\x03 \x01(\t\x12\x18\n\x10\x63uvis_ai_version\x18\x04 \x01(\t\x12\x0c\n\x04tags\x18\x05 \x03(\t\x12\x0e\n\x06\x61uthor\x18\x06 \x01(\t"\xaa\x01\n\x0cPipelineInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12/\n\x08metadata\x18\x03 \x01(\x0b\x32\x1d.cuvis_ai.v1.PipelineMetadata\x12\x0c\n\x04tags\x18\x04 \x03(\t\x12\x13\n\x0bhas_weights\x18\x05 \x01(\x08\x12\x14\n\x0cweights_path\x18\x06 \x01(\t\x12\x14\n\x0cyaml_content\x18\x07 \x01(\t"&\n\x0eTrainingConfig\x12\x14\n\x0c\x63onfig_bytes\x18\x01 \x01(\x0c"&\n\x0eTrainRunConfig\x12\x14\n\x0c\x63onfig_bytes\x18\x01 \x01(\x0c"]\n\x0b\x42oundingBox\x12\x12\n\nelement_id\x18\x01 \x01(\x05\x12\r\n\x05x_min\x18\x02 \x01(\x02\x12\r\n\x05y_min\x18\x03 \x01(\x02\x12\r\n\x05x_max\x18\x04 \x01(\x02\x12\r\n\x05y_max\x18\x05 \x01(\x02"8\n\rBoundingBoxes\x12\'\n\x05\x62oxes\x18\x01 \x03(\x0b\x32\x18.cuvis_ai.v1.BoundingBox"W\n\x05Point\x12\x12\n\nelement_id\x18\x01 \x01(\x05\x12\t\n\x01x\x18\x02 \x01(\x02\x12\t\n\x01y\x18\x03 \x01(\x02\x12$\n\x04type\x18\x04 \x01(\x0e\x32\x16.cuvis_ai.v1.PointType",\n\x06Points\x12"\n\x06points\x18\x01 \x03(\x0b\x32\x12.cuvis_ai.v1.Point"\xeb\x02\n\nInputBatch\x12(\n\x0bwavelengths\x18\x01 \x01(\x0b\x32\x13.cuvis_ai.v1.Tensor\x12!\n\x04\x63ube\x18\x02 \x01(\x0b\x32\x13.cuvis_ai.v1.Tensor\x12!\n\x04mask\x18\x03 \x01(\x0b\x32\x13.cuvis_ai.v1.Tensor\x12*\n\x06\x62\x62oxes\x18\x04 \x01(\x0b\x32\x1a.cuvis_ai.v1.BoundingBoxes\x12#\n\x06points\x18\x05 \x01(\x0b\x32\x13.cuvis_ai.v1.Points\x12\x13\n\x0btext_prompt\x18\x06 \x01(\t\x12>\n\x0c\x65xtra_inputs\x18\x07 \x03(\x0b\x32(.cuvis_ai.v1.InputBatch.ExtraInputsEntry\x1aG\n\x10\x45xtraInputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12"\n\x05value\x18\x02 \x01(\x0b\x32\x13.cuvis_ai.v1.Tensor:\x02\x38\x01"^\n\nTensorSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05shape\x18\x02 \x03(\x03\x12!\n\x05\x64type\x18\x03 \x01(\x0e\x32\x12.cuvis_ai.v1.DType\x12\x10\n\x08required\x18\x04 \x01(\x08"\xc2\x02\n\rTrainResponse\x12%\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x14.cuvis_ai.v1.Context\x12\x36\n\x06losses\x18\x02 \x03(\x0b\x32&.cuvis_ai.v1.TrainResponse.LossesEntry\x12\x38\n\x07metrics\x18\x03 \x03(\x0b\x32\'.cuvis_ai.v1.TrainResponse.MetricsEntry\x12(\n\x06status\x18\x04 \x01(\x0e\x32\x18.cuvis_ai.v1.TrainStatus\x12\x0f\n\x07message\x18\x05 \x01(\t\x1a-\n\x0bLossesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a.\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01"y\n\tParamSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x10\n\x08required\x18\x03 \x01(\x08\x12\x15\n\rdefault_value\x18\x04 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\x12\x12\n\nvalidation\x18\x06 \x01(\t"a\n\x10\x43\x61llbackTypeInfo\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12*\n\nparameters\x18\x03 \x03(\x0b\x32\x16.cuvis_ai.v1.ParamSpec"C\n\x15OptimizerParamsSchema\x12*\n\nparameters\x18\x01 \x03(\x0b\x32\x16.cuvis_ai.v1.ParamSpec"C\n\x15SchedulerParamsSchema\x12*\n\nparameters\x18\x01 \x03(\x0b\x32\x16.cuvis_ai.v1.ParamSpec"H\n\x1eListAvailablePipelineesRequest\x12\x17\n\nfilter_tag\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\r\n\x0b_filter_tag"P\n\x1fListAvailablePipelineesResponse\x12-\n\npipelinees\x18\x01 \x03(\x0b\x32\x19.cuvis_ai.v1.PipelineInfo"/\n\x16GetPipelineInfoRequest\x12\x15\n\rpipeline_name\x18\x01 \x01(\t"K\n\x17GetPipelineInfoResponse\x12\x30\n\rpipeline_info\x18\x01 \x01(\x0b\x32\x19.cuvis_ai.v1.PipelineInfo"\x16\n\x14\x43reateSessionRequest"+\n\x15\x43reateSessionResponse\x12\x12\n\nsession_id\x18\x01 \x01(\t"h\n\x1cSetSessionSearchPathsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x14\n\x0csearch_paths\x18\x02 \x03(\t\x12\x13\n\x06\x61ppend\x18\x03 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_append"_\n\x1dSetSessionSearchPathsResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x15\n\rcurrent_paths\x18\x02 \x03(\t\x12\x16\n\x0erejected_paths\x18\x03 \x03(\t")\n\x13\x43loseSessionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t"\'\n\x14\x43loseSessionResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08"`\n\x14ResolveConfigRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x13\n\x0b\x63onfig_type\x18\x02 \x01(\t\x12\x0c\n\x04path\x18\x03 \x01(\t\x12\x11\n\toverrides\x18\x04 \x03(\t"-\n\x15ResolveConfigResponse\x12\x14\n\x0c\x63onfig_bytes\x18\x01 \x01(\x0c"0\n\x19GetParameterSchemaRequest\x12\x13\n\x0b\x63onfig_type\x18\x01 \x01(\t"1\n\x1aGetParameterSchemaResponse\x12\x13\n\x0bjson_schema\x18\x01 \x01(\t"B\n\x15ValidateConfigRequest\x12\x13\n\x0b\x63onfig_type\x18\x01 \x01(\t\x12\x14\n\x0c\x63onfig_bytes\x18\x02 \x01(\x0c"I\n\x16ValidateConfigResponse\x12\r\n\x05valid\x18\x01 \x01(\x08\x12\x0e\n\x06\x65rrors\x18\x02 \x03(\t\x12\x10\n\x08warnings\x18\x03 \x03(\t"\x93\x01\n\x1aLoadPipelineWeightsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x16\n\x0cweights_path\x18\x02 \x01(\tH\x00\x12\x17\n\rweights_bytes\x18\x03 \x01(\x0cH\x00\x12\x13\n\x06strict\x18\x04 \x01(\x08H\x01\x88\x01\x01\x42\x10\n\x0eweights_sourceB\t\n\x07_strict"E\n\x1bLoadPipelineWeightsResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x15\n\rresolved_path\x18\x02 \x01(\t"[\n\x18SetTrainRunConfigRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12+\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x1b.cuvis_ai.v1.TrainRunConfig"J\n\x19SetTrainRunConfigResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x1c\n\x14pipeline_from_config\x18\x02 \x01(\x08"\xa8\x01\n\x0cTrainRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12.\n\x0ctrainer_type\x18\x02 \x01(\x0e\x32\x18.cuvis_ai.v1.TrainerType\x12%\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\x17.cuvis_ai.v1.DataConfig\x12-\n\x08training\x18\x04 \x01(\x0b\x32\x1b.cuvis_ai.v1.TrainingConfig"+\n\x15GetTrainStatusRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t"M\n\x16GetTrainStatusResponse\x12\x33\n\x0flatest_progress\x18\x01 \x01(\x0b\x32\x1a.cuvis_ai.v1.TrainResponse" \n\x1eGetTrainingCapabilitiesRequest"\x95\x02\n\x1fGetTrainingCapabilitiesResponse\x12\x1c\n\x14supported_optimizers\x18\x01 \x03(\t\x12\x1c\n\x14supported_schedulers\x18\x02 \x03(\t\x12:\n\x13supported_callbacks\x18\x03 \x03(\x0b\x32\x1d.cuvis_ai.v1.CallbackTypeInfo\x12<\n\x10optimizer_params\x18\x04 \x01(\x0b\x32".cuvis_ai.v1.OptimizerParamsSchema\x12<\n\x10scheduler_params\x18\x05 \x01(\x0b\x32".cuvis_ai.v1.SchedulerParamsSchema"q\n\x13SavePipelineRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x15\n\rpipeline_path\x18\x02 \x01(\t\x12/\n\x08metadata\x18\x03 \x01(\x0b\x32\x1d.cuvis_ai.v1.PipelineMetadata"T\n\x14SavePipelineResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x15\n\rpipeline_path\x18\x02 \x01(\t\x12\x14\n\x0cweights_path\x18\x03 \x01(\t"X\n\x13LoadPipelineRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12-\n\x08pipeline\x18\x02 \x01(\x0b\x32\x1b.cuvis_ai.v1.PipelineConfig"X\n\x14LoadPipelineResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12/\n\x08metadata\x18\x02 \x01(\x0b\x32\x1d.cuvis_ai.v1.PipelineMetadata"V\n\x13SaveTrainRunRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x15\n\rtrainrun_path\x18\x02 \x01(\t\x12\x14\n\x0csave_weights\x18\x03 \x01(\x08"k\n\x14SaveTrainRunResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x15\n\rtrainrun_path\x18\x02 \x01(\t\x12\x15\n\rpipeline_path\x18\x03 \x01(\t\x12\x14\n\x0cweights_path\x18\x04 \x01(\t"{\n\x16RestoreTrainRunRequest\x12\x15\n\rtrainrun_path\x18\x01 \x01(\t\x12\x19\n\x0cweights_path\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06strict\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x0f\n\r_weights_pathB\t\n\x07_strict"\\\n\x17RestoreTrainRunResponse\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12-\n\x08trainrun\x18\x02 \x01(\x0b\x32\x1b.cuvis_ai.v1.TrainRunConfig".\n\x18GetPipelineInputsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t"\xc9\x01\n\x19GetPipelineInputsResponse\x12\x13\n\x0binput_names\x18\x01 \x03(\t\x12K\n\x0binput_specs\x18\x02 \x03(\x0b\x32\x36.cuvis_ai.v1.GetPipelineInputsResponse.InputSpecsEntry\x1aJ\n\x0fInputSpecsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.cuvis_ai.v1.TensorSpec:\x02\x38\x01"/\n\x19GetPipelineOutputsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t"\xcf\x01\n\x1aGetPipelineOutputsResponse\x12\x14\n\x0coutput_names\x18\x01 \x03(\t\x12N\n\x0coutput_specs\x18\x02 \x03(\x0b\x32\x38.cuvis_ai.v1.GetPipelineOutputsResponse.OutputSpecsEntry\x1aK\n\x10OutputSpecsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.cuvis_ai.v1.TensorSpec:\x02\x38\x01"E\n\x1fGetPipelineVisualizationRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x0e\n\x06\x66ormat\x18\x02 \x01(\t"F\n GetPipelineVisualizationResponse\x12\x12\n\nimage_data\x18\x01 \x01(\x0c\x12\x0e\n\x06\x66ormat\x18\x02 \x01(\t"e\n\x10InferenceRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\'\n\x06inputs\x18\x02 \x01(\x0b\x32\x17.cuvis_ai.v1.InputBatch\x12\x14\n\x0coutput_specs\x18\x03 \x03(\t"\x84\x02\n\x11InferenceResponse\x12<\n\x07outputs\x18\x01 \x03(\x0b\x32+.cuvis_ai.v1.InferenceResponse.OutputsEntry\x12<\n\x07metrics\x18\x02 \x03(\x0b\x32+.cuvis_ai.v1.InferenceResponse.MetricsEntry\x1a\x43\n\x0cOutputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12"\n\x05value\x18\x02 \x01(\x0b\x32\x13.cuvis_ai.v1.Tensor:\x02\x38\x01\x1a.\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01"&\n\x0ePluginManifest\x12\x14\n\x0c\x63onfig_bytes\x18\x01 \x01(\x0c"W\n\nPluginInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06source\x18\x03 \x01(\t\x12\x0b\n\x03tag\x18\x04 \x01(\t\x12\x10\n\x08provides\x18\x05 \x03(\t"q\n\x08PortSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12!\n\x05\x64type\x18\x02 \x01(\x0e\x32\x12.cuvis_ai.v1.DType\x12\r\n\x05shape\x18\x03 \x03(\x03\x12\x10\n\x08optional\x18\x04 \x01(\x08\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t"4\n\x0cPortSpecList\x12$\n\x05specs\x18\x01 \x03(\x0b\x32\x15.cuvis_ai.v1.PortSpec"\xed\x02\n\x08NodeInfo\x12\x12\n\nclass_name\x18\x01 \x01(\t\x12\x11\n\tfull_path\x18\x02 \x01(\t\x12\x0e\n\x06source\x18\x03 \x01(\t\x12\x13\n\x0bplugin_name\x18\x04 \x01(\t\x12:\n\x0binput_specs\x18\x05 \x03(\x0b\x32%.cuvis_ai.v1.NodeInfo.InputSpecsEntry\x12<\n\x0coutput_specs\x18\x06 \x03(\x0b\x32&.cuvis_ai.v1.NodeInfo.OutputSpecsEntry\x1aL\n\x0fInputSpecsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.cuvis_ai.v1.PortSpecList:\x02\x38\x01\x1aM\n\x10OutputSpecsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.cuvis_ai.v1.PortSpecList:\x02\x38\x01"W\n\x12LoadPluginsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12-\n\x08manifest\x18\x02 \x01(\x0b\x32\x1b.cuvis_ai.v1.PluginManifest"\xb0\x01\n\x13LoadPluginsResponse\x12\x16\n\x0eloaded_plugins\x18\x01 \x03(\t\x12K\n\x0e\x66\x61iled_plugins\x18\x02 \x03(\x0b\x32\x33.cuvis_ai.v1.LoadPluginsResponse.FailedPluginsEntry\x1a\x34\n\x12\x46\x61iledPluginsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01".\n\x18ListLoadedPluginsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t"E\n\x19ListLoadedPluginsResponse\x12(\n\x07plugins\x18\x01 \x03(\x0b\x32\x17.cuvis_ai.v1.PluginInfo"?\n\x14GetPluginInfoRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x13\n\x0bplugin_name\x18\x02 \x01(\t"@\n\x15GetPluginInfoResponse\x12\'\n\x06plugin\x18\x01 \x01(\x0b\x32\x17.cuvis_ai.v1.PluginInfo"/\n\x19ListAvailableNodesRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t"B\n\x1aListAvailableNodesResponse\x12$\n\x05nodes\x18\x01 \x03(\x0b\x32\x15.cuvis_ai.v1.NodeInfo".\n\x17\x43learPluginCacheRequest\x12\x13\n\x0bplugin_name\x18\x01 \x01(\t"1\n\x18\x43learPluginCacheResponse\x12\x15\n\rcleared_count\x18\x01 \x01(\x05*\xb4\x01\n\x0eProcessingMode\x12\x1f\n\x1bPROCESSING_MODE_UNSPECIFIED\x10\x00\x12\x17\n\x13PROCESSING_MODE_RAW\x10\x01\x12\x1f\n\x1bPROCESSING_MODE_REFLECTANCE\x10\x02\x12 \n\x1cPROCESSING_MODE_DARKSUBTRACT\x10\x03\x12%\n!PROCESSING_MODE_SPECTRAL_RADIANCE\x10\x04*\x9e\x01\n\x0e\x45xecutionStage\x12\x1f\n\x1b\x45XECUTION_STAGE_UNSPECIFIED\x10\x00\x12\x19\n\x15\x45XECUTION_STAGE_TRAIN\x10\x01\x12\x17\n\x13\x45XECUTION_STAGE_VAL\x10\x02\x12\x18\n\x14\x45XECUTION_STAGE_TEST\x10\x03\x12\x1d\n\x19\x45XECUTION_STAGE_INFERENCE\x10\x04*\xb5\x01\n\x05\x44Type\x12\x16\n\x12\x44_TYPE_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x44_TYPE_FLOAT32\x10\x01\x12\x12\n\x0e\x44_TYPE_FLOAT64\x10\x02\x12\x10\n\x0c\x44_TYPE_INT32\x10\x03\x12\x10\n\x0c\x44_TYPE_INT64\x10\x04\x12\x10\n\x0c\x44_TYPE_UINT8\x10\x05\x12\x0f\n\x0b\x44_TYPE_BOOL\x10\x06\x12\x12\n\x0e\x44_TYPE_FLOAT16\x10\x07\x12\x11\n\rD_TYPE_UINT16\x10\x08*d\n\x0bTrainerType\x12\x1c\n\x18TRAINER_TYPE_UNSPECIFIED\x10\x00\x12\x1c\n\x18TRAINER_TYPE_STATISTICAL\x10\x01\x12\x19\n\x15TRAINER_TYPE_GRADIENT\x10\x02*x\n\x0bTrainStatus\x12\x1c\n\x18TRAIN_STATUS_UNSPECIFIED\x10\x00\x12\x18\n\x14TRAIN_STATUS_RUNNING\x10\x01\x12\x19\n\x15TRAIN_STATUS_COMPLETE\x10\x02\x12\x16\n\x12TRAIN_STATUS_ERROR\x10\x03*q\n\tPointType\x12\x1a\n\x16POINT_TYPE_UNSPECIFIED\x10\x00\x12\x17\n\x13POINT_TYPE_POSITIVE\x10\x01\x12\x17\n\x13POINT_TYPE_NEGATIVE\x10\x02\x12\x16\n\x12POINT_TYPE_NEUTRAL\x10\x03\x32\xbf\x13\n\x0e\x43uvisAIService\x12t\n\x17ListAvailablePipelinees\x12+.cuvis_ai.v1.ListAvailablePipelineesRequest\x1a,.cuvis_ai.v1.ListAvailablePipelineesResponse\x12\\\n\x0fGetPipelineInfo\x12#.cuvis_ai.v1.GetPipelineInfoRequest\x1a$.cuvis_ai.v1.GetPipelineInfoResponse\x12V\n\rCreateSession\x12!.cuvis_ai.v1.CreateSessionRequest\x1a".cuvis_ai.v1.CreateSessionResponse\x12n\n\x15SetSessionSearchPaths\x12).cuvis_ai.v1.SetSessionSearchPathsRequest\x1a*.cuvis_ai.v1.SetSessionSearchPathsResponse\x12S\n\x0c\x43loseSession\x12 .cuvis_ai.v1.CloseSessionRequest\x1a!.cuvis_ai.v1.CloseSessionResponse\x12V\n\rResolveConfig\x12!.cuvis_ai.v1.ResolveConfigRequest\x1a".cuvis_ai.v1.ResolveConfigResponse\x12\x65\n\x12GetParameterSchema\x12&.cuvis_ai.v1.GetParameterSchemaRequest\x1a\'.cuvis_ai.v1.GetParameterSchemaResponse\x12Y\n\x0eValidateConfig\x12".cuvis_ai.v1.ValidateConfigRequest\x1a#.cuvis_ai.v1.ValidateConfigResponse\x12h\n\x13LoadPipelineWeights\x12\'.cuvis_ai.v1.LoadPipelineWeightsRequest\x1a(.cuvis_ai.v1.LoadPipelineWeightsResponse\x12\x62\n\x11SetTrainRunConfig\x12%.cuvis_ai.v1.SetTrainRunConfigRequest\x1a&.cuvis_ai.v1.SetTrainRunConfigResponse\x12@\n\x05Train\x12\x19.cuvis_ai.v1.TrainRequest\x1a\x1a.cuvis_ai.v1.TrainResponse0\x01\x12Y\n\x0eGetTrainStatus\x12".cuvis_ai.v1.GetTrainStatusRequest\x1a#.cuvis_ai.v1.GetTrainStatusResponse\x12t\n\x17GetTrainingCapabilities\x12+.cuvis_ai.v1.GetTrainingCapabilitiesRequest\x1a,.cuvis_ai.v1.GetTrainingCapabilitiesResponse\x12S\n\x0cSavePipeline\x12 .cuvis_ai.v1.SavePipelineRequest\x1a!.cuvis_ai.v1.SavePipelineResponse\x12S\n\x0cLoadPipeline\x12 .cuvis_ai.v1.LoadPipelineRequest\x1a!.cuvis_ai.v1.LoadPipelineResponse\x12S\n\x0cSaveTrainRun\x12 .cuvis_ai.v1.SaveTrainRunRequest\x1a!.cuvis_ai.v1.SaveTrainRunResponse\x12\\\n\x0fRestoreTrainRun\x12#.cuvis_ai.v1.RestoreTrainRunRequest\x1a$.cuvis_ai.v1.RestoreTrainRunResponse\x12\x62\n\x11GetPipelineInputs\x12%.cuvis_ai.v1.GetPipelineInputsRequest\x1a&.cuvis_ai.v1.GetPipelineInputsResponse\x12\x65\n\x12GetPipelineOutputs\x12&.cuvis_ai.v1.GetPipelineOutputsRequest\x1a\'.cuvis_ai.v1.GetPipelineOutputsResponse\x12w\n\x18GetPipelineVisualization\x12,.cuvis_ai.v1.GetPipelineVisualizationRequest\x1a-.cuvis_ai.v1.GetPipelineVisualizationResponse\x12J\n\tInference\x12\x1d.cuvis_ai.v1.InferenceRequest\x1a\x1e.cuvis_ai.v1.InferenceResponse\x12P\n\x0bLoadPlugins\x12\x1f.cuvis_ai.v1.LoadPluginsRequest\x1a .cuvis_ai.v1.LoadPluginsResponse\x12\x62\n\x11ListLoadedPlugins\x12%.cuvis_ai.v1.ListLoadedPluginsRequest\x1a&.cuvis_ai.v1.ListLoadedPluginsResponse\x12V\n\rGetPluginInfo\x12!.cuvis_ai.v1.GetPluginInfoRequest\x1a".cuvis_ai.v1.GetPluginInfoResponse\x12\x65\n\x12ListAvailableNodes\x12&.cuvis_ai.v1.ListAvailableNodesRequest\x1a\'.cuvis_ai.v1.ListAvailableNodesResponse\x12_\n\x10\x43learPluginCache\x12$.cuvis_ai.v1.ClearPluginCacheRequest\x1a%.cuvis_ai.v1.ClearPluginCacheResponseb\x06proto3'
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
_globals = globals()
|
|
26
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
27
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "cuvis_ai.grpc.v1.cuvis_ai_pb2", _globals)
|
|
28
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
|
29
|
+
DESCRIPTOR._loaded_options = None
|
|
30
|
+
_globals["_INPUTBATCH_EXTRAINPUTSENTRY"]._loaded_options = None
|
|
31
|
+
_globals["_INPUTBATCH_EXTRAINPUTSENTRY"]._serialized_options = b"8\001"
|
|
32
|
+
_globals["_TRAINRESPONSE_LOSSESENTRY"]._loaded_options = None
|
|
33
|
+
_globals["_TRAINRESPONSE_LOSSESENTRY"]._serialized_options = b"8\001"
|
|
34
|
+
_globals["_TRAINRESPONSE_METRICSENTRY"]._loaded_options = None
|
|
35
|
+
_globals["_TRAINRESPONSE_METRICSENTRY"]._serialized_options = b"8\001"
|
|
36
|
+
_globals["_GETPIPELINEINPUTSRESPONSE_INPUTSPECSENTRY"]._loaded_options = None
|
|
37
|
+
_globals["_GETPIPELINEINPUTSRESPONSE_INPUTSPECSENTRY"]._serialized_options = b"8\001"
|
|
38
|
+
_globals["_GETPIPELINEOUTPUTSRESPONSE_OUTPUTSPECSENTRY"]._loaded_options = None
|
|
39
|
+
_globals["_GETPIPELINEOUTPUTSRESPONSE_OUTPUTSPECSENTRY"]._serialized_options = b"8\001"
|
|
40
|
+
_globals["_INFERENCERESPONSE_OUTPUTSENTRY"]._loaded_options = None
|
|
41
|
+
_globals["_INFERENCERESPONSE_OUTPUTSENTRY"]._serialized_options = b"8\001"
|
|
42
|
+
_globals["_INFERENCERESPONSE_METRICSENTRY"]._loaded_options = None
|
|
43
|
+
_globals["_INFERENCERESPONSE_METRICSENTRY"]._serialized_options = b"8\001"
|
|
44
|
+
_globals["_NODEINFO_INPUTSPECSENTRY"]._loaded_options = None
|
|
45
|
+
_globals["_NODEINFO_INPUTSPECSENTRY"]._serialized_options = b"8\001"
|
|
46
|
+
_globals["_NODEINFO_OUTPUTSPECSENTRY"]._loaded_options = None
|
|
47
|
+
_globals["_NODEINFO_OUTPUTSPECSENTRY"]._serialized_options = b"8\001"
|
|
48
|
+
_globals["_LOADPLUGINSRESPONSE_FAILEDPLUGINSENTRY"]._loaded_options = None
|
|
49
|
+
_globals["_LOADPLUGINSRESPONSE_FAILEDPLUGINSENTRY"]._serialized_options = b"8\001"
|
|
50
|
+
_globals["_PROCESSINGMODE"]._serialized_start = 7495
|
|
51
|
+
_globals["_PROCESSINGMODE"]._serialized_end = 7675
|
|
52
|
+
_globals["_EXECUTIONSTAGE"]._serialized_start = 7678
|
|
53
|
+
_globals["_EXECUTIONSTAGE"]._serialized_end = 7836
|
|
54
|
+
_globals["_DTYPE"]._serialized_start = 7839
|
|
55
|
+
_globals["_DTYPE"]._serialized_end = 8020
|
|
56
|
+
_globals["_TRAINERTYPE"]._serialized_start = 8022
|
|
57
|
+
_globals["_TRAINERTYPE"]._serialized_end = 8122
|
|
58
|
+
_globals["_TRAINSTATUS"]._serialized_start = 8124
|
|
59
|
+
_globals["_TRAINSTATUS"]._serialized_end = 8244
|
|
60
|
+
_globals["_POINTTYPE"]._serialized_start = 8246
|
|
61
|
+
_globals["_POINTTYPE"]._serialized_end = 8359
|
|
62
|
+
_globals["_TENSOR"]._serialized_start = 48
|
|
63
|
+
_globals["_TENSOR"]._serialized_end = 124
|
|
64
|
+
_globals["_CONTEXT"]._serialized_start = 126
|
|
65
|
+
_globals["_CONTEXT"]._serialized_end = 234
|
|
66
|
+
_globals["_PIPELINECONFIG"]._serialized_start = 236
|
|
67
|
+
_globals["_PIPELINECONFIG"]._serialized_end = 274
|
|
68
|
+
_globals["_DATACONFIG"]._serialized_start = 276
|
|
69
|
+
_globals["_DATACONFIG"]._serialized_end = 310
|
|
70
|
+
_globals["_OPTIMIZERCONFIG"]._serialized_start = 312
|
|
71
|
+
_globals["_OPTIMIZERCONFIG"]._serialized_end = 351
|
|
72
|
+
_globals["_SCHEDULERCONFIG"]._serialized_start = 353
|
|
73
|
+
_globals["_SCHEDULERCONFIG"]._serialized_end = 392
|
|
74
|
+
_globals["_CALLBACKSCONFIG"]._serialized_start = 394
|
|
75
|
+
_globals["_CALLBACKSCONFIG"]._serialized_end = 433
|
|
76
|
+
_globals["_PIPELINEMETADATA"]._serialized_start = 435
|
|
77
|
+
_globals["_PIPELINEMETADATA"]._serialized_end = 561
|
|
78
|
+
_globals["_PIPELINEINFO"]._serialized_start = 564
|
|
79
|
+
_globals["_PIPELINEINFO"]._serialized_end = 734
|
|
80
|
+
_globals["_TRAININGCONFIG"]._serialized_start = 736
|
|
81
|
+
_globals["_TRAININGCONFIG"]._serialized_end = 774
|
|
82
|
+
_globals["_TRAINRUNCONFIG"]._serialized_start = 776
|
|
83
|
+
_globals["_TRAINRUNCONFIG"]._serialized_end = 814
|
|
84
|
+
_globals["_BOUNDINGBOX"]._serialized_start = 816
|
|
85
|
+
_globals["_BOUNDINGBOX"]._serialized_end = 909
|
|
86
|
+
_globals["_BOUNDINGBOXES"]._serialized_start = 911
|
|
87
|
+
_globals["_BOUNDINGBOXES"]._serialized_end = 967
|
|
88
|
+
_globals["_POINT"]._serialized_start = 969
|
|
89
|
+
_globals["_POINT"]._serialized_end = 1056
|
|
90
|
+
_globals["_POINTS"]._serialized_start = 1058
|
|
91
|
+
_globals["_POINTS"]._serialized_end = 1102
|
|
92
|
+
_globals["_INPUTBATCH"]._serialized_start = 1105
|
|
93
|
+
_globals["_INPUTBATCH"]._serialized_end = 1468
|
|
94
|
+
_globals["_INPUTBATCH_EXTRAINPUTSENTRY"]._serialized_start = 1397
|
|
95
|
+
_globals["_INPUTBATCH_EXTRAINPUTSENTRY"]._serialized_end = 1468
|
|
96
|
+
_globals["_TENSORSPEC"]._serialized_start = 1470
|
|
97
|
+
_globals["_TENSORSPEC"]._serialized_end = 1564
|
|
98
|
+
_globals["_TRAINRESPONSE"]._serialized_start = 1567
|
|
99
|
+
_globals["_TRAINRESPONSE"]._serialized_end = 1889
|
|
100
|
+
_globals["_TRAINRESPONSE_LOSSESENTRY"]._serialized_start = 1796
|
|
101
|
+
_globals["_TRAINRESPONSE_LOSSESENTRY"]._serialized_end = 1841
|
|
102
|
+
_globals["_TRAINRESPONSE_METRICSENTRY"]._serialized_start = 1843
|
|
103
|
+
_globals["_TRAINRESPONSE_METRICSENTRY"]._serialized_end = 1889
|
|
104
|
+
_globals["_PARAMSPEC"]._serialized_start = 1891
|
|
105
|
+
_globals["_PARAMSPEC"]._serialized_end = 2012
|
|
106
|
+
_globals["_CALLBACKTYPEINFO"]._serialized_start = 2014
|
|
107
|
+
_globals["_CALLBACKTYPEINFO"]._serialized_end = 2111
|
|
108
|
+
_globals["_OPTIMIZERPARAMSSCHEMA"]._serialized_start = 2113
|
|
109
|
+
_globals["_OPTIMIZERPARAMSSCHEMA"]._serialized_end = 2180
|
|
110
|
+
_globals["_SCHEDULERPARAMSSCHEMA"]._serialized_start = 2182
|
|
111
|
+
_globals["_SCHEDULERPARAMSSCHEMA"]._serialized_end = 2249
|
|
112
|
+
_globals["_LISTAVAILABLEPIPELINEESREQUEST"]._serialized_start = 2251
|
|
113
|
+
_globals["_LISTAVAILABLEPIPELINEESREQUEST"]._serialized_end = 2323
|
|
114
|
+
_globals["_LISTAVAILABLEPIPELINEESRESPONSE"]._serialized_start = 2325
|
|
115
|
+
_globals["_LISTAVAILABLEPIPELINEESRESPONSE"]._serialized_end = 2405
|
|
116
|
+
_globals["_GETPIPELINEINFOREQUEST"]._serialized_start = 2407
|
|
117
|
+
_globals["_GETPIPELINEINFOREQUEST"]._serialized_end = 2454
|
|
118
|
+
_globals["_GETPIPELINEINFORESPONSE"]._serialized_start = 2456
|
|
119
|
+
_globals["_GETPIPELINEINFORESPONSE"]._serialized_end = 2531
|
|
120
|
+
_globals["_CREATESESSIONREQUEST"]._serialized_start = 2533
|
|
121
|
+
_globals["_CREATESESSIONREQUEST"]._serialized_end = 2555
|
|
122
|
+
_globals["_CREATESESSIONRESPONSE"]._serialized_start = 2557
|
|
123
|
+
_globals["_CREATESESSIONRESPONSE"]._serialized_end = 2600
|
|
124
|
+
_globals["_SETSESSIONSEARCHPATHSREQUEST"]._serialized_start = 2602
|
|
125
|
+
_globals["_SETSESSIONSEARCHPATHSREQUEST"]._serialized_end = 2706
|
|
126
|
+
_globals["_SETSESSIONSEARCHPATHSRESPONSE"]._serialized_start = 2708
|
|
127
|
+
_globals["_SETSESSIONSEARCHPATHSRESPONSE"]._serialized_end = 2803
|
|
128
|
+
_globals["_CLOSESESSIONREQUEST"]._serialized_start = 2805
|
|
129
|
+
_globals["_CLOSESESSIONREQUEST"]._serialized_end = 2846
|
|
130
|
+
_globals["_CLOSESESSIONRESPONSE"]._serialized_start = 2848
|
|
131
|
+
_globals["_CLOSESESSIONRESPONSE"]._serialized_end = 2887
|
|
132
|
+
_globals["_RESOLVECONFIGREQUEST"]._serialized_start = 2889
|
|
133
|
+
_globals["_RESOLVECONFIGREQUEST"]._serialized_end = 2985
|
|
134
|
+
_globals["_RESOLVECONFIGRESPONSE"]._serialized_start = 2987
|
|
135
|
+
_globals["_RESOLVECONFIGRESPONSE"]._serialized_end = 3032
|
|
136
|
+
_globals["_GETPARAMETERSCHEMAREQUEST"]._serialized_start = 3034
|
|
137
|
+
_globals["_GETPARAMETERSCHEMAREQUEST"]._serialized_end = 3082
|
|
138
|
+
_globals["_GETPARAMETERSCHEMARESPONSE"]._serialized_start = 3084
|
|
139
|
+
_globals["_GETPARAMETERSCHEMARESPONSE"]._serialized_end = 3133
|
|
140
|
+
_globals["_VALIDATECONFIGREQUEST"]._serialized_start = 3135
|
|
141
|
+
_globals["_VALIDATECONFIGREQUEST"]._serialized_end = 3201
|
|
142
|
+
_globals["_VALIDATECONFIGRESPONSE"]._serialized_start = 3203
|
|
143
|
+
_globals["_VALIDATECONFIGRESPONSE"]._serialized_end = 3276
|
|
144
|
+
_globals["_LOADPIPELINEWEIGHTSREQUEST"]._serialized_start = 3279
|
|
145
|
+
_globals["_LOADPIPELINEWEIGHTSREQUEST"]._serialized_end = 3426
|
|
146
|
+
_globals["_LOADPIPELINEWEIGHTSRESPONSE"]._serialized_start = 3428
|
|
147
|
+
_globals["_LOADPIPELINEWEIGHTSRESPONSE"]._serialized_end = 3497
|
|
148
|
+
_globals["_SETTRAINRUNCONFIGREQUEST"]._serialized_start = 3499
|
|
149
|
+
_globals["_SETTRAINRUNCONFIGREQUEST"]._serialized_end = 3590
|
|
150
|
+
_globals["_SETTRAINRUNCONFIGRESPONSE"]._serialized_start = 3592
|
|
151
|
+
_globals["_SETTRAINRUNCONFIGRESPONSE"]._serialized_end = 3666
|
|
152
|
+
_globals["_TRAINREQUEST"]._serialized_start = 3669
|
|
153
|
+
_globals["_TRAINREQUEST"]._serialized_end = 3837
|
|
154
|
+
_globals["_GETTRAINSTATUSREQUEST"]._serialized_start = 3839
|
|
155
|
+
_globals["_GETTRAINSTATUSREQUEST"]._serialized_end = 3882
|
|
156
|
+
_globals["_GETTRAINSTATUSRESPONSE"]._serialized_start = 3884
|
|
157
|
+
_globals["_GETTRAINSTATUSRESPONSE"]._serialized_end = 3961
|
|
158
|
+
_globals["_GETTRAININGCAPABILITIESREQUEST"]._serialized_start = 3963
|
|
159
|
+
_globals["_GETTRAININGCAPABILITIESREQUEST"]._serialized_end = 3995
|
|
160
|
+
_globals["_GETTRAININGCAPABILITIESRESPONSE"]._serialized_start = 3998
|
|
161
|
+
_globals["_GETTRAININGCAPABILITIESRESPONSE"]._serialized_end = 4275
|
|
162
|
+
_globals["_SAVEPIPELINEREQUEST"]._serialized_start = 4277
|
|
163
|
+
_globals["_SAVEPIPELINEREQUEST"]._serialized_end = 4390
|
|
164
|
+
_globals["_SAVEPIPELINERESPONSE"]._serialized_start = 4392
|
|
165
|
+
_globals["_SAVEPIPELINERESPONSE"]._serialized_end = 4476
|
|
166
|
+
_globals["_LOADPIPELINEREQUEST"]._serialized_start = 4478
|
|
167
|
+
_globals["_LOADPIPELINEREQUEST"]._serialized_end = 4566
|
|
168
|
+
_globals["_LOADPIPELINERESPONSE"]._serialized_start = 4568
|
|
169
|
+
_globals["_LOADPIPELINERESPONSE"]._serialized_end = 4656
|
|
170
|
+
_globals["_SAVETRAINRUNREQUEST"]._serialized_start = 4658
|
|
171
|
+
_globals["_SAVETRAINRUNREQUEST"]._serialized_end = 4744
|
|
172
|
+
_globals["_SAVETRAINRUNRESPONSE"]._serialized_start = 4746
|
|
173
|
+
_globals["_SAVETRAINRUNRESPONSE"]._serialized_end = 4853
|
|
174
|
+
_globals["_RESTORETRAINRUNREQUEST"]._serialized_start = 4855
|
|
175
|
+
_globals["_RESTORETRAINRUNREQUEST"]._serialized_end = 4978
|
|
176
|
+
_globals["_RESTORETRAINRUNRESPONSE"]._serialized_start = 4980
|
|
177
|
+
_globals["_RESTORETRAINRUNRESPONSE"]._serialized_end = 5072
|
|
178
|
+
_globals["_GETPIPELINEINPUTSREQUEST"]._serialized_start = 5074
|
|
179
|
+
_globals["_GETPIPELINEINPUTSREQUEST"]._serialized_end = 5120
|
|
180
|
+
_globals["_GETPIPELINEINPUTSRESPONSE"]._serialized_start = 5123
|
|
181
|
+
_globals["_GETPIPELINEINPUTSRESPONSE"]._serialized_end = 5324
|
|
182
|
+
_globals["_GETPIPELINEINPUTSRESPONSE_INPUTSPECSENTRY"]._serialized_start = 5250
|
|
183
|
+
_globals["_GETPIPELINEINPUTSRESPONSE_INPUTSPECSENTRY"]._serialized_end = 5324
|
|
184
|
+
_globals["_GETPIPELINEOUTPUTSREQUEST"]._serialized_start = 5326
|
|
185
|
+
_globals["_GETPIPELINEOUTPUTSREQUEST"]._serialized_end = 5373
|
|
186
|
+
_globals["_GETPIPELINEOUTPUTSRESPONSE"]._serialized_start = 5376
|
|
187
|
+
_globals["_GETPIPELINEOUTPUTSRESPONSE"]._serialized_end = 5583
|
|
188
|
+
_globals["_GETPIPELINEOUTPUTSRESPONSE_OUTPUTSPECSENTRY"]._serialized_start = 5508
|
|
189
|
+
_globals["_GETPIPELINEOUTPUTSRESPONSE_OUTPUTSPECSENTRY"]._serialized_end = 5583
|
|
190
|
+
_globals["_GETPIPELINEVISUALIZATIONREQUEST"]._serialized_start = 5585
|
|
191
|
+
_globals["_GETPIPELINEVISUALIZATIONREQUEST"]._serialized_end = 5654
|
|
192
|
+
_globals["_GETPIPELINEVISUALIZATIONRESPONSE"]._serialized_start = 5656
|
|
193
|
+
_globals["_GETPIPELINEVISUALIZATIONRESPONSE"]._serialized_end = 5726
|
|
194
|
+
_globals["_INFERENCEREQUEST"]._serialized_start = 5728
|
|
195
|
+
_globals["_INFERENCEREQUEST"]._serialized_end = 5829
|
|
196
|
+
_globals["_INFERENCERESPONSE"]._serialized_start = 5832
|
|
197
|
+
_globals["_INFERENCERESPONSE"]._serialized_end = 6092
|
|
198
|
+
_globals["_INFERENCERESPONSE_OUTPUTSENTRY"]._serialized_start = 5977
|
|
199
|
+
_globals["_INFERENCERESPONSE_OUTPUTSENTRY"]._serialized_end = 6044
|
|
200
|
+
_globals["_INFERENCERESPONSE_METRICSENTRY"]._serialized_start = 1843
|
|
201
|
+
_globals["_INFERENCERESPONSE_METRICSENTRY"]._serialized_end = 1889
|
|
202
|
+
_globals["_PLUGINMANIFEST"]._serialized_start = 6094
|
|
203
|
+
_globals["_PLUGINMANIFEST"]._serialized_end = 6132
|
|
204
|
+
_globals["_PLUGININFO"]._serialized_start = 6134
|
|
205
|
+
_globals["_PLUGININFO"]._serialized_end = 6221
|
|
206
|
+
_globals["_PORTSPEC"]._serialized_start = 6223
|
|
207
|
+
_globals["_PORTSPEC"]._serialized_end = 6336
|
|
208
|
+
_globals["_PORTSPECLIST"]._serialized_start = 6338
|
|
209
|
+
_globals["_PORTSPECLIST"]._serialized_end = 6390
|
|
210
|
+
_globals["_NODEINFO"]._serialized_start = 6393
|
|
211
|
+
_globals["_NODEINFO"]._serialized_end = 6758
|
|
212
|
+
_globals["_NODEINFO_INPUTSPECSENTRY"]._serialized_start = 6603
|
|
213
|
+
_globals["_NODEINFO_INPUTSPECSENTRY"]._serialized_end = 6679
|
|
214
|
+
_globals["_NODEINFO_OUTPUTSPECSENTRY"]._serialized_start = 6681
|
|
215
|
+
_globals["_NODEINFO_OUTPUTSPECSENTRY"]._serialized_end = 6758
|
|
216
|
+
_globals["_LOADPLUGINSREQUEST"]._serialized_start = 6760
|
|
217
|
+
_globals["_LOADPLUGINSREQUEST"]._serialized_end = 6847
|
|
218
|
+
_globals["_LOADPLUGINSRESPONSE"]._serialized_start = 6850
|
|
219
|
+
_globals["_LOADPLUGINSRESPONSE"]._serialized_end = 7026
|
|
220
|
+
_globals["_LOADPLUGINSRESPONSE_FAILEDPLUGINSENTRY"]._serialized_start = 6974
|
|
221
|
+
_globals["_LOADPLUGINSRESPONSE_FAILEDPLUGINSENTRY"]._serialized_end = 7026
|
|
222
|
+
_globals["_LISTLOADEDPLUGINSREQUEST"]._serialized_start = 7028
|
|
223
|
+
_globals["_LISTLOADEDPLUGINSREQUEST"]._serialized_end = 7074
|
|
224
|
+
_globals["_LISTLOADEDPLUGINSRESPONSE"]._serialized_start = 7076
|
|
225
|
+
_globals["_LISTLOADEDPLUGINSRESPONSE"]._serialized_end = 7145
|
|
226
|
+
_globals["_GETPLUGININFOREQUEST"]._serialized_start = 7147
|
|
227
|
+
_globals["_GETPLUGININFOREQUEST"]._serialized_end = 7210
|
|
228
|
+
_globals["_GETPLUGININFORESPONSE"]._serialized_start = 7212
|
|
229
|
+
_globals["_GETPLUGININFORESPONSE"]._serialized_end = 7276
|
|
230
|
+
_globals["_LISTAVAILABLENODESREQUEST"]._serialized_start = 7278
|
|
231
|
+
_globals["_LISTAVAILABLENODESREQUEST"]._serialized_end = 7325
|
|
232
|
+
_globals["_LISTAVAILABLENODESRESPONSE"]._serialized_start = 7327
|
|
233
|
+
_globals["_LISTAVAILABLENODESRESPONSE"]._serialized_end = 7393
|
|
234
|
+
_globals["_CLEARPLUGINCACHEREQUEST"]._serialized_start = 7395
|
|
235
|
+
_globals["_CLEARPLUGINCACHEREQUEST"]._serialized_end = 7441
|
|
236
|
+
_globals["_CLEARPLUGINCACHERESPONSE"]._serialized_start = 7443
|
|
237
|
+
_globals["_CLEARPLUGINCACHERESPONSE"]._serialized_end = 7492
|
|
238
|
+
_globals["_CUVISAISERVICE"]._serialized_start = 8362
|
|
239
|
+
_globals["_CUVISAISERVICE"]._serialized_end = 10857
|
|
240
|
+
# @@protoc_insertion_point(module_scope)
|