Orchestrator / COMPUTE_PLANE_ARCHITECTURE.md
evgeniy778's picture
Add Compute Plane Architecture Version 1.0
367243f verified
|
Raw
History Blame Contribute Delete
17.1 kB

A newer version of the Gradio SDK is available: 6.24.0

Upgrade

=====================================================

Apckeyl Framework

COMPUTE PLANE ARCHITECTURE

Version 1.0

=====================================================

1. Purpose

Compute Plane — это слой Apckeyl Framework, который отвечает за выполнение реальных вычислительных задач через внешние Compute Modules.

Orchestrator не должен выполнять тяжёлые вычисления сам.

Orchestrator управляет задачей.

Compute Module выполняет задачу.

Основной принцип:

Control Plane
      ↓
Compute Plane
      ↓
External Compute Module

2. Architectural Principle

Apckeyl Orchestrator является Control Center.

Он не должен быть привязан к конкретному вычислительному серверу.

Compute Module может находиться:

  • в отдельном Hugging Face Space;
  • на другом бесплатном сервисе;
  • на GPU-сервисе;
  • на CPU-сервисе;
  • в локальном окружении;
  • на собственном сервере;
  • на другом совместимом API.

Control Plane не должен зависеть от конкретного места размещения Compute Module.

3. Current Compute Module

Первым реальным Compute Module является:

Apckeyl_RealESRGAN

Назначение:

Image Upscaling

Тип:

image_upscaler

Основной capability:

image_upscale

Текущий Space:

Apckeyl_RealESRGAN

Этот Space сохраняется отдельно.

Orchestrator не заменяет Apckeyl_RealESRGAN.

Orchestrator управляет доступом к нему.

4. Separation of Responsibilities

Control Plane

Control Plane отвечает за:

  • создание задач;
  • идентификацию задач;
  • выбор модуля;
  • маршрутизацию;
  • управление статусами;
  • управление очередью;
  • регистрацию Compute Modules;
  • мониторинг;
  • логирование;
  • обработку ошибок;
  • получение результатов.

Compute Plane

Compute Plane отвечает за:

  • выполнение конкретной вычислительной операции;
  • обработку входных данных;
  • запуск модели;
  • сохранение результата;
  • возврат результата Orchestrator.

Compute Module

Compute Module является независимым исполнителем.

Например:

Apckeyl_RealESRGAN

получает задачу:

image_upscale

выполняет upscale

и возвращает результат.

5. Communication Model

На первом этапе используется HTTP/API-модель.

Общий поток:

User
  ↓
Client
  ↓
Orchestrator
  ↓
Control Plane
  ↓
Task Manager
  ↓
Module Registry
  ↓
Compute Module
  ↓
Result
  ↓
Orchestrator
  ↓
User

6. Important Rule

Control Plane не должен знать внутреннюю реализацию Compute Module.

Например:

Orchestrator не должен знать:

  • какую AI-модель использует RealESRGAN;
  • какие Python-библиотеки установлены;
  • какой код находится внутри Space;
  • какой GPU или CPU используется;
  • каким образом происходит обработка изображения.

Orchestrator знает только контракт.

Например:

module_id
module_type
capabilities
endpoint
status

7. Compute Module Contract

Каждый Compute Module должен иметь стандартное описание.

Минимальный контракт:

module_id
module_name
module_type
capabilities
endpoint
status

Пример:

module_id:
    realesrgan

module_name:
    Apckeyl_RealESRGAN

module_type:
    image_upscaler

capabilities:
    image_upscale

status:
    available

8. Task Contract

Control Plane создаёт задачу.

Минимальная структура:

task_id
task_type
status
module_id
payload
created_at

Пример:

task_id:
    task_000001

task_type:
    image_upscale

status:
    created

module_id:
    realesrgan

9. Task Lifecycle

Основной жизненный цикл:

created
   ↓
queued
   ↓
dispatched
   ↓
processing
   ↓
completed

При ошибке:

processing
   ↓
failed

При отмене:

created
   ↓
cancelled

10. Dispatch

Dispatch — передача задачи выбранному Compute Module.

