Skip to content

Commit

Permalink
extract docker servive inside each component directory and and target…
Browse files Browse the repository at this point in the history
… inside makefile
  • Loading branch information
bojeanson committed Mar 6, 2025
1 parent 1f8ed59 commit 862768b
Show file tree
Hide file tree
Showing 10 changed files with 81 additions and 59 deletions.
33 changes: 0 additions & 33 deletions docker-compose.raspberrypi.yml

This file was deleted.

26 changes: 6 additions & 20 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,8 @@
services:
edge_model_serving:
container_name: edge_model_serving
build:
context: edge_model_serving
dockerfile: tflite_serving/Dockerfile
args:
BUILDOS: ${BUILDOS:-linux}
environment:
TF_CPP_MIN_VLOG_LEVEL: 0
ports:
- 8501:8501
profiles: [edge]
volumes:
- ./edge_model_serving/models:/models
extends:
file: edge_model_serving/tflite_serving/edge_model_serving.yml
service: edge_model_serving

edge_orchestrator:
extends:
Expand All @@ -34,13 +24,9 @@ services:
profiles: [hub]

edge_interface:
container_name: edge_interface
build:
context: edge_interface
dockerfile: Dockerfile
ports:
- 8080:80
profiles: [edge]
extends:
file: edge_interface/edge_interface.yml
service: edge_interface

hub_streamlit:
container_name: hub_streamlit
Expand Down
34 changes: 34 additions & 0 deletions edge_interface/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
SHELL := /bin/bash
.SHELLFLAGS = -ec
.ONESHELL:
.SILENT:

.EXPORT_ALL_VARIABLES:
.DEFAULT_GOAL: help

REPO_DIRECTORY:=$(shell pwd)
PYTHONPATH:=${PYTHONPATH}:${REPO_DIRECTORY}
BUILDOS=$(shell uname -s | tr '[:upper:]' '[:lower:]')


.PHONY: help
help:
echo "❓ Use \`make <target>'"
grep -E '^\.PHONY: [a-zA-Z0-9_-]+ .*?## .*$$' $(MAKEFILE_LIST) | \
awk 'BEGIN {FS = "(: |##)"}; {printf "\033[36m%-30s\033[0m %s\n", $$2, $$3}'

.PHONY: install ## ⏬ Install development dependencies
install:
npm install

.PHONY: run_edge_interface ## ✅ Launch the tflite serving app
run_edge_interface:
npm run serve

.PHONY: start_edge_interface ## 🕵 Start edge_interface service (Docker container)
start_edge_interface:
BUILDOS=${BUILDOS} docker compose --file edge_interface.yml up edge_interface -d --build

.PHONY: stop_edge_interface ## 🕵 Stop edge_interface service (Docker container)
stop_edge_interface:
docker compose --file edge_interface.yml down edge_interface
9 changes: 9 additions & 0 deletions edge_interface/edge_interface.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
services:
edge_interface:
container_name: edge_interface
build:
context: .
dockerfile: Dockerfile
ports:
- 8080:80
profiles: [edge]
11 changes: 11 additions & 0 deletions edge_model_serving/tflite_serving/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@ SHELL := /bin/bash
.SILENT:

.EXPORT_ALL_VARIABLES:
.DEFAULT_GOAL: help

REPO_DIRECTORY:=$(shell pwd)
PYTHONPATH:=${PYTHONPATH}:${REPO_DIRECTORY}
BUILDOS=$(shell uname -s | tr '[:upper:]' '[:lower:]')

.PHONY: help
help:
Expand Down Expand Up @@ -42,3 +45,11 @@ tflite_tests:
.PHONY: run_tflite_serving ## ✅ Launch the tflite serving app
run_tflite_serving:
uvicorn tflite_serving.tflite_server:app --reload --port 8501 --host 0.0.0.0

.PHONY: start_edge_model_serving ## 🕵 Start edge_model_serving service (Docker container)
start_edge_model_serving:
BUILDOS=${BUILDOS} docker compose --file edge_model_serving.yml up edge_model_serving -d --build

.PHONY: stop_edge_model_serving ## 🕵 Stop edge_model_serving service (Docker container)
stop_edge_model_serving:
docker compose --file edge_model_serving.yml down edge_model_serving
15 changes: 15 additions & 0 deletions edge_model_serving/tflite_serving/edge_model_serving.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
services:
edge_model_serving:
container_name: edge_model_serving
build:
context: ..
dockerfile: tflite_serving/Dockerfile
args:
BUILDOS: ${BUILDOS:-linux}
volumes:
- ../models:/models
ports:
- 8501:8501
environment:
TF_CPP_MIN_VLOG_LEVEL: 0
profiles: [edge]
3 changes: 1 addition & 2 deletions edge_orchestrator/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,7 @@ pyramid_and_badges:

.PHONY: start_edge_orchestrator ## 🕵 Start edge_orchestrator service (Docker container)
start_edge_orchestrator:
BUILDOS=${BUILDOS} docker compose --file edge_orchestrator.yml --build up edge_orchestrator -d

BUILDOS=${BUILDOS} docker compose --file edge_orchestrator.yml up edge_orchestrator -d --build

.PHONY: stop_edge_orchestrator ## 🕵 Stop edge_orchestrator service (Docker container)
stop_edge_orchestrator:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from pathlib import Path
from typing import List, Optional
from typing import List, Optional, Union

from pydantic import BaseModel, Field, computed_field, model_validator
from pydantic_core import Url
Expand All @@ -12,7 +12,7 @@


class ModelForwarderConfig(BaseModel):
model_name: ModelName
model_name: Union[str, ModelName]
model_type: ModelType
expected_image_resolution: ImageResolution
model_version: Optional[str] = "1"
Expand All @@ -23,7 +23,7 @@ class ModelForwarderConfig(BaseModel):
@computed_field
@property
def model_id(self) -> str:
return f"{self.model_name.value}_{self.model_type.value}_{self.model_version}"
return f"{self.model_name}_{self.model_type.value}_{self.model_version}"

@model_validator(mode="after")
def check_class_names_path(self):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def _build_model_url(base_url: str, model_name: str, model_version: str) -> str:
def _get_model_url(self) -> str:
return self._build_model_url(
str(self._model_forwarder_config.model_serving_url),
self._model_forwarder_config.model_name.value,
self._model_forwarder_config.model_name,
self._model_forwarder_config.model_version,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ def _pre_process_binary(self, binary: bytes) -> np.ndarray:
return np.expand_dims(image_array, axis=0).astype(np.uint8)[:, :, :, :3]

async def _predict(self, preprocessed_binary: np.ndarray) -> Dict[str, Any]:
# TODO: refactor edge_model_serving to remove model_type from the request
model_type = None
if self._model_forwarder_config.model_name == ModelName.yolo_coco_nano:
model_type = "yolo"
Expand Down

0 comments on commit 862768b

Please sign in to comment.