diff --git a/.github/workflows/README.md b/.github/workflows/README.md index f38008b8a..4ac80e68b 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -1,6 +1,6 @@ # Llama Stack CI -Llama Stack uses GitHub Actions for Continous Integration (CI). Below is a table detailing what CI the project includes and the purpose. +Llama Stack uses GitHub Actions for Continuous Integration (CI). Below is a table detailing what CI the project includes and the purpose. | Name | File | Purpose | | ---- | ---- | ------- | diff --git a/README.md b/README.md index 7f0fed345..9148ce05d 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,6 @@ [![Discord](https://img.shields.io/discord/1257833999603335178?color=6A7EC2&logo=discord&logoColor=ffffff)](https://discord.gg/llama-stack) [![Unit Tests](https://github.com/meta-llama/llama-stack/actions/workflows/unit-tests.yml/badge.svg?branch=main)](https://github.com/meta-llama/llama-stack/actions/workflows/unit-tests.yml?query=branch%3Amain) [![Integration Tests](https://github.com/meta-llama/llama-stack/actions/workflows/integration-tests.yml/badge.svg?branch=main)](https://github.com/meta-llama/llama-stack/actions/workflows/integration-tests.yml?query=branch%3Amain) -![coverage badge](./coverage.svg) [**Quick Start**](https://llama-stack.readthedocs.io/en/latest/getting_started/index.html) | [**Documentation**](https://llama-stack.readthedocs.io/en/latest/index.html) | [**Colab Notebook**](./docs/getting_started.ipynb) | [**Discord**](https://discord.gg/llama-stack) diff --git a/docs/_static/llama-stack-spec.html b/docs/_static/llama-stack-spec.html index 6a8945bd1..f9af10165 100644 --- a/docs/_static/llama-stack-spec.html +++ b/docs/_static/llama-stack-spec.html @@ -15078,22 +15078,6 @@ "DPOAlignmentConfig": { "type": "object", "properties": { - "reward_scale": { - "type": "number", - "description": "Scaling factor for the reward signal" - }, - "reward_clip": { - "type": "number", - "description": "Maximum absolute value for reward clipping" - }, - "epsilon": { - "type": "number", - "description": "Small value added for numerical stability" - }, - "gamma": { - "type": "number", - "description": "Discount factor for future rewards" - }, "beta": { "type": "number", "description": "Temperature parameter for the DPO loss" @@ -15106,10 +15090,6 @@ }, "additionalProperties": false, "required": [ - "reward_scale", - "reward_clip", - "epsilon", - "gamma", "beta", "loss_type" ], diff --git a/docs/_static/llama-stack-spec.yaml b/docs/_static/llama-stack-spec.yaml index f1bb40dc1..d2c41b2bf 100644 --- a/docs/_static/llama-stack-spec.yaml +++ b/docs/_static/llama-stack-spec.yaml @@ -11163,20 +11163,6 @@ components: DPOAlignmentConfig: type: object properties: - reward_scale: - type: number - description: Scaling factor for the reward signal - reward_clip: - type: number - description: >- - Maximum absolute value for reward clipping - epsilon: - type: number - description: >- - Small value added for numerical stability - gamma: - type: number - description: Discount factor for future rewards beta: type: number description: Temperature parameter for the DPO loss @@ -11186,10 +11172,6 @@ components: description: The type of loss function to use for DPO additionalProperties: false required: - - reward_scale - - reward_clip - - epsilon - - gamma - beta - loss_type title: DPOAlignmentConfig diff --git a/docs/source/providers/external.md b/docs/source/providers/external/external-providers-guide.md similarity index 85% rename from docs/source/providers/external.md rename to docs/source/providers/external/external-providers-guide.md index f906890f1..2479d406f 100644 --- a/docs/source/providers/external.md +++ b/docs/source/providers/external/external-providers-guide.md @@ -1,9 +1,4 @@ -# External Providers Guide - -Llama Stack supports external providers that live outside of the main codebase. This allows you to: -- Create and maintain your own providers independently -- Share providers with others without contributing to the main codebase -- Keep provider-specific code separate from the core Llama Stack code +# Creating External Providers ## Configuration @@ -55,17 +50,6 @@ Llama Stack supports two types of external providers: 1. **Remote Providers**: Providers that communicate with external services (e.g., cloud APIs) 2. **Inline Providers**: Providers that run locally within the Llama Stack process -## Known External Providers - -Here's a list of known external providers that you can use with Llama Stack: - -| Name | Description | API | Type | Repository | -|------|-------------|-----|------|------------| -| KubeFlow Training | Train models with KubeFlow | Post Training | Remote | [llama-stack-provider-kft](https://github.com/opendatahub-io/llama-stack-provider-kft) | -| KubeFlow Pipelines | Train models with KubeFlow Pipelines | Post Training | Inline **and** Remote | [llama-stack-provider-kfp-trainer](https://github.com/opendatahub-io/llama-stack-provider-kfp-trainer) | -| RamaLama | Inference models with RamaLama | Inference | Remote | [ramalama-stack](https://github.com/containers/ramalama-stack) | -| TrustyAI LM-Eval | Evaluate models with TrustyAI LM-Eval | Eval | Remote | [llama-stack-provider-lmeval](https://github.com/trustyai-explainability/llama-stack-provider-lmeval) | - ### Remote Provider Specification Remote providers are used when you need to communicate with external services. Here's an example for a custom Ollama provider: @@ -119,9 +103,9 @@ container_image: custom-vector-store:latest # optional - `provider_data_validator`: Optional validator for provider data - `container_image`: Optional container image to use instead of pip packages -## Required Implementation +## Required Fields -## All Providers +### All Providers All providers must contain a `get_provider_spec` function in their `provider` module. This is a standardized structure that Llama Stack expects and is necessary for getting things such as the config class. The `get_provider_spec` method returns a structure identical to the `adapter`. An example function may look like: @@ -146,7 +130,7 @@ def get_provider_spec() -> ProviderSpec: ) ``` -### Remote Providers +#### Remote Providers Remote providers must expose a `get_adapter_impl()` function in their module that takes two arguments: 1. `config`: An instance of the provider's config class @@ -162,7 +146,7 @@ async def get_adapter_impl( return OllamaInferenceAdapter(config) ``` -### Inline Providers +#### Inline Providers Inline providers must expose a `get_provider_impl()` function in their module that takes two arguments: 1. `config`: An instance of the provider's config class @@ -189,7 +173,40 @@ Version: 0.1.0 Location: /path/to/venv/lib/python3.10/site-packages ``` -## Example using `external_providers_dir`: Custom Ollama Provider +## Best Practices + +1. **Package Naming**: Use the prefix `llama-stack-provider-` for your provider packages to make them easily identifiable. + +2. **Version Management**: Keep your provider package versioned and compatible with the Llama Stack version you're using. + +3. **Dependencies**: Only include the minimum required dependencies in your provider package. + +4. **Documentation**: Include clear documentation in your provider package about: + - Installation requirements + - Configuration options + - Usage examples + - Any limitations or known issues + +5. **Testing**: Include tests in your provider package to ensure it works correctly with Llama Stack. +You can refer to the [integration tests +guide](https://github.com/meta-llama/llama-stack/blob/main/tests/integration/README.md) for more +information. Execute the test for the Provider type you are developing. + +## Troubleshooting + +If your external provider isn't being loaded: + +1. Check that `module` points to a published pip package with a top level `provider` module including `get_provider_spec`. +1. Check that the `external_providers_dir` path is correct and accessible. +2. Verify that the YAML files are properly formatted. +3. Ensure all required Python packages are installed. +4. Check the Llama Stack server logs for any error messages - turn on debug logging to get more + information using `LLAMA_STACK_LOGGING=all=debug`. +5. Verify that the provider package is installed in your Python environment if using `external_providers_dir`. + +## Examples + +### Example using `external_providers_dir`: Custom Ollama Provider Here's a complete example of creating and using a custom Ollama provider: @@ -241,7 +258,7 @@ external_providers_dir: ~/.llama/providers.d/ The provider will now be available in Llama Stack with the type `remote::custom_ollama`. -## Example using `module`: ramalama-stack +### Example using `module`: ramalama-stack [ramalama-stack](https://github.com/containers/ramalama-stack) is a recognized external provider that supports installation via module. @@ -266,35 +283,4 @@ additional_pip_packages: No other steps are required other than `llama stack build` and `llama stack run`. The build process will use `module` to install all of the provider dependencies, retrieve the spec, etc. -The provider will now be available in Llama Stack with the type `remote::ramalama`. - -## Best Practices - -1. **Package Naming**: Use the prefix `llama-stack-provider-` for your provider packages to make them easily identifiable. - -2. **Version Management**: Keep your provider package versioned and compatible with the Llama Stack version you're using. - -3. **Dependencies**: Only include the minimum required dependencies in your provider package. - -4. **Documentation**: Include clear documentation in your provider package about: - - Installation requirements - - Configuration options - - Usage examples - - Any limitations or known issues - -5. **Testing**: Include tests in your provider package to ensure it works correctly with Llama Stack. -You can refer to the [integration tests -guide](https://github.com/meta-llama/llama-stack/blob/main/tests/integration/README.md) for more -information. Execute the test for the Provider type you are developing. - -## Troubleshooting - -If your external provider isn't being loaded: - -1. Check that `module` points to a published pip package with a top level `provider` module including `get_provider_spec`. -1. Check that the `external_providers_dir` path is correct and accessible. -2. Verify that the YAML files are properly formatted. -3. Ensure all required Python packages are installed. -4. Check the Llama Stack server logs for any error messages - turn on debug logging to get more - information using `LLAMA_STACK_LOGGING=all=debug`. -5. Verify that the provider package is installed in your Python environment if using `external_providers_dir`. +The provider will now be available in Llama Stack with the type `remote::ramalama`. \ No newline at end of file diff --git a/docs/source/providers/external/external-providers-list.md b/docs/source/providers/external/external-providers-list.md new file mode 100644 index 000000000..49f49076b --- /dev/null +++ b/docs/source/providers/external/external-providers-list.md @@ -0,0 +1,10 @@ +# Known External Providers + +Here's a list of known external providers that you can use with Llama Stack: + +| Name | Description | API | Type | Repository | +|------|-------------|-----|------|------------| +| KubeFlow Training | Train models with KubeFlow | Post Training | Remote | [llama-stack-provider-kft](https://github.com/opendatahub-io/llama-stack-provider-kft) | +| KubeFlow Pipelines | Train models with KubeFlow Pipelines | Post Training | Inline **and** Remote | [llama-stack-provider-kfp-trainer](https://github.com/opendatahub-io/llama-stack-provider-kfp-trainer) | +| RamaLama | Inference models with RamaLama | Inference | Remote | [ramalama-stack](https://github.com/containers/ramalama-stack) | +| TrustyAI LM-Eval | Evaluate models with TrustyAI LM-Eval | Eval | Remote | [llama-stack-provider-lmeval](https://github.com/trustyai-explainability/llama-stack-provider-lmeval) | \ No newline at end of file diff --git a/docs/source/providers/external/index.md b/docs/source/providers/external/index.md new file mode 100644 index 000000000..989a7f5b8 --- /dev/null +++ b/docs/source/providers/external/index.md @@ -0,0 +1,13 @@ +# External Providers + +Llama Stack supports external providers that live outside of the main codebase. This allows you to: +- Create and maintain your own providers independently +- Share providers with others without contributing to the main codebase +- Keep provider-specific code separate from the core Llama Stack code + +```{toctree} +:maxdepth: 1 + +external-providers-list +external-providers-guide +``` \ No newline at end of file diff --git a/docs/source/providers/index.md b/docs/source/providers/index.md index 97971c232..3f66ecd0c 100644 --- a/docs/source/providers/index.md +++ b/docs/source/providers/index.md @@ -15,7 +15,7 @@ Importantly, Llama Stack always strives to provide at least one fully inline pro ```{toctree} :maxdepth: 1 -external +external/index openai inference/index agents/index diff --git a/llama_stack/apis/post_training/post_training.py b/llama_stack/apis/post_training/post_training.py index 9170cba51..c16221289 100644 --- a/llama_stack/apis/post_training/post_training.py +++ b/llama_stack/apis/post_training/post_training.py @@ -193,18 +193,10 @@ class DPOLossType(Enum): class DPOAlignmentConfig(BaseModel): """Configuration for Direct Preference Optimization (DPO) alignment. - :param reward_scale: Scaling factor for the reward signal - :param reward_clip: Maximum absolute value for reward clipping - :param epsilon: Small value added for numerical stability - :param gamma: Discount factor for future rewards :param beta: Temperature parameter for the DPO loss :param loss_type: The type of loss function to use for DPO """ - reward_scale: float - reward_clip: float - epsilon: float - gamma: float beta: float loss_type: DPOLossType = DPOLossType.sigmoid diff --git a/llama_stack/core/routing_tables/vector_dbs.py b/llama_stack/core/routing_tables/vector_dbs.py index 5ea4e9854..c81a27a3b 100644 --- a/llama_stack/core/routing_tables/vector_dbs.py +++ b/llama_stack/core/routing_tables/vector_dbs.py @@ -84,8 +84,6 @@ class VectorDBsRoutingTable(CommonRoutingTableImpl, VectorDBs): async def unregister_vector_db(self, vector_db_id: str) -> None: existing_vector_db = await self.get_vector_db(vector_db_id) - if existing_vector_db is None: - raise VectorStoreNotFoundError(vector_db_id) await self.unregister_object(existing_vector_db) async def openai_retrieve_vector_store( diff --git a/scripts/gen-ci-docs.py b/scripts/gen-ci-docs.py index 630cfe765..e40e3ed3a 100755 --- a/scripts/gen-ci-docs.py +++ b/scripts/gen-ci-docs.py @@ -36,7 +36,7 @@ def generate_ci_docs(): # Header section to preserve header = """# Llama Stack CI -Llama Stack uses GitHub Actions for Continous Integration (CI). Below is a table detailing what CI the project includes and the purpose. +Llama Stack uses GitHub Actions for Continuous Integration (CI). Below is a table detailing what CI the project includes and the purpose. | Name | File | Purpose | | ---- | ---- | ------- | diff --git a/tests/integration/post_training/test_post_training.py b/tests/integration/post_training/test_post_training.py index 839b9b1f2..002da1160 100644 --- a/tests/integration/post_training/test_post_training.py +++ b/tests/integration/post_training/test_post_training.py @@ -195,10 +195,6 @@ class TestPostTraining: algorithm_config = DPOAlignmentConfig( beta=0.1, loss_type=DPOLossType.sigmoid, # Default loss type - reward_scale=1.0, # Scaling factor for reward signal (neutral scaling) - reward_clip=5.0, # Maximum absolute value for reward clipping (prevents extreme values) - epsilon=1e-8, # Small value for numerical stability - gamma=1.0, ) data_config = DataConfig( dataset_id=dataset.identifier,