Introduce support for external compute worker mode (`COMPUTE_MODE=worker`) using a new `WorkerComputeBackend`. This enables offloading heavy ONNX Whisper alignment and PDF layout parsing to a standalone worker service (Redis + BullMQ), improving scalability and compatibility with serverless/limited environments. - Add `@openreader/compute-core` as a shared package for ONNX inference and PDF parsing logic. - Implement `WorkerComputeBackend` and worker contract/types for remote job execution. - Update compute backend selection logic and remove previous worker mode guards. - Extend `WhisperAlignInput` and `PdfLayoutInput` types to support object keys for remote data access. - Refactor local compute backend to use `@openreader/compute-core` and support both buffer and object key inputs. - Update job runner, TTS segment alignment, and PDF layout parsing flows to use new compute backend APIs. - Add scripts, Docker workflow, and documentation for deploying and running the compute worker. - Update environment variable docs and examples for worker mode, including storage requirements and configuration. - Document published images and stack changes to reflect the new compute worker architecture. BREAKING CHANGE: `COMPUTE_MODE=worker` now requires an external compute worker service and S3-compatible object storage. Embedded SeaweedFS (`weed mini`) is not supported in worker mode. See the new documentation for deployment and configuration details.
41 lines
1.2 KiB
YAML
41 lines
1.2 KiB
YAML
services:
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: openreader-compute-redis
|
|
ports:
|
|
- "6379:6379"
|
|
|
|
compute-worker:
|
|
build:
|
|
context: ../..
|
|
dockerfile: compute/worker/Dockerfile
|
|
container_name: openreader-compute-worker
|
|
depends_on:
|
|
- redis
|
|
env_file:
|
|
- ./.env
|
|
environment:
|
|
REDIS_URL: ${REDIS_URL:-redis://redis:6379}
|
|
COMPUTE_WORKER_HOST: ${COMPUTE_WORKER_HOST:-0.0.0.0}
|
|
COMPUTE_WORKER_PORT: ${COMPUTE_WORKER_PORT:-8081}
|
|
COMPUTE_WORKER_TOKEN: ${COMPUTE_WORKER_TOKEN:-local-compute-token}
|
|
S3_PREFIX: ${S3_PREFIX:-openreader}
|
|
COMPUTE_PREWARM_MODELS: ${COMPUTE_PREWARM_MODELS:-true}
|
|
ports:
|
|
- "8081:8081"
|
|
develop:
|
|
watch:
|
|
- action: sync+restart
|
|
path: .
|
|
target: /workspace/compute/worker
|
|
- action: sync+restart
|
|
path: ../../compute/core
|
|
target: /workspace/compute/core
|
|
- action: rebuild
|
|
path: ./package.json
|
|
- action: rebuild
|
|
path: ../../compute/core/package.json
|
|
- action: rebuild
|
|
path: ../../pnpm-lock.yaml
|
|
- action: rebuild
|
|
path: ../../pnpm-workspace.yaml
|