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
# =====================================================
# 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
# =====================================================