- Eliminate core/ directory into cache/, runtime/, network/ subpackages plus flat modules
- Split cache.py (647 lines) into cache/{buffer,strategy,pool}.py by layer
- Add explicit ContiguousStrategy, make AllocationStrategy a real ABC
- Move TaskCacheState to cache/strategy.py, drop string forward references
- Rename api/ to network/, server.py to app.py
- Move sample.py into runtime/ alongside executor and graph
- Simplify TaskCacheManager.__init__ to single pool param
- Expose pool.strategy and pool.req_pool as public properties
- Fix KVCache import in attention_backend.py (TYPE_CHECKING guard)
- Fix steady-state decode reading uninitialized position_ids on first step
97 lines
2.3 KiB
Python
97 lines
2.3 KiB
Python
"""Inference module for continuous batching.
|
|
|
|
Subpackages:
|
|
- cache/: KV cache (buffers, strategies, pool)
|
|
- runtime/: Execution + sampling (executor, CUDA graph, sampling strategies)
|
|
- task/: Request lifecycle + performance metrics
|
|
- network/: HTTP protocol handling (server, protocol, OpenAI/Anthropic builders)
|
|
|
|
Modules:
|
|
- scheduler.py: Continuous batching loop
|
|
- workspace.py: Pre-allocated GPU buffers
|
|
- engine.py: Facade (InferenceEngine)
|
|
"""
|
|
|
|
from astrai.inference.cache import (
|
|
Allocator,
|
|
KVCache,
|
|
KVStorage,
|
|
PagePool,
|
|
RadixCache,
|
|
ReqToTokenPool,
|
|
TaskCacheManager,
|
|
page_hash,
|
|
)
|
|
from astrai.inference.engine import InferenceEngine
|
|
from astrai.inference.network import (
|
|
AnthropicMessage,
|
|
BaseToolParser,
|
|
ChatCompletionRequest,
|
|
ChatMessage,
|
|
FunctionDef,
|
|
GenContext,
|
|
MessagesRequest,
|
|
ProtocolHandler,
|
|
SimpleJsonToolParser,
|
|
StopChecker,
|
|
ToolDef,
|
|
ToolParserFactory,
|
|
get_app,
|
|
run_server,
|
|
)
|
|
from astrai.inference.network.anthropic import AnthropicResponseBuilder
|
|
from astrai.inference.network.openai import OpenAIResponseBuilder
|
|
from astrai.inference.runtime.executor import Executor
|
|
from astrai.inference.runtime.sample import (
|
|
BaseSamplingStrategy,
|
|
FrequencyPenaltyStrategy,
|
|
SamplingPipeline,
|
|
TemperatureStrategy,
|
|
TopKStrategy,
|
|
TopPStrategy,
|
|
sample,
|
|
)
|
|
from astrai.inference.scheduler import InferenceScheduler
|
|
from astrai.inference.task import STOP, Task, TaskManager, TaskStatus
|
|
|
|
__all__ = [
|
|
"InferenceEngine",
|
|
"InferenceScheduler",
|
|
"Executor",
|
|
"STOP",
|
|
"Task",
|
|
"TaskManager",
|
|
"TaskStatus",
|
|
"Allocator",
|
|
"KVCache",
|
|
"KVStorage",
|
|
"PagePool",
|
|
"RadixCache",
|
|
"ReqToTokenPool",
|
|
"TaskCacheManager",
|
|
"page_hash",
|
|
"sample",
|
|
"BaseSamplingStrategy",
|
|
"TemperatureStrategy",
|
|
"TopKStrategy",
|
|
"TopPStrategy",
|
|
"FrequencyPenaltyStrategy",
|
|
"SamplingPipeline",
|
|
"ProtocolHandler",
|
|
"StopChecker",
|
|
"GenContext",
|
|
"BaseToolParser",
|
|
"SimpleJsonToolParser",
|
|
"ToolParserFactory",
|
|
"OpenAIResponseBuilder",
|
|
"AnthropicResponseBuilder",
|
|
"ChatMessage",
|
|
"ChatCompletionRequest",
|
|
"FunctionDef",
|
|
"ToolDef",
|
|
"AnthropicMessage",
|
|
"MessagesRequest",
|
|
"get_app",
|
|
"run_server",
|
|
]
|