Orchestrator / COMPUTE_MODULE_CONTRACT.md
evgeniy778's picture
Add Compute Module Contract Version 1.0
eca3a7d verified
|
Raw
History Blame Contribute Delete
13.4 kB
# =====================================================
# Apckeyl Framework
# COMPUTE MODULE CONTRACT
# Version 1.0
# =====================================================
# 1. Назначение
Compute Module — это внешний или локальный вычислительный
модуль Apckeyl Framework, который непосредственно выполняет
тяжёлую вычислительную задачу.
Compute Module не является частью Control Plane.
Control Plane управляет задачей.
Compute Module выполняет задачу.
---
# 2. Архитектурная схема
Control Plane
Task Manager
Dispatcher
Compute Adapter
Compute Module
Result
Compute Adapter
Control Plane
---
# 3. Основной принцип
Compute Module должен быть максимально независимым
от внутренней реализации Apckeyl Control Plane.
Это означает:
- Compute Module не управляет очередью;
- Compute Module не выбирает задачи;
- Compute Module не управляет другими модулями;
- Compute Module не принимает архитектурные решения;
- Compute Module не должен знать внутреннюю структуру
Control Plane.
Его основная задача:
INPUT → COMPUTE → OUTPUT
---
# 4. Минимальный контракт
Каждый Compute Module должен иметь:
1. module_id
2. module_name
3. module_version
4. supported_tasks
5. input_contract
6. output_contract
7. health information
8. execution interface
---
# 5. Module Identity
Каждый модуль должен иметь уникальный идентификатор.
Пример:
module_id:
realesrgan
Название:
Apckeyl_RealESRGAN
Версия:
1.0
---
# 6. Supported Tasks
Compute Module должен явно сообщать,
какие типы задач он поддерживает.
Пример:
supported_tasks:
image_upscale
В будущем:
image_generation
image_restoration
face_restoration
video_upscale
video_processing
Модуль не должен принимать задачу,
которую он официально не поддерживает.
---
# 7. Input Contract
Dispatcher передаёт Compute Adapter задачу
в стандартизированном формате.
Минимальная структура:
{
"task_id": "...",
"task_type": "...",
"payload": {...}
}
---
# 8. task_id
Каждая задача должна иметь уникальный task_id.
Пример:
task_000001
Compute Module должен сохранять этот идентификатор
в результате выполнения.
Это позволяет Control Plane сопоставить:
task → execution → result
---
# 9. task_type
task_type определяет тип вычислительной операции.
Пример:
image_upscale
Compute Module должен проверять,
поддерживает ли он полученный task_type.
---
# 10. Payload
payload содержит параметры конкретной операции.
Для image_upscale пример:
{
"filename": "image.png",
"scale": 4
}
Конкретная структура payload зависит
от конкретного Compute Module.
---
# 11. Output Contract
После выполнения Compute Module должен вернуть
стандартизированный результат.
Минимальная структура:
{
"task_id": "...",
"status": "...",
"result": {...}
}
---
# 12. Статусы выполнения
Минимально поддерживаются:
prepared
running
completed
failed
---
# 13. prepared
Статус prepared означает:
задача принята адаптером и подготовлена
для передачи Compute Module.
Это ещё не означает,
что вычисление началось.
---
# 14. running
Статус running означает:
Compute Module начал выполнение задачи.
---
# 15. completed
Статус completed означает:
вычисление завершено успешно.
Результат должен находиться
в поле result.
---
# 16. failed
Статус failed означает:
Compute Module не смог выполнить задачу.
При ошибке должен быть доступен
информационный блок error.
Пример:
{
"task_id": "task_000001",
"status": "failed",
"error": "Processing failed"
}
---
# 17. Health Check
Каждый Compute Module должен предоставлять
информацию о состоянии.
Минимальная структура:
{
"module_id": "...",
"status": "healthy"
}
Возможные состояния:
healthy
unavailable
degraded
unknown
---
# 18. Compute Adapter
Control Plane не должен напрямую зависеть
от конкретного Compute Module.
Для этого используется Compute Adapter.
Архитектура:
Control Plane
Dispatcher
Compute Adapter
Compute Module
---
# 19. Ответственность Adapter
Compute Adapter отвечает за:
- подготовку запроса;
- преобразование формата;
- передачу задачи;
- получение результата;
- преобразование результата
в формат Apckeyl Framework.
---
# 20. Ответственность Compute Module
Compute Module отвечает за:
- получение задачи;
- проверку входных данных;
- выполнение вычисления;
- формирование результата;
- сообщение об ошибке;
- сообщение о состоянии.
---
# 21. Что Compute Module НЕ должен делать
Compute Module не должен:
- создавать глобальную очередь Apckeyl;
- управлять Task Manager;
- изменять Module Registry;
- самостоятельно выбирать другой Compute Module;
- управлять Control Plane;
- хранить секреты Control Plane;
- принимать архитектурные решения Framework.
---
# 22. Независимость модулей
Каждый Compute Module должен быть заменяемым.
Например:
Control Plane
Dispatcher
Compute Adapter
Apckeyl_RealESRGAN
может быть заменён на:
Control Plane
Dispatcher
Compute Adapter
Другой Upscaler
без изменения основной архитектуры Control Plane.
---
# 23. Первый Compute Module
Первым реальным Compute Module
Apckeyl Framework будет:
Apckeyl_RealESRGAN
Назначение:
AI image upscaling.
Основная задача:
image_upscale
---
# 24. Apckeyl_RealESRGAN
Apckeyl_RealESRGAN должен оставаться
самостоятельным Space.
Он не должен становиться частью
Control Plane.
Архитектура:
Apckeyl Framework
Compute Adapter
Apckeyl_RealESRGAN
Real-ESRGAN
Processed Image
---
# 25. Separation of Concerns
Framework отвечает за:
- принятие задачи;
- идентификацию задачи;
- маршрутизацию;
- выбор модуля;
- управление состоянием;
- получение результата.
Compute Module отвечает за:
- вычисление.
---
# 26. Ошибки
Ошибки должны разделяться
на два уровня.
Framework errors:
- invalid task;
- unknown module;
- invalid routing;
- invalid request.
Compute errors:
- invalid input;
- processing failure;
- model failure;
- resource failure;
- external service failure.
---
# 27. Security
Compute Module не должен получать
лишние секреты.
API keys и другие credentials
должны передаваться только тогда,
когда они действительно необходимы
для выполнения конкретной операции.
Секреты не должны:
- записываться в обычные логи;
- возвращаться пользователю;
- храниться внутри task payload;
- публиковаться в Git repository.
---
# 28. Commercial Use
При выборе моделей и сервисов
для Compute Module необходимо
проверять лицензию.
Для каждого AI-модуля желательно фиксировать:
- model name;
- model version;
- license;
- commercial use allowed;
- YouTube allowed;
- sale allowed.
Эта информация должна документироваться
до включения модели в коммерческий pipeline.
---
# 29. Free Infrastructure Principle
Apckeyl Framework проектируется
с приоритетом бесплатной инфраструктуры.
Compute Module должен по возможности
работать через бесплатный или
доступный пользователю вычислительный ресурс.
Control Plane при этом не должен
предполагать наличие собственного GPU.
---
# 30. Remote Compute
Compute Module может находиться
в другом Space или сервисе.
Пример:
Control Plane
Compute Adapter
HTTP/API
Remote Space
Compute Module
Это является нормальной архитектурной схемой.
---
# 31. Local Compute
Compute Module также может находиться
на том же сервере или в том же окружении.
Пример:
Control Plane
Compute Adapter
Local Compute Module
Архитектура не должна зависеть
от конкретного способа размещения.
---
# 32. Replaceability
Compute Module должен быть заменяемым.
Например:
Apckeyl_RealESRGAN
может быть заменён на:
Apckeyl_Upscaler_B
без переписывания:
- Task Manager;
- Dispatcher;
- Control Plane;
- Module Registry.
---
# 33. Versioning
Compute Module должен иметь
собственную версию.
Пример:
Apckeyl_RealESRGAN
Version 1.0
Изменение интерфейса Compute Module
должно сопровождаться изменением версии.
---
# 34. Compatibility
Compute Adapter отвечает
за совместимость Framework
с конкретным Compute Module.
Это позволяет:
Framework API
оставаться стабильным,
даже если внутренний API
Compute Module изменяется.
---
# 35. Future Architecture
В будущем Framework может содержать:
Control Plane
Dispatcher
Compute Adapter Registry
+-----------------------------+
| |
↓ ↓
Image Upscaler Image Generator
| |
↓ ↓
RealESRGAN Generator
|
Image Restoration
|
Restoration Model
---
# 36. Current Stage
На текущем этапе реализованы:
- Control Plane;
- Module Registry;
- Task Manager;
- Dispatcher;
- Compute Adapter;
- тесты основных компонентов;
- Unified Test Suite;
- Diagnostic Report.
На текущем этапе НЕ реализованы:
- реальный HTTP dispatch;
- удалённый вызов Space;
- authentication между Spaces;
- обработка реального изображения;
- автоматическое масштабирование;
- production queue;
- retry system.
---
# 37. Следующий этап
Следующим этапом является создание
реального Compute Module contract
в коде.
После этого будет создан адаптер:
Apckeyl_RealESRGAN Adapter
который сможет связывать:
Apckeyl Framework
с
Apckeyl_RealESRGAN.
---
# 38. Главное архитектурное правило
Control Plane управляет.
Dispatcher маршрутизирует.
Compute Adapter соединяет.
Compute Module вычисляет.
Ни один слой не должен брать
на себя ответственность другого слоя.
---
# END OF COMPUTE MODULE CONTRACT
# Version 1.0