Advanced Settings#
System Requirements#
Minimum Configuration#
Component |
Specification |
|---|---|
CPU |
Intel Xeon 8+ cores |
RAM |
16 GB |
GPU |
Intel Arc A770 8GB / NVIDIA RTX 3060 |
Storage |
50 GB SSD |
Docker |
24.0+ with Compose V2 |
Recommended Configuration#
Component |
Specification |
|---|---|
CPU |
Intel Xeon 16+ cores |
RAM |
32 GB |
GPU |
NVIDIA RTX 3080+ / Intel Data Center GPU |
Storage |
200 GB NVMe SSD |
Network |
10 Gbps (for Take-Away RTSP) |
Build Local Image#
By default, the application uses pre-built Docker images for faster setup. If you need to build images locally (for customization or development):
# Build and run locally instead of using pre-built images
make build REGISTRY=false
make up
# Examples for both applications:
# Dine-In
cd dine-in && make build REGISTRY=false && make up
# Take-Away
cd take-away && make build REGISTRY=false && make up
When to use local building:
Modifying source code or configurations
Development and testing changes
Air-gapped environments without internet access
Custom hardware optimizations
Note: Local building takes significantly longer (15-30 minutes) compared to pre-built images (2-5 minutes).
Configuration Options#
Dine-In Configuration#
Environment Configuration (.env)#
# =============================================================================
# Logging
# =============================================================================
LOG_LEVEL=INFO
# =============================================================================
# Service Endpoints
# =============================================================================
OVMS_ENDPOINT=http://ovms-vlm:8000
OVMS_MODEL_NAME=Qwen/Qwen2.5-VL-7B-Instruct
SEMANTIC_SERVICE_ENDPOINT=http://semantic-service:8080
API_TIMEOUT=60
Test Data Configuration#
Add Images: Place food tray/plate images in
images/folderSupported formats:
.jpg,.jpeg,.pngImages should clearly show food items on the plate
Update Orders: Edit
configs/orders.jsonwith test ordersEach order needs
image_idand list ofitems_orderedImage IDs should match filenames (without extension)
Update Inventory: Edit
configs/inventory.jsonwith menu itemsDefine all possible food items
Include item names, categories, and metadata
Dine-In Docker Services#
Container |
Ports |
Description |
|---|---|---|
|
7861, 8083 |
Main application (Gradio + FastAPI) |
|
8002 |
Vision-Language Model server |
|
8081, 9091 |
Semantic text matching |
|
8084 |
System metrics aggregation |
Take-Away Configuration#
Environment Configuration (.env)#
# =============================================================================
# VLM Backend
# =============================================================================
VLM_BACKEND=ovms
OVMS_ENDPOINT=http://ovms-vlm:8000
OVMS_MODEL_NAME=Qwen/Qwen2.5-VL-7B-Instruct
OPENVINO_DEVICE=GPU # 'GPU', 'CPU', or 'AUTO'
# =============================================================================
# Semantic Service
# =============================================================================
SEMANTIC_VLM_BACKEND=ovms
DEFAULT_MATCHING_STRATEGY=hybrid # 'exact', 'semantic', or 'hybrid'
SIMILARITY_THRESHOLD=0.85
OVMS_TIMEOUT=60
# =============================================================================
# MinIO Storage
# =============================================================================
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
MINIO_ENDPOINT=minio:9000
Service Modes#
Mode |
Configuration |
Use Case |
|---|---|---|
Single |
|
Development, testing |
Parallel |
|
Production deployment |
Start in Different Modes:
# Single mode (default)
make up
# Parallel mode with 4 workers
make up-parallel WORKERS=4
# Parallel mode with auto-scaling
make up-parallel WORKERS=4 SCALING_MODE=auto
Take-Away Docker Services#
Container |
Ports |
Description |
|---|---|---|
|
7860, 8080 |
Main application (Gradio + FastAPI) |
|
8001 |
Vision-Language Model server |
|
8085 |
YOLO-based frame selection |
|
8081, 9091 |
Semantic text matching |
|
9000, 9001 |
S3-compatible storage |
Configure System Proxy#
Please follow these steps to configure proxy settings:
1. Configure Proxy for Current Shell Session#
export http_proxy=http://<proxy-host>:<port>
export https_proxy=http://<proxy-host>:<port>
export HTTP_PROXY=http://<proxy-host>:<port>
export HTTPS_PROXY=http://<proxy-host>:<port>
export NO_PROXY=localhost,127.0.0.1,::1
export no_proxy=localhost,127.0.0.1,::1
2. Docker Daemon Proxy Configuration#
Create directory if missing:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
Add configuration:
[Service]
Environment="http_proxy=http://<proxy-host>:<port>"
Environment="https_proxy=http://<proxy-host>:<port>"
Environment="no_proxy=localhost,127.0.0.1,::1"
Reload and restart:
sudo systemctl daemon-reload
sudo systemctl restart docker
Benchmarking#
Dine-In Benchmarking#
Initialize Performance Tools:
cd dine-in
make update-submodules
Run Benchmark:
make benchmark
Stream Density Test:
make benchmark-density
View Results:
make benchmark-density-results
cat results/benchmark_results.json
Take-Away Benchmarking#
Initialize Performance Tools:
cd take-away
make update-submodules
Single Video Benchmark:
make benchmark
Fixed Workers Benchmark:
make benchmark-oa BENCHMARK_WORKERS=4 BENCHMARK_DURATION=300
Stream Density Benchmark:
make benchmark-stream-density \
BENCHMARK_TARGET_LATENCY_MS=25000 \
BENCHMARK_MIN_TRANSACTIONS=3 \
BENCHMARK_WORKER_INCREMENT=1
Benchmark Configuration Variables#
Variable |
Default |
Description |
|---|---|---|
|
25000 |
Target latency threshold (ms) |
|
avg |
‘avg’, ‘p95’, or ‘max’ |
|
1 |
Workers added per iteration |
|
10 |
Warmup time (seconds) |
|
3 |
Min transactions before measuring |
|
50 |
Max scaling iterations |
|
./results |
Results output directory |
Useful Make Commands#
Dine-In Commands#
make build # Build Docker images
make up # Start services
make down # Stop services
make logs # View logs
make update-submodules # Initialize performance-tools
make benchmark # Run benchmark
make benchmark-density # Run stream density test
Take-Away Commands#
make build # Build Docker images
make up # Start (single mode)
make up-parallel WORKERS=4 # Start (parallel mode)
make down # Stop services
make logs # View logs
make update-submodules # Initialize performance-tools
make benchmark # Run benchmark
make benchmark-stream-density # Stream density test
Common Commands#
make clean-images— Remove dangling Docker imagesmake clean-all— Remove all unused Docker resourcesmake check-env— Verify configurationmake show-config— Display current configuration
Troubleshooting#
Common Issues#
OVMS Not Loading:
Ensure GPU drivers are installed
Check model files exist in
ovms-service/models/Verify OVMS endpoint in
.env
VLM Timeout Errors:
Increase
API_TIMEOUTin.envCheck GPU memory utilization
Consider using a smaller model precision (INT8)
Stream Processing Issues (Take-Away):
Verify RTSP stream URLs are accessible
Check network bandwidth
Consider reducing number of parallel workers
Debug Commands#
# Check container logs
docker logs <container_name>
# Check GPU utilization
nvidia-smi -l 1
# Check network connectivity
curl http://localhost:8001/v2/models
# Verify service health
curl http://localhost:8083/health