Например:

image_upscale
      ↓
Control Plane
      ↓
realesrgan
      ↓
Apckeyl_RealESRGAN

Dispatch не должен быть связан с конкретной реализацией модели.

11. Endpoint Abstraction

Compute Module должен рассматриваться как внешний endpoint.

Control Plane не должен зависеть от конкретного транспорта.

На первом этапе:

HTTP

В будущем возможно:

REST API
Webhook
Queue
Internal API
RPC
другие совместимые механизмы

12. Availability

Каждый Compute Module должен иметь статус.

Минимальные состояния:

available
unavailable
busy
error
disabled

Control Plane не должен отправлять задачу в модуль со статусом:

unavailable

или:

disabled

13. Health Check

В будущем Orchestrator должен периодически проверять Compute Modules.

Health Check должен определять:

  • доступность endpoint;
  • время ответа;
  • корректность ответа;
  • состояние модуля.

Пример:

available
    ↓
health check
    ↓
response OK
    ↓
available

При ошибке:

available
    ↓
health check
    ↓
error
    ↓
unavailable

14. Timeout

Каждый внешний Compute Module должен иметь ограничение времени ожидания.

Если Compute Module не отвечает в установленный период:

timeout

Control Plane не должен зависать бесконечно.

15. Retry

При временной ошибке возможен повторный запрос.

Пример:

dispatch
   ↓
timeout
   ↓
retry #1
   ↓
timeout
   ↓
retry #2
   ↓
failed

Количество повторов должно быть ограничено.

16. Result Handling

Compute Module возвращает результат.

Результат должен быть связан с исходным task_id.

Пример:

task_id:
    task_000001

status:
    completed

result:
    output_file

Orchestrator принимает результат и передаёт его следующему слою.

17. File Handling

Большие файлы не должны передаваться через Control Plane без необходимости.

В будущем предпочтительная схема:

User
  ↓
upload
  ↓
temporary storage
  ↓
task
  ↓
Compute Module
  ↓
result storage
  ↓
User

Это позволит уменьшить нагрузку на Orchestrator.

18. Resource Independence

Compute Module может использовать:

CPU
GPU
ZeroGPU
другой вычислительный ресурс

Orchestrator не должен предполагать, какой именно ресурс используется.

Например:

Orchestrator
      ↓
Apckeyl_RealESRGAN
      ↓
CPU Basic

или:

Orchestrator
      ↓
другой Compute Module
      ↓
GPU

Архитектура должна поддерживать оба варианта.

19. ZeroGPU Rule

Orchestrator не должен использовать ZeroGPU как обязательный вычислительный ресурс.

ZeroGPU рассматривается только как возможная инфраструктурная среда для конкретного модуля.

Это означает:

ZeroGPU ≠ Orchestrator architecture

Orchestrator должен продолжать работать как Control Plane независимо от наличия ZeroGPU.

20. Free Infrastructure Strategy

Apckeyl Framework проектируется с приоритетом бесплатной инфраструктуры.

При выборе Compute Modules необходимо предпочитать:

  • бесплатные сервисы;
  • бесплатные Hugging Face Spaces;
  • бесплатные CPU/GPU ресурсы;
  • бесплатные API;
  • локальные ресурсы только при необходимости.

Платные сервисы не являются обязательной частью архитектуры.

21. Commercial Use

Для каждого AI Compute Module необходимо проверять лицензию используемой модели.

До подключения модели необходимо определить:

  • model name;
  • version;
  • license;
  • commercial use allowed;
  • YouTube allowed;
  • sale allowed.

Эта информация должна фиксироваться в документации проекта.

22. Compute Module Independence

Каждый Compute Module должен быть заменяемым.

Например:

Apckeyl_RealESRGAN
       ↓
   заменить
       ↓
другой Image Upscaler

Control Plane не должен требовать переписывания архитектуры.

23. Module Selection

Выбор Compute Module производится через Module Registry.

Пример:

task_type:
    image_upscale

      ↓

module_type:
    image_upscaler

      ↓

capability:
    image_upscale

      ↓

selected module:
    realesrgan

24. Multiple Modules

