zerohertzLib.mlops¶
MLOps
MLOps에서 사용되는 class들
- class zerohertzLib.mlops.BaseTritonPythonModel[source]¶
Bases:
ABCTriton Inference Server에서 Python backend 사용을 위한 class
Note
Abstract Base Class: Model의 추론을 수행하는 abstract method
_inference정의 후 사용- logger¶
Triton Inference Server 내 log를 출력하기 위한 instance
- Type:
zerohertzLib.logging.Logger
- _inference()[source]¶
Model 추론을 수행하는 private method (상속을 통한 재정의 필수)
- Parameters:
inputs (
NDArray[DTypeLike]) – Model 추론 시 사용될 입력 (config.pbtxt의 입력에 따라 입력 결정)- Returns:
Model의 추론 결과
- Return type:
Union[NDArray[DTypeLike], Tuple[NDArray[DTypeLike]]]
Examples
model.py:class TritonPythonModel(zz.mlops.BaseTritonPythonModel): def initialize(self, args): super().initialize(args, 10) self.model = Model(cfg) def _inference(self, input_image): return self.model(input_image)
- Normal Logs:
2024-01-12 01:47:19,123 | INFO | MODEL | Called 2024-01-12 01:47:19,124 | DEBUG | MODEL | inputs: (2259, 1663, 3) 2024-01-12 01:47:19,124 | INFO | MODEL | Inference start 2024-01-12 01:47:19,254 | DEBUG | MODEL | outputs: (3, 4, 2) (3,) 2024-01-12 01:47:19,254 | INFO | MODEL | Inference completed
- Error Logs:
2024-01-12 02:03:24,288 | CRITICAL | MODEL | name 'test' is not defined ==================================================================================================== Traceback (most recent call last): File "/usr/local/lib/python3.8/dist-packages/zerohertzLib/mlops/triton.py", line *, in execute outputs = self._inference(*inputs) File "/models/model/*/model.py", line *, in _inference return self.model(input_image) File "/models/model/*/*.py", line *, in * test NameError: name 'test' is not defined ====================================================================================================
- class zerohertzLib.mlops.TritonClientK8s(svc_name, namespace, model_name, port=8001)[source]¶
Bases:
TritonClientURLKubernetes에서 실행되는 triton inference server의 호출을 위한 class
- Parameters:
- inputs¶
지정된 model의 입력
- Type:
List[Dict[str, Any]]
- outputs¶
지정된 model의 출력
- Type:
List[Dict[str, Any]]
- __call__()[source]¶
Model 호출 수행
- Parameters:
*args (
NDArray[DTypeLike]) – Model 호출 시 사용될 입력 (self.inputs)- Returns:
호출된 model의 결과
- Return type:
Dict[str, NDArray[DTypeLike]]
Examples
- Kubernetes:
>>> kubectl get svc -n yolo NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE fastapi-svc ClusterIP 10.106.72.126 <none> 80/TCP 90s triton-inference-server-svc ClusterIP 10.96.28.172 <none> 8001/TCP 90s >>> docker exec -it ${API_CONTAINER} bash- Python:
>>> tc = zz.mlops.TritonClientK8s("triton-inference-server-svc", "yolo", "YOLO") >>> tc.inputs [{'name': 'images', 'data_type': 'TYPE_FP32', 'dims': ['1', '3', '640', '640']}] >>> tc.outputs [{'name': 'output0', 'data_type': 'TYPE_FP32', 'dims': ['1', '25200', '85']}] >>> tc(np.zeros((1, 3, 640, 640))) {'output0': array([[[3.90108061e+00, 3.51982164e+00, 7.49971962e+00, ..., 2.21481919e-03, 1.17585063e-03, 1.36753917e-03]]], dtype=float32)}
- class zerohertzLib.mlops.TritonClientURL(url, model_name, port=8001)[source]¶
Bases:
object외부에서 실행되는 triton inference server의 호출을 위한 class
- Parameters:
- inputs¶
지정된 model의 입력
- Type:
List[Dict[str, Any]]
- outputs¶
지정된 model의 출력
- Type:
List[Dict[str, Any]]
- __call__()[source]¶
Model 호출 수행
- Parameters:
*args (
NDArray[DTypeLike]) – Model 호출 시 사용될 입력 (self.inputs)- Returns:
호출된 model의 결과
- Return type:
Dict[str, NDArray[DTypeLike]]
Examples
>>> tc = zz.mlops.TritonClientURL("localhost", "YOLO") >>> tc.inputs [{'name': 'images', 'data_type': 'TYPE_FP32', 'dims': ['1', '3', '640', '640']}] >>> tc.outputs [{'name': 'output0', 'data_type': 'TYPE_FP32', 'dims': ['1', '25200', '85']}] >>> tc(np.zeros((1, 3, 640, 640))) {'output0': array([[[3.90108061e+00, 3.51982164e+00, 7.49971962e+00, ..., 2.21481919e-03, 1.17585063e-03, 1.36753917e-03]]], dtype=float32)}