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