В будущем один capability может иметь несколько Compute Modules.

Например:

image_upscale

    ├── realesrgan
    ├── upscaler_2
    └── upscaler_3

Control Plane сможет выбирать доступный модуль.

25. Fallback

Если основной Compute Module недоступен:

realesrgan
    ↓
unavailable

Control Plane может выбрать другой совместимый модуль:

upscaler_2

Fallback является будущей функцией.

26. Priority

Compute Modules в будущем могут иметь приоритет.

Например:

realesrgan
    priority: 100

upscaler_2
    priority: 50

Control Plane выбирает модуль с учётом:

  • availability;
  • priority;
  • health;
  • capability;
  • нагрузки.

27. Queue

Если Compute Module занят, задача не должна теряться.

Она должна перейти:

created
   ↓
queued

После освобождения модуля:

queued
   ↓
dispatched

28. Concurrency

Каждый Compute Module может иметь ограничение одновременных задач.

Например:

max_concurrent_tasks:
    1

или:

max_concurrent_tasks:
    2

Control Plane должен учитывать это при dispatch.

29. Error Isolation

Ошибка Compute Module не должна ломать Control Plane.

Например:

Apckeyl_RealESRGAN
       ↓
     ERROR

Orchestrator продолжает работать.

Статус модуля:

error

Задача:

failed

Control Plane:

running

30. Security

Endpoint Compute Module не должен считаться доверенным автоматически.

В будущем необходимо поддерживать:

  • authentication;
  • authorization;
  • tokens;
  • signed requests;
  • HTTPS;
  • ограничение доступа.

Секреты не должны храниться в исходном коде.

31. Logging

Каждый dispatch должен логироваться.

Минимально:

task_id
module_id
timestamp
status
duration
error

Пример:

task_000001
realesrgan
dispatched
processing
completed

32. Monitoring

Resource Monitor в будущем должен контролировать:

  • количество задач;
  • очередь;
  • время обработки;
  • ошибки;
  • доступность модулей;
  • latency;
  • нагрузку.

33. Architecture Diagram

Общая схема:

┌───────────────────────────────┐
│            USER               │
└───────────────┬───────────────┘
                │
                ▼
┌───────────────────────────────┐
│         ORCHESTRATOR          │
│                               │
│         CONTROL PLANE         │
│                               │
│  Task Manager                 │
│  Module Registry              │
│  Dispatcher                   │
│  Queue                        │
│  Logger                       │
│  Resource Monitor             │
└───────────────┬───────────────┘
                │
                ▼
┌───────────────────────────────┐
│         COMPUTE PLANE         │
└───────────────┬───────────────┘
                │
      ┌─────────┼─────────┐
      │         │         │
      ▼         ▼         ▼
RealESRGAN   Image AI   Video AI
   Space       Space       Space

34. Current Architecture

На текущем этапе реализованы:

Module Registry
Control Plane
Task Manager
Control Plane Tests
Diagnostic Report

Следующий этап:

Dispatcher

После Dispatcher:

Compute Module Adapter

После Adapter:

Apckeyl_RealESRGAN connection

35. First Real Integration

Первым реальным внешним Compute Module остаётся:

Apckeyl_RealESRGAN

Интеграция должна выполняться через отдельный adapter.

Control Plane не должен содержать специфичный код RealESRGAN.

Архитектура:

Control Plane
      ↓
Compute Adapter
      ↓
Apckeyl_RealESRGAN

36. Future Compute Modules

Архитектура должна позволять подключать:

Image Generation
Video Generation
Story Character Studio
Image Upscaler
Video Upscaler
Stock Factory
другие AI-модули

Каждый модуль должен подключаться через единый контракт.

37. Final Principle

Apckeyl Orchestrator не является одним большим AI-приложением.

Он является системой управления независимыми Compute Modules.

Основная идея:

ORCHESTRATE
    NOT
COMPUTE

Control Plane управляет.

Compute Plane выполняет.

Compute Modules остаются независимыми.

=====================================================

End of COMPUTE_PLANE_ARCHITECTURE.md

Version 1.0

=====================================================