Files
2026-07-13 12:24:33 +08:00

303 lines
8.2 KiB
ReStructuredText

.. _standalone_starter:
Standalone Starter
==================
.. warning::
This page documents the behavior of LMCache's in-process mode (deprecated). Please consider using :doc:`LMCache MP mode </mp/index>` for better feature support and performance.
The LMCache Standalone Starter allows you to run LMCacheEngine as a standalone service without vLLM or GPU dependencies. This is particularly useful for:
- Testing and development environments
- CPU-only or P2P backend deployments
Quick Start
-----------
Basic Usage
~~~~~~~~~~~
.. code-block:: bash
# Start with default configuration
python -m lmcache.v1.standalone
# Start with custom configuration file
python -m lmcache.v1.standalone --config examples/cache_with_configs/example.yaml
# Start with environment variables
export LMCACHE_CONFIG_FILE=examples/cache_with_configs/example.yaml
python -m lmcache.v1.standalone
CPU-Only Mode
~~~~~~~~~~~~~
.. code-block:: bash
python -m lmcache.v1.standalone \
--config examples/cache_with_configs/example.yaml \
--model_name my_model \
--worker_id 0 \
--world_size 1
Remote P2P Mode
~~~~~~~~~~~~~
TO be added
Configuration Section
---------------------
The standalone starter supports multiple configuration sources with the following priority order:
1. **Command-line arguments** (highest priority)
2. **Configuration file** (specified by ``--config`` or ``LMCACHE_CONFIG_FILE``)
3. **Environment variables** (e.g., ``LMCACHE_CHUNK_SIZE=512``)
4. **Default values** (lowest priority)
Parameter Details
~~~~~~~~~~~~~~~~~
**KV Cache Shape Specification**
The ``--kvcache_shape_spec`` parameter supports multi-layer group configurations:
- Format: ``(shape_string):dtype:layer_count;[...]``
- shape_string: comma-separated shape (e.g., '2,2,256,4,16')
- Examples:
- Single group: ``(2,2,256,4,16):float16:2``
- Multiple groups: ``(2,2,256,4,16):float16:2;(3,2,256,4,4):float32:3``
**Device Support**
- ``--device=cpu``: CPU-only mode (default)
- ``--device=cuda``: CUDA GPU acceleration
- ``--device=xpu``: XPU GPU acceleration
**MLA (Multi-Level Attention)**
- ``--use_mla``: Enable MLA for improved attention performance
- Requires compatible model and configuration
**Cache Formats**
- ``--fmt=vllm``: vLLM-compatible format (default)
- Supports other formats for different inference engines
Command-Line Parameters
-----------------------
Basic Parameters
~~~~~~~~~~~~~~~~
.. code-block:: bash
--config CONFIG_FILE # Path to configuration file
--model_name MODEL_NAME # Model name for cache identification
--worker_id WORKER_ID # Worker ID (default: 0)
--world_size WORLD_SIZE # Total workers (default: 1)
--kv_dtype {float16,float32,bfloat16,uint8} # KV cache data type
--kv_shape KV_SHAPE # KV cache shape (default: "2,2,256,4,16")
--kvcache_shape_spec SPEC # Multi-group KV shape specification
--device {cpu,cuda,xpu} # Device to run on (default: cpu)
--fmt FORMAT # Cache format (default: vllm)
--use_mla # Enable MLA (Multi-Level Attention)
Usage Examples
--------------
Custom Configuration
~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash
python -m lmcache.v1.standalone \
--config examples/cache_with_configs/example.yaml \
--chunk_size=512 \
--max_local_cpu_size=4.0 \
--model_name=custom_model
Multi-Layer Group Configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash
python -m lmcache.v1.standalone \
--config examples/cache_with_configs/example.yaml \
--kvcache_shape_spec="(2,2,256,4,16):float16:2" \
--kv_shape="2,2,256,4,16" \
--model_name=multi_group_model \
--device=cpu
GPU device
~~~~~~~~~~~~~~~~
.. code-block:: bash
python -m lmcache.v1.standalone \
--config examples/cache_with_configs/example.yaml \
--kvcache_shape_spec="(2,2,256,4,16):float16:2" \
--kv_shape="2,2,256,4,16" \
--kv_dtype=float16 \
--device=cuda \
--use_mla \
--model_name=gpu_model
MLA Configuration
~~~~~~~~~~~~~~~~~
.. code-block:: bash
python -m lmcache.v1.standalone \
--config examples/cache_with_configs/example.yaml \
--kv_shape="16,2,512,16,64" \
--kv_dtype=bfloat16 \
--use_mla \
--fmt=vllm \
--model_name=mla_model
Internal API Server
-------------------
The standalone starter includes an internal API server for monitoring and management:
.. code-block:: bash
python -m lmcache.v1.standalone \
--config examples/cache_with_configs/example.yaml \
--chunk_size=512 \
--max_local_cpu_size=4.0 \
--model_name=custom_model \
--internal_api_server_enabled=True
Troubleshooting
----------------
Common Issues
~~~~~~~~~~~~~
**Issue**: "No config file specified"
**Solution**: Set ``LMCACHE_CONFIG_FILE`` or use ``--config`` parameter
**Issue**: "Failed to connect to controller"
**Solution**: Start controller first: ``python -m lmcache.v1.api_server``
**Issue**: "Invalid KV shape specification"
**Solution**: Check format: ``(shape):dtype:layer_count``, e.g., ``(2,2,256,4,16):float16:2``
**Issue**: "Device not available"
**Solution**: Verify device support: use ``--device=cpu`` if GPU not available
**Issue**: "MLA configuration error"
**Solution**: Ensure compatible model and check ``--use_mla`` parameter
Debug Mode
~~~~~~~~~~
Enable debug logging for troubleshooting:
.. code-block:: bash
export LMCACHE_LOG_LEVEL=DEBUG
python -m lmcache.v1.standalone
Advanced Debugging
~~~~~~~~~~~~~~~~~~
For detailed layer group information:
.. code-block:: bash
export LMCACHE_LOG_LEVEL=DEBUG
python -m lmcache.v1.standalone \
--kvcache_shape_spec="(2,2,256,4,16):float16:2;(3,2,256,4,4):float32:3" \
--device=cpu
Performance Tuning
------------------
Memory Configuration
~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash
# For systems with large memory
--max_local_cpu_size=8.0
# For memory-constrained systems
--max_local_cpu_size=1.0
Layer Group Optimization
~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash
# Optimize for mixed precision models
--kvcache_shape_spec="(2,2,256,4,16):float16:2;(3,2,256,4,4):bfloat16:3"
# Optimize for different layer configurations
--kvcache_shape_spec="(2,2,512,8,32):float16:4;(4,2,256,16,16):float32:2"
GPU Acceleration
~~~~~~~~~~~~~~~~~
.. code-block:: bash
# GPU-optimized configuration
--device=cuda --kv_dtype=float16 --use_mla
# Large model on GPU
--device=cuda --kv_shape="64,2,512,64,128" --max_local_cpu_size=16.0
MLA Performance
~~~~~~~~~~~~~~~
.. code-block:: bash
# Enable MLA for attention optimization
--use_mla --kv_dtype=bfloat16 --device=cuda
# MLA with custom shape
--use_mla --kv_shape="32,2,1024,32,64" --fmt=vllm
Best Practices
--------------
1. **Use configuration files** for production deployments
2. **Set appropriate cache sizes** based on available memory
3. **Enable internal API** for monitoring and management
4. **Monitor logs** for performance and error tracking
5. **Use multi-layer group configurations** for complex model architectures
6. **Enable MLA** for improved attention performance on supported hardware
7. **Choose appropriate device** based on available resources (CPU/GPU/XPU)
8. **Validate KV shape specifications** before deployment
9. **Test with debug logging** when configuring new layer groups
10. **Optimize chunk sizes** for specific hardware configurations
Multi-Layer Group Best Practices
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Use consistent chunk sizes across layer groups for optimal performance
- Group layers with similar precision requirements together
- Validate shape specifications in development environment first
- Monitor memory usage when using multiple layer groups
MLA Configuration Tips
~~~~~~~~~~~~~~~~~~~~~~~
- Enable MLA only on supported hardware configurations
- Use bfloat16 or float16 precision for best MLA performance
- Test MLA performance impact before production deployment
- Monitor attention performance metrics with MLA enabled
Related Documentation
---------------------
- :doc:`../quickstart`
- :doc:`../../api_reference/configurations`
- :doc:`../../kv_cache/storage_backends/index`
- :doc:`../../kv_cache_management/index`