From 49e6fc51c0c5d081461f2744bf89f90704d6f811 Mon Sep 17 00:00:00 2001 From: Mark McLoughlin Date: Tue, 9 Jul 2024 12:08:46 +0100 Subject: [PATCH 01/83] Propose simplifications to the SDG API design See instructlab/sdg#61 for some of the discussion on this, but I've tried to summarize those discussions in the design doc. Signed-off-by: Mark McLoughlin --- .spellcheck-en-custom.txt | 7 +++- docs/sdg/sdg-api-simplification.md | 64 ++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 docs/sdg/sdg-api-simplification.md diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index f14aa3a2..e3abd99d 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -20,6 +20,7 @@ Colab compositional Conda config +configs Containerfile cpp cuBLAS @@ -28,6 +29,7 @@ customizations CWD Cynefin dataset +datasets DCO Dependabot dev @@ -100,9 +102,9 @@ PLOS PNG Podman podman -PR's pre preprint +PR's pyenv PyPI PyTorch @@ -117,6 +119,7 @@ Ren repo ROCm RTX +runtime RX SaaS safetensors @@ -144,8 +147,8 @@ tl tox traigers triager -triager's Triagers +triager's triagers UI ui diff --git a/docs/sdg/sdg-api-simplification.md b/docs/sdg/sdg-api-simplification.md new file mode 100644 index 00000000..70f26bc5 --- /dev/null +++ b/docs/sdg/sdg-api-simplification.md @@ -0,0 +1,64 @@ +# SDG API Simplification + +## Objective + +Identify simplifications to [the original SDG API design](sdg-api-interface.md) based on retrospective insights from working with the implementation of that design. + +## Original API Design + +Consider the original API sketch: + +```python +from sdg import SDG +from run_config import SynthDataFlow +from pipeline import Pipeline +import yaml + +client = openai_client(endpoint) +model = "model-version" + +synth_skills_flow = SynthDataFlow(client, model).get_flow() +skills_pipe = Pipeline(synth_skills_flow) + +cli_sdg = SDG([synth_skills_flow]) # run config has all the variables like num_samples, pipelinesteps etc +generated_samples = cli_sdg.generate() +``` + +The nouns above are: + +* Dataset - this is from Hugging Face's datasets library - used for the return value from `SDG.generate()`, but also what is passed between elements of the data generation pipeline +* Block - not shown in the code above, but required to understand a pipeline - a block provides a `generate()` method transforms an input dataset and returns an output dataset +* Block config - a description of how to instantiate and invoke a block, a sequence of these is returned from `get_flow()` above +* Flow - a class which describes how to render a sequence of block configs for a pipeline +* Pipeline - a pipeline is created from a sequence of block configs, and provides a generate() method in which it instantiates and invokes blocks in turn, passing the input dataset and collecting the output +* SDG - an SDG is created from a list of pipelines, and its generate() method calls pipelines in turn + +## Simplification Proposals + +### Remove `SDG` + +We don't need both SDG and Pipeline since Pipeline can already do everything SDG can do. If more advanced orchestration of multiple pipelines is required later, an orchestration abstraction can be added then. + +### Remove `Flow` + +With flows migrating to a YAML file format (#109), their purpose becomes more clear - they are simply an expression of the configuration of a sequence of blocks, used to create a pipeline. We can simply refer to these YAML files as pipeline descriptions. + +### Add PipelineContext + +A number of runtime parameters are required by blocks in a pipeline - e.g. every `LLMBlock` requires an OpenAI API client and a model name. These parameters are distinct from configuration that is specified by a pipeline author. + +It would be much more straightforward if `Block` were able to access these runtime parameters via their parent `Pipeline`. + +In the case where multiple pipelines with the same runtime context is desired, it would also be beneficial to abstract these runtime parameters into a `PipelineContext` class. + +## New API Design + +```python +ds = Dataset.from_list(samples) + +ctx = PipelineContext(client, "mixtral", teacher_model) + +knowledge_pipe = Pipeline.from_configs(ctx, [MMLU_BENCH_PIPELINE, SYNTH_KNOWLEDGE_PIPELINE]) + +gen_data = knowledge_pipe.generate(ds) +``` From 7395625e51bfee9979b777ddfe9e987ecd2f61c1 Mon Sep 17 00:00:00 2001 From: JJ Asghar Date: Wed, 10 Jul 2024 11:08:46 -0500 Subject: [PATCH 02/83] Added docs.instructlab.ai dev-doc Added dev-doc to create the docs.instructlab.ai site. /cc @kelbrown20 Signed-off-by: JJ Asghar --- docs/docs-instructlab-website.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 docs/docs-instructlab-website.md diff --git a/docs/docs-instructlab-website.md b/docs/docs-instructlab-website.md new file mode 100644 index 00000000..4dedf12b --- /dev/null +++ b/docs/docs-instructlab-website.md @@ -0,0 +1,17 @@ +# `docs.instructlab.ai` website + +## Problem statement + +Reading the numerous `README.md` files for the InstructLab Project has become overwhelming and cumbersome. +Understanding the branching structure of the different ways to implement and use InstructLab is not only +confusing but frustrating to beginning users. Not having a centralized documentation site that is the +first and default stop for our downstream users is doing us a disservice. + +## Proposed resolution + +1) Leveraging the static site ability of GitHub we spin up the repository. +and create a `CNAME` to point to . +2) We migrate the different `README.md`s to this static site, (most likely [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/), +and iterate organizing the documentation via PRs and useful flow of information. +3) We leverage our TechWriters to have a single location to update official "downstream" documentation. +4) We have the dedicated `README.md`s for each project, but stripped down to very specific niche things for the sub-project, or fast feedback development notes. From c4378ce432b808978a8da29a0b1234c9e2754252 Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Wed, 24 Jul 2024 10:08:13 -0400 Subject: [PATCH 03/83] add requirements management policy Signed-off-by: Doug Hellmann --- .spellcheck-en-custom.txt | 3 +++ docs/dependency-management.md | 44 +++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 docs/dependency-management.md diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 77e804ba..b18a89a1 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -27,6 +27,8 @@ cpp cuBLAS CUDA customizations +CVE +CVEs CWD Cynefin dataset @@ -119,6 +121,7 @@ preprint PR's pyenv PyPI +pyproject PyTorch qlora quantized diff --git a/docs/dependency-management.md b/docs/dependency-management.md new file mode 100644 index 00000000..d1301e9a --- /dev/null +++ b/docs/dependency-management.md @@ -0,0 +1,44 @@ +# Dependency Management Policy for InstructLab + +This document describes the policies for adding and updating build and runtime dependencies of all InstructLab components. + +## Best practices + + +1. Express dependencies by setting a minimum version (using `>=`) to ensure compatibility. +2. Do not "pin" a dependency to a single version (using `==`). +3. Exclude specific versions known to not work (using `!=`). +4. Only apply "caps" to dependencies (using `<`) when that dependency has established a pattern of producing new releases with breaking changes. +5. Pin versions in CI, with frequent automated updates. + +Best practices for python dependencies call for using ranges in package requirements and pinning versions only in CI jobs. + +Using pinned versions in a list of constraints used for tests allows us to know and advertise exactly what versions have been tested in CI. +That information is useful for users and re-packagers to understand which versions of dependencies are compatible with more specificity than the ranges provide. +Tools like Dependabot will submit PRs to automatically update those pins to help us keep up with new releases of all of our dependencies. + +Pinning to specific versions in the package dependencies so that installing a built package requires an exact version of a dependency is not a good practice. +It makes it very easy for sets of packages that need to be installed together to have incompatible dependencies, which in turn makes it impossible to actually install them (for example, [instructlab/training #34](https://github.com/instructlab/training/issues/34). +Pinned dependencies also make it difficult to deal with CVEs or other critical bugs in those dependencies, which makes delivering products from this project more challenging. +Do not pin to specific versions of libraries. + +Instead of pinning, we use version ranges. +This ensures that re-packagers and installers have some flexibility in case a dependency of our package has a critical CVE and needs to be updated. +Those ranges should include a minimum version, and in some cases a maximum version (a "cap"). + +Specifying the minimum value for the range (`foo>=x.y`) allows us to declare that we need features that only show up in or after that version of the dependency, which means we won't get bugs from users trying to use instructlab with an old dependency that has an incompatible API or is completely lacking a feature we need. + +Specifying a maximum value for the range (`foo>=x.y, Date: Tue, 6 Aug 2024 09:28:49 +0000 Subject: [PATCH 04/83] Bump step-security/harden-runner from 2.9.0 to 2.9.1 Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.9.0 to 2.9.1. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](https://github.com/step-security/harden-runner/compare/0d381219ddf674d61a7572ddd19d7941e271515c...5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/actionlint.yml | 2 +- .github/workflows/docs.yml | 2 +- .github/workflows/spellcheck.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml index 688af926..150d7ff9 100644 --- a/.github/workflows/actionlint.yml +++ b/.github/workflows/actionlint.yml @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0 + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 7ffae4ec..d34a0bac 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -33,7 +33,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0 + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index bb49a5d1..41f42940 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0 + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs From a91f53b1fdfc1359d01c7335496260b68d17b764 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Aug 2024 09:23:25 +0000 Subject: [PATCH 05/83] Bump rojopolis/spellcheck-github-actions from 0.40.0 to 0.41.0 Bumps [rojopolis/spellcheck-github-actions](https://github.com/rojopolis/spellcheck-github-actions) from 0.40.0 to 0.41.0. - [Release notes](https://github.com/rojopolis/spellcheck-github-actions/releases) - [Changelog](https://github.com/rojopolis/spellcheck-github-actions/blob/master/CHANGELOG.md) - [Commits](https://github.com/rojopolis/spellcheck-github-actions/compare/cd079c0f6a24c326cb8a4fa5dc8bbf16227990bd...a0fba0ca8b9e552d4241ea5ccfaa4ca4162622d0) --- updated-dependencies: - dependency-name: rojopolis/spellcheck-github-actions dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/spellcheck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 41f42940..77865c0e 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -42,4 +42,4 @@ jobs: fetch-depth: 0 - name: Spellcheck - uses: rojopolis/spellcheck-github-actions@cd079c0f6a24c326cb8a4fa5dc8bbf16227990bd # v0.40.0 + uses: rojopolis/spellcheck-github-actions@a0fba0ca8b9e552d4241ea5ccfaa4ca4162622d0 # v0.41.0 From 38b4650593e60144ecf3daf7f0cb1ec9495da263 Mon Sep 17 00:00:00 2001 From: Nathan Weinberg Date: Tue, 27 Aug 2024 10:19:58 -0400 Subject: [PATCH 06/83] github: add stale bot to dev docs repo Co-authored-by: BJ Hargrave Signed-off-by: Nathan Weinberg --- .github/workflows/stale_bot.yml | 52 +++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 .github/workflows/stale_bot.yml diff --git a/.github/workflows/stale_bot.yml b/.github/workflows/stale_bot.yml new file mode 100644 index 00000000..04716d11 --- /dev/null +++ b/.github/workflows/stale_bot.yml @@ -0,0 +1,52 @@ +# SPDX-License-Identifier: Apache-2.0 + +name: 'Close stale issues and PRs' + +on: + schedule: + - cron: '30 1 * * *' + +env: + LC_ALL: en_US.UTF-8 + +defaults: + run: + shell: bash + +permissions: + contents: read + +jobs: + stale: + permissions: + issues: write + pull-requests: write + runs-on: ubuntu-latest + steps: + - name: "Harden Runner" + uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + with: + disable-sudo: true + egress-policy: block + allowed-endpoints: > + api.github.com:443 + + - name: "Stale Action" + uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0 + with: + stale-issue-label: 'stale' + stale-issue-message: > + This issue has been automatically marked as stale because it has not had activity within 90 days. + It will be automatically closed if no further activity occurs within 30 days. + close-issue-message: > + This issue has been automatically closed due to inactivity. Please feel free to reopen if you feel it is still relevant! + days-before-issue-stale: 60 + days-before-issue-close: 30 + stale-pr-label: 'stale' + stale-pr-message: > + This pull request has been automatically marked as stale because it has not had activity within 90 days. + It will be automatically closed if no further activity occurs within 30 days. + close-pr-message: > + This pull request has been automatically closed due to inactivity. Please feel free to reopen if you intend to continue working on it! + days-before-pr-stale: 60 + days-before-pr-close: 30 From 71e9db53f2a25115d3c1a15f876d3b54f238c249 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 09:28:01 +0000 Subject: [PATCH 07/83] Bump step-security/harden-runner from 2.9.1 to 2.10.1 Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.9.1 to 2.10.1. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](https://github.com/step-security/harden-runner/compare/5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde...91182cccc01eb5e619899d80e4e971d6181294a7) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/actionlint.yml | 2 +- .github/workflows/docs.yml | 2 +- .github/workflows/spellcheck.yml | 2 +- .github/workflows/stale_bot.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml index 150d7ff9..e909ac62 100644 --- a/.github/workflows/actionlint.yml +++ b/.github/workflows/actionlint.yml @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index d34a0bac..24288c11 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -33,7 +33,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 77865c0e..dcf966bb 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs diff --git a/.github/workflows/stale_bot.yml b/.github/workflows/stale_bot.yml index 04716d11..f380ad91 100644 --- a/.github/workflows/stale_bot.yml +++ b/.github/workflows/stale_bot.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: block From 1c35df38cc7cfdc2be2b215c044eb9ff2cecc585 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 09:28:03 +0000 Subject: [PATCH 08/83] Bump DavidAnson/markdownlint-cli2-action from 16.0.0 to 17.0.0 Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 16.0.0 to 17.0.0. - [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases) - [Commits](https://github.com/davidanson/markdownlint-cli2-action/compare/b4c9feab76d8025d1e83c653fa3990936df0e6c8...db43aef879112c3119a410d69f66701e0d530809) --- updated-dependencies: - dependency-name: DavidAnson/markdownlint-cli2-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index d34a0bac..fd8ab9ea 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -41,6 +41,6 @@ jobs: with: fetch-depth: 0 - name: "Check Markdown documents" - uses: DavidAnson/markdownlint-cli2-action@b4c9feab76d8025d1e83c653fa3990936df0e6c8 # v16.0.0 + uses: DavidAnson/markdownlint-cli2-action@db43aef879112c3119a410d69f66701e0d530809 # v17.0.0 with: globs: '**/*.md' From b11a2c19c82489f3335b442d4b60bb7272892e39 Mon Sep 17 00:00:00 2001 From: Jaideep Rao Date: Mon, 9 Sep 2024 23:45:00 -0400 Subject: [PATCH 09/83] propose model management standardization Signed-off-by: Jaideep Rao --- .spellcheck-en-custom.txt | 5 ++ .../ilab-model-management-standardization.md | 81 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 docs/cli/ilab-model-management-standardization.md diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 4a8e83ce..30bd8584 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -54,6 +54,8 @@ Finetuning formedness freeform GFX +gguf +ggufs GGUF GGUFs GiB @@ -102,6 +104,7 @@ Nakamura num NVidia Nvidia +OCI Ollama ollama OpenStax @@ -138,6 +141,7 @@ RTX runtime RX SaaS +safetensor safetensors Salawu SDG @@ -181,6 +185,7 @@ vllm watsonx Wikisource wikisql +WIP WSL xcode XNACK diff --git a/docs/cli/ilab-model-management-standardization.md b/docs/cli/ilab-model-management-standardization.md new file mode 100644 index 00000000..86a6599c --- /dev/null +++ b/docs/cli/ilab-model-management-standardization.md @@ -0,0 +1,81 @@ +# Standardizing model storage, management and referencing in the CLI and libraries + +## Introduction + +- **Purpose**: Standardizing how models are stored, managed and accessed via flags used in CLI tools and libraries to ensure consistency, usability, and maintainability. +- **Scope**: Covers model directory structure in cache and all model-related flags used in the command-line interface (CLI) and libraries within the project. +- **Audience**: Developers, maintainers, and contributors involved in the development and usage of the CLI tools and libraries. + +## Summary + +This proposal aims to establish a consistent practice for how models are managed within InstructLab. It does so in 2 parts - one proposing a consolidation of all existing model related flags, and the other proposing a change to how models are organized in the cache upon download, and thereby referenced within various operations + +## Motivation + +Currently there are 10+ instances across all major commands and subcommands that accept either `--model` , `--model-path`, `--model-name`, or `--model-dir`; all of which serve slightly different purposes, and might handle different use cases including local vs remote models, relative vs absolute paths etc. This leads to a significant amount of avoidable confusion among developers and users alike. Introducing some consolidation and consistency in this aspect would provide a big UX improvement. + +In addition to this, we currently support multiple sources for model downloads. There could be models that span multiple sources and also have different versions and tags that users may want to be able to work with. Currently, there is a lack of uniformity in how we organize models downloaded from Hugging Face vs OCI registries. We do not have a way to differentiate and maintain unique identities for models in cache, based on their sources. We also currently don't have the ability to support version management. Users are only able to work with one version of a given model at a time, as downloading a different version just overwrites their existing model. + +## Proposal + +### Part 1: Narrowing down to a singular model related flag + +#### Problem Statement - Section 1 + +We want to streamline the number of model related flags available, while establishing consistency and predictability between their uses and handling 3 separate use-cases: absolute paths, relative paths and remote repository names. + +#### Suggested approach - Section 1 + +- Retain `--model` and deprecate all other model related flags + - Alternatively, we could retain `--model-path` but passing in a repo name to a flag called "model-path" seems a little more awkward than passing in a path to a field just called "model" +- `--model` should accept both paths, as well as strings (for repo names) +- First `--model` should simply check whether the supplied path exists - This would include determining whether the provided path is absolute, or relative to wherever the calling program is. + - If it exists, we should run an additional check to determine if it points to a safetensor or gguf models (use existing `is_model_safetensors` and `is_model_gguf` checks for this) + - If path does not exist, or exists but is not determined to be a valid model, then move on +- If path is not found after step 1, check against all tracked models/checkpoints/adapters etc currently found in `~/.local/cache` and or `~/.local/checkpoints`. If not, move on +- If supplied content is neither an absolute path, nor a relative path - assume it is the name of a remote repo on HF and download it + - alternatively, we can error out here and require that user download the model explicitly via `ilab model download` + +This would standardize the behavior of the `--model` flag across all the commands that it appears in. There could be a dedicated model resolver function that implements the above described process. + +The only exception may be `ilab model download` which contains a `--model-dir` flag, which acts as a sink rather than a source. This flag could stand to benefit from being renamed to `--destination` instead. + +### Part 2: Standardizing what gets passed _into_ the model flag (value) + +#### Problem Statement - Section 2 + +In addition to standardizing the flag itself, we must also standardize what gets passed INTO the flag, i.e the value passed to `--model`. The format used to reference models should work consistently regardless of whether the user is referencing +a local model or a remote one. They should be able to use a consistent string to reference a given, specific model under all circumstances. + +#### Suggested approach - Section 2 + +- Standardize around the usage of a model's full URL as the way to reference that model at all times (e.g `quay.io/ai-lab/models/granite-7b-lab`). +- Download logic is updated such that models are always downloaded into `~/.local/cache/instructlab/models` under sub-directories that follow the same structure as their URL. We also account for model versioning by doing the following: + - Creation of dedicated sub-directories based on tag/branch/commit SHA + - Creation of a `.metadata` file that records the tag/branch/commit information +- Keeping these in mind, an example for what the final model path could look like is: `~/.local/cache/instructlab/models/quay.io/ai-lab/models/granite-7b-lab/v1.1` +- Users use the full URL `quay.io/ai-lab/models/granite-7b-lab` when specifying where to download the model from. Thereafter, users continue to use this string (with the version included) to reference this model from cache, as this will now match the relative path of the model (based on point #4 of suggested approach of part 1) + - E.g: `ilab model chat --model quay.io/ai-lab/models/granite-7b-lab/v1.1` + - Alternatively, we could adopt standard convention and allow specification of version through a colon (`ilab model chat --model quay.io/ai-lab/models/granite-7b-lab:v1.1`) and extract the version from this URL and use it to locate the right version folder + - There could be some UX enhancements we add on top, such as allowing users to just specify "granite-7b-lab" and use some logic to determine which sub-folder and version to default to if multiple copies of that model exist across different sources and versions, similar to Podman + +An ongoing work-in-progress effort for this can be found at: [#1895](https://github.com/instructlab/instructlab/pull/1895). + +The proposed combined approach will resolve [#2200](https://github.com/instructlab/instructlab/issues/2200), [#1871](https://github.com/instructlab/instructlab/issues/1871) and all issues associated with it. + +#### Open question + +One issue with following the suggested approach would be that we might like to store Hugging Face models under `huggingface.co/` in the cache, similar to `quay.io/` for example. However, the Hugging Face API expects users to specify models following the pattern +`/` and does not accept `huggingface.co//`. As such, we could still store the models that way and have users specify `huggingface.co` for the sake of uniformity and have some logic to strip out the `huggingface.co` from the URL before sending the API request. This seems rather clunky and unnecessary. On the other hand, if we continue storing Hugging Face models in the same `/` format, it would break the pattern with most models being +collected under their host domains, and Hugging Face models arbitrarily stored one level higher than the rest. What's an acceptable solution in this case? + +## Follow up work + +- `ilab model list` is updated to include a `version` column that displays all available versions for a given model. This logic should read from the `.metadata` files to pull the version info. Existing models already downloaded by models won't contain this file and hence should automatically have a version of `n/a` since we cannot determine the version of their models after the fact +- `ilab model list` is updated to accept `--adapters` and `--checkpoints` flags to act as filters and contain dedicated sections to list model adapters and checkpoints + - The existing `--list-checkpoints` could be deprecated for uniformity reasons + +## How would backwards-compatibility be handled? + +All other model flags will be deprecated for a couple releases and called out in the release notes. They will eventually be removed. +The fields in the config file will need to be updated to match `--model`, which might be a breaking change and may warrant bumping the config version. This might require implementation of some kind of automatic config conversion mechanism between versions \ No newline at end of file From 998e70652c26a385fdc8200bbdb5edd35932c433 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 09:25:14 +0000 Subject: [PATCH 10/83] Bump rojopolis/spellcheck-github-actions from 0.41.0 to 0.42.0 Bumps [rojopolis/spellcheck-github-actions](https://github.com/rojopolis/spellcheck-github-actions) from 0.41.0 to 0.42.0. - [Release notes](https://github.com/rojopolis/spellcheck-github-actions/releases) - [Changelog](https://github.com/rojopolis/spellcheck-github-actions/blob/master/CHANGELOG.md) - [Commits](https://github.com/rojopolis/spellcheck-github-actions/compare/a0fba0ca8b9e552d4241ea5ccfaa4ca4162622d0...b83ca7c1b5c285e4f2b43e209a455c74872ec341) --- updated-dependencies: - dependency-name: rojopolis/spellcheck-github-actions dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/spellcheck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index dcf966bb..5578e23e 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -42,4 +42,4 @@ jobs: fetch-depth: 0 - name: Spellcheck - uses: rojopolis/spellcheck-github-actions@a0fba0ca8b9e552d4241ea5ccfaa4ca4162622d0 # v0.41.0 + uses: rojopolis/spellcheck-github-actions@b83ca7c1b5c285e4f2b43e209a455c74872ec341 # v0.42.0 From f0317e96ad14fb5828898155da3c13ee9d9b778d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2024 10:07:37 +0000 Subject: [PATCH 11/83] Bump rhysd/actionlint from 1.7.1 to 1.7.2 in /.github/workflows Bumps rhysd/actionlint from 1.7.1 to 1.7.2. --- updated-dependencies: - dependency-name: rhysd/actionlint dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/actionlint.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actionlint.dockerfile b/.github/workflows/actionlint.dockerfile index 79db008b..c082d8e7 100644 --- a/.github/workflows/actionlint.dockerfile +++ b/.github/workflows/actionlint.dockerfile @@ -1,3 +1,3 @@ # Since dependabot cannot update workflows using docker, # we use this indirection since dependabot can update this file. -FROM rhysd/actionlint:1.7.1@sha256:435ecdb63b1169e80ca3e136290072548c07fc4d76a044cf5541021712f8f344 +FROM rhysd/actionlint:1.7.2@sha256:89d3f90f82781dee3c8724651129634b08cf2241bbd67fcd02a1c5198119fc5e From 85502d4e80af19d0a6046eca19cb993210135e5f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 09:13:43 +0000 Subject: [PATCH 12/83] Bump actions/checkout from 4.1.7 to 4.2.0 Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.7 to 4.2.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/692973e3d937129bcbf40652eb9f2f61becf3332...d632683dd7b4114ad314bca15554477dd762a938) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/actionlint.yml | 2 +- .github/workflows/docs.yml | 2 +- .github/workflows/spellcheck.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml index e909ac62..33ad8b40 100644 --- a/.github/workflows/actionlint.yml +++ b/.github/workflows/actionlint.yml @@ -35,7 +35,7 @@ jobs: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 with: fetch-depth: 0 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index c32d9601..e034f2ba 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -37,7 +37,7 @@ jobs: with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 with: fetch-depth: 0 - name: "Check Markdown documents" diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index dcf966bb..10e958c5 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -37,7 +37,7 @@ jobs: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 with: fetch-depth: 0 From 5c45b167f227cc9bd8b1044ca4a65d203af76c20 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 09:42:20 +0000 Subject: [PATCH 13/83] Bump rhysd/actionlint from 1.7.2 to 1.7.3 in /.github/workflows Bumps rhysd/actionlint from 1.7.2 to 1.7.3. --- updated-dependencies: - dependency-name: rhysd/actionlint dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/actionlint.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actionlint.dockerfile b/.github/workflows/actionlint.dockerfile index c082d8e7..6f171d53 100644 --- a/.github/workflows/actionlint.dockerfile +++ b/.github/workflows/actionlint.dockerfile @@ -1,3 +1,3 @@ # Since dependabot cannot update workflows using docker, # we use this indirection since dependabot can update this file. -FROM rhysd/actionlint:1.7.2@sha256:89d3f90f82781dee3c8724651129634b08cf2241bbd67fcd02a1c5198119fc5e +FROM rhysd/actionlint:1.7.3@sha256:7617f05bd698cd2f1c3aedc05bc733ccec92cca0738f3e8722c32c5b42c70ae6 From 74c9505712fc3e0edb22840de593171dcd3ccdb2 Mon Sep 17 00:00:00 2001 From: Mustafa Eyceoz Date: Thu, 3 Oct 2024 16:49:36 -0400 Subject: [PATCH 14/83] Add design doc for training to explain accelerate inclusion for FSDP Signed-off-by: Mustafa Eyceoz --- docs/training/training-accelerate-dep.md | 114 +++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 docs/training/training-accelerate-dep.md diff --git a/docs/training/training-accelerate-dep.md b/docs/training/training-accelerate-dep.md new file mode 100644 index 00000000..c1c0208c --- /dev/null +++ b/docs/training/training-accelerate-dep.md @@ -0,0 +1,114 @@ +--- +title: Design Doc - HF Accelerate + +--- + +# Design Proposal - HF Accelerate + +## Overview + +InstructLab training is currently being required to support two distributed sharding frameworks: DeepSpeed and FSDP1. Additionally, there is a future plan to adopt FSDP2 once the project matures. Each of these framworks has its own process for preparing models, optimizers, sharding, and all of their own custom options. + +With all this in mind, in order to maintain a simple common codebase, an abstraction for sharding frameworks is required. This is why we have pulled in Hugging Face Accelerate as a lightweight sharding abstraction, to enable a common interface for sharding frameworks with pluggable configs, and to avoid overly-branching codepaths. + +## How it is being used + +(maybe insert diagram here) + +### How it is implemented in code + +Accelerate usage consists of a single import: +``` +from accelerate import Accelerator +``` +We begin by setting up our accelerator object via our `setup_accelerator` function: +``` +accelerator = setup_accelerator(args, model, grad_accum) +``` +This checks the selected sharding framework, and sets up the appropriate config: +``` +def setup_accelerator(args, model, grad_accum): + if args.distributed_training_framework == "deepspeed": + # Third Party + from deepspeed import DeepSpeedEngine + ... + accel_args = { + "deepspeed_plugin": get_ds_plugin(...), + } + elif args.distributed_training_framework == "fsdp": + accel_args = { + "fsdp_plugin": get_fsdp_config(args, model), + } + else: + raise ValueError( + f"Unknown sharding framework: {args.distributed_training_framework}" + ) + accelerator = Accelerator( + **accel_args, + ) + accelerator.even_batches = False + return accelerator +``` +Now this Accelerator object can act as a universal sharding framework config, and we can prepare our training objects accordingly: +``` +model, optimizer, _, lr_scheduler = accelerator.prepare( + model, + optimizer, + deepcopy(train_loader), + lr_scheduler, +) +``` + +As an additional bonus, the accelerator object allows us to do universal checkpoint saving and resuming as well. For saving model checkpoints, we can simply use: +``` +accelerator.save_model( + model, + save_directory=output_dir, + max_shard_size="5GB", + safe_serialization=True, +) +``` +and to save full state for resuming training, we can use: +``` +accelerator.save_state( + output_dir=output_dir, + safe_serialization=True, +) +``` + +## The immediate benefit +The inclusion of Accelerate in this manner drastically simplifies the process of supporting multiple sharding frameworks. Rather than having diverging codepaths for model setup, optimizer setup, sharding configuration, distributed initialization, state saving, and model checkpointing, all of these training steps can be supported with the same code. The common abstraction allows us to maintain both DeepSpeed and FSDP, and prepares us for inclusion of additional sharding frameworks. + + +## Impact on overhead +### Performance +There has been no noticeable performance impact observed during development, but we will defer to the Performance and Scale team for final measurements. + +### Usability +This makes the library easier to read, but also requires knowledge of an additional package. While there exists [documentation](https://huggingface.co/docs/accelerate/v1.0.0rc1/en/index), it does require some additional code exploration to actually understand what some functions (like `prepare`, `save_model`, etc.) are doing behind the scenes, making some processes less transparent than if implemented directly with `torch`. + +While sharding framework code will not need to be reviewed as thoroughly, this does not change the fact that one still needs to understand the configuration options per framework and how they behave. + +### Package Management +This inclusion requires one additional python package to be managed as a dependency. Currently, that package is `accelerate==0.34.2` but we plan to immediately upgrade to `accelerate==1.0.0` once it is moved from pre-release to official release. + + +## Long-Term Bonuses and Risks +The two clearest long-term bonuses are: + - Simplifies the process of onboarding additional sharding frameworks in the future, as well as deprecating existing sharding frameworks + - Vastly improves the readability and maintenance of our code by avoiding diverging paths for various sharding frameworks + +There are, however, important risks to be considered. Ultimately, if we are confident that we wish to eventually stick with a single sharding framework in the future and contribute directly to that project, the risks of including Accelerate may outweigh the benefits. Please read the next section carefully to understand why, if Accelerate no longer provides a significant benefit to us, should be removed. + + +### Why Stop There? +With the inclusion of a Hugging Face abstraction library, this begs the question "why not keep going and pull in more of the HF stack? Won't it simplify things further then?" + +It is important to reiterate here the clear downsides of HF Accelerate, and what we wish to avoid moving forward. Accelerate makes our code more opaque, and hinders our ability to easily understand and customize as needed without being reliant upon a third-party dependency. We become reliant upon HF bug fixes, release cycles, and documentation, and without an explicit member of the HF community to manage these for us, this introduces risk that has to be heavily considered. + +For example, if we wanted to change how model saving worked, or a user wanted to simply understand how model saving worked, they would no longer be able to do so through our library directly, but instead would need to read HF documentation, and contribute back to HF repos with the hope that the customization is considered generally useful and approved. More niche or experimental customizations may not be approved at all, and would have to be patched in directly or overwritten in a rather hacky manner within our library. This as described is not the most dire of circumstances, as one could argue that if it is not ready to be included upstream, it may not be ready to be included in our library. Where things get more serious, however, is with the introduction of bugs. At this very moment, there is a bug in `v0.34.2` that means FSDP model saving does not behave as expected. This fix is resolved in `v1.0.0rc1`, but there is no official release yet that can be pulled in with this fix. So for RHEL AI 1.2, we are currently maintaining a patch directly in our library to fix the bug while working with `v0.34.2`, and it will sit there temporarily until Accelerate has a new official release. + +This expands well into the wider topic of dependency management. A package like Accelerate will have frequent updates and changes moving forward, and we will need to ensure consistent compatibility between our training library releases and the required Accelerate versions. A new dependency also means shipping with another package, with a large set of code. While in most cases this is harmless, a package that is used directly on top of our work in place of our existing code, adds a significant amount of bloat for developers and users alike. The requirement shifts from understanding a line of code, to understanding a full codepath behind a line of code, the quality of which cannot be guaranteed by our engineers. + +Ultimately, these risks and overhead management costs make sense for Accelerate, because the package provides significant benefit that far outweigh our concerns. When considering additional HF packages, however, there is currently **no obvious benefit** to their inclusion, which only further annunciates the risks associated. It must be made clear that the risks of Accelerate are non-negligible, and that the conveniences and positive impact provided are what push it over the line of inclusion. It is by no means a "no brainer" to further include any additional HF packages at this time, unless they afford us a similar benefit. + From f7851674c826b01a2b02b97ebf08a05c165b391e Mon Sep 17 00:00:00 2001 From: Mustafa Eyceoz Date: Mon, 7 Oct 2024 10:25:15 -0400 Subject: [PATCH 15/83] Fix spellchecks Signed-off-by: Mustafa Eyceoz --- docs/training/training-accelerate-dep.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/training/training-accelerate-dep.md b/docs/training/training-accelerate-dep.md index c1c0208c..16cc594c 100644 --- a/docs/training/training-accelerate-dep.md +++ b/docs/training/training-accelerate-dep.md @@ -7,9 +7,9 @@ title: Design Doc - HF Accelerate ## Overview -InstructLab training is currently being required to support two distributed sharding frameworks: DeepSpeed and FSDP1. Additionally, there is a future plan to adopt FSDP2 once the project matures. Each of these framworks has its own process for preparing models, optimizers, sharding, and all of their own custom options. +InstructLab training is currently being required to support two distributed sharding frameworks: DeepSpeed and FSDP1. Additionally, there is a future plan to adopt FSDP2 once the project matures. Each of these frameworks has its own process for preparing models, optimizers, sharding, and all of their own custom options. -With all this in mind, in order to maintain a simple common codebase, an abstraction for sharding frameworks is required. This is why we have pulled in Hugging Face Accelerate as a lightweight sharding abstraction, to enable a common interface for sharding frameworks with pluggable configs, and to avoid overly-branching codepaths. +With all this in mind, in order to maintain a simple common codebase, an abstraction for sharding frameworks is required. This is why we have pulled in Hugging Face Accelerate as a lightweight sharding abstraction, to enable a common interface for sharding frameworks with pluggable configs, and to avoid overly-branching code paths. ## How it is being used @@ -77,7 +77,7 @@ accelerator.save_state( ``` ## The immediate benefit -The inclusion of Accelerate in this manner drastically simplifies the process of supporting multiple sharding frameworks. Rather than having diverging codepaths for model setup, optimizer setup, sharding configuration, distributed initialization, state saving, and model checkpointing, all of these training steps can be supported with the same code. The common abstraction allows us to maintain both DeepSpeed and FSDP, and prepares us for inclusion of additional sharding frameworks. +The inclusion of Accelerate in this manner drastically simplifies the process of supporting multiple sharding frameworks. Rather than having diverging code paths for model setup, optimizer setup, sharding configuration, distributed initialization, state saving, and model checkpointing, all of these training steps can be supported with the same code. The common abstraction allows us to maintain both DeepSpeed and FSDP, and prepares us for inclusion of additional sharding frameworks. ## Impact on overhead @@ -108,7 +108,7 @@ It is important to reiterate here the clear downsides of HF Accelerate, and what For example, if we wanted to change how model saving worked, or a user wanted to simply understand how model saving worked, they would no longer be able to do so through our library directly, but instead would need to read HF documentation, and contribute back to HF repos with the hope that the customization is considered generally useful and approved. More niche or experimental customizations may not be approved at all, and would have to be patched in directly or overwritten in a rather hacky manner within our library. This as described is not the most dire of circumstances, as one could argue that if it is not ready to be included upstream, it may not be ready to be included in our library. Where things get more serious, however, is with the introduction of bugs. At this very moment, there is a bug in `v0.34.2` that means FSDP model saving does not behave as expected. This fix is resolved in `v1.0.0rc1`, but there is no official release yet that can be pulled in with this fix. So for RHEL AI 1.2, we are currently maintaining a patch directly in our library to fix the bug while working with `v0.34.2`, and it will sit there temporarily until Accelerate has a new official release. -This expands well into the wider topic of dependency management. A package like Accelerate will have frequent updates and changes moving forward, and we will need to ensure consistent compatibility between our training library releases and the required Accelerate versions. A new dependency also means shipping with another package, with a large set of code. While in most cases this is harmless, a package that is used directly on top of our work in place of our existing code, adds a significant amount of bloat for developers and users alike. The requirement shifts from understanding a line of code, to understanding a full codepath behind a line of code, the quality of which cannot be guaranteed by our engineers. +This expands well into the wider topic of dependency management. A package like Accelerate will have frequent updates and changes moving forward, and we will need to ensure consistent compatibility between our training library releases and the required Accelerate versions. A new dependency also means shipping with another package, with a large set of code. While in most cases this is harmless, a package that is used directly on top of our work in place of our existing code, adds a significant amount of bloat for developers and users alike. The requirement shifts from understanding a line of code, to understanding a full code path behind a line of code, the quality of which cannot be guaranteed by our engineers. Ultimately, these risks and overhead management costs make sense for Accelerate, because the package provides significant benefit that far outweigh our concerns. When considering additional HF packages, however, there is currently **no obvious benefit** to their inclusion, which only further annunciates the risks associated. It must be made clear that the risks of Accelerate are non-negligible, and that the conveniences and positive impact provided are what push it over the line of inclusion. It is by no means a "no brainer" to further include any additional HF packages at this time, unless they afford us a similar benefit. From d23a1361c77179ff1afcc212b45abd58fe38c29a Mon Sep 17 00:00:00 2001 From: Mustafa Eyceoz Date: Mon, 7 Oct 2024 12:54:54 -0400 Subject: [PATCH 16/83] Fix linting Signed-off-by: Mustafa Eyceoz --- docs/training/training-accelerate-dep.md | 26 ++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/docs/training/training-accelerate-dep.md b/docs/training/training-accelerate-dep.md index 16cc594c..08fdf9d4 100644 --- a/docs/training/training-accelerate-dep.md +++ b/docs/training/training-accelerate-dep.md @@ -18,14 +18,19 @@ With all this in mind, in order to maintain a simple common codebase, an abstrac ### How it is implemented in code Accelerate usage consists of a single import: + ``` from accelerate import Accelerator ``` + We begin by setting up our accelerator object via our `setup_accelerator` function: + ``` accelerator = setup_accelerator(args, model, grad_accum) ``` + This checks the selected sharding framework, and sets up the appropriate config: + ``` def setup_accelerator(args, model, grad_accum): if args.distributed_training_framework == "deepspeed": @@ -49,7 +54,9 @@ def setup_accelerator(args, model, grad_accum): accelerator.even_batches = False return accelerator ``` + Now this Accelerator object can act as a universal sharding framework config, and we can prepare our training objects accordingly: + ``` model, optimizer, _, lr_scheduler = accelerator.prepare( model, @@ -60,6 +67,7 @@ model, optimizer, _, lr_scheduler = accelerator.prepare( ``` As an additional bonus, the accelerator object allows us to do universal checkpoint saving and resuming as well. For saving model checkpoints, we can simply use: + ``` accelerator.save_model( model, @@ -68,7 +76,9 @@ accelerator.save_model( safe_serialization=True, ) ``` + and to save full state for resuming training, we can use: + ``` accelerator.save_state( output_dir=output_dir, @@ -77,31 +87,36 @@ accelerator.save_state( ``` ## The immediate benefit -The inclusion of Accelerate in this manner drastically simplifies the process of supporting multiple sharding frameworks. Rather than having diverging code paths for model setup, optimizer setup, sharding configuration, distributed initialization, state saving, and model checkpointing, all of these training steps can be supported with the same code. The common abstraction allows us to maintain both DeepSpeed and FSDP, and prepares us for inclusion of additional sharding frameworks. +The inclusion of Accelerate in this manner drastically simplifies the process of supporting multiple sharding frameworks. Rather than having diverging code paths for model setup, optimizer setup, sharding configuration, distributed initialization, state saving, and model checkpointing, all of these training steps can be supported with the same code. The common abstraction allows us to maintain both DeepSpeed and FSDP, and prepares us for inclusion of additional sharding frameworks. ## Impact on overhead + ### Performance + There has been no noticeable performance impact observed during development, but we will defer to the Performance and Scale team for final measurements. ### Usability + This makes the library easier to read, but also requires knowledge of an additional package. While there exists [documentation](https://huggingface.co/docs/accelerate/v1.0.0rc1/en/index), it does require some additional code exploration to actually understand what some functions (like `prepare`, `save_model`, etc.) are doing behind the scenes, making some processes less transparent than if implemented directly with `torch`. While sharding framework code will not need to be reviewed as thoroughly, this does not change the fact that one still needs to understand the configuration options per framework and how they behave. ### Package Management -This inclusion requires one additional python package to be managed as a dependency. Currently, that package is `accelerate==0.34.2` but we plan to immediately upgrade to `accelerate==1.0.0` once it is moved from pre-release to official release. +This inclusion requires one additional python package to be managed as a dependency. Currently, that package is `accelerate==0.34.2` but we plan to immediately upgrade to `accelerate==1.0.0` once it is moved from pre-release to official release. ## Long-Term Bonuses and Risks + The two clearest long-term bonuses are: - - Simplifies the process of onboarding additional sharding frameworks in the future, as well as deprecating existing sharding frameworks - - Vastly improves the readability and maintenance of our code by avoiding diverging paths for various sharding frameworks -There are, however, important risks to be considered. Ultimately, if we are confident that we wish to eventually stick with a single sharding framework in the future and contribute directly to that project, the risks of including Accelerate may outweigh the benefits. Please read the next section carefully to understand why, if Accelerate no longer provides a significant benefit to us, should be removed. +- Simplifies the process of onboarding additional sharding frameworks in the future, as well as deprecating existing sharding frameworks +- Vastly improves the readability and maintenance of our code by avoiding diverging paths for various sharding frameworks +There are, however, important risks to be considered. Ultimately, if we are confident that we wish to eventually stick with a single sharding framework in the future and contribute directly to that project, the risks of including Accelerate may outweigh the benefits. Please read the next section carefully to understand why, if Accelerate no longer provides a significant benefit to us, should be removed. ### Why Stop There? + With the inclusion of a Hugging Face abstraction library, this begs the question "why not keep going and pull in more of the HF stack? Won't it simplify things further then?" It is important to reiterate here the clear downsides of HF Accelerate, and what we wish to avoid moving forward. Accelerate makes our code more opaque, and hinders our ability to easily understand and customize as needed without being reliant upon a third-party dependency. We become reliant upon HF bug fixes, release cycles, and documentation, and without an explicit member of the HF community to manage these for us, this introduces risk that has to be heavily considered. @@ -111,4 +126,3 @@ For example, if we wanted to change how model saving worked, or a user wanted to This expands well into the wider topic of dependency management. A package like Accelerate will have frequent updates and changes moving forward, and we will need to ensure consistent compatibility between our training library releases and the required Accelerate versions. A new dependency also means shipping with another package, with a large set of code. While in most cases this is harmless, a package that is used directly on top of our work in place of our existing code, adds a significant amount of bloat for developers and users alike. The requirement shifts from understanding a line of code, to understanding a full code path behind a line of code, the quality of which cannot be guaranteed by our engineers. Ultimately, these risks and overhead management costs make sense for Accelerate, because the package provides significant benefit that far outweigh our concerns. When considering additional HF packages, however, there is currently **no obvious benefit** to their inclusion, which only further annunciates the risks associated. It must be made clear that the risks of Accelerate are non-negligible, and that the conveniences and positive impact provided are what push it over the line of inclusion. It is by no means a "no brainer" to further include any additional HF packages at this time, unless they afford us a similar benefit. - From f1b078f5e0e8b9dbd1b6a78deae8d37129f01605 Mon Sep 17 00:00:00 2001 From: Mustafa Eyceoz Date: Mon, 7 Oct 2024 13:22:03 -0400 Subject: [PATCH 17/83] Remove duplicate title and add code block languages Signed-off-by: Mustafa Eyceoz --- docs/training/training-accelerate-dep.md | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/docs/training/training-accelerate-dep.md b/docs/training/training-accelerate-dep.md index 08fdf9d4..99626fbb 100644 --- a/docs/training/training-accelerate-dep.md +++ b/docs/training/training-accelerate-dep.md @@ -1,8 +1,3 @@ ---- -title: Design Doc - HF Accelerate - ---- - # Design Proposal - HF Accelerate ## Overview @@ -19,19 +14,19 @@ With all this in mind, in order to maintain a simple common codebase, an abstrac Accelerate usage consists of a single import: -``` +```python from accelerate import Accelerator ``` We begin by setting up our accelerator object via our `setup_accelerator` function: -``` +```python accelerator = setup_accelerator(args, model, grad_accum) ``` This checks the selected sharding framework, and sets up the appropriate config: -``` +```python def setup_accelerator(args, model, grad_accum): if args.distributed_training_framework == "deepspeed": # Third Party @@ -57,7 +52,7 @@ def setup_accelerator(args, model, grad_accum): Now this Accelerator object can act as a universal sharding framework config, and we can prepare our training objects accordingly: -``` +```python model, optimizer, _, lr_scheduler = accelerator.prepare( model, optimizer, @@ -68,7 +63,7 @@ model, optimizer, _, lr_scheduler = accelerator.prepare( As an additional bonus, the accelerator object allows us to do universal checkpoint saving and resuming as well. For saving model checkpoints, we can simply use: -``` +```python accelerator.save_model( model, save_directory=output_dir, @@ -79,7 +74,7 @@ accelerator.save_model( and to save full state for resuming training, we can use: -``` +```python accelerator.save_state( output_dir=output_dir, safe_serialization=True, From f945045f9a3e5a28e7b0b356104e72af41c69840 Mon Sep 17 00:00:00 2001 From: Mustafa Eyceoz Date: Mon, 7 Oct 2024 13:30:22 -0400 Subject: [PATCH 18/83] Update spellcheck word list Signed-off-by: Mustafa Eyceoz --- .spellcheck-en-custom.txt | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 30bd8584..0507a4d9 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -4,6 +4,7 @@ Abhishek Akash AMDGPU Anil +annunciates arge args arXiv @@ -11,7 +12,9 @@ backend backends benchmarking Bhandwaldar +brainer Cappi +checkpointing CLI CLI cli @@ -53,15 +56,17 @@ filesystem Finetuning formedness freeform +FSDP GFX -gguf -ggufs GGUF +gguf GGUFs +ggufs GiB Gmail gpu Guang +hacky hardcode hardcoded hipBLAS @@ -107,7 +112,9 @@ Nvidia OCI Ollama ollama +onboarding OpenStax +optimizers orchestrator ots Params @@ -116,6 +123,7 @@ PEFT Pereira PlantUML PLOS +pluggable PNG POC Podman @@ -136,6 +144,8 @@ README rebase Ren repo +repos +RHEL ROCm RTX runtime @@ -148,6 +158,7 @@ SDG sdg sexualized SHA +sharding Shellcheck Shivchander Signoff From 58a2a4a25bc15b4936d4d007497188bd442bf474 Mon Sep 17 00:00:00 2001 From: Mustafa Eyceoz Date: Mon, 7 Oct 2024 14:44:02 -0400 Subject: [PATCH 19/83] Remove mention of d/s in u/s doc Signed-off-by: Mustafa Eyceoz --- docs/training/training-accelerate-dep.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/training/training-accelerate-dep.md b/docs/training/training-accelerate-dep.md index 99626fbb..9f78fcc6 100644 --- a/docs/training/training-accelerate-dep.md +++ b/docs/training/training-accelerate-dep.md @@ -116,7 +116,7 @@ With the inclusion of a Hugging Face abstraction library, this begs the question It is important to reiterate here the clear downsides of HF Accelerate, and what we wish to avoid moving forward. Accelerate makes our code more opaque, and hinders our ability to easily understand and customize as needed without being reliant upon a third-party dependency. We become reliant upon HF bug fixes, release cycles, and documentation, and without an explicit member of the HF community to manage these for us, this introduces risk that has to be heavily considered. -For example, if we wanted to change how model saving worked, or a user wanted to simply understand how model saving worked, they would no longer be able to do so through our library directly, but instead would need to read HF documentation, and contribute back to HF repos with the hope that the customization is considered generally useful and approved. More niche or experimental customizations may not be approved at all, and would have to be patched in directly or overwritten in a rather hacky manner within our library. This as described is not the most dire of circumstances, as one could argue that if it is not ready to be included upstream, it may not be ready to be included in our library. Where things get more serious, however, is with the introduction of bugs. At this very moment, there is a bug in `v0.34.2` that means FSDP model saving does not behave as expected. This fix is resolved in `v1.0.0rc1`, but there is no official release yet that can be pulled in with this fix. So for RHEL AI 1.2, we are currently maintaining a patch directly in our library to fix the bug while working with `v0.34.2`, and it will sit there temporarily until Accelerate has a new official release. +For example, if we wanted to change how model saving worked, or a user wanted to simply understand how model saving worked, they would no longer be able to do so through our library directly, but instead would need to read HF documentation, and contribute back to HF repos with the hope that the customization is considered generally useful and approved. More niche or experimental customizations may not be approved at all, and would have to be patched in directly or overwritten in a rather hacky manner within our library. This as described is not the most dire of circumstances, as one could argue that if it is not ready to be included upstream, it may not be ready to be included in our library. Where things get more serious, however, is with the introduction of bugs. At this very moment, there is a bug in `v0.34.2` that means FSDP model saving does not behave as expected. This fix is resolved in `v1.0.0rc1`, but there is no official release yet that can be pulled in with this fix. So for instructlab-training `v0.5.x`, we are currently maintaining a patch directly in our library to fix the bug while working with `v0.34.2`, and it will sit there temporarily until Accelerate has a new official release. This expands well into the wider topic of dependency management. A package like Accelerate will have frequent updates and changes moving forward, and we will need to ensure consistent compatibility between our training library releases and the required Accelerate versions. A new dependency also means shipping with another package, with a large set of code. While in most cases this is harmless, a package that is used directly on top of our work in place of our existing code, adds a significant amount of bloat for developers and users alike. The requirement shifts from understanding a line of code, to understanding a full code path behind a line of code, the quality of which cannot be guaranteed by our engineers. From 93b1cd70ed741bcd60fc7c3af3383ff2438589b9 Mon Sep 17 00:00:00 2001 From: Mustafa Eyceoz Date: Mon, 7 Oct 2024 15:13:09 -0400 Subject: [PATCH 20/83] Apply review feedback Signed-off-by: Mustafa Eyceoz --- .spellcheck-en-custom.txt | 1 - docs/training/training-accelerate-dep.md | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 0507a4d9..8921edf4 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -4,7 +4,6 @@ Abhishek Akash AMDGPU Anil -annunciates arge args arXiv diff --git a/docs/training/training-accelerate-dep.md b/docs/training/training-accelerate-dep.md index 9f78fcc6..53acd251 100644 --- a/docs/training/training-accelerate-dep.md +++ b/docs/training/training-accelerate-dep.md @@ -89,7 +89,7 @@ The inclusion of Accelerate in this manner drastically simplifies the process of ### Performance -There has been no noticeable performance impact observed during development, but we will defer to the Performance and Scale team for final measurements. +There has been no noticeable performance impact observed during development, but we will defer to the final measurements seen from comprehensive performance testing and benchmarking. ### Usability @@ -120,4 +120,4 @@ For example, if we wanted to change how model saving worked, or a user wanted to This expands well into the wider topic of dependency management. A package like Accelerate will have frequent updates and changes moving forward, and we will need to ensure consistent compatibility between our training library releases and the required Accelerate versions. A new dependency also means shipping with another package, with a large set of code. While in most cases this is harmless, a package that is used directly on top of our work in place of our existing code, adds a significant amount of bloat for developers and users alike. The requirement shifts from understanding a line of code, to understanding a full code path behind a line of code, the quality of which cannot be guaranteed by our engineers. -Ultimately, these risks and overhead management costs make sense for Accelerate, because the package provides significant benefit that far outweigh our concerns. When considering additional HF packages, however, there is currently **no obvious benefit** to their inclusion, which only further annunciates the risks associated. It must be made clear that the risks of Accelerate are non-negligible, and that the conveniences and positive impact provided are what push it over the line of inclusion. It is by no means a "no brainer" to further include any additional HF packages at this time, unless they afford us a similar benefit. +Ultimately, these risks and overhead management costs make sense for Accelerate, because the package provides significant benefit that far outweigh our concerns. When considering additional HF packages, however, there is currently **no obvious benefit** to their inclusion, which only further enunciates the risks associated. It must be made clear that the risks of Accelerate are non-negligible, and that the conveniences and positive impact provided are what push it over the line of inclusion. It is by no means a "no brainer" to further include any additional HF packages at this time, unless they afford us a similar benefit. From 30d590361f965183a996c4c124ee03ecb7630383 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 09:24:26 +0000 Subject: [PATCH 21/83] Bump actions/checkout from 4.2.0 to 4.2.1 Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/d632683dd7b4114ad314bca15554477dd762a938...eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/actionlint.yml | 2 +- .github/workflows/docs.yml | 2 +- .github/workflows/spellcheck.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml index 33ad8b40..5fe9ce18 100644 --- a/.github/workflows/actionlint.yml +++ b/.github/workflows/actionlint.yml @@ -35,7 +35,7 @@ jobs: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: fetch-depth: 0 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e034f2ba..d778c928 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -37,7 +37,7 @@ jobs: with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: fetch-depth: 0 - name: "Check Markdown documents" diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 4c0f854b..c4450caa 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -37,7 +37,7 @@ jobs: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: fetch-depth: 0 From b9e057b9049c31dc1492b448c3d169748d5bab49 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 09:23:59 +0000 Subject: [PATCH 22/83] Bump rojopolis/spellcheck-github-actions from 0.42.0 to 0.43.0 Bumps [rojopolis/spellcheck-github-actions](https://github.com/rojopolis/spellcheck-github-actions) from 0.42.0 to 0.43.0. - [Release notes](https://github.com/rojopolis/spellcheck-github-actions/releases) - [Changelog](https://github.com/rojopolis/spellcheck-github-actions/blob/master/CHANGELOG.md) - [Commits](https://github.com/rojopolis/spellcheck-github-actions/compare/b83ca7c1b5c285e4f2b43e209a455c74872ec341...7ff888c45ba73d66b3a180963706715897f41684) --- updated-dependencies: - dependency-name: rojopolis/spellcheck-github-actions dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/spellcheck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index c4450caa..8d03ff80 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -42,4 +42,4 @@ jobs: fetch-depth: 0 - name: Spellcheck - uses: rojopolis/spellcheck-github-actions@b83ca7c1b5c285e4f2b43e209a455c74872ec341 # v0.42.0 + uses: rojopolis/spellcheck-github-actions@7ff888c45ba73d66b3a180963706715897f41684 # v0.43.0 From bba176fc8b9333591ee18bee6958fa420632f070 Mon Sep 17 00:00:00 2001 From: Anastas Stoyanovsky Date: Thu, 10 Oct 2024 19:18:41 -0400 Subject: [PATCH 23/83] Fix link to governance documentation in README.md Signed-off-by: Anastas Stoyanovsky --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 936a9712..660711e1 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ for technical policies that apply across all components. ## Governance Governance for InstructLab overall is documented in the [community -repository](https://github.com/instructlab/community/blob/main/governance.md). +repository](https://github.com/instructlab/community/blob/main/GOVERNANCE.md). The [InstructLab Oversight Committee](https://github.com/instructlab/community/blob/main/MAINTAINERS.md) is From 0222d40b7fc5f604e073d6ef61f5398de018895f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Oct 2024 09:43:57 +0000 Subject: [PATCH 24/83] Bump rojopolis/spellcheck-github-actions from 0.43.0 to 0.43.1 Bumps [rojopolis/spellcheck-github-actions](https://github.com/rojopolis/spellcheck-github-actions) from 0.43.0 to 0.43.1. - [Release notes](https://github.com/rojopolis/spellcheck-github-actions/releases) - [Changelog](https://github.com/rojopolis/spellcheck-github-actions/blob/master/CHANGELOG.md) - [Commits](https://github.com/rojopolis/spellcheck-github-actions/compare/7ff888c45ba73d66b3a180963706715897f41684...d5aba66a94528674ea744124f9ebcfd55e945836) --- updated-dependencies: - dependency-name: rojopolis/spellcheck-github-actions dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/spellcheck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 8d03ff80..08fe9385 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -42,4 +42,4 @@ jobs: fetch-depth: 0 - name: Spellcheck - uses: rojopolis/spellcheck-github-actions@7ff888c45ba73d66b3a180963706715897f41684 # v0.43.0 + uses: rojopolis/spellcheck-github-actions@d5aba66a94528674ea744124f9ebcfd55e945836 # v0.43.1 From b75924bf0735ba2c2f4bfa0c1c16b8fb02f33f6a Mon Sep 17 00:00:00 2001 From: Nathan Weinberg Date: Thu, 1 Aug 2024 11:43:29 -0400 Subject: [PATCH 25/83] docs: add document detailing release strategy for libraries Signed-off-by: Nathan Weinberg --- .spellcheck-en-custom.txt | 2 ++ docs/library-release-strategy.md | 36 ++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 docs/library-release-strategy.md diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 8921edf4..5b57c755 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -63,6 +63,7 @@ GGUFs ggufs GiB Gmail +GPTDolomite gpu Guang hacky @@ -155,6 +156,7 @@ safetensors Salawu SDG sdg +semvar sexualized SHA sharding diff --git a/docs/library-release-strategy.md b/docs/library-release-strategy.md new file mode 100644 index 00000000..cd3ab8fb --- /dev/null +++ b/docs/library-release-strategy.md @@ -0,0 +1,36 @@ +# Library Release Strategy for InstructLab + +This document describes the overarching release strategy and policies for Python libraries in the InstructLab organization. + +## Background and Problem Statement + +The InstructLab organization features multiple code repositories that are tagged and released as Python libraries. +Primarily this has been the [CLI repository](https://github.com/instructlab/instructlab) but has grown over time, +including but not limited to: + +- [sdg](https://github.com/instructlab/sdg) +- [training](https://github.com/instructlab/training) +- [eval](https://github.com/instructlab/eval) +- [schema](https://github.com/instructlab/schema) +- [GPTDolomite](https://github.com/instructlab/GPTDolomite) +- [instructlab-quantize](https://github.com/instructlab/instructlab-quantize) + +You can see the published versions of these libraries on PyPI [here](https://pypi.org/search/?q=instructlab). + +While these libraries are all owned and maintained by the InstructLab organization, only the CLI has an official +[release strategy](https://github.com/instructlab/instructlab/blob/main/docs/release-strategy.md) documented. Other library +releases have been handled directly by the Maintainer teams at their own discretion. The organization needs to have certain +overarching principals around this topic, while still allowing for flexibility for each library on case-by-case basis. + +## Proposal + +By default, each existing and new library should have the following a `release-strategy.md` aligned with the CLI doc. This proposal recognizes that certain libraries may need flexibility +on case-by-case basis - therefore, Maintainer teams are empowered to modify these documents as they see fit, so long as the +following tenants remain consistent: + +1. Packages **must** be named `instructlab-` +1. Packages **must** follow the `X.Y.Z` numbering scheme (i.e. [semvar](https://semver.org/)) +1. Packages **must** have GitHub tagged releases named `vX.Y.Z` +1. Packages **must** use release branches for Y-Streams of the form `release-vX.Y` +1. Packages **must** maintain a `CHANGELOG.md` +1. Maintainer teams **must** publicly communicate Y-Stream releases through official InstructLab channels such as Slack or Mailing Lists. Z-Stream release communication is up to Maintainer discretion. From e0f199bffdcf8f9204650e0e24c21346efa68f6a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 24 Oct 2024 09:49:38 +0000 Subject: [PATCH 26/83] Bump actions/checkout from 4.2.1 to 4.2.2 Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.1 to 4.2.2. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871...11bd71901bbe5b1630ceea73d27597364c9af683) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/actionlint.yml | 2 +- .github/workflows/docs.yml | 2 +- .github/workflows/spellcheck.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml index 5fe9ce18..1d74d0dd 100644 --- a/.github/workflows/actionlint.yml +++ b/.github/workflows/actionlint.yml @@ -35,7 +35,7 @@ jobs: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index d778c928..79e1ac6b 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -37,7 +37,7 @@ jobs: with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 - name: "Check Markdown documents" diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 08fe9385..7d1f1972 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -37,7 +37,7 @@ jobs: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 From 7974ea701f95e9583c3c544c3dfde042acd2f2ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:43:38 +0000 Subject: [PATCH 27/83] Bump rojopolis/spellcheck-github-actions from 0.43.1 to 0.44.0 Bumps [rojopolis/spellcheck-github-actions](https://github.com/rojopolis/spellcheck-github-actions) from 0.43.1 to 0.44.0. - [Release notes](https://github.com/rojopolis/spellcheck-github-actions/releases) - [Changelog](https://github.com/rojopolis/spellcheck-github-actions/blob/master/CHANGELOG.md) - [Commits](https://github.com/rojopolis/spellcheck-github-actions/compare/d5aba66a94528674ea744124f9ebcfd55e945836...74c2a1451c617e7dd9532340b199e18d5411b168) --- updated-dependencies: - dependency-name: rojopolis/spellcheck-github-actions dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/spellcheck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 7d1f1972..91b523a8 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -42,4 +42,4 @@ jobs: fetch-depth: 0 - name: Spellcheck - uses: rojopolis/spellcheck-github-actions@d5aba66a94528674ea744124f9ebcfd55e945836 # v0.43.1 + uses: rojopolis/spellcheck-github-actions@74c2a1451c617e7dd9532340b199e18d5411b168 # v0.44.0 From 3130f28e6a3858eba7bde905be4416e6fe3ff352 Mon Sep 17 00:00:00 2001 From: Nathan Weinberg Date: Tue, 29 Oct 2024 15:56:24 -0400 Subject: [PATCH 28/83] stalebot: reduce amount of time for PR to turn stale Signed-off-by: Nathan Weinberg --- .github/workflows/stale_bot.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/stale_bot.yml b/.github/workflows/stale_bot.yml index f380ad91..2c5bd575 100644 --- a/.github/workflows/stale_bot.yml +++ b/.github/workflows/stale_bot.yml @@ -36,7 +36,7 @@ jobs: with: stale-issue-label: 'stale' stale-issue-message: > - This issue has been automatically marked as stale because it has not had activity within 90 days. + This issue has been automatically marked as stale because it has not had activity within 60 days. It will be automatically closed if no further activity occurs within 30 days. close-issue-message: > This issue has been automatically closed due to inactivity. Please feel free to reopen if you feel it is still relevant! @@ -44,9 +44,9 @@ jobs: days-before-issue-close: 30 stale-pr-label: 'stale' stale-pr-message: > - This pull request has been automatically marked as stale because it has not had activity within 90 days. - It will be automatically closed if no further activity occurs within 30 days. + This pull request has been automatically marked as stale because it has not had activity within 30 days. + It will be automatically closed if no further activity occurs within 7 days. close-pr-message: > This pull request has been automatically closed due to inactivity. Please feel free to reopen if you intend to continue working on it! - days-before-pr-stale: 60 - days-before-pr-close: 30 + days-before-pr-stale: 30 + days-before-pr-close: 7 From 77b76cffdaf1c6c272e6f44af0d3837c8aabb20a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 09:13:34 +0000 Subject: [PATCH 29/83] Bump rhysd/actionlint from 1.7.3 to 1.7.4 in /.github/workflows Bumps rhysd/actionlint from 1.7.3 to 1.7.4. --- updated-dependencies: - dependency-name: rhysd/actionlint dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/actionlint.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actionlint.dockerfile b/.github/workflows/actionlint.dockerfile index 6f171d53..9de2e84a 100644 --- a/.github/workflows/actionlint.dockerfile +++ b/.github/workflows/actionlint.dockerfile @@ -1,3 +1,3 @@ # Since dependabot cannot update workflows using docker, # we use this indirection since dependabot can update this file. -FROM rhysd/actionlint:1.7.3@sha256:7617f05bd698cd2f1c3aedc05bc733ccec92cca0738f3e8722c32c5b42c70ae6 +FROM rhysd/actionlint:1.7.4@sha256:82244e1db1c60d82c7792180a48dd0bcb838370bb589d53ff132503fc9485868 From 095efd2b0209e4989a8e9b72b3d2cfa70560698e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 10:04:56 +0000 Subject: [PATCH 30/83] Bump rojopolis/spellcheck-github-actions from 0.44.0 to 0.45.0 Bumps [rojopolis/spellcheck-github-actions](https://github.com/rojopolis/spellcheck-github-actions) from 0.44.0 to 0.45.0. - [Release notes](https://github.com/rojopolis/spellcheck-github-actions/releases) - [Changelog](https://github.com/rojopolis/spellcheck-github-actions/blob/master/CHANGELOG.md) - [Commits](https://github.com/rojopolis/spellcheck-github-actions/compare/74c2a1451c617e7dd9532340b199e18d5411b168...403efe0642148e94ecb3515e89c767b85a32371a) --- updated-dependencies: - dependency-name: rojopolis/spellcheck-github-actions dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/spellcheck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 91b523a8..32b02123 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -42,4 +42,4 @@ jobs: fetch-depth: 0 - name: Spellcheck - uses: rojopolis/spellcheck-github-actions@74c2a1451c617e7dd9532340b199e18d5411b168 # v0.44.0 + uses: rojopolis/spellcheck-github-actions@403efe0642148e94ecb3515e89c767b85a32371a # v0.45.0 From 984af494ed45c3b49eb03882e805b398c3053e76 Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Thu, 14 Nov 2024 16:27:41 -0500 Subject: [PATCH 31/83] Create sdg-refactor.md Signed-off-by: Bill Murdock --- docs/sdg/sdg-refactor.md | 136 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 docs/sdg/sdg-refactor.md diff --git a/docs/sdg/sdg-refactor.md b/docs/sdg/sdg-refactor.md new file mode 100644 index 00000000..8ad5c1b6 --- /dev/null +++ b/docs/sdg/sdg-refactor.md @@ -0,0 +1,136 @@ +# Refactor preprocessing and postprocessing in SDG + +## Context + +The existing synthetic data generation (SDG) repository includes several related pieces of functionality: + +- Traverse an InstructLab taxonomy to identify unstaged qna.yaml files to generate data from. +- From each qna.yaml file, extract the example context/question/answer tuples for use as seed data. +- From each *knowledge* qna.yaml file, also fetch the document referenced by this file. Use [Docling](https://github.com/DS4SD/docling) to convert the file to a JSON format and then split the file into chunks that are small enough to be used as contexts for synthetic data generation. +- *Given the seed data and the document chunks if any, generate additional synthetic context/question/answer tuples.* +- Mix the outputs with some pre-computed data sets when applicable +- Split the data into train and test + +Of all of these, only the one emphasized (*Given the seed data ... generate ... tuples*) is core SDG functionality. The others are essentially preprocessing and postprocessing steps to enable the core SDG functionality and produce outputs useable for future steps. In the current flow, preprocessing has a taxonomy with some new seed data added to it as input. The output of preprocessing includes a set of context/question/answer tuples for both knowledge and skill taxonomy nodes. For knowledge taxonomy nodes it also includes a set of document chunks. SDG uses the context/question/answer tuples as seed examples, and it uses the document chunks (if there are any) as example contexts from which to generate additional data. That additional data is then sent to the postprocessing step to produce the final outputs. + +We have heard that some users want a stand-alone SDG capability that includes only the core SDG functionality. Specifically, they already have a set of seed context/question/answer tuples and optionallly a set of document chunks. All they want from SDG is to take that input and produce an new sythetic data set as output without doing any mixing into pre-computed data or splitting into train and test. The preprocessing and postprocessing capabilities currently in SDG are not relevant to those users. + +Also as context, in the near future we are absorbing a set of updates to the core SDG functionality to make it more modularized and flexible. That might turn out to be irrelevant to this document which is focused on what to do with the non-core functionality (preprocessing and postprocessing). However, it is mentioned here in the context section in case that context winds up being useful. + +Furthermore, in 2025 we are hoping to have some sort of retrieval-augmented generation (RAG) capability that is either part of or tightly integrated with InstructLab. Such a capability would have signficant overlap with the functionality of the preprocessing for SDG. As noted above, when a taxonomy has a knowledge qna.yaml file that references a document, SDG uses Docling to convert the file to JSON and then splits the file into chunks of appropriate size for SDG. The RAG capability would _also_ want the same Docling JSON output but would need to split it into chunks that are sized appropriately for vector retrieval (i.e., that fit within the context window of the semantic encoding model). + +## Question 1: What user flows should be supported? + +Here are some user flows that seem like they might be valuable: + +1. User installs the full InstructLab (CLI and/or GUI). They want any of the following using CLI or GUI interactions: + - 1.1. They have a taxonomy with some new seed data they added to it. They want to run the full pipeline including SDG and model training and evaluation. + - 1.2. They have a taxonomy with some new seed data they added to it. They want to run SDG and then evaluate an existing model on the outputs of that SDG. + - 1.3. They have a taxonomy with some new seed data they added to it. They want to run SDG only. + - 1.3.1. They also want to see the _inputs_ to SDG that get extracted from the taxonomy (i.e., a set of seed context/question/answer tuples and optionallly a set of document chunks). + - 1.3.2. Alternatively, maybe they _only_ want to see the _inputs_ to SDG -- they don't actually want to run SDG. + - 1.4. They have a set of seed context/question/answer tuples and optionallly a set of document chunks. They want to run the full pipeline including SDG and model training and evaluation. + - 1.5. They have a set of seed context/question/answer tuples and optionallly a set of document chunks. They want to run SDG and then evaluate an existing model on the outputs of that SDG. + - 1.6. They have a set of seed context/question/answer tuples and optionallly a set of document chunks. They want to run SDG only. +2. User installs the SDG library only. They want to invoke any of the following as a library call from code they write: + - 2.1. They have a taxonomy with some new seed data they added to it. They want to run SDG only without any postprocessing. + - 2.2. They have a set of seed context/question/answer tuples and optionallly a set of document chunks. They want to run SDG only without any postprocessing. + +If I understand the guidance from our PM (William Caban), the flows we are being asked to support here are 1.1., 1.2., 1.3, 1.3.1, and 2.2. However, I am not sure that I understand the guidance. Are we confident that we _do_ want to support those flows and do not want to support any of the others? More specifically, do we think the users who want 2.2 might be satisfied with 1.6 instead? Both of those are SDG-only flows, but the latter is more developer focused and the former is more business-user focused. Also, are we really confident that all of the "SDG only" customers really want to do their own document chunking? Might there be some customers that have seed context/question/answer tuples and _documents_ and want us to chunk the documents for them? + +Also note, that for all of the flows above that start with "they have a taxonomy", there are open questions around the complexity of the taxonomy format. Some users want to be able to provide seed data and documents without explicitly or implicitly extending some sort of base taxonomy. If we had something simpler than the existing taxonomy format that still included some way to specify context/question/answer tuples and references to full documents (i.e., not _chunks_), would we even call that a taxonomy or would it be something else? If we call it something else, then some or all of the flows that take in a taxonomy might also be applicable for that something else. For the remainder of this document, however, we will assume that any sort of simplified/easier-to-use variant of a taxonomy will also be called a "taxonomy". + +## Question 2: What should the commands be in the CLI? + +One way to support both 1.3.1 and 1.3.2 would be to have separate CLI commands for the preprocessing, core SDG, and postprocessing step . Alternatively, a single CLI command that does all of these and also saves the outputs of preprocessing to disk would support 1.3.1 but _not_ 1.3.2. Even if we only want to support 1.3.1, having separate CLI commands for each step might be desirable because it is just more intuitive that if a user wants to save the outputs of preprocessing to disk to have a command to do that instead of having it be a "side effect" of an omnibus SDG command. Here is a rough outline of what the separate commands would be: + +- `ilab data prep` would handle all the preprocessing (the first three bullets in the Context section above, plus any additional preprocessing we add in the future). +- `ilab data generate` would take as input some data in the same format that `ilab data prep` produces and would run the core synthetic data generation *only*. Note that this is a breaking change from the current behavior of `ilab data generate`, but that may be acceptable because the user base is still small. +- `ilab data process` would take as input some data in the same format that `ilab data generate` produces and would run the postprocessing (the last two bullets in the Context section above, plus any additional postprocessing we add in the future). + +Detailed technical specifications for these commands are outside the scope of this document and should appear in a future document instead. + +## Question 3: Where should the preprocessing and postprocessing code go? + +As noted earlier, currently the preprocessing and postprocessing code is in the SDG library. Here are some options for what to do with it. + +### Option 1: Leave preprocessing and postprocessing in SDG + +Currently there is no documentation that I know of that explains how to do 2.1 or 2.2 (or anything else, really) with the SDG library by itself. However, with some additional documenting and _maybe_ some refactoring, it should be feasible to support both 2.1 and 2.2 in SDG. With that said, if 2.1 is not needed and 2.2 is, then it would _also_ be possible to move the preprocessing and postprocessing code out of SDG. Some pros and cons of leaving in SDG: + +Pro: + +- Future changes to the input format for preprocessing and/or the output format for postprocessing (e.g., adding more expressive power to the taxonomy format) require changes to the core SDG *and* the preprocssing/postprocessing. That's easier to do if they are in the same repository because they can be done in a single PR instead of multiple PRs that need to be coordinated. +- It is simpler to leave things where they are. +- If we're not totally sure which of the options we want, then it might make more sense to stick with this option for now since it avoids doing a work to move preprocessing and postprocessing *now* that could then be followed by more work to move preprocessing and postprocessing *again* after we decide where it goes. + +Con: + +- The core logic of SDG is inherently complex and represents some of the most sophisticated and differentiating elements of InstructLab. For that reason, it would be nice to have it in its own repository by itself. New contributors to that core logic find it challenging enough to navigate the core functionality without having to also figure out where the core logic starts and the preprocessing and postprocessing capabilities end. This could be mitigated by having better technical documentation (README, comments) for the SDG library. +- As noted in the Context section earlier, in the near future we are absorbing a set of updates to the core SDG functionality. Absorbing those updates is somewhat simpler if the core SDG logic is all alone in a repository of its own. +- Keeping interconnected components in the same repository provides less pressure to consistently document the API contracts between them. We certainly _could_ have well documented API contracts for preprocessing and postprocessing and core SDG functionality that makes it clear how they interact even when both of these exist in the same repository, but it is probably more likely that we _will_ do so if they are separated. +- The logic behind the core SDG algorithms are mainly developed and maintained by the Red Hat AI Innovations team (commonly referred to as the "research" team because many people on that team used to work for IBM Research) while the logic behind the preprocessing and postprocessing is mainly developed and maintained by the Red Hat AI engineering "data" team. Having multiple teams working on a component increases the amount of coordination required. Note, however, that preprocessing, postprocessing and core SDG all belong to the entire InstructLab commmunity and *not* Red Hat (much less any one team in Red Hat). So the teams really need to keep collaborating with the entire community at all times and not get into a mindset of "owning" a single piece of code. +- The ezxpected RAG functionality in 2025 will have some complex interactions with both preprocessing and postprocessing, perhaps even involving user flows in which the core SDG functionality is not needed. In that case, it would be confusing to have the code path for RAG include a call out to the SDG library for doing preprocessing but not actually doing the core SDG. +- It would just be simpler to explain to all stakeholders if the functionality that I've been calling "core SDG" was really just called "SDG". We can't do that now because the SDG library has preprocessing and postprocessing in it too. + +Conclusion: + +- While the cons here are substantial, so are the pros. None of the cons really seem disqualifying. The first pro (future changes to the formats can be more self-contained) seems particularly compelling because this is a rapidly evolving field and adding new expressive power seems like something we will want frequently. + +### Option 2: Move preprocessing and postprocessing into a new repository + +We could have a new repository for preprocessing and postprocessing and move all the preprocessing and postprocessing code there. + +Pro: + +- Avoids all the cons of Option 1. +- Preprocessing and postprocessing are a coherent pieces of functionality that *could* have their own library (or libraries, FWIW). + +Cons: + +- Avoids all the pros of Option 1. +- Having a separate repository with its own library brings in an enormous amount of overhead in maintaining that repository (e.g., CI/CD). +- Having a separate repository with its own library also brings in an enormous amount of overhead in maintaining the CLI repository's dependency on all of those libraries. +- Does not allow user flow 2.1 but maybe that's OK because it is not a priority and anyway the users could approximate that flow by also installing the ingestion library. + +Conclusion: + +- The cost of having a separate reposity is so high that we would only consider this option as a last resort. + +### Option 3: Move preprocessing and postprocessing into the CLI repository + +Pro: + +- The CLI already has a lot of "supporting" (non-core) functionality, so it would respect established precedent to include preprocessing and/or postprocessing here. +- Supporting user flow 1.3.2 requires separate CLI commands for preprocessing and core SDG. This is slightly simpler if preprocessing is implemented in CLI. If preprocessing remains in the SDG library instead then the CLI would need to make _separate_ calls to the SDG library for preprocessing and core SDG to support user flow 1.3.2. That adds a little complexity. +- Avoids some of the cons of Option 1, but see below for some overlap. +- Avoids some of the cons of Option 2, but see below for some overlap. + +Con: + +- Avoids the pros of both Option 1 and Option 2. +- As with Option 1, this approach involves a lot of coordination. There are a lot of stakehoders involved in the CLI and locating preprocessing and postprocessing there drags those stakeholders into issues relating to preprocessing and postprocessing. However, as with Option 1, coordinating across stakeholders is something an open source project needs to do well anyway to remain engaged with the community. +- As with Option 1, this approach suffers from the fact that keeping interconnected components in the same repository provides less pressure to consistently document the API contracts between them. In the case of Option 1, the interconnected components that would not have as much pressure to be documented would be preprocessing/postprocessing and core SDG. In the case of Option 3, the interconnected components that would not have as much pressure to be documented would be the CLI and preprocessing/postprocessing. However, in both cases, this con could be alleviated by just having the discipline to document the APIs well even without such pressure. +- As with Option 2, this approach would not enable user flow 2.1. Maybe that's fine since it is not on our requirements list. + +Conclusion: + +- This seems like a reasonable option. The cons are mostly manageable. However, overall the pros of Option 1 seem more compelling. + +### Option 4: Preprocessing and postprocessing go to different locations + +We could also mix and match any of the above options separately for preprocessing and postprocessing. For example, preprocessing could move to the CLI repo and postprocessing could stay in the SDG repo. Or preprocessing could move to a new repository and postprocessing could move to a different new repository or the _same_ new repository. Enumerating all possible permutations of where each could go and enumerating pros and cons of each of them would make this document unbearably long. If anyone wants to advocate for a small number of specific permutations, we will add them to this document. + +## Question 4: Should preprocessing, postprocessing, and core SDG be separate Python packages? + +If we choose Option 1 (leave preprocessing and postprocessing in SDG) then we still have the option to separate them into distinct Python packages. That would get us some of the benefits of Option 2 (moving them to a different repository) while avoiding *some* of the costs of Option 2. In particular, it would make the boundaries clearer and put more pressure on the developers of preprocessing, postprocessing, and core SDG to have well documented contracts for how each of these elements interact. With that said, it would also bring in some additional complexity and increase the amount of work involved. + +## Decisions + +Since this is a draft, no decisions are made yet. However, here are the current draft decisions: + +- We will support the following user flows: 1.1., 1.2., 1.3, 1.3.1, 1.3.2, 2.1, and 2.1 as documented in the Question 1 section above. +- We will adopt the updates to the CLI that will be documented in Question 2 above. +- We will leave the preprocessing in SDG as described in Question 3: Option 1. +- We will leave the postprocessing in SDG as described in Question 3: Option 1. +- We will not separate preprocessing, postprocessing, and SDG into separate packages. From 36f4cebb33d2d1e6f58e0ed45b7a7a470ad0377d Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Thu, 14 Nov 2024 16:57:00 -0500 Subject: [PATCH 32/83] Fix linting and spelling errors Signed-off-by: Bill Murdock --- docs/sdg/sdg-refactor.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/sdg/sdg-refactor.md b/docs/sdg/sdg-refactor.md index 8ad5c1b6..4fd555b6 100644 --- a/docs/sdg/sdg-refactor.md +++ b/docs/sdg/sdg-refactor.md @@ -11,13 +11,13 @@ The existing synthetic data generation (SDG) repository includes several related - Mix the outputs with some pre-computed data sets when applicable - Split the data into train and test -Of all of these, only the one emphasized (*Given the seed data ... generate ... tuples*) is core SDG functionality. The others are essentially preprocessing and postprocessing steps to enable the core SDG functionality and produce outputs useable for future steps. In the current flow, preprocessing has a taxonomy with some new seed data added to it as input. The output of preprocessing includes a set of context/question/answer tuples for both knowledge and skill taxonomy nodes. For knowledge taxonomy nodes it also includes a set of document chunks. SDG uses the context/question/answer tuples as seed examples, and it uses the document chunks (if there are any) as example contexts from which to generate additional data. That additional data is then sent to the postprocessing step to produce the final outputs. +Of all of these, only the one emphasized (*Given the seed data ... generate ... tuples*) is core SDG functionality. The others are essentially preprocessing and postprocessing steps to enable the core SDG functionality and produce outputs usable for future steps. In the current flow, preprocessing has a taxonomy with some new seed data added to it as input. The output of preprocessing includes a set of context/question/answer tuples for both knowledge and skill taxonomy nodes. For knowledge taxonomy nodes it also includes a set of document chunks. SDG uses the context/question/answer tuples as seed examples, and it uses the document chunks (if there are any) as example contexts from which to generate additional data. That additional data is then sent to the postprocessing step to produce the final outputs. -We have heard that some users want a stand-alone SDG capability that includes only the core SDG functionality. Specifically, they already have a set of seed context/question/answer tuples and optionallly a set of document chunks. All they want from SDG is to take that input and produce an new sythetic data set as output without doing any mixing into pre-computed data or splitting into train and test. The preprocessing and postprocessing capabilities currently in SDG are not relevant to those users. +We have heard that some users want a stand-alone SDG capability that includes only the core SDG functionality. Specifically, they already have a set of seed context/question/answer tuples and optionallly a set of document chunks. All they want from SDG is to take that input and produce an new synthetic data set as output without doing any mixing into pre-computed data or splitting into train and test. The preprocessing and postprocessing capabilities currently in SDG are not relevant to those users. Also as context, in the near future we are absorbing a set of updates to the core SDG functionality to make it more modularized and flexible. That might turn out to be irrelevant to this document which is focused on what to do with the non-core functionality (preprocessing and postprocessing). However, it is mentioned here in the context section in case that context winds up being useful. -Furthermore, in 2025 we are hoping to have some sort of retrieval-augmented generation (RAG) capability that is either part of or tightly integrated with InstructLab. Such a capability would have signficant overlap with the functionality of the preprocessing for SDG. As noted above, when a taxonomy has a knowledge qna.yaml file that references a document, SDG uses Docling to convert the file to JSON and then splits the file into chunks of appropriate size for SDG. The RAG capability would _also_ want the same Docling JSON output but would need to split it into chunks that are sized appropriately for vector retrieval (i.e., that fit within the context window of the semantic encoding model). +Furthermore, in 2025 we are hoping to have some sort of retrieval-augmented generation (RAG) capability that is either part of or tightly integrated with InstructLab. Such a capability would have significant overlap with the functionality of the preprocessing for SDG. As noted above, when a taxonomy has a knowledge qna.yaml file that references a document, SDG uses Docling to convert the file to JSON and then splits the file into chunks of appropriate size for SDG. The RAG capability would *also* want the same Docling JSON output but would need to split it into chunks that are sized appropriately for vector retrieval (i.e., that fit within the context window of the semantic encoding model). ## Question 1: What user flows should be supported? @@ -27,8 +27,8 @@ Here are some user flows that seem like they might be valuable: - 1.1. They have a taxonomy with some new seed data they added to it. They want to run the full pipeline including SDG and model training and evaluation. - 1.2. They have a taxonomy with some new seed data they added to it. They want to run SDG and then evaluate an existing model on the outputs of that SDG. - 1.3. They have a taxonomy with some new seed data they added to it. They want to run SDG only. - - 1.3.1. They also want to see the _inputs_ to SDG that get extracted from the taxonomy (i.e., a set of seed context/question/answer tuples and optionallly a set of document chunks). - - 1.3.2. Alternatively, maybe they _only_ want to see the _inputs_ to SDG -- they don't actually want to run SDG. + - 1.3.1. They also want to see the inputs to SDG that get extracted from the taxonomy (i.e., a set of seed context/question/answer tuples and optionallly a set of document chunks). + - 1.3.2. Alternatively, maybe they only want to see the inputs to SDG -- they don't actually want to run SDG. - 1.4. They have a set of seed context/question/answer tuples and optionallly a set of document chunks. They want to run the full pipeline including SDG and model training and evaluation. - 1.5. They have a set of seed context/question/answer tuples and optionallly a set of document chunks. They want to run SDG and then evaluate an existing model on the outputs of that SDG. - 1.6. They have a set of seed context/question/answer tuples and optionallly a set of document chunks. They want to run SDG only. @@ -36,13 +36,13 @@ Here are some user flows that seem like they might be valuable: - 2.1. They have a taxonomy with some new seed data they added to it. They want to run SDG only without any postprocessing. - 2.2. They have a set of seed context/question/answer tuples and optionallly a set of document chunks. They want to run SDG only without any postprocessing. -If I understand the guidance from our PM (William Caban), the flows we are being asked to support here are 1.1., 1.2., 1.3, 1.3.1, and 2.2. However, I am not sure that I understand the guidance. Are we confident that we _do_ want to support those flows and do not want to support any of the others? More specifically, do we think the users who want 2.2 might be satisfied with 1.6 instead? Both of those are SDG-only flows, but the latter is more developer focused and the former is more business-user focused. Also, are we really confident that all of the "SDG only" customers really want to do their own document chunking? Might there be some customers that have seed context/question/answer tuples and _documents_ and want us to chunk the documents for them? +If I understand the guidance from our product management, the flows that our users want us to support here are 1.1., 1.2., 1.3, 1.3.1, and 2.2. However, I am not sure that I understand the guidance. Are we confident that we do want to support those flows and do not want to support any of the others? More specifically, do we think the users who want 2.2 might be satisfied with 1.6 instead? Both of those are SDG-only flows, but the latter is more developer focused and the former is more business-user focused. Also, are we really confident that all of the "SDG only" customers really want to do their own document chunking? Might there be some customers that have seed context/question/answer tuples and documents and want us to chunk the documents for them? -Also note, that for all of the flows above that start with "they have a taxonomy", there are open questions around the complexity of the taxonomy format. Some users want to be able to provide seed data and documents without explicitly or implicitly extending some sort of base taxonomy. If we had something simpler than the existing taxonomy format that still included some way to specify context/question/answer tuples and references to full documents (i.e., not _chunks_), would we even call that a taxonomy or would it be something else? If we call it something else, then some or all of the flows that take in a taxonomy might also be applicable for that something else. For the remainder of this document, however, we will assume that any sort of simplified/easier-to-use variant of a taxonomy will also be called a "taxonomy". +Also note, that for all of the flows above that start with "they have a taxonomy", there are open questions around the complexity of the taxonomy format. Some users want to be able to provide seed data and documents without explicitly or implicitly extending some sort of base taxonomy. If we had something simpler than the existing taxonomy format that still included some way to specify context/question/answer tuples and references to full documents (i.e., not *chunks*), would we even call that a taxonomy or would it be something else? If we call it something else, then some or all of the flows that take in a taxonomy might also be applicable for that something else. For the remainder of this document, however, we will assume that any sort of simplified/easier-to-use variant of a taxonomy will also be called a "taxonomy". ## Question 2: What should the commands be in the CLI? -One way to support both 1.3.1 and 1.3.2 would be to have separate CLI commands for the preprocessing, core SDG, and postprocessing step . Alternatively, a single CLI command that does all of these and also saves the outputs of preprocessing to disk would support 1.3.1 but _not_ 1.3.2. Even if we only want to support 1.3.1, having separate CLI commands for each step might be desirable because it is just more intuitive that if a user wants to save the outputs of preprocessing to disk to have a command to do that instead of having it be a "side effect" of an omnibus SDG command. Here is a rough outline of what the separate commands would be: +One way to support both 1.3.1 and 1.3.2 would be to have separate CLI commands for the preprocessing, core SDG, and postprocessing step . Alternatively, a single CLI command that does all of these and also saves the outputs of preprocessing to disk would support 1.3.1 but *not* 1.3.2. Even if we only want to support 1.3.1, having separate CLI commands for each step might be desirable because it is just more intuitive that if a user wants to save the outputs of preprocessing to disk to have a command to do that instead of having it be a "side effect" of an omnibus SDG command. Here is a rough outline of what the separate commands would be: - `ilab data prep` would handle all the preprocessing (the first three bullets in the Context section above, plus any additional preprocessing we add in the future). - `ilab data generate` would take as input some data in the same format that `ilab data prep` produces and would run the core synthetic data generation *only*. Note that this is a breaking change from the current behavior of `ilab data generate`, but that may be acceptable because the user base is still small. @@ -56,7 +56,7 @@ As noted earlier, currently the preprocessing and postprocessing code is in the ### Option 1: Leave preprocessing and postprocessing in SDG -Currently there is no documentation that I know of that explains how to do 2.1 or 2.2 (or anything else, really) with the SDG library by itself. However, with some additional documenting and _maybe_ some refactoring, it should be feasible to support both 2.1 and 2.2 in SDG. With that said, if 2.1 is not needed and 2.2 is, then it would _also_ be possible to move the preprocessing and postprocessing code out of SDG. Some pros and cons of leaving in SDG: +Currently there is no documentation that I know of that explains how to do 2.1 or 2.2 (or anything else, really) with the SDG library by itself. However, with some additional documenting and *maybe* some refactoring, it should be feasible to support both 2.1 and 2.2 in SDG. With that said, if 2.1 is not needed and 2.2 is, then it would *also* be possible to move the preprocessing and postprocessing code out of SDG. Some pros and cons of leaving in SDG: Pro: @@ -68,9 +68,9 @@ Con: - The core logic of SDG is inherently complex and represents some of the most sophisticated and differentiating elements of InstructLab. For that reason, it would be nice to have it in its own repository by itself. New contributors to that core logic find it challenging enough to navigate the core functionality without having to also figure out where the core logic starts and the preprocessing and postprocessing capabilities end. This could be mitigated by having better technical documentation (README, comments) for the SDG library. - As noted in the Context section earlier, in the near future we are absorbing a set of updates to the core SDG functionality. Absorbing those updates is somewhat simpler if the core SDG logic is all alone in a repository of its own. -- Keeping interconnected components in the same repository provides less pressure to consistently document the API contracts between them. We certainly _could_ have well documented API contracts for preprocessing and postprocessing and core SDG functionality that makes it clear how they interact even when both of these exist in the same repository, but it is probably more likely that we _will_ do so if they are separated. +- Keeping interconnected components in the same repository provides less pressure to consistently document the API contracts between them. We certainly *could* have well documented API contracts for preprocessing and postprocessing and core SDG functionality that makes it clear how they interact even when both of these exist in the same repository, but it is probably more likely that we *will* do so if they are separated. - The logic behind the core SDG algorithms are mainly developed and maintained by the Red Hat AI Innovations team (commonly referred to as the "research" team because many people on that team used to work for IBM Research) while the logic behind the preprocessing and postprocessing is mainly developed and maintained by the Red Hat AI engineering "data" team. Having multiple teams working on a component increases the amount of coordination required. Note, however, that preprocessing, postprocessing and core SDG all belong to the entire InstructLab commmunity and *not* Red Hat (much less any one team in Red Hat). So the teams really need to keep collaborating with the entire community at all times and not get into a mindset of "owning" a single piece of code. -- The ezxpected RAG functionality in 2025 will have some complex interactions with both preprocessing and postprocessing, perhaps even involving user flows in which the core SDG functionality is not needed. In that case, it would be confusing to have the code path for RAG include a call out to the SDG library for doing preprocessing but not actually doing the core SDG. +- The expected RAG functionality in 2025 will have some complex interactions with both preprocessing and postprocessing, perhaps even involving user flows in which the core SDG functionality is not needed. In that case, it would be confusing to have the code path for RAG include a call out to the SDG library for doing preprocessing but not actually doing the core SDG. - It would just be simpler to explain to all stakeholders if the functionality that I've been calling "core SDG" was really just called "SDG". We can't do that now because the SDG library has preprocessing and postprocessing in it too. Conclusion: @@ -95,21 +95,21 @@ Cons: Conclusion: -- The cost of having a separate reposity is so high that we would only consider this option as a last resort. +- The cost of having a separate repository is so high that we would only consider this option as a last resort. ### Option 3: Move preprocessing and postprocessing into the CLI repository Pro: - The CLI already has a lot of "supporting" (non-core) functionality, so it would respect established precedent to include preprocessing and/or postprocessing here. -- Supporting user flow 1.3.2 requires separate CLI commands for preprocessing and core SDG. This is slightly simpler if preprocessing is implemented in CLI. If preprocessing remains in the SDG library instead then the CLI would need to make _separate_ calls to the SDG library for preprocessing and core SDG to support user flow 1.3.2. That adds a little complexity. +- Supporting user flow 1.3.2 requires separate CLI commands for preprocessing and core SDG. This is slightly simpler if preprocessing is implemented in CLI. If preprocessing remains in the SDG library instead then the CLI would need to make separate calls to the SDG library for preprocessing and core SDG to support user flow 1.3.2. That adds a little complexity. - Avoids some of the cons of Option 1, but see below for some overlap. - Avoids some of the cons of Option 2, but see below for some overlap. Con: - Avoids the pros of both Option 1 and Option 2. -- As with Option 1, this approach involves a lot of coordination. There are a lot of stakehoders involved in the CLI and locating preprocessing and postprocessing there drags those stakeholders into issues relating to preprocessing and postprocessing. However, as with Option 1, coordinating across stakeholders is something an open source project needs to do well anyway to remain engaged with the community. +- As with Option 1, this approach involves a lot of coordination. There are a lot of stakeholders involved in the CLI and locating preprocessing and postprocessing there drags those stakeholders into issues relating to preprocessing and postprocessing. However, as with Option 1, coordinating across stakeholders is something an open source project needs to do well anyway to remain engaged with the community. - As with Option 1, this approach suffers from the fact that keeping interconnected components in the same repository provides less pressure to consistently document the API contracts between them. In the case of Option 1, the interconnected components that would not have as much pressure to be documented would be preprocessing/postprocessing and core SDG. In the case of Option 3, the interconnected components that would not have as much pressure to be documented would be the CLI and preprocessing/postprocessing. However, in both cases, this con could be alleviated by just having the discipline to document the APIs well even without such pressure. - As with Option 2, this approach would not enable user flow 2.1. Maybe that's fine since it is not on our requirements list. @@ -119,7 +119,7 @@ Conclusion: ### Option 4: Preprocessing and postprocessing go to different locations -We could also mix and match any of the above options separately for preprocessing and postprocessing. For example, preprocessing could move to the CLI repo and postprocessing could stay in the SDG repo. Or preprocessing could move to a new repository and postprocessing could move to a different new repository or the _same_ new repository. Enumerating all possible permutations of where each could go and enumerating pros and cons of each of them would make this document unbearably long. If anyone wants to advocate for a small number of specific permutations, we will add them to this document. +We could also mix and match any of the above options separately for preprocessing and postprocessing. For example, preprocessing could move to the CLI repo and postprocessing could stay in the SDG repo. Or preprocessing could move to a new repository and postprocessing could move to a different new repository or the same new repository. Enumerating all possible permutations of where each could go and enumerating pros and cons of each of them would make this document unbearably long. If anyone wants to advocate for a small number of specific permutations, we will add them to this document. ## Question 4: Should preprocessing, postprocessing, and core SDG be separate Python packages? From f6c067c4bcb0849dd8be1c60c53986b3d87bf9ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Nov 2024 09:57:53 +0000 Subject: [PATCH 33/83] Bump DavidAnson/markdownlint-cli2-action from 17.0.0 to 18.0.0 Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 17.0.0 to 18.0.0. - [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases) - [Commits](https://github.com/davidanson/markdownlint-cli2-action/compare/db43aef879112c3119a410d69f66701e0d530809...eb5ca3ab411449c66620fe7f1b3c9e10547144b0) --- updated-dependencies: - dependency-name: DavidAnson/markdownlint-cli2-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 79e1ac6b..34e2afbb 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -41,6 +41,6 @@ jobs: with: fetch-depth: 0 - name: "Check Markdown documents" - uses: DavidAnson/markdownlint-cli2-action@db43aef879112c3119a410d69f66701e0d530809 # v17.0.0 + uses: DavidAnson/markdownlint-cli2-action@eb5ca3ab411449c66620fe7f1b3c9e10547144b0 # v18.0.0 with: globs: '**/*.md' From 3d41e04ec0aea33082a98cf543908474b8df8992 Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Fri, 15 Nov 2024 12:34:10 -0500 Subject: [PATCH 34/83] Update in response to review comments Signed-off-by: Bill Murdock --- docs/sdg/sdg-refactor.md | 45 +++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/docs/sdg/sdg-refactor.md b/docs/sdg/sdg-refactor.md index 4fd555b6..d3f4ef6e 100644 --- a/docs/sdg/sdg-refactor.md +++ b/docs/sdg/sdg-refactor.md @@ -19,26 +19,30 @@ Also as context, in the near future we are absorbing a set of updates to the cor Furthermore, in 2025 we are hoping to have some sort of retrieval-augmented generation (RAG) capability that is either part of or tightly integrated with InstructLab. Such a capability would have significant overlap with the functionality of the preprocessing for SDG. As noted above, when a taxonomy has a knowledge qna.yaml file that references a document, SDG uses Docling to convert the file to JSON and then splits the file into chunks of appropriate size for SDG. The RAG capability would *also* want the same Docling JSON output but would need to split it into chunks that are sized appropriately for vector retrieval (i.e., that fit within the context window of the semantic encoding model). +An additional complication is the fact that InstructLab's existing "taxonomy" structure is a tree structure encoded as a git repo that can be cloned/pushed/shared using the normal git constructs and flow. A taxonomy has *staged* nodes that are presumed to already be fully addressed by the model and *unstaged* nodes that are not, which is why the first item in the list above involves identifying only the unstaged qna.yaml files. However, some users might have the essential elements of a taxonomy (seed context/question/answer tuples for both skills and knowledge plus documents for knowledge) but do not want to put that information in a tree it a git repo. For the purposes of this document, we will refer to those essential elements as "raw seed content". The "raw seed content" includes all of the things that go into a qna.yanl file. In the current code base, the way InstructLab gets to the raw seed content is by identifying unstaged qna.yaml files from a local clone of a taxonomy. However, in the future we might add functionality that allows users to simply point at some raw seed content without having to tie it to a github respository for a taxonomy. If the raw seed content includes knowledge elements (not just skills) then those knowledge elements will have references to documents. When the raw seed content is processed, the documents are fetched, converted, and chunked (the third step in the list above). For this document, we will use the term "processed seed content" to refer to the outputs of that processing. So to summarize the data structure terms being discussed here: + +- *Raw seed content* -- A set of elements each of which has a set of context/question/answer tuples. Some elements may be *knowledge* elements which also have references to documents. +- *Processed seed content* -- The same as raw seed content except all references to documents are replaced with a set of document chunks of approrpriate size for SDG. +- *Taxonomy* -- A tree structure encoded as a git repo. Some leaves of the taxonomy are unstaged, indicating that they should be used for raw seed content. + ## Question 1: What user flows should be supported? Here are some user flows that seem like they might be valuable: 1. User installs the full InstructLab (CLI and/or GUI). They want any of the following using CLI or GUI interactions: - - 1.1. They have a taxonomy with some new seed data they added to it. They want to run the full pipeline including SDG and model training and evaluation. - - 1.2. They have a taxonomy with some new seed data they added to it. They want to run SDG and then evaluate an existing model on the outputs of that SDG. - - 1.3. They have a taxonomy with some new seed data they added to it. They want to run SDG only. - - 1.3.1. They also want to see the inputs to SDG that get extracted from the taxonomy (i.e., a set of seed context/question/answer tuples and optionallly a set of document chunks). + - 1.1. They have raw seed content. They want to run the full pipeline including SDG and model training and evaluation. + - 1.2. They have raw seed content. They want to run SDG and then evaluate an existing model on the outputs of that SDG. + - 1.3. They have raw seed content. They want to run SDG only. + - 1.3.1. They also want to see the inputs to SDG that get extracted from the raw seed content (i.e., a set of seed context/question/answer tuples and with document chunks for the knowledge if any). - 1.3.2. Alternatively, maybe they only want to see the inputs to SDG -- they don't actually want to run SDG. - - 1.4. They have a set of seed context/question/answer tuples and optionallly a set of document chunks. They want to run the full pipeline including SDG and model training and evaluation. - - 1.5. They have a set of seed context/question/answer tuples and optionallly a set of document chunks. They want to run SDG and then evaluate an existing model on the outputs of that SDG. - - 1.6. They have a set of seed context/question/answer tuples and optionallly a set of document chunks. They want to run SDG only. + - 1.4. They have processed seed content. They want to run the full pipeline including SDG and model training and evaluation. + - 1.5. They have processed seed content. They want to run SDG and then evaluate an existing model on the outputs of that SDG. + - 1.6. They have processed seed content. They want to run SDG only. 2. User installs the SDG library only. They want to invoke any of the following as a library call from code they write: - - 2.1. They have a taxonomy with some new seed data they added to it. They want to run SDG only without any postprocessing. - - 2.2. They have a set of seed context/question/answer tuples and optionallly a set of document chunks. They want to run SDG only without any postprocessing. - -If I understand the guidance from our product management, the flows that our users want us to support here are 1.1., 1.2., 1.3, 1.3.1, and 2.2. However, I am not sure that I understand the guidance. Are we confident that we do want to support those flows and do not want to support any of the others? More specifically, do we think the users who want 2.2 might be satisfied with 1.6 instead? Both of those are SDG-only flows, but the latter is more developer focused and the former is more business-user focused. Also, are we really confident that all of the "SDG only" customers really want to do their own document chunking? Might there be some customers that have seed context/question/answer tuples and documents and want us to chunk the documents for them? + - 2.1. They have raw seed content. They want to run SDG only without any postprocessing. + - 2.2. They have processed seed content. They want to run SDG only without any postprocessing. -Also note, that for all of the flows above that start with "they have a taxonomy", there are open questions around the complexity of the taxonomy format. Some users want to be able to provide seed data and documents without explicitly or implicitly extending some sort of base taxonomy. If we had something simpler than the existing taxonomy format that still included some way to specify context/question/answer tuples and references to full documents (i.e., not *chunks*), would we even call that a taxonomy or would it be something else? If we call it something else, then some or all of the flows that take in a taxonomy might also be applicable for that something else. For the remainder of this document, however, we will assume that any sort of simplified/easier-to-use variant of a taxonomy will also be called a "taxonomy". +If I understand the latest guidance from our product management, the flows that our users want us to support here are 1.1., 1.2., 1.3, 1.3.1, and 1.6. In an earlier draft of this proposal, I had said that I thought product management also wanted 2.2, but the latest guidance doesn't seem consistent with that understanding. I am still not sure, so more clarification would be helpful. ## Question 2: What should the commands be in the CLI? @@ -60,13 +64,14 @@ Currently there is no documentation that I know of that explains how to do 2.1 o Pro: -- Future changes to the input format for preprocessing and/or the output format for postprocessing (e.g., adding more expressive power to the taxonomy format) require changes to the core SDG *and* the preprocssing/postprocessing. That's easier to do if they are in the same repository because they can be done in a single PR instead of multiple PRs that need to be coordinated. +- Future changes to the input format for preprocessing and/or the output format for postprocessing (e.g., adding more expressive power to the taxonomy format) require changes to the core SDG *and* the preprocessing/postprocessing. That's easier to do if they are in the same repository because they can be done in a single PR instead of multiple PRs that need to be coordinated. - It is simpler to leave things where they are. - If we're not totally sure which of the options we want, then it might make more sense to stick with this option for now since it avoids doing a work to move preprocessing and postprocessing *now* that could then be followed by more work to move preprocessing and postprocessing *again* after we decide where it goes. Con: - The core logic of SDG is inherently complex and represents some of the most sophisticated and differentiating elements of InstructLab. For that reason, it would be nice to have it in its own repository by itself. New contributors to that core logic find it challenging enough to navigate the core functionality without having to also figure out where the core logic starts and the preprocessing and postprocessing capabilities end. This could be mitigated by having better technical documentation (README, comments) for the SDG library. +- To the extent that the plan is for SDG to be run independently, then there will be tooling built around the SDG repo. The more tooling built around just running SDG independently the more risk of breaking contracts for that tooling. The more functionality living in SDG that isn't SDG, the more surface area there is to break. - As noted in the Context section earlier, in the near future we are absorbing a set of updates to the core SDG functionality. Absorbing those updates is somewhat simpler if the core SDG logic is all alone in a repository of its own. - Keeping interconnected components in the same repository provides less pressure to consistently document the API contracts between them. We certainly *could* have well documented API contracts for preprocessing and postprocessing and core SDG functionality that makes it clear how they interact even when both of these exist in the same repository, but it is probably more likely that we *will* do so if they are separated. - The logic behind the core SDG algorithms are mainly developed and maintained by the Red Hat AI Innovations team (commonly referred to as the "research" team because many people on that team used to work for IBM Research) while the logic behind the preprocessing and postprocessing is mainly developed and maintained by the Red Hat AI engineering "data" team. Having multiple teams working on a component increases the amount of coordination required. Note, however, that preprocessing, postprocessing and core SDG all belong to the entire InstructLab commmunity and *not* Red Hat (much less any one team in Red Hat). So the teams really need to keep collaborating with the entire community at all times and not get into a mindset of "owning" a single piece of code. @@ -91,7 +96,7 @@ Cons: - Avoids all the pros of Option 1. - Having a separate repository with its own library brings in an enormous amount of overhead in maintaining that repository (e.g., CI/CD). - Having a separate repository with its own library also brings in an enormous amount of overhead in maintaining the CLI repository's dependency on all of those libraries. -- Does not allow user flow 2.1 but maybe that's OK because it is not a priority and anyway the users could approximate that flow by also installing the ingestion library. +- Does not allow user flow 2.1 (because that flow explicitly excludes installing the CLI) but maybe that's OK because it is not a priority and anyway the users could approximate that flow by also installing the ingestion library. Conclusion: @@ -101,15 +106,21 @@ Conclusion: Pro: -- The CLI already has a lot of "supporting" (non-core) functionality, so it would respect established precedent to include preprocessing and/or postprocessing here. -- Supporting user flow 1.3.2 requires separate CLI commands for preprocessing and core SDG. This is slightly simpler if preprocessing is implemented in CLI. If preprocessing remains in the SDG library instead then the CLI would need to make separate calls to the SDG library for preprocessing and core SDG to support user flow 1.3.2. That adds a little complexity. +- The CLI already has a lot of "supporting" (non-core) functionality. It contains most user facing logic aside from what we call the "core" parts of the workflow (SDG, Train, Eval). Since the preprocessing and postprocessing are non-code parts of SDG, this change would respect established precedent. Examples of existing functionality that follow this pattern include all of the following and more: + - download + - serve + - chat + - list + - edit + - init +- Supporting user flow 1.3.2 requires separate CLI commands for preprocessing and core SDG. This is slightly simpler if preprocessing is implemented in CLI. If preprocessing remains in the SDG library instead then the CLI would need to make separate calls to the SDG library for preprocessing and core SDG to support user flow 1.3.2. That adds a little complexity. - Avoids some of the cons of Option 1, but see below for some overlap. - Avoids some of the cons of Option 2, but see below for some overlap. Con: - Avoids the pros of both Option 1 and Option 2. -- As with Option 1, this approach involves a lot of coordination. There are a lot of stakeholders involved in the CLI and locating preprocessing and postprocessing there drags those stakeholders into issues relating to preprocessing and postprocessing. However, as with Option 1, coordinating across stakeholders is something an open source project needs to do well anyway to remain engaged with the community. +- As with Option 1, this approach involves a lot of coordination. There are a lot of stakeholders involved in the CLI and locating preprocessing and postprocessing there drags those stakeholders into issues relating to preprocessing and postprocessing. However, as with Option 1, coordinating across stakeholders is something an open source project needs to do well anyway to remain engaged with the community. - As with Option 1, this approach suffers from the fact that keeping interconnected components in the same repository provides less pressure to consistently document the API contracts between them. In the case of Option 1, the interconnected components that would not have as much pressure to be documented would be preprocessing/postprocessing and core SDG. In the case of Option 3, the interconnected components that would not have as much pressure to be documented would be the CLI and preprocessing/postprocessing. However, in both cases, this con could be alleviated by just having the discipline to document the APIs well even without such pressure. - As with Option 2, this approach would not enable user flow 2.1. Maybe that's fine since it is not on our requirements list. From 630d63708afbed30f0d1ec04c3947b12c90de37b Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Sun, 17 Nov 2024 19:40:15 -0500 Subject: [PATCH 35/83] Update draft conclusions Signed-off-by: Bill Murdock --- docs/sdg/sdg-refactor.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sdg/sdg-refactor.md b/docs/sdg/sdg-refactor.md index d3f4ef6e..0b1e9f8b 100644 --- a/docs/sdg/sdg-refactor.md +++ b/docs/sdg/sdg-refactor.md @@ -142,6 +142,6 @@ Since this is a draft, no decisions are made yet. However, here are the current - We will support the following user flows: 1.1., 1.2., 1.3, 1.3.1, 1.3.2, 2.1, and 2.1 as documented in the Question 1 section above. - We will adopt the updates to the CLI that will be documented in Question 2 above. -- We will leave the preprocessing in SDG as described in Question 3: Option 1. -- We will leave the postprocessing in SDG as described in Question 3: Option 1. +- We will move preprocessing to the CLI repository as described in Question 3: Option 3. +- We will move preprocessing to the CLI repository as described in Question 3: Option 3. - We will not separate preprocessing, postprocessing, and SDG into separate packages. From 92eb6b56de5a96a85304b42268bff0fdaa51bd17 Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Sun, 17 Nov 2024 19:58:57 -0500 Subject: [PATCH 36/83] Fix some typos Signed-off-by: Bill Murdock --- docs/sdg/sdg-refactor.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/sdg/sdg-refactor.md b/docs/sdg/sdg-refactor.md index 0b1e9f8b..d2eeddea 100644 --- a/docs/sdg/sdg-refactor.md +++ b/docs/sdg/sdg-refactor.md @@ -13,16 +13,16 @@ The existing synthetic data generation (SDG) repository includes several related Of all of these, only the one emphasized (*Given the seed data ... generate ... tuples*) is core SDG functionality. The others are essentially preprocessing and postprocessing steps to enable the core SDG functionality and produce outputs usable for future steps. In the current flow, preprocessing has a taxonomy with some new seed data added to it as input. The output of preprocessing includes a set of context/question/answer tuples for both knowledge and skill taxonomy nodes. For knowledge taxonomy nodes it also includes a set of document chunks. SDG uses the context/question/answer tuples as seed examples, and it uses the document chunks (if there are any) as example contexts from which to generate additional data. That additional data is then sent to the postprocessing step to produce the final outputs. -We have heard that some users want a stand-alone SDG capability that includes only the core SDG functionality. Specifically, they already have a set of seed context/question/answer tuples and optionallly a set of document chunks. All they want from SDG is to take that input and produce an new synthetic data set as output without doing any mixing into pre-computed data or splitting into train and test. The preprocessing and postprocessing capabilities currently in SDG are not relevant to those users. +We have heard that some users want a stand-alone SDG capability that includes only the core SDG functionality. Specifically, they already have a set of seed context/question/answer tuples and optionally a set of document chunks. All they want from SDG is to take that input and produce an new synthetic data set as output without doing any mixing into pre-computed data or splitting into train and test. The preprocessing and postprocessing capabilities currently in SDG are not relevant to those users. Also as context, in the near future we are absorbing a set of updates to the core SDG functionality to make it more modularized and flexible. That might turn out to be irrelevant to this document which is focused on what to do with the non-core functionality (preprocessing and postprocessing). However, it is mentioned here in the context section in case that context winds up being useful. Furthermore, in 2025 we are hoping to have some sort of retrieval-augmented generation (RAG) capability that is either part of or tightly integrated with InstructLab. Such a capability would have significant overlap with the functionality of the preprocessing for SDG. As noted above, when a taxonomy has a knowledge qna.yaml file that references a document, SDG uses Docling to convert the file to JSON and then splits the file into chunks of appropriate size for SDG. The RAG capability would *also* want the same Docling JSON output but would need to split it into chunks that are sized appropriately for vector retrieval (i.e., that fit within the context window of the semantic encoding model). -An additional complication is the fact that InstructLab's existing "taxonomy" structure is a tree structure encoded as a git repo that can be cloned/pushed/shared using the normal git constructs and flow. A taxonomy has *staged* nodes that are presumed to already be fully addressed by the model and *unstaged* nodes that are not, which is why the first item in the list above involves identifying only the unstaged qna.yaml files. However, some users might have the essential elements of a taxonomy (seed context/question/answer tuples for both skills and knowledge plus documents for knowledge) but do not want to put that information in a tree it a git repo. For the purposes of this document, we will refer to those essential elements as "raw seed content". The "raw seed content" includes all of the things that go into a qna.yanl file. In the current code base, the way InstructLab gets to the raw seed content is by identifying unstaged qna.yaml files from a local clone of a taxonomy. However, in the future we might add functionality that allows users to simply point at some raw seed content without having to tie it to a github respository for a taxonomy. If the raw seed content includes knowledge elements (not just skills) then those knowledge elements will have references to documents. When the raw seed content is processed, the documents are fetched, converted, and chunked (the third step in the list above). For this document, we will use the term "processed seed content" to refer to the outputs of that processing. So to summarize the data structure terms being discussed here: +An additional complication is the fact that InstructLab's existing "taxonomy" structure is a tree structure encoded as a git repo that can be cloned/pushed/shared using the normal git constructs and flow. A taxonomy has *staged* nodes that are presumed to already be fully addressed by the model and *unstaged* nodes that are not, which is why the first item in the list above involves identifying only the unstaged qna.yaml files. However, some users might have the essential elements of a taxonomy (seed context/question/answer tuples for both skills and knowledge plus documents for knowledge) but do not want to put that information in a tree it a git repo. For the purposes of this document, we will refer to those essential elements as "raw seed content". The "raw seed content" includes all of the things that go into a qna.yanl file. In the current code base, the way InstructLab gets to the raw seed content is by identifying unstaged qna.yaml files from a local clone of a taxonomy. However, in the future we might add functionality that allows users to simply point at some raw seed content without having to tie it to a github repository for a taxonomy. If the raw seed content includes knowledge elements (not just skills) then those knowledge elements will have references to documents. When the raw seed content is processed, the documents are fetched, converted, and chunked (the third step in the list above). For this document, we will use the term "processed seed content" to refer to the outputs of that processing. So to summarize the data structure terms being discussed here: - *Raw seed content* -- A set of elements each of which has a set of context/question/answer tuples. Some elements may be *knowledge* elements which also have references to documents. -- *Processed seed content* -- The same as raw seed content except all references to documents are replaced with a set of document chunks of approrpriate size for SDG. +- *Processed seed content* -- The same as raw seed content except all references to documents are replaced with a set of document chunks of appropriate size for SDG. - *Taxonomy* -- A tree structure encoded as a git repo. Some leaves of the taxonomy are unstaged, indicating that they should be used for raw seed content. ## Question 1: What user flows should be supported? @@ -71,10 +71,10 @@ Pro: Con: - The core logic of SDG is inherently complex and represents some of the most sophisticated and differentiating elements of InstructLab. For that reason, it would be nice to have it in its own repository by itself. New contributors to that core logic find it challenging enough to navigate the core functionality without having to also figure out where the core logic starts and the preprocessing and postprocessing capabilities end. This could be mitigated by having better technical documentation (README, comments) for the SDG library. -- To the extent that the plan is for SDG to be run independently, then there will be tooling built around the SDG repo. The more tooling built around just running SDG independently the more risk of breaking contracts for that tooling. The more functionality living in SDG that isn't SDG, the more surface area there is to break. +- To the extent that the plan is for SDG to be run independently, then there will be tooling built around the SDG repo. The more tooling built around just running SDG independently the more risk of breaking contracts for that tooling. The more functionality living in SDG that isn't SDG, the more surface area there is to break. - As noted in the Context section earlier, in the near future we are absorbing a set of updates to the core SDG functionality. Absorbing those updates is somewhat simpler if the core SDG logic is all alone in a repository of its own. - Keeping interconnected components in the same repository provides less pressure to consistently document the API contracts between them. We certainly *could* have well documented API contracts for preprocessing and postprocessing and core SDG functionality that makes it clear how they interact even when both of these exist in the same repository, but it is probably more likely that we *will* do so if they are separated. -- The logic behind the core SDG algorithms are mainly developed and maintained by the Red Hat AI Innovations team (commonly referred to as the "research" team because many people on that team used to work for IBM Research) while the logic behind the preprocessing and postprocessing is mainly developed and maintained by the Red Hat AI engineering "data" team. Having multiple teams working on a component increases the amount of coordination required. Note, however, that preprocessing, postprocessing and core SDG all belong to the entire InstructLab commmunity and *not* Red Hat (much less any one team in Red Hat). So the teams really need to keep collaborating with the entire community at all times and not get into a mindset of "owning" a single piece of code. +- The logic behind the core SDG algorithms are mainly developed and maintained by the Red Hat AI Innovations team (commonly referred to as the "research" team because many people on that team used to work for IBM Research) while the logic behind the preprocessing and postprocessing is mainly developed and maintained by the Red Hat AI engineering "data" team. Having multiple teams working on a component increases the amount of coordination required. Note, however, that preprocessing, postprocessing and core SDG all belong to the entire InstructLab community and *not* Red Hat (much less any one team in Red Hat). So the teams really need to keep collaborating with the entire community at all times and not get into a mindset of "owning" a single piece of code. - The expected RAG functionality in 2025 will have some complex interactions with both preprocessing and postprocessing, perhaps even involving user flows in which the core SDG functionality is not needed. In that case, it would be confusing to have the code path for RAG include a call out to the SDG library for doing preprocessing but not actually doing the core SDG. - It would just be simpler to explain to all stakeholders if the functionality that I've been calling "core SDG" was really just called "SDG". We can't do that now because the SDG library has preprocessing and postprocessing in it too. From cc6e8378d61134d445449d84958da05e54230138 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Nov 2024 10:05:39 +0000 Subject: [PATCH 37/83] Bump step-security/harden-runner from 2.10.1 to 2.10.2 Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.10.1 to 2.10.2. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](https://github.com/step-security/harden-runner/compare/91182cccc01eb5e619899d80e4e971d6181294a7...0080882f6c36860b6ba35c610c98ce87d4e2f26f) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/actionlint.yml | 2 +- .github/workflows/docs.yml | 2 +- .github/workflows/spellcheck.yml | 2 +- .github/workflows/stale_bot.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml index 1d74d0dd..68a58ad1 100644 --- a/.github/workflows/actionlint.yml +++ b/.github/workflows/actionlint.yml @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 79e1ac6b..fa72864f 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -33,7 +33,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 91b523a8..e3ddacf6 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs diff --git a/.github/workflows/stale_bot.yml b/.github/workflows/stale_bot.yml index 2c5bd575..d5a0416a 100644 --- a/.github/workflows/stale_bot.yml +++ b/.github/workflows/stale_bot.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: disable-sudo: true egress-policy: block From f05ecf40f3976a2e230b211be058e49bb283d455 Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Thu, 21 Nov 2024 13:06:40 -0500 Subject: [PATCH 38/83] Update sdg-refactor.md Signed-off-by: Bill Murdock --- docs/sdg/sdg-refactor.md | 46 ++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/docs/sdg/sdg-refactor.md b/docs/sdg/sdg-refactor.md index d2eeddea..067bc384 100644 --- a/docs/sdg/sdg-refactor.md +++ b/docs/sdg/sdg-refactor.md @@ -19,7 +19,7 @@ Also as context, in the near future we are absorbing a set of updates to the cor Furthermore, in 2025 we are hoping to have some sort of retrieval-augmented generation (RAG) capability that is either part of or tightly integrated with InstructLab. Such a capability would have significant overlap with the functionality of the preprocessing for SDG. As noted above, when a taxonomy has a knowledge qna.yaml file that references a document, SDG uses Docling to convert the file to JSON and then splits the file into chunks of appropriate size for SDG. The RAG capability would *also* want the same Docling JSON output but would need to split it into chunks that are sized appropriately for vector retrieval (i.e., that fit within the context window of the semantic encoding model). -An additional complication is the fact that InstructLab's existing "taxonomy" structure is a tree structure encoded as a git repo that can be cloned/pushed/shared using the normal git constructs and flow. A taxonomy has *staged* nodes that are presumed to already be fully addressed by the model and *unstaged* nodes that are not, which is why the first item in the list above involves identifying only the unstaged qna.yaml files. However, some users might have the essential elements of a taxonomy (seed context/question/answer tuples for both skills and knowledge plus documents for knowledge) but do not want to put that information in a tree it a git repo. For the purposes of this document, we will refer to those essential elements as "raw seed content". The "raw seed content" includes all of the things that go into a qna.yanl file. In the current code base, the way InstructLab gets to the raw seed content is by identifying unstaged qna.yaml files from a local clone of a taxonomy. However, in the future we might add functionality that allows users to simply point at some raw seed content without having to tie it to a github repository for a taxonomy. If the raw seed content includes knowledge elements (not just skills) then those knowledge elements will have references to documents. When the raw seed content is processed, the documents are fetched, converted, and chunked (the third step in the list above). For this document, we will use the term "processed seed content" to refer to the outputs of that processing. So to summarize the data structure terms being discussed here: +An additional complication is the fact that InstructLab's existing "taxonomy" structure is a tree structure encoded as a git repo that can be cloned/pushed/shared using the normal git constructs and flow. A taxonomy has *staged* nodes that are presumed to already be fully addressed by the model and *unstaged* nodes that are not, which is why the first item in the list above involves identifying only the unstaged qna.yaml files. However, some users might have the essential elements of a taxonomy (seed context/question/answer tuples for both skills and knowledge plus documents for knowledge) but do not want to put that information in a tree it a git repo. For the purposes of this document, we will refer to those essential elements as "raw seed content". The "raw seed content" includes all of the things that go into a qna.yaml file. In the current code base, the way InstructLab gets to the raw seed content is by identifying unstaged qna.yaml files from a local clone of a taxonomy. However, in the future we might add functionality that allows users to simply point at some raw seed content without having to tie it to a github repository for a taxonomy. If the raw seed content includes knowledge elements (not just skills) then those knowledge elements will have references to documents. When the raw seed content is processed, the documents are fetched, converted, and chunked (the third step in the list above). For this document, we will use the term "processed seed content" to refer to the outputs of that processing. So to summarize the data structure terms being discussed here: - *Raw seed content* -- A set of elements each of which has a set of context/question/answer tuples. Some elements may be *knowledge* elements which also have references to documents. - *Processed seed content* -- The same as raw seed content except all references to documents are replaced with a set of document chunks of appropriate size for SDG. @@ -29,7 +29,7 @@ An additional complication is the fact that InstructLab's existing "taxonomy" st Here are some user flows that seem like they might be valuable: -1. User installs the full InstructLab (CLI and/or GUI). They want any of the following using CLI or GUI interactions: +1. User installs the full InstructLab (command-line interface and/or graphical interface). They want any of the following using command-line or graphical interactions: - 1.1. They have raw seed content. They want to run the full pipeline including SDG and model training and evaluation. - 1.2. They have raw seed content. They want to run SDG and then evaluate an existing model on the outputs of that SDG. - 1.3. They have raw seed content. They want to run SDG only. @@ -44,9 +44,9 @@ Here are some user flows that seem like they might be valuable: If I understand the latest guidance from our product management, the flows that our users want us to support here are 1.1., 1.2., 1.3, 1.3.1, and 1.6. In an earlier draft of this proposal, I had said that I thought product management also wanted 2.2, but the latest guidance doesn't seem consistent with that understanding. I am still not sure, so more clarification would be helpful. -## Question 2: What should the commands be in the CLI? +## Question 2: What should the commands be in the command-line interface? -One way to support both 1.3.1 and 1.3.2 would be to have separate CLI commands for the preprocessing, core SDG, and postprocessing step . Alternatively, a single CLI command that does all of these and also saves the outputs of preprocessing to disk would support 1.3.1 but *not* 1.3.2. Even if we only want to support 1.3.1, having separate CLI commands for each step might be desirable because it is just more intuitive that if a user wants to save the outputs of preprocessing to disk to have a command to do that instead of having it be a "side effect" of an omnibus SDG command. Here is a rough outline of what the separate commands would be: +One way to support both 1.3.1 and 1.3.2 would be to have separate commands for the preprocessing, core SDG, and postprocessing step . Alternatively, a single command that does all of these and also saves the outputs of preprocessing to disk would support 1.3.1 but *not* 1.3.2. Even if we only want to support 1.3.1, having separate commands for each step might be desirable because it is just more intuitive that if a user wants to save the outputs of preprocessing to disk to have a command to do that instead of having it be a "side effect" of an omnibus SDG command. Here is a rough outline of what the separate commands would be: - `ilab data prep` would handle all the preprocessing (the first three bullets in the Context section above, plus any additional preprocessing we add in the future). - `ilab data generate` would take as input some data in the same format that `ilab data prep` produces and would run the core synthetic data generation *only*. Note that this is a breaking change from the current behavior of `ilab data generate`, but that may be acceptable because the user base is still small. @@ -95,34 +95,34 @@ Cons: - Avoids all the pros of Option 1. - Having a separate repository with its own library brings in an enormous amount of overhead in maintaining that repository (e.g., CI/CD). -- Having a separate repository with its own library also brings in an enormous amount of overhead in maintaining the CLI repository's dependency on all of those libraries. -- Does not allow user flow 2.1 (because that flow explicitly excludes installing the CLI) but maybe that's OK because it is not a priority and anyway the users could approximate that flow by also installing the ingestion library. +- Having a separate repository with its own library also brings in an enormous amount of overhead in maintaining the `instructlab/instructlab` repository's dependency on all of those libraries. +- Does not allow user flow 2.1 (because that flow includes installing *only* the SDG repository and requires preprocessing). That's OK because it is not a priority and anyway the users could approximate that flow by also installing the ingestion library. Conclusion: - The cost of having a separate repository is so high that we would only consider this option as a last resort. -### Option 3: Move preprocessing and postprocessing into the CLI repository +### Option 3: Move preprocessing and postprocessing into the instructlab/instructlab repository Pro: -- The CLI already has a lot of "supporting" (non-core) functionality. It contains most user facing logic aside from what we call the "core" parts of the workflow (SDG, Train, Eval). Since the preprocessing and postprocessing are non-code parts of SDG, this change would respect established precedent. Examples of existing functionality that follow this pattern include all of the following and more: +- The `instructlab/instructlab` repository already has a lot of "supporting" (non-core) functionality. It contains most user facing logic aside from what we call the "core" parts of the workflow (SDG, Train, Eval). Since the preprocessing and postprocessing are non-code parts of SDG, this change would respect established precedent. Examples of existing functionality that follow this pattern include all of the following and more: - download - serve - chat - list - edit - init -- Supporting user flow 1.3.2 requires separate CLI commands for preprocessing and core SDG. This is slightly simpler if preprocessing is implemented in CLI. If preprocessing remains in the SDG library instead then the CLI would need to make separate calls to the SDG library for preprocessing and core SDG to support user flow 1.3.2. That adds a little complexity. +- Supporting user flow 1.3.2 requires separate commands for preprocessing and core SDG. This is slightly simpler if preprocessing is implemented in the `instructlab/instructlab` repository. If preprocessing remains in the SDG library instead then the code in the `instructlab/instructlab` repository would need to make separate calls to the SDG library for preprocessing and core SDG to support user flow 1.3.2. That adds a little complexity. - Avoids some of the cons of Option 1, but see below for some overlap. - Avoids some of the cons of Option 2, but see below for some overlap. Con: - Avoids the pros of both Option 1 and Option 2. -- As with Option 1, this approach involves a lot of coordination. There are a lot of stakeholders involved in the CLI and locating preprocessing and postprocessing there drags those stakeholders into issues relating to preprocessing and postprocessing. However, as with Option 1, coordinating across stakeholders is something an open source project needs to do well anyway to remain engaged with the community. -- As with Option 1, this approach suffers from the fact that keeping interconnected components in the same repository provides less pressure to consistently document the API contracts between them. In the case of Option 1, the interconnected components that would not have as much pressure to be documented would be preprocessing/postprocessing and core SDG. In the case of Option 3, the interconnected components that would not have as much pressure to be documented would be the CLI and preprocessing/postprocessing. However, in both cases, this con could be alleviated by just having the discipline to document the APIs well even without such pressure. -- As with Option 2, this approach would not enable user flow 2.1. Maybe that's fine since it is not on our requirements list. +- As with Option 1, this approach involves a lot of coordination. There are a lot of stakeholders involved in the `instructlab/instructlab` repository and locating preprocessing and postprocessing there drags those stakeholders into issues relating to preprocessing and postprocessing. However, as with Option 1, coordinating across stakeholders is something an open source project needs to do well anyway to remain engaged with the community. +- As with Option 1, this approach suffers from the fact that keeping interconnected components in the same repository provides less pressure to consistently document the API contracts between them. In the case of Option 1, the interconnected components that would not have as much pressure to be documented would be preprocessing/postprocessing and core SDG. In the case of Option 3, the interconnected components that would not have as much pressure to be documented would be the command-line interface code and preprocessing/postprocessing. However, in both cases, this con could be alleviated by just having the discipline to document the APIs well even without such pressure. +- As with Option 2, this approach would not enable user flow 2.1. That's fine since it is not on our requirements list. Conclusion: @@ -130,7 +130,7 @@ Conclusion: ### Option 4: Preprocessing and postprocessing go to different locations -We could also mix and match any of the above options separately for preprocessing and postprocessing. For example, preprocessing could move to the CLI repo and postprocessing could stay in the SDG repo. Or preprocessing could move to a new repository and postprocessing could move to a different new repository or the same new repository. Enumerating all possible permutations of where each could go and enumerating pros and cons of each of them would make this document unbearably long. If anyone wants to advocate for a small number of specific permutations, we will add them to this document. +We could also mix and match any of the above options separately for preprocessing and postprocessing. For example, preprocessing could move to the `instructlab/instructlab` repository and postprocessing could stay in the SDG repo. Or preprocessing could move to a new repository and postprocessing could move to a different new repository or the same new repository. Enumerating all possible permutations of where each could go and enumerating pros and cons of each of them would make this document unbearably long. If anyone wants to advocate for a small number of specific permutations, we will add them to this document. ## Question 4: Should preprocessing, postprocessing, and core SDG be separate Python packages? @@ -140,8 +140,22 @@ If we choose Option 1 (leave preprocessing and postprocessing in SDG) then we st Since this is a draft, no decisions are made yet. However, here are the current draft decisions: +- The SDG codebase will be refactored in order to modularize based on pre-processing, data generation, and post-processing steps. - We will support the following user flows: 1.1., 1.2., 1.3, 1.3.1, 1.3.2, 2.1, and 2.1 as documented in the Question 1 section above. -- We will adopt the updates to the CLI that will be documented in Question 2 above. -- We will move preprocessing to the CLI repository as described in Question 3: Option 3. -- We will move preprocessing to the CLI repository as described in Question 3: Option 3. +- We will adopt the updates to the command-line interface that will be documented in Question 2 above. +- Pre-processing logic for SDG will be moved into the `instructlab/instructlab` repository as discussed in Option 3 above. +- Post-processing logic for SDG will be moved into the `instructlab/instructlab` repository as discussed in Option 3 above. +- The SDG codebase will be designed around the principle of "dataset in, dataset out". - We will not separate preprocessing, postprocessing, and SDG into separate packages. + +## Status + +- Proposed + +## Consequences + +Some of the consequences are covered earlier in the pros and cons for Option 3. Here is a brief recap of the most important of those: + +- SDG preprocessing and postprocessing will join a wide variety of glue/data-format capablities in that repository, increasing consistency. +- In the future changes to the kinds of content that SDG takes as inputs will require changes across both the SDG repository and the `instructlab/instructlab` repository. +- There will be less pressure to have a clear and well documented separation between the library APIs and the command-line interface for these functions because both are located in the same repository. We will mitigate this consequence by being disciplined about the separation. From 7c336b1b90084d1dfd0b63e46c0796bb8febe98c Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Thu, 21 Nov 2024 13:14:07 -0500 Subject: [PATCH 39/83] Update .spellcheck-en-custom.txt Signed-off-by: Bill Murdock --- .spellcheck-en-custom.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 5b57c755..4a0cec11 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -40,6 +40,7 @@ Dependabot dev disambiguating ditaa +Docling docstring dr Dropdown @@ -62,6 +63,7 @@ gguf GGUFs ggufs GiB +github Gmail GPTDolomite gpu @@ -77,6 +79,7 @@ instantiation instructlab io ISA +init iters Jie JIT @@ -105,6 +108,8 @@ mixtral MLX mlx MMLU +modularize +modularized Nakamura num NVidia @@ -128,14 +133,17 @@ PNG POC Podman podman +postprocessing pre preprint +preprocessing PR's pyenv PyPI pyproject PyTorch qlora +qna quantized Quantizing Radeon @@ -189,6 +197,7 @@ triagers UI ui unquantized +unstaged USM UX venv From 850300f840c79c955e00dcad32f6b1009202f105 Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Thu, 21 Nov 2024 13:19:46 -0500 Subject: [PATCH 40/83] Fix spell error Signed-off-by: Bill Murdock --- docs/sdg/sdg-refactor.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/sdg/sdg-refactor.md b/docs/sdg/sdg-refactor.md index 067bc384..b46ed719 100644 --- a/docs/sdg/sdg-refactor.md +++ b/docs/sdg/sdg-refactor.md @@ -138,8 +138,6 @@ If we choose Option 1 (leave preprocessing and postprocessing in SDG) then we st ## Decisions -Since this is a draft, no decisions are made yet. However, here are the current draft decisions: - - The SDG codebase will be refactored in order to modularize based on pre-processing, data generation, and post-processing steps. - We will support the following user flows: 1.1., 1.2., 1.3, 1.3.1, 1.3.2, 2.1, and 2.1 as documented in the Question 1 section above. - We will adopt the updates to the command-line interface that will be documented in Question 2 above. @@ -156,6 +154,6 @@ Since this is a draft, no decisions are made yet. However, here are the current Some of the consequences are covered earlier in the pros and cons for Option 3. Here is a brief recap of the most important of those: -- SDG preprocessing and postprocessing will join a wide variety of glue/data-format capablities in that repository, increasing consistency. +- SDG preprocessing and postprocessing will join a wide variety of glue/data-format capabilities in that repository, increasing consistency. - In the future changes to the kinds of content that SDG takes as inputs will require changes across both the SDG repository and the `instructlab/instructlab` repository. - There will be less pressure to have a clear and well documented separation between the library APIs and the command-line interface for these functions because both are located in the same repository. We will mitigate this consequence by being disciplined about the separation. From e7f350698bb5d602fe39c247fcebbb4c7754df9e Mon Sep 17 00:00:00 2001 From: Nathan Weinberg Date: Tue, 19 Nov 2024 15:20:12 -0500 Subject: [PATCH 41/83] Added document detailing org roadmap to CLI 1.0.0 Signed-off-by: Nathan Weinberg --- .markdownlint-cli2.yaml | 1 + .spellcheck-en-custom.txt | 6 +++ docs/instructlab-cli-1.0.0.md | 79 +++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 docs/instructlab-cli-1.0.0.md diff --git a/.markdownlint-cli2.yaml b/.markdownlint-cli2.yaml index 59f2fa6e..bb1ab78b 100644 --- a/.markdownlint-cli2.yaml +++ b/.markdownlint-cli2.yaml @@ -3,6 +3,7 @@ config: line-length: false no-emphasis-as-header: false + no-emphasis-as-heading: false first-line-heading: false code-block-style: false no-duplicate-header: false diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 5b57c755..0a6129f7 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -41,6 +41,7 @@ dev disambiguating ditaa docstring +downstreams dr Dropdown env @@ -93,6 +94,7 @@ LLM llms LLVM lora +Makefiles Markdownlint md Mergify @@ -130,7 +132,9 @@ Podman podman pre preprint +prereqs PR's +Pydantic pyenv PyPI pyproject @@ -146,6 +150,7 @@ Ren repo repos RHEL +roadmapping ROCm RTX runtime @@ -172,6 +177,7 @@ subcommand subcommands subdirectory Sudalairaj +supportability Taj tatsu TBD diff --git a/docs/instructlab-cli-1.0.0.md b/docs/instructlab-cli-1.0.0.md new file mode 100644 index 00000000..ebc6d532 --- /dev/null +++ b/docs/instructlab-cli-1.0.0.md @@ -0,0 +1,79 @@ +# The Road to 1.0.0 + +_Or: How I Learned to Stop Worrying and Love to GA_ + +## Context and Goals + +The `instructlab/instructlab` repo started off as `instructlab/cli` - a basic Python Click-based command-line interface designed to prototype an application capable of +running the LAB methodology created by IBM Research. As the project evolved and the organization looked into creating a proper PyPI package for it, the decision was made +to rename the repo to `instructlab/instructlab` to keep the repo name consistent with the PyPI package name. The rest of this document will being using "InstructLab" to +refer to this repo and Python package. + +Today, InstructLab has gone from a scrappy research project to an upstream community serving as the basis for multiple downstreams, with the goal +to continuing to evolve the community to encourage more participation from additional stakeholders. To wit, it would behoove us to determine what exactly we should be +roadmapping between now and a proper 1.0.0 release, which demonstrates the following to existing and potential community members: + +1. An official goalpost for the community denoting the evolution of InstructLab from a pre-1.0 project lacking the stability and supportability typically seen from 1.0-and-beyond projects. +1. A dedicated set of V1 interfaces, both for internal configs and an API, that can be counted on for continuous usage of InstructLab 1.0 with future provisions made for backwards compatibility for subsequent Y-Streams and Z-Streams. +1. A commitment from the Oversight Committee and Maintainer teams to continue to maintain InstructLab throughout a 1.y cycle and work towards an eventual 2.0. + +## MVP for an InstructLab 1.0.0 + +At a high-level, these are the items the Maintainer teams believe should serve as prereqs for releasing an InstructLab 1.0.0: + +### Updating relevant references of "CLI" to "Core" + +As noted in the `Context and Goals` section, InstructLab started off as just as a CLI - however, we are planning for this package to serve as a more general "Engine" - +being a place where a future REST API can be defined that is used by both the CLI aspect as well as an official GUI for orchestrating the entire LAB workflow. Despite +this, the repo is often still referred to as "the CLI". We as an organization need a better term to refer to this repo as, and should adopt the relevant documentation +and meetings accordingly. + +An open community vote made as part of the drafting of this document decided that "Core" would be the new term used. You can see a record of the vote +[here](https://github.com/instructlab/dev-docs/pull/159#issuecomment-2514885516). This name change will begin to go into effect after the merging of this document +and should be completed by the time of a 1.0.0. + +### A fully-realized configuration scheme, centered around the usage of system profiles + +The InstructLab configuration scheme has transformed in many ways since the project's inception, from the `config.yaml` file that initially served as the user's config, +to the addition of code-based Pydantic defaults, to train profiles, to system profiles. We need to fully-decouple this config from the Click library, remove the need for +a `config.yaml` file, and have a consistent config scheme that can be easily extended. + +### An official v1 REST API schema + +We need to have a defined v1 REST API schema - while this does not preclude future updates, something mature enough to serve as a v1 API throughout subsequent Y-Streams +for an InstructLab 1.0 is a must for such a milestone. + +### Integration of InstructLab with RAG + +RAG is currently being planned on being integrated into InstructLab - that work should be in a stable state adhering to our v1 API standard. + +### An upgrade path to subsequent Y-Streams and an eventual 2.0 + +Any user wishing to install an InstructLab 1.0 must have an upgrade path to 1.1, 1.2, ..., 1.n. Upon being ready for an InstructLab 2.0, we should also be expecting to +provide a path for users wishing to upgrade from our final 1.y stream to 2.0. + +### Backwards compatibility across the 1.y stream + +Any user going down our upgrade path described above should expect that the release they upgrade to is backwards-compatible with the release they upgrade from. + +### An official hardware support matrix + +We need to have a documented matrix of what hardware footprints we support and to what extent - this includes hardware we know will not work, hardware that we know might +work, and hardware we have confirmed will work with regular CI testing. + +### A robust CI ecosystem + +We should have a CI ecosystem that includes linting as well as unit, functional, and integration/end-to-end (E2E) tests in the InstructLab repo, along with proper documentation and Makefiles that allow developers to easily run subsets of them locally on their machines. + +## Q&A + +**Q. What about the libraries? Will they 1.0.0 as well?** + +A. It depends - we historically have not aligned the InstructLab and Library releases on a particular version numbering scheme, apart from matching Y-Streams to Y-Streams (e.g., InstructLab 0.20 used SDG 0.4, Training 0.5, and Eval 0.3). At this stage, this document scopes only the prereqs we want for the InstructLab package. + +## Conclusions and Decision Outcome + +This document will be debated and updated as part of the Pull Request review process. Upon reaching a lazy consensus by the Oversight Committee and Maintainer teams, the author of this document (Nathan Weinberg) will merge the document, denoting the following: + +1. The items in the above section `MVP for an InstructLab 1.0.0` will become official prerequisites for the InstructLab CLI Maintainer team to releasing a `1.0.0` of the InstructLab. +2. Any amendments to this list can only be made with a subsequent PR editing this document, subject to the same review process. From fdf28525a01a85f0851c82d254191c77813b210a Mon Sep 17 00:00:00 2001 From: Ryan Cook Date: Mon, 9 Dec 2024 15:58:18 -0500 Subject: [PATCH 42/83] framework to be used by RAG for pipeline Signed-off-by: Ryan Cook --- .../rag-framework.md | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 docs/retrieval-augmented-generation/rag-framework.md diff --git a/docs/retrieval-augmented-generation/rag-framework.md b/docs/retrieval-augmented-generation/rag-framework.md new file mode 100644 index 00000000..580b1f00 --- /dev/null +++ b/docs/retrieval-augmented-generation/rag-framework.md @@ -0,0 +1,80 @@ +# RAG will use Haystack + +| Created | Dec 4, 2024 | +| -------- | -------- | +| Authors | Ryan Cook, Ilya Kolchinsky, Hema Veeradhi | +| Replaces | N/A | +| Replaced by | N/A | + +## What + +This ADR defines the decision on the framework used to support the RAG pipeline for InstructLab. The Emerging Technologies team is pushing for the adoption of Haystack to be used for the framework of the RAG offering. Haystack will handle the data ingestion and retrieval processes for the to be productized RAG solution. + +NOTE: Speaking with Peter Staar on Dec 3, 2025 the docling team is aware of the efforts to potentially use Haystack and are already looking into adding the functionality for support of Haystack. + +## Why + +Multiple options for frameworks currently exist. During our initial analysis, the following options were the only ones to satisfy the basic requirements in terms of functionality, reliability and open-source availability: + +- [Haystack](https://haystack.deepset.ai/) +- [Langchain/Langgraph](https://www.langchain.com/) +- [LlamaIndex](https://www.llamaindex.ai/) +- [RAGFlow](https://ragflow.io/) + +All of the above offer a variation of a modular pipeline architecture, where users can chain together components (like retrievers, readers, and generators) to process data in different stages. + +Out of those, we propose to use Haystack for the following reasons: + +1. Focus on RAG. Haystack is a framework specifically targeting RAG use cases and sophisticated RAG indexing and retrieval pipelines. While Langchain and LlamaIndex shine in their own areas, the former is a generalist framework and the latter has a different focus, namely building custom indices over data. Haystack provides functionality that is strongly tailored for RAG and includes a comprehensive library of out-of-the-box solutions for advanced RAG scenarios. As a result, many essential or soon-to-be-essential RAG capabilities can be implemented in a few lines in Haystack but require considerable work to be supported over Langchain or LlamaIndex. Some examples include hybrid retrieval, iterative RAG, HyDE, combining multiple ingestion sources, custom data preprocessing and metadata augmentation. As the decision discussed in this document involves only the RAG component of RHEL AI, we believe that choosing the best RAG framework, as opposed to the best general LLM serving framework, would be more strategically correct. + +1. Maturity and stability. Haystack is the most mature, established and stable product among the considered alternatives. It has been around for more time overall (since 2017) and accumulated more mileage. Haystack has an active, sizable and steadily growing community. + +2. Extensive vendor support. Haystack natively supports all currently popular vector DBs and provides dedicated backends for incorporating them into its pipelines. Additionally, Haystack supports multiple models and model providers out-of-the-box. + +3. Enterprise-level performance. Haystack is designed for production-grade scalability, supporting distributed systems and high-throughput applications. Moreover, and in contrast to the alternatives (of which only LlamaIndex showcases similar performance and scalability), Haystack is specifically optimized for efficient search and retrieval in the RAG setting. + +4. Ease of use and documentation. Being strictly focused on RAG as opposed to taking a generalist approach, the learning curve of Haystack is less steep than that of Langchain. At the same time, Haystack offers extensive documentation and tutorials which are more well-organized and easy to use than those of LlamaIndex. + +1. Extending the previous point, Haystack can be seen as a middle ground between Langchain and LlamaIndex, sharing their benefits while only partially inheriting their drawbacks. Like the former, Haystack enables building custom flows and pipelines. Unlike Langchain though, Haystack does not try to be too abstract and general, strictly focusing on RAG and document search instead. As a result, Haystack is more straightforward to use, especially for users looking to implement custom and highly non-standard scenarios. On the other hand, like LlamaIndex, Haystack's performance is optimized towards data retrieval and indexing, but it offers a higher degree of flexibility and better interfaces for custom use cases. + +## Goals + +- We need to identify a framework that will be used to help support the RAG work stream. This is one of many pieces involved in the RAG work stream but identifying the framework used to index and retrieve data is step 1 of the larger picture. + +## Non-goals + +- What can we ignore when making this decision? + +## Decision + +Upon acceptance of this integration our next step is to include additional ADRs for the subsequent components required for the RAG pipeline. Next up will be decisions on Milvus and containerized/non-containerized offerings of that solution. + +Upon denial of this integration the team will need to go back and evaluate alternative technologies and ensure they meet the needs of the project goal and ensure they meet the larger project plan goals of a configurable RAG pipeline. + +## How + +A downstream should be generated of the [https://github.com/deepset-ai/haystack](https://github.com/deepset-ai/haystack) project. + +## Alternatives + +- Langchain/Langgraph. Drawbacks include: + - A generalist framework (as opposed to a RAG-focused solution) + - Complicated as compared to the alternatives, steep learning curve + - Lower performance in large-scale production environments than LlamaIndex and Haystack + +- LlamaIndex + - Limited flexibility and customization options as compared to the alternatives + - Limited out-of-the-box support for building complex, multi-component pipelines as compared to Langchain and Haystack + - Documentation is less well-maintained and more difficult to use as compared to the alternatives + +- RAGFlow + - Limited support for many of the mainstream vector DB providers + - Limited scalability as compared to the alternatives + +## Risks + +N/A + +## References + +- [https://github.com/deepset-ai/haystack](https://github.com/deepset-ai/haystack) From e35d2d9c02c82e7b8dd7eb27041c841f47f84d65 Mon Sep 17 00:00:00 2001 From: Ilya Kolchinsky <58424190+ilya-kolchinsky@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:29:03 +0200 Subject: [PATCH 43/83] Update rag-framework.md Added details regarding Haystack licensing and maintenance. Signed-off-by: Ilya Kolchinsky <58424190+ilya-kolchinsky@users.noreply.github.com> --- .../rag-framework.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/retrieval-augmented-generation/rag-framework.md b/docs/retrieval-augmented-generation/rag-framework.md index 580b1f00..feabf26f 100644 --- a/docs/retrieval-augmented-generation/rag-framework.md +++ b/docs/retrieval-augmented-generation/rag-framework.md @@ -25,17 +25,19 @@ All of the above offer a variation of a modular pipeline architecture, where use Out of those, we propose to use Haystack for the following reasons: -1. Focus on RAG. Haystack is a framework specifically targeting RAG use cases and sophisticated RAG indexing and retrieval pipelines. While Langchain and LlamaIndex shine in their own areas, the former is a generalist framework and the latter has a different focus, namely building custom indices over data. Haystack provides functionality that is strongly tailored for RAG and includes a comprehensive library of out-of-the-box solutions for advanced RAG scenarios. As a result, many essential or soon-to-be-essential RAG capabilities can be implemented in a few lines in Haystack but require considerable work to be supported over Langchain or LlamaIndex. Some examples include hybrid retrieval, iterative RAG, HyDE, combining multiple ingestion sources, custom data preprocessing and metadata augmentation. As the decision discussed in this document involves only the RAG component of RHEL AI, we believe that choosing the best RAG framework, as opposed to the best general LLM serving framework, would be more strategically correct. +1. **Focus on RAG.** Haystack is a framework specifically targeting RAG use cases and sophisticated RAG indexing and retrieval pipelines. While Langchain and LlamaIndex shine in their own areas, the former is a generalist framework and the latter has a different focus, namely building custom indices over data. Haystack provides functionality that is strongly tailored for RAG and includes a comprehensive library of out-of-the-box solutions for advanced RAG scenarios. As a result, many essential or soon-to-be-essential RAG capabilities can be implemented in a few lines in Haystack but require considerable work to be supported over Langchain or LlamaIndex. Some examples include hybrid retrieval, iterative RAG, HyDE, combining multiple ingestion sources, custom data preprocessing and metadata augmentation. As the decision discussed in this document involves only the RAG component of RHEL AI, we believe that choosing the best RAG framework, as opposed to the best general LLM serving framework, would be more strategically correct. -1. Maturity and stability. Haystack is the most mature, established and stable product among the considered alternatives. It has been around for more time overall (since 2017) and accumulated more mileage. Haystack has an active, sizable and steadily growing community. +2. **Maturity and stability.** Haystack is the most mature, established and stable product among the considered alternatives. It has been around for more time overall (since 2017) and accumulated more mileage. Haystack has an active, sizable and steadily growing community. -2. Extensive vendor support. Haystack natively supports all currently popular vector DBs and provides dedicated backends for incorporating them into its pipelines. Additionally, Haystack supports multiple models and model providers out-of-the-box. +3. **Extensive vendor support.** Haystack natively supports all currently popular vector DBs and provides dedicated backends for incorporating them into its pipelines. Additionally, Haystack supports multiple models and model providers out-of-the-box. -3. Enterprise-level performance. Haystack is designed for production-grade scalability, supporting distributed systems and high-throughput applications. Moreover, and in contrast to the alternatives (of which only LlamaIndex showcases similar performance and scalability), Haystack is specifically optimized for efficient search and retrieval in the RAG setting. +4. **Enterprise-level performance.** Haystack is designed for production-grade scalability, supporting distributed systems and high-throughput applications. Moreover, and in contrast to the alternatives (of which only LlamaIndex showcases similar performance and scalability), Haystack is specifically optimized for efficient search and retrieval in the RAG setting. -4. Ease of use and documentation. Being strictly focused on RAG as opposed to taking a generalist approach, the learning curve of Haystack is less steep than that of Langchain. At the same time, Haystack offers extensive documentation and tutorials which are more well-organized and easy to use than those of LlamaIndex. +5. **Ease of use and documentation.** Being strictly focused on RAG as opposed to taking a generalist approach, the learning curve of Haystack is less steep than that of Langchain. At the same time, Haystack offers extensive documentation and tutorials which are more well-organized and easy to use than those of LlamaIndex. -1. Extending the previous point, Haystack can be seen as a middle ground between Langchain and LlamaIndex, sharing their benefits while only partially inheriting their drawbacks. Like the former, Haystack enables building custom flows and pipelines. Unlike Langchain though, Haystack does not try to be too abstract and general, strictly focusing on RAG and document search instead. As a result, Haystack is more straightforward to use, especially for users looking to implement custom and highly non-standard scenarios. On the other hand, like LlamaIndex, Haystack's performance is optimized towards data retrieval and indexing, but it offers a higher degree of flexibility and better interfaces for custom use cases. +6. **Architecture.** Extending the previous point, Haystack can be seen as a middle ground between Langchain and LlamaIndex, sharing their benefits while only partially inheriting their drawbacks. Like the former, Haystack enables building custom flows and pipelines. Unlike Langchain though, Haystack does not try to be too abstract and general, strictly focusing on RAG and document search instead. As a result, Haystack is more straightforward to use, especially for users looking to implement custom and highly non-standard scenarios. On the other hand, like LlamaIndex, Haystack's performance is optimized towards data retrieval and indexing, but it offers a higher degree of flexibility and better interfaces for custom use cases. + +7. **Actively maintained open source project under permissive license.** Haystack is very [actively](https://github.com/deepset-ai/haystack/pulse/monthly) [maintained](https://github.com/deepset-ai/haystack/issues?q=is%3Aissue+is%3Aclosed) and [supported](https://github.com/deepset-ai/haystack/discussions). [Tagged versions](https://github.com/deepset-ai/haystack/releases) are released on a regular basis and [trusted publishing automation](https://github.com/deepset-ai/haystack/actions/workflows/pypi_release.yml) is used. Haystack is licensed under Apache 2.0, and all of its dependencies (jinja2, lazy-imports, more-itertools, networkx, numpy, openai, pandas, posthog, python-dateutil, pyyaml, requests, tenacity, tqdm, typing-extensions) are licensed under Apache, MIT, BSD or PSFL. ## Goals From 4c3c4dac6410d936c8f4dc410be058cf0947e562 Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Wed, 11 Dec 2024 16:19:50 -0500 Subject: [PATCH 44/83] Use new name for core repo. Also, less specifics about CLI. Signed-off-by: Bill Murdock --- docs/sdg/sdg-refactor.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/sdg/sdg-refactor.md b/docs/sdg/sdg-refactor.md index b46ed719..bb22c960 100644 --- a/docs/sdg/sdg-refactor.md +++ b/docs/sdg/sdg-refactor.md @@ -11,11 +11,11 @@ The existing synthetic data generation (SDG) repository includes several related - Mix the outputs with some pre-computed data sets when applicable - Split the data into train and test -Of all of these, only the one emphasized (*Given the seed data ... generate ... tuples*) is core SDG functionality. The others are essentially preprocessing and postprocessing steps to enable the core SDG functionality and produce outputs usable for future steps. In the current flow, preprocessing has a taxonomy with some new seed data added to it as input. The output of preprocessing includes a set of context/question/answer tuples for both knowledge and skill taxonomy nodes. For knowledge taxonomy nodes it also includes a set of document chunks. SDG uses the context/question/answer tuples as seed examples, and it uses the document chunks (if there are any) as example contexts from which to generate additional data. That additional data is then sent to the postprocessing step to produce the final outputs. +Of all of these, only the one emphasized (*Given the seed data ... generate ... tuples*) is SDG functionality. The others are essentially preprocessing and postprocessing steps to enable the SDG functionality and produce outputs usable for future steps. In the current flow, preprocessing has a taxonomy with some new seed data added to it as input. The output of preprocessing includes a set of context/question/answer tuples for both knowledge and skill taxonomy nodes. For knowledge taxonomy nodes it also includes a set of document chunks. SDG uses the context/question/answer tuples as seed examples, and it uses the document chunks (if there are any) as example contexts from which to generate additional data. That additional data is then sent to the postprocessing step to produce the final outputs. -We have heard that some users want a stand-alone SDG capability that includes only the core SDG functionality. Specifically, they already have a set of seed context/question/answer tuples and optionally a set of document chunks. All they want from SDG is to take that input and produce an new synthetic data set as output without doing any mixing into pre-computed data or splitting into train and test. The preprocessing and postprocessing capabilities currently in SDG are not relevant to those users. +We have heard that some users want a stand-alone SDG capability that includes only the SDG functionality. Specifically, they already have a set of seed context/question/answer tuples and optionally a set of document chunks. All they want from SDG is to take that input and produce an new synthetic data set as output without doing any mixing into pre-computed data or splitting into train and test. The preprocessing and postprocessing capabilities currently in SDG are not relevant to those users. -Also as context, in the near future we are absorbing a set of updates to the core SDG functionality to make it more modularized and flexible. That might turn out to be irrelevant to this document which is focused on what to do with the non-core functionality (preprocessing and postprocessing). However, it is mentioned here in the context section in case that context winds up being useful. +Also as context, in the near future we are absorbing a set of updates to the SDG functionality to make it more modularized and flexible. That might turn out to be irrelevant to this document which is focused on what to do with the preprocessing and postprocessing. However, it is mentioned here in the context section in case that context winds up being useful. Furthermore, in 2025 we are hoping to have some sort of retrieval-augmented generation (RAG) capability that is either part of or tightly integrated with InstructLab. Such a capability would have significant overlap with the functionality of the preprocessing for SDG. As noted above, when a taxonomy has a knowledge qna.yaml file that references a document, SDG uses Docling to convert the file to JSON and then splits the file into chunks of appropriate size for SDG. The RAG capability would *also* want the same Docling JSON output but would need to split it into chunks that are sized appropriately for vector retrieval (i.e., that fit within the context window of the semantic encoding model). @@ -46,11 +46,11 @@ If I understand the latest guidance from our product management, the flows that ## Question 2: What should the commands be in the command-line interface? -One way to support both 1.3.1 and 1.3.2 would be to have separate commands for the preprocessing, core SDG, and postprocessing step . Alternatively, a single command that does all of these and also saves the outputs of preprocessing to disk would support 1.3.1 but *not* 1.3.2. Even if we only want to support 1.3.1, having separate commands for each step might be desirable because it is just more intuitive that if a user wants to save the outputs of preprocessing to disk to have a command to do that instead of having it be a "side effect" of an omnibus SDG command. Here is a rough outline of what the separate commands would be: +One way to support both 1.3.1 and 1.3.2 would be to have separate commands for the preprocessing, SDG, and postprocessing step . Alternatively, a single command that does all of these and also saves the outputs of preprocessing to disk would support 1.3.1 but *not* 1.3.2. Even if we only want to support 1.3.1, having separate commands for each step might be desirable because it is just more intuitive that if a user wants to save the outputs of preprocessing to disk to have a command to do that instead of having it be a "side effect" of an omnibus SDG command. Here is a rough outline of what the separate commands would be: -- `ilab data prep` would handle all the preprocessing (the first three bullets in the Context section above, plus any additional preprocessing we add in the future). -- `ilab data generate` would take as input some data in the same format that `ilab data prep` produces and would run the core synthetic data generation *only*. Note that this is a breaking change from the current behavior of `ilab data generate`, but that may be acceptable because the user base is still small. -- `ilab data process` would take as input some data in the same format that `ilab data generate` produces and would run the postprocessing (the last two bullets in the Context section above, plus any additional postprocessing we add in the future). +- There would be a command to handle all the preprocessing (the first three bullets in the Context section above, plus any additional preprocessing we add in the future). +- There would be a command that runs the synthetic data generation *only*. If this command replaces the existing `ilab data generate`, that would be a breaking change from the current behavior of `ilab data generate`, but that may be acceptable because the user base is still small. +- There would be one or more commands to handle all the postprocessing. This includes data mixing and arguably other postprocessing depending on exactly how one defines "data mixing". Detailed technical specifications for these commands are outside the scope of this document and should appear in a future document instead. @@ -64,13 +64,13 @@ Currently there is no documentation that I know of that explains how to do 2.1 o Pro: -- Future changes to the input format for preprocessing and/or the output format for postprocessing (e.g., adding more expressive power to the taxonomy format) require changes to the core SDG *and* the preprocessing/postprocessing. That's easier to do if they are in the same repository because they can be done in a single PR instead of multiple PRs that need to be coordinated. +- Future changes to the input format for preprocessing and/or the output format for postprocessing (e.g., adding more expressive power to the taxonomy format) require changes to SDG *and* the preprocessing/postprocessing. That's easier to do if they are in the same repository because they can be done in a single PR instead of multiple PRs that need to be coordinated. - It is simpler to leave things where they are. - If we're not totally sure which of the options we want, then it might make more sense to stick with this option for now since it avoids doing a work to move preprocessing and postprocessing *now* that could then be followed by more work to move preprocessing and postprocessing *again* after we decide where it goes. Con: -- The core logic of SDG is inherently complex and represents some of the most sophisticated and differentiating elements of InstructLab. For that reason, it would be nice to have it in its own repository by itself. New contributors to that core logic find it challenging enough to navigate the core functionality without having to also figure out where the core logic starts and the preprocessing and postprocessing capabilities end. This could be mitigated by having better technical documentation (README, comments) for the SDG library. +- The logic of SDG is inherently complex and represents some of the most sophisticated and differentiating elements of InstructLab. For that reason, it would be nice to have it in its own repository by itself. New contributors to that core logic find it challenging enough to navigate the core functionality without having to also figure out where the core logic starts and the preprocessing and postprocessing capabilities end. This could be mitigated by having better technical documentation (README, comments) for the SDG library. - To the extent that the plan is for SDG to be run independently, then there will be tooling built around the SDG repo. The more tooling built around just running SDG independently the more risk of breaking contracts for that tooling. The more functionality living in SDG that isn't SDG, the more surface area there is to break. - As noted in the Context section earlier, in the near future we are absorbing a set of updates to the core SDG functionality. Absorbing those updates is somewhat simpler if the core SDG logic is all alone in a repository of its own. - Keeping interconnected components in the same repository provides less pressure to consistently document the API contracts between them. We certainly *could* have well documented API contracts for preprocessing and postprocessing and core SDG functionality that makes it clear how they interact even when both of these exist in the same repository, but it is probably more likely that we *will* do so if they are separated. @@ -95,32 +95,32 @@ Cons: - Avoids all the pros of Option 1. - Having a separate repository with its own library brings in an enormous amount of overhead in maintaining that repository (e.g., CI/CD). -- Having a separate repository with its own library also brings in an enormous amount of overhead in maintaining the `instructlab/instructlab` repository's dependency on all of those libraries. +- Having a separate repository with its own library also brings in an enormous amount of overhead in maintaining the core (`instructlab/instructlab`) repository's dependency on all of those libraries. - Does not allow user flow 2.1 (because that flow includes installing *only* the SDG repository and requires preprocessing). That's OK because it is not a priority and anyway the users could approximate that flow by also installing the ingestion library. Conclusion: - The cost of having a separate repository is so high that we would only consider this option as a last resort. -### Option 3: Move preprocessing and postprocessing into the instructlab/instructlab repository +### Option 3: Move preprocessing and postprocessing into the core repository Pro: -- The `instructlab/instructlab` repository already has a lot of "supporting" (non-core) functionality. It contains most user facing logic aside from what we call the "core" parts of the workflow (SDG, Train, Eval). Since the preprocessing and postprocessing are non-code parts of SDG, this change would respect established precedent. Examples of existing functionality that follow this pattern include all of the following and more: +- The core (`instructlab/instructlab`) repository already has a lot of "supporting" functionality. It contains most user facing logic aside from what we call the central parts of the workflow that have their own libraries (SDG, Train, Eval). Since the preprocessing and postprocessing are non-central parts of SDG, this change would respect established precedent. Examples of existing functionality that follow this pattern include all of the following and more: - download - serve - chat - list - edit - init -- Supporting user flow 1.3.2 requires separate commands for preprocessing and core SDG. This is slightly simpler if preprocessing is implemented in the `instructlab/instructlab` repository. If preprocessing remains in the SDG library instead then the code in the `instructlab/instructlab` repository would need to make separate calls to the SDG library for preprocessing and core SDG to support user flow 1.3.2. That adds a little complexity. +- Supporting user flow 1.3.2 requires separate commands for preprocessing and core SDG. This is slightly simpler if preprocessing is implemented in the core repository. If preprocessing remains in the SDG library instead then the code in the core repository would need to make separate calls to the SDG library for preprocessing and core SDG to support user flow 1.3.2. That adds a little complexity. - Avoids some of the cons of Option 1, but see below for some overlap. - Avoids some of the cons of Option 2, but see below for some overlap. Con: - Avoids the pros of both Option 1 and Option 2. -- As with Option 1, this approach involves a lot of coordination. There are a lot of stakeholders involved in the `instructlab/instructlab` repository and locating preprocessing and postprocessing there drags those stakeholders into issues relating to preprocessing and postprocessing. However, as with Option 1, coordinating across stakeholders is something an open source project needs to do well anyway to remain engaged with the community. +- As with Option 1, this approach involves a lot of coordination. There are a lot of stakeholders involved in the core repository and locating preprocessing and postprocessing there drags those stakeholders into issues relating to preprocessing and postprocessing. However, as with Option 1, coordinating across stakeholders is something an open source project needs to do well anyway to remain engaged with the community. - As with Option 1, this approach suffers from the fact that keeping interconnected components in the same repository provides less pressure to consistently document the API contracts between them. In the case of Option 1, the interconnected components that would not have as much pressure to be documented would be preprocessing/postprocessing and core SDG. In the case of Option 3, the interconnected components that would not have as much pressure to be documented would be the command-line interface code and preprocessing/postprocessing. However, in both cases, this con could be alleviated by just having the discipline to document the APIs well even without such pressure. - As with Option 2, this approach would not enable user flow 2.1. That's fine since it is not on our requirements list. @@ -130,7 +130,7 @@ Conclusion: ### Option 4: Preprocessing and postprocessing go to different locations -We could also mix and match any of the above options separately for preprocessing and postprocessing. For example, preprocessing could move to the `instructlab/instructlab` repository and postprocessing could stay in the SDG repo. Or preprocessing could move to a new repository and postprocessing could move to a different new repository or the same new repository. Enumerating all possible permutations of where each could go and enumerating pros and cons of each of them would make this document unbearably long. If anyone wants to advocate for a small number of specific permutations, we will add them to this document. +We could also mix and match any of the above options separately for preprocessing and postprocessing. For example, preprocessing could move to the core repository and postprocessing could stay in the SDG repo. Or preprocessing could move to a new repository and postprocessing could move to a different new repository or the same new repository. Enumerating all possible permutations of where each could go and enumerating pros and cons of each of them would make this document unbearably long. If anyone wants to advocate for a small number of specific permutations, we will add them to this document. ## Question 4: Should preprocessing, postprocessing, and core SDG be separate Python packages? @@ -141,8 +141,8 @@ If we choose Option 1 (leave preprocessing and postprocessing in SDG) then we st - The SDG codebase will be refactored in order to modularize based on pre-processing, data generation, and post-processing steps. - We will support the following user flows: 1.1., 1.2., 1.3, 1.3.1, 1.3.2, 2.1, and 2.1 as documented in the Question 1 section above. - We will adopt the updates to the command-line interface that will be documented in Question 2 above. -- Pre-processing logic for SDG will be moved into the `instructlab/instructlab` repository as discussed in Option 3 above. -- Post-processing logic for SDG will be moved into the `instructlab/instructlab` repository as discussed in Option 3 above. +- Pre-processing logic for SDG will be moved into the core repository as discussed in Option 3 above. +- Post-processing logic for SDG will be moved into the core repository as discussed in Option 3 above. - The SDG codebase will be designed around the principle of "dataset in, dataset out". - We will not separate preprocessing, postprocessing, and SDG into separate packages. From a268c7b432db6bd530d4cf1d58602adfaa56d3b7 Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Wed, 11 Dec 2024 16:27:57 -0500 Subject: [PATCH 45/83] More changes in response to review comments Signed-off-by: Bill Murdock --- docs/sdg/sdg-refactor.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/sdg/sdg-refactor.md b/docs/sdg/sdg-refactor.md index bb22c960..5a45cea1 100644 --- a/docs/sdg/sdg-refactor.md +++ b/docs/sdg/sdg-refactor.md @@ -1,5 +1,9 @@ # Refactor preprocessing and postprocessing in SDG +## Goals + +We want to modularize the parts of the codebase that deal with the data augmentation phase of the end to end workflow. In order to modularize it effectively, we need to identify and distinguish pre-processing, data generation, and post-processing. Each of these elements need to be located somewhere. This document discusses pros and cons of different options and proposes specific conclusions. + ## Context The existing synthetic data generation (SDG) repository includes several related pieces of functionality: @@ -126,7 +130,7 @@ Con: Conclusion: -- This seems like a reasonable option. The cons are mostly manageable. However, overall the pros of Option 1 seem more compelling. +- This seems like a reasonable option. The cons are mostly manageable. ### Option 4: Preprocessing and postprocessing go to different locations From 73469dcbf90e2f1905aaa672bbc8e04dd81c853e Mon Sep 17 00:00:00 2001 From: Ilya Kolchinsky <58424190+ilya-kolchinsky@users.noreply.github.com> Date: Thu, 12 Dec 2024 17:39:28 +0200 Subject: [PATCH 46/83] Update rag-framework.md Expanded risks and alternatives. Signed-off-by: Ilya Kolchinsky <58424190+ilya-kolchinsky@users.noreply.github.com> --- .../rag-framework.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/docs/retrieval-augmented-generation/rag-framework.md b/docs/retrieval-augmented-generation/rag-framework.md index feabf26f..91f02fe6 100644 --- a/docs/retrieval-augmented-generation/rag-framework.md +++ b/docs/retrieval-augmented-generation/rag-framework.md @@ -59,7 +59,7 @@ A downstream should be generated of the [https://github.com/deepset-ai/haystack] ## Alternatives -- Langchain/Langgraph. Drawbacks include: +- Langchain/Langgraph - A generalist framework (as opposed to a RAG-focused solution) - Complicated as compared to the alternatives, steep learning curve - Lower performance in large-scale production environments than LlamaIndex and Haystack @@ -73,9 +73,23 @@ A downstream should be generated of the [https://github.com/deepset-ai/haystack] - Limited support for many of the mainstream vector DB providers - Limited scalability as compared to the alternatives +- Do not use a framework; write everything directly in Python or some other programming language + - This would take longer to get started. + - This would make it a lot more work to add more vector DBs since we'd need to add additional code for each vector DB we want to support. We would hide that work behind an abstraction layer the same way the frameworks do, but it is work to build and maintain the abstraction layer, and the frameworks do that for us (and have put a lot of time and effort into doing it well). + - This would make it harder to bring in advanced functionality that the frameworks already provide. For example, Haystack provides support for RAG self-correction loops which we might want some day. + - This might make it easier to bring in advanced functionality that the frameworks do not already provide. Frameworks provide an abstraction layer that is generally useful when you want to do things that the framework developers support but often counterproductive when you want to do things that the frameworks do not support. For example, if there is a call to the framework that collapses multiple atomic steps into a single function call, that generally makes it harder to insert your own logic in between those atomic steps. + ## Risks -N/A +Future versions of Haystack can potentially introduce new dependencies, that could be: +1. Distributed under a non-permissive license (or not open source at all) +2. Not regularly and/or properly maintained + +If such a situation arises, the following actions can be taken on our end: + +1. Pin to the old version that doesn't have that dependency. That's often OK for a while, but eventually we're likely to run into updates that we need (e.g., critical fixes, compatibility with new vectordbs, etc.). +2. Fork the project to avoid the problematic dependencies. +3. Move off of Haystack completely. ## References From b1e1a8393898e81b3d62af87a2b949a986d1542b Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Fri, 13 Dec 2024 12:22:21 -0500 Subject: [PATCH 47/83] Update sdg-refactor.md Signed-off-by: Bill Murdock --- docs/sdg/sdg-refactor.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/sdg/sdg-refactor.md b/docs/sdg/sdg-refactor.md index 5a45cea1..4c0e9c22 100644 --- a/docs/sdg/sdg-refactor.md +++ b/docs/sdg/sdg-refactor.md @@ -2,7 +2,13 @@ ## Goals -We want to modularize the parts of the codebase that deal with the data augmentation phase of the end to end workflow. In order to modularize it effectively, we need to identify and distinguish pre-processing, data generation, and post-processing. Each of these elements need to be located somewhere. This document discusses pros and cons of different options and proposes specific conclusions. +We want to modularize the parts of the codebase that deal with the data augmentation phase of the end to end workflow. In order to modularize it effectively, we need to identify and distinguish pre-processing, data generation, and post-processing. Each of these elements need to be located somewhere. This document discusses pros and cons of different options and proposes specific conclusions. Specifically, it concludes: + +- The synthetic data generation will remain in the SDG repository. +- The preprocessing that is used for synthetic data generation (e.g., document conversion) will move to the core repository. +- The postprocessing that is used for synthetic data generation (e.g., data mixing) will move to the core repository. + +Ensuring that *only* synthetic data generation is in the SDG repository ensures that this component has a clear, well-defined mission. Furthermore, moving preprocessing and postprocessing to core will make it easier for those capabilities to be used by other components in the future. For example, some of the same preprocessing that is done for SDG (e.g., document conversion) is also useful for indexing content for RAG. ## Context From f937ad464879b98efe241fbb9a7071fa11205292 Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Fri, 13 Dec 2024 14:42:46 -0500 Subject: [PATCH 48/83] Second attempt to submit this ADR because the last one failed because github Signed-off-by: Bill Murdock --- .spellcheck-en-custom.txt | 13 +++ docs/rag/rag-initial-code-location.md | 109 ++++++++++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 docs/rag/rag-initial-code-location.md diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 0a6129f7..7c91c578 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -1,6 +1,7 @@ # make spellcheck-sort # Please keep this file sorted: Abhishek +ADR Akash AMDGPU Anil @@ -40,6 +41,7 @@ Dependabot dev disambiguating ditaa +Docling docstring downstreams dr @@ -63,6 +65,7 @@ gguf GGUFs ggufs GiB +github Gmail GPTDolomite gpu @@ -74,6 +77,7 @@ hipBLAS ilab impactful Inferencing +init instantiation instructlab io @@ -107,6 +111,9 @@ mixtral MLX mlx MMLU +modularize +modularized +Murdock Nakamura num NVidia @@ -119,6 +126,7 @@ OpenStax optimizers orchestrator ots +PaRAGon Params Pareja PEFT @@ -130,9 +138,12 @@ PNG POC Podman podman +postprocessing pre preprint +preprocessing prereqs +productize PR's Pydantic pyenv @@ -140,6 +151,7 @@ PyPI pyproject PyTorch qlora +qna quantized Quantizing Radeon @@ -195,6 +207,7 @@ triagers UI ui unquantized +unstaged USM UX venv diff --git a/docs/rag/rag-initial-code-location.md b/docs/rag/rag-initial-code-location.md new file mode 100644 index 00000000..4bea1104 --- /dev/null +++ b/docs/rag/rag-initial-code-location.md @@ -0,0 +1,109 @@ +# Code location for RAG + +| Created | Dec 5, 2024 | +| -------- | -------- | +| Authors | Bill Murdock | +| Replaces | N/A | +| Replaced by | N/A | + +## What + +We want a retrieval-augmented generation (RAG) capability that provides outstanding results with minimal effort, is seamlessly integrated with InstructLab, and is also general enough to be used in other applications as well. + +## Why + +Many InstructLab users want to train a model and then use it to RAG. Often they build something simple themselves for this purpose. Two problems with this approach: + +- Building their own RAG is extra work. +- Users who are not experts on RAG might not build a RAG that provides outstanding results. + +There is a very simple RAG capability at . It is not tightly integrated with InstructLab and it does not use any advanced RAG capabilities. However, we have a directive from product management to not just unilaterally delete it or replace it with something radically different. + +## Goals + +Provide a built-in alternative for users who do not want to build their own RAG. Keep the existing capability at somewhere, but potentially somewhere other than it is now (e.g., in a new branch of the existing repository). + +## Non-goals + +Evaluation of RAG will be addressed in one or more other development documents. That topic is out of scope for this document. + +## Decision + +- For now, RAG will be located in the core repository in its own directory: `src/instructlab/rag` in the core InstructLab repository (). + +## How + +### Phase 1 + +- RAG will be located in the core repository in its own directory: `src/instructlab/rag` in the core InstructLab repository (). +- This directory will include all of the following: + - Loading the content from Docling-format JSON files (that are produced by SDG preprocessing). + - Chunking that content to sizes that fit the requirements of the selected embedding model for vector database storage and retrieval. + - Storing those chunks with their vector representations in a vector database. + - End-to-end runtime RAG. The initial version of this includes the following: + - Taking as input a session history (including a current user query) and providing a response (e.g., something along the lines of the [OpenAI chat completion API](https://platform.openai.com/docs/api-reference/chat/create)). + - During that processing, it retrieves relevant search results from the vector database, it converts those into a prompt to send to the response generation model, it prompts that model, and it returns the response from that model. +- This will be invoked from the existing `ilab` CLI, as described in the [RAG ingestion and chat pipelines](https://github.com/instructlab/dev-docs/pull/161) dev doc. + +### Future phases + +- In the near future, RAG might be moved to the existing repository. + - If so, something will be done with the existing code in , e.g., moving it to a branch of that repository or moving it to a different repository. +- Alternatively, some or all of it might move to a new repository. + - For example, maybe the indexing and retrieval portions move to a separate retrieval repository while the rest of end-to-end runtime RAG might move somewhere else. +- If/when we move ahead with any of these options, *we will open a new ADR for that decision*. +- Also, the capabilities will keep improving and adding more functionality. + +## Alternatives + +- Put the indexing and run-time RAG code in a new repository. + - Pro: Having a dedicated repository gives the RAG team the most freedom and flexibility to make technical decisions that work for that team. + - Pro: Starting with a new repository provides a blank slate that can be set up in whatever way makes the most sense for that functionality. + - Pro: Having the capability in one repository makes it easier for consumers such as RamaLama to reuse it for their purposes too. + - Con: Creating and configuring a new repository is some work. (This is a fairly small con, but a real one.) + - Con: Integrating a new repository into the continuous integration and delivery capabilities for both upstream InstructLab and downstream consumers is a *lot* of work. This is a much bigger con. + - Con: All that extra work would almost certainly result in slower time to market. This risks missing some market opportunities. +- Put the indexing code in (SDG) and the run-time RAG code in (core) + - Pro: This has the advantage of not adding any new dependencies. + - Pro: The document processing is already in SDG and chat functionality is already in core so this would require the fewest code changes. + - Con: Splitting the RAG functionality across multiple repositories makes it more complicated to reuse in other applications outside of InstructLab. + - Con: Many things we will want to do to add advanced functionality to make RAG more effective will require changes to both indexing and run-time RAG. If those components are split across multiple repositories, that will make delivering such changes more complicated. +- Start by putting the code into existing InstructLab repositories (either of the above options) and then split if off into its own repository later. + - Pro: Gets us integrated into InstructLab sooner. + - Con: Adds extra work to the second phase where we have to split it off into its own repository. + - Con: There is a risk that we never get around to splitting it off and we wind up stuck with the cons of being jammed in to other components indefinitely. +- Put the indexing and run-time RAG code in a new repo outside . + - Pro: This signals that this is not specific to InstructLab but is instead intended to be useful in a variety of applications. That makes it more likely the work could have broader impact. + - Con: If we put this out there as something that is intended to be useful in a variety of applications, the pressure is on us to make sure it is differentiated from other broadly applicable RAG capabilities. Hopefully that will be true eventually, but it probably won't be true for a while. It might make more sense to give this some time to mature as a local component of InstructLab before trying to spin it off as its own thing. + - Con: If we put it out there as its own open source project, that project needs all of the infrastructure of a full open source activity (governing structures, communication tools and protocols, etc.). That's a lot of work to set up. Keeping it inside InstructLab for now lets us keep using the infrastructure that InstructLab has for this purpose). + - Con: If we put it out there as its own open source project, it needs a name. It is a lot of work to come up with a good name and there will be a lot of stakeholders with an interest in the name that comes up. +- Keep the indexing and run-time RAG code in which is an emerging technologies prototype for this work. + - Mostly the same pros and cons as putting it in a new repo outside InstructLab plus the following: + - Pro: A prototype for the code we want is already there. + - Pro: It already has its own distinctive name (PaRAGon). + - Con: The existing repository has its own simple command-line interface which is useful for the prototype but we don't want it in the capability we release because too many command-line interfaces will confuse users. + - Con: The name PaRAGon seems fine to me, but probably more stakeholders need to weigh in on what a name would be. + - Con: The `redhat-et` label suggests that this is something "owned" by Red Hat which makes sense for the prototype but not so much for something we want a community to own in the long run. +- Put the indexing and run-time RAG code in AND keep the existing RAG functionality in that repository intact. + - Pro: It already exists. + - Pro: It avoids the confusion of having two different RAG repositories in . + - Con: It creates the confusion of having two different RAG solutions in the same repository. We could mitigate that with developer documentation and marking legacy stuff as "deprecated". +- Put the indexing and run-time RAG code in AND eliminate the existing RAG functionality in that repository. + - Pro: It already exists. + - Pro: It avoids the confusion of having two different RAG repositories in . + - Pro: It avoids the confusion of having two different RAG solutions since we'd be eliminating the old one. + - Con: There is still some interest from product management in keeping this around. + +## Risks + +- Putting the RAG functionality in the core repository requires any application that wants to use this functionality to bring in the entire core which then brings in all of the libraries it depend on, so this becomes an enormous dependency. This discourages reuse in other applications. It *encourages* either of the following behaviors that would be unfortunate: + - Other applications pull directly from and in doing so duplicate the ongoing effort to harden/productize that code base. + - Other applications may implement their own RAG solutions or pull from some other upstream unrelated to ours. +- As noted earlier, putting the capability inside signals that this is a component of InstructLab and not a generally useful feature. That creates a risk that the work could miss out on additional opportunities for impact. We hope to mitigate that risk by spinning it off to its own open source project when it is mature enough, but there is a risk that we will get distracted by other things and never get around to this. +- The flow for document processing for InstructLab winds up being quite complicated in this proposal. Since the existing document processing is in SDG, the flow for indexing for RAG winds up being a bit complicated (i.e., it starts with a CLI call handled by the core repo then goes to SDG for some of the document processing and then back to the core `/data` directory which then calls out the the `core/rag` directory for chunking and vector database indexing). Having the document processing move from core to SDG and back to core and forward to RAG makes that capability more difficult to understand and maintain. This complexity will be partially mitigated when the preprocessing code moves from SDG to core. It will be further mitigated by having a clear, well-documented contract between core and the RAG repository indicating the responsibilities of each. + +## References + +- +- +- From 4811dd639c58643053ecf022bf04e3d62c850c1b Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Fri, 13 Dec 2024 17:00:53 -0500 Subject: [PATCH 49/83] Update rag-initial-code-location.md Signed-off-by: Bill Murdock --- docs/rag/rag-initial-code-location.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/rag/rag-initial-code-location.md b/docs/rag/rag-initial-code-location.md index 4bea1104..425c709f 100644 --- a/docs/rag/rag-initial-code-location.md +++ b/docs/rag/rag-initial-code-location.md @@ -17,7 +17,7 @@ Many InstructLab users want to train a model and then use it to RAG. Often they - Building their own RAG is extra work. - Users who are not experts on RAG might not build a RAG that provides outstanding results. -There is a very simple RAG capability at . It is not tightly integrated with InstructLab and it does not use any advanced RAG capabilities. However, we have a directive from product management to not just unilaterally delete it or replace it with something radically different. +There is a very simple RAG capability at . It is not tightly integrated with InstructLab and it does not use any advanced RAG capabilities. However, we have a request from a stakeholder to not just unilaterally delete it or replace it with something radically different. ## Goals @@ -92,12 +92,12 @@ Evaluation of RAG will be addressed in one or more other development documents. - Pro: It already exists. - Pro: It avoids the confusion of having two different RAG repositories in . - Pro: It avoids the confusion of having two different RAG solutions since we'd be eliminating the old one. - - Con: There is still some interest from product management in keeping this around. + - Con: There is still some interest in keeping this around. ## Risks - Putting the RAG functionality in the core repository requires any application that wants to use this functionality to bring in the entire core which then brings in all of the libraries it depend on, so this becomes an enormous dependency. This discourages reuse in other applications. It *encourages* either of the following behaviors that would be unfortunate: - - Other applications pull directly from and in doing so duplicate the ongoing effort to harden/productize that code base. + - Other applications pull directly from and in doing so duplicate the ongoing effort to harden that code base. - Other applications may implement their own RAG solutions or pull from some other upstream unrelated to ours. - As noted earlier, putting the capability inside signals that this is a component of InstructLab and not a generally useful feature. That creates a risk that the work could miss out on additional opportunities for impact. We hope to mitigate that risk by spinning it off to its own open source project when it is mature enough, but there is a risk that we will get distracted by other things and never get around to this. - The flow for document processing for InstructLab winds up being quite complicated in this proposal. Since the existing document processing is in SDG, the flow for indexing for RAG winds up being a bit complicated (i.e., it starts with a CLI call handled by the core repo then goes to SDG for some of the document processing and then back to the core `/data` directory which then calls out the the `core/rag` directory for chunking and vector database indexing). Having the document processing move from core to SDG and back to core and forward to RAG makes that capability more difficult to understand and maintain. This complexity will be partially mitigated when the preprocessing code moves from SDG to core. It will be further mitigated by having a clear, well-documented contract between core and the RAG repository indicating the responsibilities of each. From 1409bffa6bf596656d57f5027dd032f47f624304 Mon Sep 17 00:00:00 2001 From: Oleg S <97077423+RobotSail@users.noreply.github.com> Date: Tue, 17 Dec 2024 14:43:08 -0500 Subject: [PATCH 50/83] feat: communcation channels to include discord Due to the addition of Discord as a communication medium for the InstructLab community, we plan for discussions to take place (including regarding components). This commit updates that expectation to include Discord where appropriate. Signed-off-by: Oleg S <97077423+RobotSail@users.noreply.github.com> --- docs/backend/README.md | 2 ++ docs/library-release-strategy.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/backend/README.md b/docs/backend/README.md index 93c7f4f8..2f880f04 100644 --- a/docs/backend/README.md +++ b/docs/backend/README.md @@ -42,6 +42,8 @@ Communication among the group occurs in the following ways: the [InstructLab Community Calendar](https://calendar.google.com/calendar/embed?src=c_23c2f092cd6d147c45a9d2b79f815232d6c3e550b56c3b49da24c4b5d2090e8f%40group.calendar.google.com). +- **Discord**: The group has various channels for corresponding components such as `#core`, `#sdg`, `#sdg`, `#eval`, and `#infra`, which can all be found in the [InstructLab Discord](https://instructlab.ai/discord). + - **Slack**: The group uses the `#backend` channel in the InstructLab Slack. - **Mailing Lists**: There is a [development mailing diff --git a/docs/library-release-strategy.md b/docs/library-release-strategy.md index cd3ab8fb..aa576cb7 100644 --- a/docs/library-release-strategy.md +++ b/docs/library-release-strategy.md @@ -33,4 +33,4 @@ following tenants remain consistent: 1. Packages **must** have GitHub tagged releases named `vX.Y.Z` 1. Packages **must** use release branches for Y-Streams of the form `release-vX.Y` 1. Packages **must** maintain a `CHANGELOG.md` -1. Maintainer teams **must** publicly communicate Y-Stream releases through official InstructLab channels such as Slack or Mailing Lists. Z-Stream release communication is up to Maintainer discretion. +1. Maintainer teams **must** publicly communicate Y-Stream releases through official InstructLab channels such as Discord, Slack or Mailing Lists. Z-Stream release communication is up to Maintainer discretion. From 4e1479ced49a5a8297366977eacda0f7c89015d2 Mon Sep 17 00:00:00 2001 From: Charlie Doern Date: Tue, 19 Nov 2024 17:29:17 -0500 Subject: [PATCH 51/83] Introduce dev-doc for processes management ilab should be able to run detached processes, re-attach to them, and monitor them Signed-off-by: Charlie Doern --- .spellcheck-en-custom.txt | 6 ++++ docs/cli/ilab-processes.md | 64 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 docs/cli/ilab-processes.md diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 7c91c578..17a5b120 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -29,6 +29,7 @@ Containerfile cpp cuBLAS CUDA +ctrl customizations CVE CVEs @@ -131,6 +132,7 @@ Params Pareja PEFT Pereira +PID PlantUML PLOS pluggable @@ -188,8 +190,10 @@ Standup subcommand subcommands subdirectory +subprocess Sudalairaj supportability +systemd Taj tatsu TBD @@ -209,6 +213,8 @@ ui unquantized unstaged USM +UUID +UUIDs UX venv Vishnoi diff --git a/docs/cli/ilab-processes.md b/docs/cli/ilab-processes.md new file mode 100644 index 00000000..66e812df --- /dev/null +++ b/docs/cli/ilab-processes.md @@ -0,0 +1,64 @@ +# Processes in InstructLab + +The ability to detach from processes is crucial to the user experience of InstructLab. However, the concept of multi-processing, process management, and the monitoring of processes is very complex. + +It is important to try and add this concept in as simply as possible, expanding on the state reporting, logging, and other features as we go along. + +## Phased approach to InstructLab Processes + +This document is going to describe phase 1 of implementing processes in InstructLab. Phase 1 is to be described as the "ilab simple process management system". This will depend purely on python packages, PID tracking, and log files to create the experience of detachable processes. The key here is the concept of the UUID, allowing a future REST API to keep track of InstructLab processes using these unique identifiers. + +We can re-visit all this in phase 2, when we discuss if we want to utilize something like systemd or a more in-depth process-monitor repo to track processes. + +### Phase 1 + +Phase one would focus on adding the concept of detaching from processes, re-attaching to them, and managing the various artifacts from the processes. + +Process management would only apply to `ilab data generate` and `ilab model train` in a first iteration. This would be followed by commands like `ilab model evaluate`, `ilab model serve`, and `ilab model download`. All of these commands have long running processes that would benefit from detachment. + +The workflow would allow for: + +`ilab data generate -dt` (run a detached generation process) +`ilab model train -dt` (run a detached training process) + +`ilab process list` + +```console= ++------------+-------+--------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+ +| Type | PID | UUID | Log File | Runtime | ++------------+-------+--------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+ +| Generation | 39832 | 82d00a5b-5ed5-4cfd-9a75-a87e4f420b27 | /Users/charliedoern/.local/share/instructlab/logs/generation/generation-82d00a5b-5ed5-4cfd-9a75-a87e4f420b27.log | 69:26:28 | +| Generation | 40791 | 09f9d301-4fd9-4045-bfda-8a56f1d96016 | /Users/charliedoern/.local/share/instructlab/logs/generation/generation-09f9d301-4fd9-4045-bfda-8a56f1d96016.log | 68:45:40 | +| Generation | 47390 | 4ccabfa5-604f-49c6-b5c3-730ce328d62a | /Users/charliedoern/.local/share/instructlab/logs/generation/generation-4ccabfa5-604f-49c6-b5c3-730ce328d62a.log | 67:26:33 | +| Generation | 50872 | 093ac2e9-080c-45fe-89c5-43d508d6369c | /Users/charliedoern/.local/share/instructlab/logs/generation/generation-093ac2e9-080c-45fe-89c5-43d508d6369c.log | 05:24:56 | ++------------+-------+--------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+ +``` + +`ilab process attach ` + +This command would re-attach to the given process, allowing to user to view the live logs of the process. `attach` would trail the log file and listen for user-input to kill the process. + +These commands will be done in a very simple way at first using the following architecture: + +1. a detached process be re-attachable by tailing the log file and then allowing the user to ctrl+c the process as normal using `KeyboardInterrupt` +2. The process registry will be maintained for tracking UUIDs created via the `uuid` python package, the PID of the actual process, a `log_file` where the process will be outputting its logs to so that the user can re-attach, and the start time of the process. The log file directory will be tracked using our `DEFAULTS` package and will be standard throughout releases. + +The general flow would be: + +1. a user runs `ilab data generate -dt` +2. a UUID, PID, and log file is added to the process registry. +3. the process would exit, and print the UUID of the sdg run +4. a user could attach to this process using `ilab process attach `. +5. This command would look in the process registry for the PID and/or UUID, get the log file, tail the log file, and listen for a ctrl+c keyboard interrupt. + +This allows us to detach from processes while still running them in the background and maintain log files all without the use of anything other than UUID and subprocess. + +#### Log file management + +If existing log files from the various libraries exist, those will be used in this scenario. If they do not, InstructLab will manage writing process logs to disk. Regardless of whether the libraries maintain their own log file, InstructLab will need to co-locate the log files in a centralized directory. + +If a log file exists, it will be copied and renamed into the following directory format: + +`~/.local/share/instructlab/logs//-.log` + +If the log file does not exist, InstructLab will create one with this format. Libraries are responsible for standardizing where their logs are stored if they already exist so the Core package can access them in a uniform fashion and copy them to the proper directory. \ No newline at end of file From dc0540c51c8d7a2df9c2613346492bd9e7d0cb7a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2024 09:47:16 +0000 Subject: [PATCH 52/83] Bump DavidAnson/markdownlint-cli2-action from 18.0.0 to 19.0.0 Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 18.0.0 to 19.0.0. - [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases) - [Commits](https://github.com/davidanson/markdownlint-cli2-action/compare/eb5ca3ab411449c66620fe7f1b3c9e10547144b0...a23dae216ce3fee4db69da41fed90d2a4af801cf) --- updated-dependencies: - dependency-name: DavidAnson/markdownlint-cli2-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 2d727e8f..2a0b1561 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -41,6 +41,6 @@ jobs: with: fetch-depth: 0 - name: "Check Markdown documents" - uses: DavidAnson/markdownlint-cli2-action@eb5ca3ab411449c66620fe7f1b3c9e10547144b0 # v18.0.0 + uses: DavidAnson/markdownlint-cli2-action@a23dae216ce3fee4db69da41fed90d2a4af801cf # v19.0.0 with: globs: '**/*.md' From 32551ddf174a0bf55fa69481f1d3df5ad452fdc6 Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Thu, 2 Jan 2025 09:18:43 -0500 Subject: [PATCH 53/83] Update .spellcheck-en-custom.txt Updates for a variety of different upcoming ADRs for RAG. Signed-off-by: Bill Murdock --- .spellcheck-en-custom.txt | 69 ++++++++++++++++++++++++++------------- 1 file changed, 47 insertions(+), 22 deletions(-) diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 6ecc91b9..ebf0a2e8 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -15,9 +15,8 @@ Bhandwaldar brainer Cappi checkpointing +chunkers CLI -CLI -cli CLI's codebase Colab @@ -27,44 +26,49 @@ config configs Containerfile cpp +ctrl cuBLAS CUDA -ctrl customizations CVE CVEs CWD Cynefin +Daniele dataset datasets +dateutil +DBs DCO Dependabot dev disambiguating ditaa -Docling +docling docstring +DocumentSplitter downstreams dr Dropdown +DSL +embedder +embeddings env EP Eval -eval Excalidraw exfiltrate exfiltrating Filesystem -filesystem Finetuning formedness +FQN freeform FSDP +gb GFX GGUF -gguf GGUFs -ggufs GiB github Gmail @@ -74,27 +78,35 @@ Guang hacky hardcode hardcoded +Hema hipBLAS +HyDE ilab +Ilya impactful Inferencing init instantiation instructlab +integrations io ISA -init iters +itertools Jie +jinja JIT -JSON +json Jupyter KAGGLE -Kaggle Kaggle's Kai +Kolchinsky Kubernetes Kumar +Langchain +Langgraph +leaderboard lignment LLM llms @@ -102,28 +114,34 @@ LLVM lora Makefiles Markdownlint +Martinoli md Mergify Merlinite -merlinite +Milvus +MilvusEmbeddingRetriever +MilvusLite mimimum Miniforge +MiniLM Mixtral -mixtral MLX -mlx MMLU modularize modularized +MTEB Murdock +mvp Nakamura +natively +networkx num +numpy NVidia -Nvidia OCI Ollama -ollama onboarding +openai OpenStax optimizers orchestrator @@ -134,25 +152,29 @@ Pareja PEFT Pereira PID +Plag PlantUML PLOS pluggable PNG POC Podman -podman +posthog postprocessing pre preprint preprocessing prereqs productize +productized PR's +PSFL Pydantic pyenv PyPI pyproject PyTorch +pyyaml qlora qna quantized @@ -174,8 +196,8 @@ SaaS safetensor safetensors Salawu +scalable SDG -sdg semvar sexualized SHA @@ -185,12 +207,15 @@ Shivchander Signoff Sigstore specifiying +splitter src Srivastava +Staar Standup subcommand subcommands subdirectory +subfolder subprocess Sudalairaj supportability @@ -204,19 +229,20 @@ th tl TODO tox +tqdm traigers triager Triagers -triager's -triagers UI -ui unquantized unstaged +URI USM UUID UUIDs UX +vectordbs +Veeradhi venv Vishnoi vllm @@ -231,4 +257,3 @@ XT XTX Xu YAML -yaml From eee82ded9fa2f9d401c3f8a0d5c208a6d43bc884 Mon Sep 17 00:00:00 2001 From: Ryan Cook Date: Thu, 2 Jan 2025 09:42:08 -0500 Subject: [PATCH 54/83] linting and spellcheck ignores Signed-off-by: Ryan Cook --- .spellcheck-en-custom.txt | 26 +++++++++++++++++++ .../rag-framework.md | 3 ++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 0a6129f7..0a0245a0 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -1,6 +1,7 @@ # make spellcheck-sort # Please keep this file sorted: Abhishek +ADR Akash AMDGPU Anil @@ -35,6 +36,8 @@ CWD Cynefin dataset datasets +dateutil +DBs DCO Dependabot dev @@ -70,8 +73,10 @@ Guang hacky hardcode hardcoded +Hema hipBLAS ilab +Ilya impactful Inferencing instantiation @@ -79,16 +84,22 @@ instructlab io ISA iters +itertools Jie JIT +jinja JSON Jupyter KAGGLE Kaggle Kaggle's Kai +Kolchinsky Kubernetes Kumar +Langchain +langchain +Langgraph lignment LLM llms @@ -100,6 +111,7 @@ md Mergify Merlinite merlinite +Milvus mimimum Miniforge Mixtral @@ -108,7 +120,10 @@ MLX mlx MMLU Nakamura +natively +networkx num +numpy NVidia Nvidia OCI @@ -116,6 +131,8 @@ Ollama ollama onboarding OpenStax +openai +OpenAI optimizers orchestrator ots @@ -130,15 +147,20 @@ PNG POC Podman podman +posthog pre preprint +preprocessing prereqs +productized PR's +PSFL Pydantic pyenv PyPI pyproject PyTorch +pyyaml qlora quantized Quantizing @@ -173,6 +195,7 @@ specifiying src Srivastava Standup +Staar subcommand subcommands subdirectory @@ -187,6 +210,7 @@ th tl TODO tox +tqdm traigers triager Triagers @@ -197,7 +221,9 @@ ui unquantized USM UX +vectordbs venv +Veeradhi Vishnoi vllm watsonx diff --git a/docs/retrieval-augmented-generation/rag-framework.md b/docs/retrieval-augmented-generation/rag-framework.md index 91f02fe6..53908b90 100644 --- a/docs/retrieval-augmented-generation/rag-framework.md +++ b/docs/retrieval-augmented-generation/rag-framework.md @@ -36,7 +36,7 @@ Out of those, we propose to use Haystack for the following reasons: 5. **Ease of use and documentation.** Being strictly focused on RAG as opposed to taking a generalist approach, the learning curve of Haystack is less steep than that of Langchain. At the same time, Haystack offers extensive documentation and tutorials which are more well-organized and easy to use than those of LlamaIndex. 6. **Architecture.** Extending the previous point, Haystack can be seen as a middle ground between Langchain and LlamaIndex, sharing their benefits while only partially inheriting their drawbacks. Like the former, Haystack enables building custom flows and pipelines. Unlike Langchain though, Haystack does not try to be too abstract and general, strictly focusing on RAG and document search instead. As a result, Haystack is more straightforward to use, especially for users looking to implement custom and highly non-standard scenarios. On the other hand, like LlamaIndex, Haystack's performance is optimized towards data retrieval and indexing, but it offers a higher degree of flexibility and better interfaces for custom use cases. - + 7. **Actively maintained open source project under permissive license.** Haystack is very [actively](https://github.com/deepset-ai/haystack/pulse/monthly) [maintained](https://github.com/deepset-ai/haystack/issues?q=is%3Aissue+is%3Aclosed) and [supported](https://github.com/deepset-ai/haystack/discussions). [Tagged versions](https://github.com/deepset-ai/haystack/releases) are released on a regular basis and [trusted publishing automation](https://github.com/deepset-ai/haystack/actions/workflows/pypi_release.yml) is used. Haystack is licensed under Apache 2.0, and all of its dependencies (jinja2, lazy-imports, more-itertools, networkx, numpy, openai, pandas, posthog, python-dateutil, pyyaml, requests, tenacity, tqdm, typing-extensions) are licensed under Apache, MIT, BSD or PSFL. ## Goals @@ -82,6 +82,7 @@ A downstream should be generated of the [https://github.com/deepset-ai/haystack] ## Risks Future versions of Haystack can potentially introduce new dependencies, that could be: + 1. Distributed under a non-permissive license (or not open source at all) 2. Not regularly and/or properly maintained From 304084b9aa3f674a51d7bf006a085a096f8c389b Mon Sep 17 00:00:00 2001 From: Ryan Cook Date: Thu, 2 Jan 2025 09:46:49 -0500 Subject: [PATCH 55/83] spelling Signed-off-by: Ryan Cook --- .spellcheck-en-custom.txt | 1 + docs/retrieval-augmented-generation/rag-framework.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 9738ada7..fa0c231e 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -78,6 +78,7 @@ hardcode hardcoded Hema hipBLAS +HyDE ilab Ilya impactful diff --git a/docs/retrieval-augmented-generation/rag-framework.md b/docs/retrieval-augmented-generation/rag-framework.md index 53908b90..a48e49b9 100644 --- a/docs/retrieval-augmented-generation/rag-framework.md +++ b/docs/retrieval-augmented-generation/rag-framework.md @@ -10,7 +10,7 @@ This ADR defines the decision on the framework used to support the RAG pipeline for InstructLab. The Emerging Technologies team is pushing for the adoption of Haystack to be used for the framework of the RAG offering. Haystack will handle the data ingestion and retrieval processes for the to be productized RAG solution. -NOTE: Speaking with Peter Staar on Dec 3, 2025 the docling team is aware of the efforts to potentially use Haystack and are already looking into adding the functionality for support of Haystack. +NOTE: Speaking with Peter Staar on Dec 3, 2025 the Docling team is aware of the efforts to potentially use Haystack and are already looking into adding the functionality for support of Haystack. ## Why From cd22a8a7f6b68d9d96802f5ca1dad3c8db612d91 Mon Sep 17 00:00:00 2001 From: Ryan Cook Date: Thu, 2 Jan 2025 13:07:21 -0500 Subject: [PATCH 56/83] suggestions based on feedback Signed-off-by: Ryan Cook --- .spellcheck-en-custom.txt | 1 + docs/retrieval-augmented-generation/rag-framework.md | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index fa0c231e..082d5254 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -2,6 +2,7 @@ # Please keep this file sorted: Abhishek ADR +agentic Akash AMDGPU Anil diff --git a/docs/retrieval-augmented-generation/rag-framework.md b/docs/retrieval-augmented-generation/rag-framework.md index a48e49b9..af994f89 100644 --- a/docs/retrieval-augmented-generation/rag-framework.md +++ b/docs/retrieval-augmented-generation/rag-framework.md @@ -8,9 +8,9 @@ ## What -This ADR defines the decision on the framework used to support the RAG pipeline for InstructLab. The Emerging Technologies team is pushing for the adoption of Haystack to be used for the framework of the RAG offering. Haystack will handle the data ingestion and retrieval processes for the to be productized RAG solution. +This ADR defines the decision on the framework used to support the RAG pipeline for InstructLab. The Red Hat Emerging Technologies team is pushing for the adoption of Haystack to be used for the framework of the RAG offering. Haystack will handle the data ingestion and retrieval processes for this to be productized RAG solution. -NOTE: Speaking with Peter Staar on Dec 3, 2025 the Docling team is aware of the efforts to potentially use Haystack and are already looking into adding the functionality for support of Haystack. +NOTE: Speaking with Peter Staar on Dec 3, 2025 [the Docling team](https://github.com/DS4SD/docling) is aware of the efforts to potentially use Haystack and are already looking into adding the functionality for [support of Haystack](https://github.com/DS4SD/docling-haystack). ## Why @@ -25,7 +25,7 @@ All of the above offer a variation of a modular pipeline architecture, where use Out of those, we propose to use Haystack for the following reasons: -1. **Focus on RAG.** Haystack is a framework specifically targeting RAG use cases and sophisticated RAG indexing and retrieval pipelines. While Langchain and LlamaIndex shine in their own areas, the former is a generalist framework and the latter has a different focus, namely building custom indices over data. Haystack provides functionality that is strongly tailored for RAG and includes a comprehensive library of out-of-the-box solutions for advanced RAG scenarios. As a result, many essential or soon-to-be-essential RAG capabilities can be implemented in a few lines in Haystack but require considerable work to be supported over Langchain or LlamaIndex. Some examples include hybrid retrieval, iterative RAG, HyDE, combining multiple ingestion sources, custom data preprocessing and metadata augmentation. As the decision discussed in this document involves only the RAG component of RHEL AI, we believe that choosing the best RAG framework, as opposed to the best general LLM serving framework, would be more strategically correct. +1. **Focus on RAG.** Haystack is a framework specifically targeting RAG use cases and sophisticated RAG indexing and retrieval pipelines. While Langchain and LlamaIndex shine in their own areas, the former is a generalist framework and the latter has a different focus, namely building custom indices over data. Haystack provides functionality that is strongly tailored for RAG and includes a comprehensive library of out-of-the-box solutions for advanced RAG scenarios. As a result, many essential or soon-to-be-essential RAG capabilities can be implemented in a few lines in Haystack but require considerable work to be supported over Langchain or LlamaIndex. Some examples include hybrid retrieval, iterative RAG, HyDE, combining multiple ingestion sources, custom data preprocessing and metadata augmentation. As the decision discussed in this document involves only the RAG component of Instructlab, we believe that choosing the best RAG framework, as opposed to the best general LLM serving framework, would be more strategically correct. 2. **Maturity and stability.** Haystack is the most mature, established and stable product among the considered alternatives. It has been around for more time overall (since 2017) and accumulated more mileage. Haystack has an active, sizable and steadily growing community. @@ -39,9 +39,12 @@ Out of those, we propose to use Haystack for the following reasons: 7. **Actively maintained open source project under permissive license.** Haystack is very [actively](https://github.com/deepset-ai/haystack/pulse/monthly) [maintained](https://github.com/deepset-ai/haystack/issues?q=is%3Aissue+is%3Aclosed) and [supported](https://github.com/deepset-ai/haystack/discussions). [Tagged versions](https://github.com/deepset-ai/haystack/releases) are released on a regular basis and [trusted publishing automation](https://github.com/deepset-ai/haystack/actions/workflows/pypi_release.yml) is used. Haystack is licensed under Apache 2.0, and all of its dependencies (jinja2, lazy-imports, more-itertools, networkx, numpy, openai, pandas, posthog, python-dateutil, pyyaml, requests, tenacity, tqdm, typing-extensions) are licensed under Apache, MIT, BSD or PSFL. +8. **Published to PyPI via Trusted Publishing.** +See [trusted-publishers](https://docs.pypi.org/trusted-publishers/) for more information on trusted publishing. Haystack satisfies the requirements for trusted publishing with this [Github Actions workflow](https://github.com/deepset-ai/haystack/actions/workflows/pypi_release.yml). + ## Goals -- We need to identify a framework that will be used to help support the RAG work stream. This is one of many pieces involved in the RAG work stream but identifying the framework used to index and retrieve data is step 1 of the larger picture. +- The primary goal here is to provide a framework optimized for RAG specifically and that the decision isn't focused on optimizing the choice on the best agentic pattern solution. However, Haystack can potentially implement many [agentic patterns](https://docs.haystack.deepset.ai/v1.22/docs/agent). Since Haystack provides the functionality [to build arbitrarily complex pipelines](https://docs.haystack.deepset.ai/docs/pipelines), it is possible to extend our RAG architecture to introduce nodes for tools, reasoning and agentic actions. ## Non-goals From c84e0e7748cbe1d6ab27b98ef6f3660b43446720 Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Thu, 2 Jan 2025 14:22:50 -0500 Subject: [PATCH 57/83] Tweak casing some more Signed-off-by: Bill Murdock --- .spellcheck-en-custom.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 7fbd67d3..d63c5bd0 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -45,7 +45,7 @@ Dependabot dev disambiguating ditaa -docling +Docling docstring DocumentSplitter downstreams @@ -66,7 +66,7 @@ formedness FQN freeform FSDP -gb +GB GFX GGUF GGUFs @@ -74,7 +74,7 @@ GiB github Gmail GPTDolomite -gpu +GPU Guang hacky hardcode @@ -109,7 +109,7 @@ Langchain Langgraph leaderboard LLM -llms +LLMs LLVM lora Makefiles @@ -248,7 +248,7 @@ vectordbs Veeradhi venv Vishnoi -vllm +vLLM watsonx Wikisource wikisql @@ -259,4 +259,4 @@ XNACK XT XTX Xu -YAML \ No newline at end of file +YAML From ee3812a9b24eeb11b24765cccd2c03e88ab47bdd Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Fri, 3 Jan 2025 12:29:29 -0500 Subject: [PATCH 58/83] Restore some lower-case duplicate words in spellcheck Signed-off-by: Bill Murdock --- .spellcheck-en-custom.txt | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index d63c5bd0..9b3dd056 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -2,7 +2,6 @@ # Please keep this file sorted: Abhishek ADR -agentic Akash AMDGPU Anil @@ -18,6 +17,8 @@ Cappi checkpointing chunkers CLI +cli +cli CLI's codebase Colab @@ -45,7 +46,7 @@ Dependabot dev disambiguating ditaa -Docling +docling docstring DocumentSplitter downstreams @@ -57,24 +58,28 @@ embeddings env EP Eval +eval Excalidraw exfiltrate exfiltrating Filesystem +filesystem Finetuning formedness FQN freeform FSDP -GB +gb +gb GFX GGUF +gguf GGUFs GiB github Gmail GPTDolomite -GPU +gpu Guang hacky hardcode @@ -97,7 +102,7 @@ itertools Jie jinja JIT -JSON +json Jupyter KAGGLE Kaggle's @@ -108,8 +113,9 @@ Kumar Langchain Langgraph leaderboard +lignment LLM -LLMs +llms LLVM lora Makefiles @@ -118,6 +124,7 @@ Martinoli md Mergify Merlinite +merlinite Milvus MilvusEmbeddingRetriever MilvusLite @@ -125,6 +132,7 @@ mimimum Miniforge MiniLM Mixtral +mixtral MLX MMLU modularize @@ -140,11 +148,10 @@ numpy NVidia OCI Ollama +ollama onboarding openai OpenStax -openai -OpenAI optimizers orchestrator ots @@ -161,6 +168,7 @@ pluggable PNG POC Podman +podman posthog postprocessing pre @@ -200,6 +208,7 @@ safetensors Salawu scalable SDG +sdg semvar sexualized SHA @@ -214,7 +223,6 @@ src Srivastava Staar Standup -Staar subcommand subcommands subdirectory @@ -236,7 +244,9 @@ tqdm traigers triager Triagers +triagers UI +ui unquantized unstaged URI @@ -248,7 +258,8 @@ vectordbs Veeradhi venv Vishnoi -vLLM +vllm +vllm watsonx Wikisource wikisql @@ -260,3 +271,4 @@ XT XTX Xu YAML +yaml From 6cc5bfe3dbdc5f8291cc6007885c765ceb8195e0 Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Fri, 3 Jan 2025 12:35:27 -0500 Subject: [PATCH 59/83] Second try for spellcheck update Signed-off-by: Bill Murdock --- .spellcheck-en-custom.txt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 9b3dd056..1d3cbb9e 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -2,6 +2,7 @@ # Please keep this file sorted: Abhishek ADR +agentic Akash AMDGPU Anil @@ -18,7 +19,6 @@ checkpointing chunkers CLI cli -cli CLI's codebase Colab @@ -46,6 +46,7 @@ Dependabot dev disambiguating ditaa +Docling docling docstring DocumentSplitter @@ -69,7 +70,7 @@ formedness FQN freeform FSDP -gb +GB gb GFX GGUF @@ -79,6 +80,7 @@ GiB github Gmail GPTDolomite +GPU gpu Guang hacky @@ -102,6 +104,7 @@ itertools Jie jinja JIT +JSON json Jupyter KAGGLE @@ -115,6 +118,7 @@ Langgraph leaderboard lignment LLM +LLMs llms LLVM lora @@ -150,6 +154,7 @@ OCI Ollama ollama onboarding +OpenAI openai OpenStax optimizers @@ -258,7 +263,7 @@ vectordbs Veeradhi venv Vishnoi -vllm +vLLM vllm watsonx Wikisource From f217eeeca08d1938bd412197846c777688d21297 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 09:24:58 +0000 Subject: [PATCH 60/83] Bump rhysd/actionlint from 1.7.4 to 1.7.6 in /.github/workflows Bumps rhysd/actionlint from 1.7.4 to 1.7.6. --- updated-dependencies: - dependency-name: rhysd/actionlint dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/actionlint.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actionlint.dockerfile b/.github/workflows/actionlint.dockerfile index 9de2e84a..b9780283 100644 --- a/.github/workflows/actionlint.dockerfile +++ b/.github/workflows/actionlint.dockerfile @@ -1,3 +1,3 @@ # Since dependabot cannot update workflows using docker, # we use this indirection since dependabot can update this file. -FROM rhysd/actionlint:1.7.4@sha256:82244e1db1c60d82c7792180a48dd0bcb838370bb589d53ff132503fc9485868 +FROM rhysd/actionlint:1.7.6@sha256:e3856d413f923accc4120884ff79f6bdba3dd53fd42884d325f21af61cc15ce0 From 139ff5729a5d75d57023223a897c4fabe4c08b3d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 09:51:39 +0000 Subject: [PATCH 61/83] Bump rojopolis/spellcheck-github-actions from 0.45.0 to 0.46.0 Bumps [rojopolis/spellcheck-github-actions](https://github.com/rojopolis/spellcheck-github-actions) from 0.45.0 to 0.46.0. - [Release notes](https://github.com/rojopolis/spellcheck-github-actions/releases) - [Changelog](https://github.com/rojopolis/spellcheck-github-actions/blob/master/CHANGELOG.md) - [Commits](https://github.com/rojopolis/spellcheck-github-actions/compare/403efe0642148e94ecb3515e89c767b85a32371a...e7d2b8d65030d75d79a50c069a6ef30522e534eb) --- updated-dependencies: - dependency-name: rojopolis/spellcheck-github-actions dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/spellcheck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 22bebc70..8f725b22 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -42,4 +42,4 @@ jobs: fetch-depth: 0 - name: Spellcheck - uses: rojopolis/spellcheck-github-actions@403efe0642148e94ecb3515e89c767b85a32371a # v0.45.0 + uses: rojopolis/spellcheck-github-actions@e7d2b8d65030d75d79a50c069a6ef30522e534eb # v0.46.0 From db834caa1e3fa0f9da8d25a58f81084222329cef Mon Sep 17 00:00:00 2001 From: Anastas Stoyanovsky Date: Thu, 19 Dec 2024 15:14:52 -0500 Subject: [PATCH 62/83] Introduce ADR format for RAG decisions Signed-off-by: Anastas Stoyanovsky --- .gitignore | 7 +++++++ docs/rag/adrs/README.md | 32 ++++++++++++++++++++++++++++++++ docs/rag/adrs/template.md | 17 +++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 docs/rag/adrs/README.md create mode 100644 docs/rag/adrs/template.md diff --git a/.gitignore b/.gitignore index 923bed08..29b8574d 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,10 @@ dictionary.dic # python virtualenv venv + +# Emacs +*~ +\#*\# +.\#* +.projectile +.dir-locals.el diff --git a/docs/rag/adrs/README.md b/docs/rag/adrs/README.md new file mode 100644 index 00000000..940a7891 --- /dev/null +++ b/docs/rag/adrs/README.md @@ -0,0 +1,32 @@ +# Architecture Decision Records + +The ADR is a lightweight record format intended to capture individual architecturally important decisions. They are meant to be easy to write - 10 minutes or less. They should be stored in the codebase they affect, go through peer review, and have a commit history. + +This simple format, which is described below, has a surprising number of functions: + +* **Decision making process**: by going through peer review, it includes the entire team and gives all perspectives a chance to be heard. There is a clear decision making process with a clear lifecycle - once an ADR meets whatever approval criteria the team chooses, it is merged and the decision is done. If new information comes to light that causes the team to reconsider the decision, then that is simply a new ADR. +* **Institutional knowledge and transparency**: Not everyone will comment on every ADR, but the transparency of the mechanism should serve to keep everyone informed and encode tribal knowledge into writing. This also builds resilience - there should ideally never be decision making that is blocked by someone being sick or on vacation. The team should always be able to make significant decisions. +* **Distribute design authority**: As a team becomes familiar and comfortable with the ADR mechanism, every team member has an equal tool to bring design decisions to the team. This encourages autonomy, accountability, and ownership. +* **Onboarding and training material**: A natural consequence of it being easy to write an ADR and getting into the habit of doing so is that new team members can simply read the record of ADRs to onboard. +* **Knowledge sharing**: The peer review phase allows sharing of expertise between team members. +* **Fewer meetings**: As decision making becomes asynchronous and as the team forms its social norms around the process, there should be less time required in meetings. + +# When to write an ADR + +* A decision is being made that required discussion between two or more people. +* A decision is being made that required significant investigation. +* A decision is being proposed for feedback / discussion. +* A decision is being proposed that affects multiple teams. + +# Template + +[Here](template.md). + +# Related Reading + +* [Suggestions for writing good ADRs](https://github.com/joelparkerhenderson/architecture-decision-record?tab=readme-ov-file#suggestions-for-writing-good-adrs) +* [ADRs at RedHat](https://www.redhat.com/architect/architecture-decision-records) +* [ADRs at Amazon](https://docs.aws.amazon.com/prescriptive-guidance/latest/architectural-decision-records/adr-process.html) +* [ADRs at GitHub](https://adr.github.io/) +* [ADRs at Google](https://cloud.google.com/architecture/architecture-decision-records) + diff --git a/docs/rag/adrs/template.md b/docs/rag/adrs/template.md new file mode 100644 index 00000000..03e57113 --- /dev/null +++ b/docs/rag/adrs/template.md @@ -0,0 +1,17 @@ +# ADR 00x: Succinct title + +## Context + +_What is the context of this decision? What are the technical, social, and political factors? For example, the decision to use a particular library might be simply because most of the team is familiar with it; that is a social context. A political factor might be influences from other teams or executive decisions_ + +## Decision + +_a single decision statement, written in active voice, stated in a single sentence_ + +## Status + +[Proposed | Accepted | Rejected ] + +## Consequences + +_A bulleted list and might be the most important section. What are the consequences of this decision? Does it introduce design constraints into a codebase? Does it require further decisions or investigations to be made? Will it require training/onboarding for team members? Does it impact performance? What about cost? Does it impact development processes? What else? As a rule of thumb, there should usually be 4-6 identified consequences_ \ No newline at end of file From 8f2ae56b167eade112b0e78ffeec6a0afe8b624c Mon Sep 17 00:00:00 2001 From: Anastas Stoyanovsky Date: Thu, 19 Dec 2024 15:32:14 -0500 Subject: [PATCH 63/83] ADR 001: Vector store for RAG Signed-off-by: Anastas Stoyanovsky --- .spellcheck-en-custom.txt | 1 + docs/rag/adrs/README.md | 9 ++++----- docs/rag/adrs/adr-vectordb.md | 26 ++++++++++++++++++++++++++ docs/rag/adrs/template.md | 4 ++-- 4 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 docs/rag/adrs/adr-vectordb.md diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 1d3cbb9e..385f0769 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -116,6 +116,7 @@ Kumar Langchain Langgraph leaderboard +lifecycle lignment LLM LLMs diff --git a/docs/rag/adrs/README.md b/docs/rag/adrs/README.md index 940a7891..f74eea00 100644 --- a/docs/rag/adrs/README.md +++ b/docs/rag/adrs/README.md @@ -11,22 +11,21 @@ This simple format, which is described below, has a surprising number of functio * **Knowledge sharing**: The peer review phase allows sharing of expertise between team members. * **Fewer meetings**: As decision making becomes asynchronous and as the team forms its social norms around the process, there should be less time required in meetings. -# When to write an ADR +## When to write an ADR * A decision is being made that required discussion between two or more people. * A decision is being made that required significant investigation. * A decision is being proposed for feedback / discussion. * A decision is being proposed that affects multiple teams. -# Template +## Template [Here](template.md). -# Related Reading +## Related Reading * [Suggestions for writing good ADRs](https://github.com/joelparkerhenderson/architecture-decision-record?tab=readme-ov-file#suggestions-for-writing-good-adrs) * [ADRs at RedHat](https://www.redhat.com/architect/architecture-decision-records) * [ADRs at Amazon](https://docs.aws.amazon.com/prescriptive-guidance/latest/architectural-decision-records/adr-process.html) * [ADRs at GitHub](https://adr.github.io/) -* [ADRs at Google](https://cloud.google.com/architecture/architecture-decision-records) - +* [ADRs at Google](https://cloud.google.com/architecture/architecture-decision-records) \ No newline at end of file diff --git a/docs/rag/adrs/adr-vectordb.md b/docs/rag/adrs/adr-vectordb.md new file mode 100644 index 00000000..ed2ca260 --- /dev/null +++ b/docs/rag/adrs/adr-vectordb.md @@ -0,0 +1,26 @@ +# Initial InstructLab Vector Store + +## Context + +One of the first choices to make in implementing RAG is to choose an initial vector store to develop against. Though the usage of frameworks like LangChain or Haystack make it easy to swap vector databases, we need a working end to end implementation for RAG that is tested against and available to install with InstructLab. There are many options (see [here](https://docs.haystack.deepset.ai/docs/choosing-a-document-store)). + +Our main long-term requirements are that our chosen store have fully-developed document update (and thus some sort of notion of primary key), that it be scalable to cluster size, and that it have a permissive license (Apache, MIT, or similar). Among the available choices, [Milvus](https://milvus.io/) provides strategic advantage due to its [investment from watsonx](https://www.ibm.com/new/announcements/ibm-watsonx-data-vector-database-ai-ready-data-management). + +Milvus can be used in-process ([Milvus Lite](https://milvus.io/docs/milvus_lite.md)), single-node ([Milvus](https://milvus.io/docs/prerequisite-docker.md)), or cluster-scale ([Milvus Distributed](https://milvus.io/docs/prerequisite-helm.md)). + +## Decision + +InstructLab will initially integrate with and use Milvus Lite for vector storage and retrieval augmented generation. + +## Status + +Accepted + +## Consequences + +* Users will have a clear [upgrade path](https://milvus.io/docs/upgrade_milvus_cluster-operator.md) from the laptop use case to cluster scale. +* We should be able to have access to expert resources with Milvus via IBM. +* The laptop use case of InstructLab will have a minimally resource intensive option for prototyping. +* Since Milvus is used in watsonx, we can have confidence that it can meet expected scaling requirements. +* Document updates can be accommodated using well-established [primary key functionality](https://milvus.io/docs/primary-field.md) and [partition key](https://milvus.io/docs/use-partition-key.md). +* There is a risk of developing against a mature vector store leading to usage of functionality not available in some other vector store that a potential customer requires to be used. diff --git a/docs/rag/adrs/template.md b/docs/rag/adrs/template.md index 03e57113..f72378a3 100644 --- a/docs/rag/adrs/template.md +++ b/docs/rag/adrs/template.md @@ -1,4 +1,4 @@ -# ADR 00x: Succinct title +# Succinct title ## Context @@ -14,4 +14,4 @@ _a single decision statement, written in active voice, stated in a single senten ## Consequences -_A bulleted list and might be the most important section. What are the consequences of this decision? Does it introduce design constraints into a codebase? Does it require further decisions or investigations to be made? Will it require training/onboarding for team members? Does it impact performance? What about cost? Does it impact development processes? What else? As a rule of thumb, there should usually be 4-6 identified consequences_ \ No newline at end of file +_A bulleted list and might be the most important section. What are the consequences of this decision? Does it introduce design constraints into a codebase? Does it require further decisions or investigations to be made? Will it require training/onboarding for team members? Does it impact performance? What about cost? Does it impact development processes? What else? As a rule of thumb, there should usually be 4-6 identified consequences_ From 9ad29962dbc104dfec3538b1860da75a861ddc66 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 Jan 2025 09:16:52 +0000 Subject: [PATCH 64/83] Bump step-security/harden-runner from 2.10.2 to 2.10.3 Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.10.2 to 2.10.3. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](https://github.com/step-security/harden-runner/compare/0080882f6c36860b6ba35c610c98ce87d4e2f26f...c95a14d0e5bab51a9f56296a4eb0e416910cd350) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/actionlint.yml | 2 +- .github/workflows/docs.yml | 2 +- .github/workflows/spellcheck.yml | 2 +- .github/workflows/stale_bot.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml index 68a58ad1..fd88dd4e 100644 --- a/.github/workflows/actionlint.yml +++ b/.github/workflows/actionlint.yml @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 2d727e8f..82f4534f 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -33,7 +33,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 22bebc70..296b7a4c 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs diff --git a/.github/workflows/stale_bot.yml b/.github/workflows/stale_bot.yml index d5a0416a..7578bb92 100644 --- a/.github/workflows/stale_bot.yml +++ b/.github/workflows/stale_bot.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3 with: disable-sudo: true egress-policy: block From 91dbcd3fcccfc23bc14c7430ad71d73be320f91b Mon Sep 17 00:00:00 2001 From: Courtney Pacheco <6019922+courtneypacheco@users.noreply.github.com> Date: Thu, 16 Jan 2025 11:18:56 -0500 Subject: [PATCH 65/83] Add CI dev doc for in-house GitHub actions This doc describes how we can reuse our in-house actions as our CI continues to grow. Signed-off-by: Courtney Pacheco <6019922+courtneypacheco@users.noreply.github.com> --- docs/ci/ci-universal-actions.md | 80 +++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 docs/ci/ci-universal-actions.md diff --git a/docs/ci/ci-universal-actions.md b/docs/ci/ci-universal-actions.md new file mode 100644 index 00000000..00999496 --- /dev/null +++ b/docs/ci/ci-universal-actions.md @@ -0,0 +1,80 @@ +# Create Separate Repo for Custom GitHub Actions + +## Idea Overview + +Create a separate repository within the `instructlab` GitHub org to house our custom CI Github Actions. + +## Motivation for this Proposal + +Within our `instructlab` GitHub org, we have an in-house GitHub action that we use across several repos: `free-disk-space`. + +Examples: + +- [`free-disk-space` in the `eval` repo](https://github.com/instructlab/eval/blob/main/.github/actions/free-disk-space/action.yml) +- [`free-disk-space` in the `instructlab` repo](https://github.com/instructlab/instructlab/blob/main/.github/actions/free-disk-space/action.yml) +- [`free-disk-space` in the `sdg` repo](https://github.com/instructlab/sdg/blob/a532a8d99ffe447152948e9442464923aba62637/.github/actions/free-disk-space/action.yml) + +This GitHub action is universal as it is a simple script used to clean up disk space on GitHub runners and can be modified to free disk space on our CentOS-based EC2 runners. + +Note that all of these in-house `free-disk-space` action files are exactly the same, so we essentially have the same file stored in three different repos. + +## Pros and Cons + +Below are some pros and cons of creating a separate repository to house our GitHub actions. + +### Pros + +- We will have one action file in one location + - Easier to make changes in one location instead of (our present) three locations + - Contributors will know where to look for in-house action files +- We can create releases and utilize version control + +### Cons + +- Extra repository to maintain. +- We can't publish any of our actions to the GitHub marketplace if we have multiple actions stored in one repository.\* + +\* In reference to the last bullet point, [the GitHub docs for publishing Actions](https://docs.github.com/en/actions/sharing-automations/creating-actions/publishing-actions-in-github-marketplace#about-publishing-actions) states: +> Actions are published to GitHub Marketplace immediately and aren't reviewed by GitHub as long as they meet these requirements: +> +> - The action must be in a public repository. +> - Each repository must contain a single action. + +If we do care about publishing our actions, then we should consider creating separate repositories for these actions. If we don't care to publish, then this is a non-issue. (See next section below.) + +## Additional Info + +Even if we cannot publish our actions to the GitHub marketplace, we can _still_ use these actions in our repository. For example, if our repo was named `ci-actions` with this layout: + +```bash +. +├── custom-action-1/ +│ ├── action.yml +├── custom-action-2 +│ ├── action.yml +``` + +...then we'd reference them in our other repos like so: + +```yaml +name: Some Name + +on: + workflow_dispatch: + +jobs: + some-job: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout + + - name: Use custom action 1 + uses: instructlab/ci-actions/custom-action-1@main + + - name: Use custom action 2 + uses: instructlab/ci-actions/custom-action-2@main +``` + +Reference: [StackOverflow - "How to Publish Multiple GitHub Actions from a Single Repo and Call Them from Another Repo"](https://stackoverflow.com/a/79100136) \ No newline at end of file From dd82bec916a39aa8774b6eb15495b35ec0374850 Mon Sep 17 00:00:00 2001 From: Bill Murdock Date: Fri, 17 Jan 2025 18:39:47 -0500 Subject: [PATCH 66/83] ADR for IBM Granite Embeddings Signed-off-by: Bill Murdock --- docs/rag/adrs/granite-embeddings.md | 47 +++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 docs/rag/adrs/granite-embeddings.md diff --git a/docs/rag/adrs/granite-embeddings.md b/docs/rag/adrs/granite-embeddings.md new file mode 100644 index 00000000..96ff9e21 --- /dev/null +++ b/docs/rag/adrs/granite-embeddings.md @@ -0,0 +1,47 @@ +# InstructLab RAG will use Granite Embeddings as the default embedding model + +## Context + +InstructLab RAG will be using dense vector retrieval via a vector database to select documents for use in response generation. Dense vector retrieval requires a model to provide dense vectors of the content at indexing time and dense vectors of the query at retrieval time. + +Some key considerations: + +- We want a model that is reasonably effective at driving accurate semantic search. +- We want a model that runs quickly and doesn't require a lot of expensive hardware to run. +- We want a model that does not require an inordinate amount of storage space for the vectors. +- We want a model with license terms that are compatible with the license for InstructLab so that anyone using InstructLab under the terms of its license can use its default embedding model without any additional encumbrance. +- We want a model where the license terms for all of the data used to train the model are compatible with the license terms of that model. +- If possible, it would be nice for the embedding model used for RAG to be the same embedding model that is used for other purposes in InstructLab. At this time, there are no other uses of embedding models for InstructLab, but we understand there are experiments under way to use embedding models for subset selection for synthetic data. + +We don't need this to be one model that is the best possible fit for all users. There is no such model because many of the criteria are trade-offs, e.g., models that are bigger tend to be more effective but also slower and require more memory and storage space. Fortunately, we are just choosing a default value, and users will be free to override that default and plug in the embedding model of their choice. For the default, the main consideration is that the model be acceptable across all the criteria. + +Another consideration might be the maximum amount of text that the embedding model can produce embeddings for. Many popular models have a maximum input length of 512 tokens, but some have longer maxima. A larger maximum might be useful for a RAG solution in which the response generation model has a large context window. However, it might not be: the larger context window might be better used by getting a larger number of search results or by looking up the text that came before and after each search result. A larger maximum input length for the query might also be useful for encoding not just the current user utterance but also the history of the chat leading up to that utterance. We will continue to explore this space and if we find that maximum input length is an important consideration, it could result in selecting a different default embedding model in the future. + +### Alternatives + +There are two IBM Granite English embedding models: + +- [IBM Granite-Embedding-30m-English](https://huggingface.co/ibm-granite/granite-embedding-30m-english) +- [IBM Granite-Embedding-125m-English](https://huggingface.co/ibm-granite/granite-embedding-125m-english) + +The 30m model provides accuracy that is comparable to 125m model on some data sets but significantly lower on other data sets. For use cases where there is a large amount of robust evaluation data and the ability to reliable metrics, it would generally be sensible to to try both and measure the speed/size/accuracy trade-offs. On the other hand, for engagements where the quantity of data to be indexed is enormous, the advantages in indexing time and storage space from using a smaller model can be overwhelming. Such engagements would generally be better served by 30m-English. However, for a simple proof-of-concept where a user won't be able to measure accuracy robustly, 125m-English is probably a better choice over 30m-English because 125m is small enough for most purposes and is the one most likely to be accurate enough that a user will be happy with the results. The simple proof-of-concept use case seems like the most important one for determining the *default* model because users who are outside of the context of a simple proof-of-concept are much more likely to be overriding the default anyway. Both of these models have a maximum input length of 512 tokens. + +Other options available include: + +- IBM Granite multi-lingual embedding models seem like they could be very useful as part of a broader InstructLab multilingual strategy. For now, the defaults we have are focused on English, but in the future we might want users to provide the target language or languages they are working with during initial setup and then defaults for various settings depend on that choice. Since this would involve a broader end-to-end change, it is out of scope for this ADR. The Granite multi-lingual models support 12 languages, but there are plenty of languages that they do not support. Other models support larger numbers of languages. +- [NV-Embed-v2](https://huggingface.co/nvidia/NV-Embed-v2) has outstanding accuracy (for example, see the [MTEB leaderboard](https://huggingface.co/spaces/mteb/leaderboard) overall English and retrieval English results). However, it is licensed for non-commercial use only and requires almost 30 gb of memory (so presumably it requires some expensive hardware to run at speed). For non-commercial users that prioritize accuracy over every other consideration, this might still be a fine model to choose, but it does not seem like a good default value because it doesn't meet all the criteria. +- [all-MiniLM-L6-v2](https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2) was proposed as a default in an [early draft of another dev doc in this repository](https://github.com/instructlab/dev-docs/pull/161/commits/7ca3ab624526a4c5a5c70d282f8a6be26c292020#diff-b103ed3331fbeb65d7569ea836c9fd4b53c845853d8c8e7567c34864eebcdfb8R51). It is a very popular, lightweight embedding model. However, its [list of training sources](https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2#training-data) includes MS MARCO which is clearly marked as non-commercial use only. In contrast, the [Granite embedding model card](https://huggingface.co/ibm-granite/granite-embedding-125m-english) asserts that "Notably, we do not use the popular MS-MARCO retrieval dataset in our training corpus due to its non-commercial license, while other open-source models train on this dataset due to its high quality." Note that all-MiniLM-L6-v2 is licensed as Apache 2.0 which authorizes commercial use of this model, but it seems potentially problematic for the creators of a model to authorize commercial use when they trained on data that was not authorized for commercial use. We would prefer to avoid this tricky legal concern. +- There are many other open source models of comparable size to the Granite embedding models. However, most highly competitive models use MS-MARCO or other sources with problematic provenance. Furthermore, IBM has [published benchmark results](https://www.ibm.com/new/announcements/ibm-granite-3-1-powerful-performance-long-context-and-more#Granite+embedding+models) showing that Granite's accuracy is highly competitive with other popular open source options of comparable size. Note, however, that these results do not include some newer competing models. They also don't include any much larger, more resource intensive models; such comparisons wouldn't really be *fair* (i.e., a bigger model that uses more memory has a fundamental advantage) but they would be *useful* for someone who has flexibility on hardware requirements and would like to explore trade-offs. More benchmarking would be helpful. + +## Decision + +InstructLab RAG will use [IBM Granite-Embedding-125m-English](https://huggingface.co/ibm-granite/granite-embedding-125m-english) as the default embedding model. + +## Consequences + +- We will have consistency with the default options for model training (which are also based on IBM Granite). +- Anyone using the default option will be able to rely on IBM's outstanding, well-earned reputation for respecting intellectual property rights and careful compliance with legal restrictions. +- Anyone who wants a different balance between key considerations (hardware requirements, speed, effectiveness, terms of use, etc.) will want to override the default embedding model. For example, users who want the best possible accuracy and have a lot of expensive hardware available to run the model will probably want to choose a larger model, and users with extremely limited hardware who can tolerate lower accuracy will probably choose a smaller model. +- We should consider strategies of offsetting perception of prioritizing IBM models over the needs of the product in addition to the clear motivation described here, such as in documentation. +- We may wish to change to a different default embedding model in the future if more benchmarking shows that a different model provides a better balance of accuracy, speed, and hardware requirements. +- More work is needed to figure out whether a larger maximum input length would be better for our RAG solution. From c471c615fa568822717e3882ae74637a51f068aa Mon Sep 17 00:00:00 2001 From: Ryan Cook Date: Thu, 2 Jan 2025 09:42:08 -0500 Subject: [PATCH 67/83] RAG ingest and chat ADR Signed-off-by: Daniele Martinoli Signed-off-by: Anastas Stoyanovsky --- docs/rag/ilab-rag-retrieval.md | 452 +++++++++++++++++++ docs/rag/images/ingestion-mvp.png | Bin 0 -> 120239 bytes docs/rag/images/rag-chat.png | Bin 0 -> 99204 bytes docs/rag/images/rag-model-training.png | Bin 0 -> 240929 bytes docs/rag/images/rag-plug-and-play.png | Bin 0 -> 218947 bytes docs/rag/images/rag-taxonomy-no-training.png | Bin 0 -> 238590 bytes 6 files changed, 452 insertions(+) create mode 100644 docs/rag/ilab-rag-retrieval.md create mode 100644 docs/rag/images/ingestion-mvp.png create mode 100644 docs/rag/images/rag-chat.png create mode 100644 docs/rag/images/rag-model-training.png create mode 100644 docs/rag/images/rag-plug-and-play.png create mode 100644 docs/rag/images/rag-taxonomy-no-training.png diff --git a/docs/rag/ilab-rag-retrieval.md b/docs/rag/ilab-rag-retrieval.md new file mode 100644 index 00000000..b77cd5ef --- /dev/null +++ b/docs/rag/ilab-rag-retrieval.md @@ -0,0 +1,452 @@ +# Design Proposal - Embedding Ingestion Pipeline And RAG-Based Chat + +Not addressed in this document: + +* Vector store authentication options. +* Document versioning and data update policies. +* Unify prompt management in InstructLab. See (`chat_template` [configuration][chat_template] and +`augment_chat_template` [function][augment_chat_template]) + +**Author**: Daniele Martinoli + +**Version**: 0.1 + +## 1. Introduction + +This document proposes enhancements to the `ilab` CLI to support workflows utilizing Retrieval-Augmented Generation +(RAG) artifacts within `InstructLab`. The proposed changes introduce new commands and options for the embedding ingestion +and RAG-based chat pipelines: + +* A new `ilab rag` command group, feature gated behind a `ILAB_ENABLE_EXPERIMENTAL` environment variable. + * The application will exit with an error message if used without feature flag being set to `1`. +* A new `ilab rag` sub-command group to process user documentation. + * Either from knowledge taxonomy or from actual user documents. +* A new `ilab rag` sub-command to generate and ingest embeddings from pre-processed documents into a configured vector store. +* An option to enhance the chat pipeline by using the stored embeddings to augment the context of conversations, improving relevance and accuracy. + +### 1.1 User Experience Overview + +The commands are tailored to support diverse user experiences, all enabling the use of RAG functionality to enrich chat sessions. + +### 1.2 Plug-and-Play RAG Path + +This flow is designed for users who want to enhance their chat experience with pre-trained models by simply integrating the RAG functionality: +![plug-and-play](./images/rag-plug-and-play.png) + +**Note**: documents are processed using `docling.DocumentConverter` and are defined using the docling v2 schema. + +### 1.3 Model Training Path + +This flow is designed for users who aim to train their own models and leverage the source documents that support knowledge submissions to enhance the chat context: +![model-training](./images/rag-model-training.png) + +**Note**: documents are processed using `instructlab-sdg` package and are defined using the docling v1 schema. + +### 1.4 Taxonomy Path (no Training) + +This flow is for users who have defined taxonomy knowledge but prefer not to train their own models. Instead, they aim to generate RAG artifacts from source documents to enhance the chat context: +![taxonomy-no-training](./images/rag-taxonomy-no-training.png) + +**Note**: documents are processed using `docling.DocumentConverter` and are defined using the docling v2 schema. + +## 2. Proposed Pipelines + +### 2.1 Working Assumption + +This proposal aims to serve as a reference design to develop a Proof of Concept for RAG workflows, while +also laying the foundation for future implementations of state-of-the-art RAG artifacts tailored to specific use +cases. + +#### Command Options + +New configurations options are introduced to manage the execution of the new commands. Comments will be added to clarify that these configuration fields may change in the future, +as this is an experimental feature. +The command execution can be customized using the following hierarchy, where options higher in the list override those below: + +* CLI flags (e.g., `--FLAG`). +* Configuration fields defined with `ilab config` commands. +* Default values, for all the applicable use cases. + +#### Local embedding models + +The embedding model used to generate text embeddings must be downloaded locally before executing the pipeline. + +For example, this command can be used to download the `ibm-granite/granite-embedding-125m-english` model to the local models cache: + +```bash +ilab model download -rp ibm-granite/granite-embedding-125m-english +``` + +If the configured embedding model has not been cached, the command execution will terminate with an error. This requirement applies +consistently to all new and updated commands. + +### 2.2 Document Processing Pipeline + +The proposal is to add a `convert` sub-command to the `rag` command group. + +For the Taxonomy path (no Model Training): + +```bash +ilab rag convert --output-dir /path/to/processed/folder +``` + +For the Plug-and-Play RAG path: + +```bash +ilab rag convert --input-dir /path/to/docs/folder --output-dir /path/to/processed/folder +``` + +#### Processing-Command Purpose + +Applies the docling transformation to the customer documents. + +* Original documents are located in the `/path/to/docs/folder` input folder or in the taxonomy knowledge branch. + * In the latter case, the input documents are the knowledge documents retrieved from the installed taxonomy repository + according to the [SDG diff strategy][sdg-diff-strategy], e.g. `the new or changed YAMLs using git diff, including untracked files`. +* Processed artifacts are stored under `/path/to/processed/folder`. + +***Notes**: + +* In alignment with the current SDG implementation, the `--input-dir` folder will not be navigated recursively. Only files located at the root + level of the specified folder will be considered. The same principle applies to all other options outlined below. +* To ensure consistency and avoid issues with document versioning or outdated artifacts, the destination folder will be cleared + before execution. This ensures it contains only the artifacts generated from the most recent run. + +The transformation is based on the latest version of the docling `DocumentConverter` (v2). +The alternative to adopt the `instructlab-sdg` modules (e.g. the initial step of the `ilab data generate` pipeline) has been +discarded because it generates documents according to the so-called legacy docling schema. + +#### Processing-Usage + +The generated artifacts can later be used to generate and ingest the embeddings into a vector database. + +### 2.3 Document Processing Pipeline Options + +**Note**: The `--help` option will be aware of the `rag` command group only if `ILAB_ENABLE_EXPERIMENTAL` environment variable is set to `1`. + +```bash +% ilab rag convert --help +Usage: ilab rag convert [OPTIONS] + + The document processing pipeline for retrieval augmented generation + +Options: + --input-dir DIRECTORY The folder with user documents to process. In case + it's missing, the knowledge taxonomy files will be + processed instead. + --taxonomy-path PATH Directory where taxonomy is stored and accessed from. + --taxonomy-base TEXT Branch of taxonomy used to calculate diff against. + --output-dir DIRECTORY Directory where processed docs are stored. + --help Show this message and exit. +``` + +| Option Description | Default Value | CLI Flag | Configuration Option | +|--------------------|---------------|----------|----------------------| +| Location folder of user documents. In case it's missing, the taxonomy is navigated to look for updated knowledge documents.| | `--input-dir` | | +| Location folder of processed documents. | | `--ouput` | | +| Directory where taxonomy is stored and accessed from. | `$HOME/.cache/instructlab/taxonomy` | `--taxonomy-path` | `rag.convert.taxonomy_path` | +| Branch of taxonomy used to calculate diff against. | `origin/main` | `--taxonomy-base` | `rag.convert.taxonomy_base` | + +Equivalent YAML configuration: + +```yaml +rag: + convert: + taxonomy_path: '...' + taxonomy_base: 'origin/main' +``` + +### 2.4 Embedding Ingestion Pipeline + +The proposal is to add an `ingest` sub-command to the `rag` command group. + +For the Model Training path: + +```bash +ilab rag ingest +``` + +For the Taxonomy or Plug-and-Play RAG paths: + +```bash +ilab rag ingest --input-dir path/to/processed/folder +``` + +#### Ingestion-Working Assumption + +The documents at the specified path have already been processed using the `rag convert` command or an equivalent method +(see [Getting Started with Knowledge Contributions][ilab-knowledge]). + +#### Ingestion-Command Purpose + +Generate the embeddings from the pre-processed documents. + +* In case of Model Training path, the documents are located in the location specified by the `generate.output_dir` configuration key + (e.g. `_HOME_/.local/share/instructlab/datasets`). + * In particular, only the latest folder with name starting by `documents-` will be explored. + * It must include a subfolder `docling-artifacts` with the actual json files. +* In case the */path/to/processed/folder* parameter is provided, it is used to lookup the processed documents to ingest. + +**Notes**: + +* To ensure consistency and avoid issues with document versioning or outdated embeddings, the ingested collection will be cleared before execution. + This ensures it contains only the embeddings generated from the most recent run. + +### Ingestion-Why We Need It + +To populate embedding vector stores with pre-processed information that can be used at chat inference time. + +#### Ingestion-Supported Databases + +The command may support various vector database types. A default configuration will align with the selected +InstructLab technology stack. + +#### Ingestion-Usage + +The generated embeddings can later be retrieved from a vector database and converted to text, enriching the +context for RAG-based chat pipelines. + +### 2.5 Embedding Ingestion Pipeline Options + +**Note**: The `--help` option will be aware of the `rag` command group only if `ILAB_ENABLE_EXPERIMENTAL` environment variable is set to `1`. + +```bash +% ilab rag ingest --help +Usage: ilab rag ingest [OPTIONS] + + The embedding ingestion pipeline + +Options: + --document-store-type TEXT The document store type, one of: + `milvuslite`. + --document-store-uri TEXT The document store URI + --document-store-collection-name TEXT + The document store collection name + --model-dir TEXT Base directories where models are stored. + [default: (The default system model location + store, located in the data directory.)] + --embedding-model TEXT The embedding model name + --output-dir TEXT Directory where generated datasets are + stored. + --input-dir DIRECTORY Directory where pre-processed documents are + located. + --help Show this message and exit. +``` + +| Option Description | Default Value | CLI Flag | Configuration Option | +|--------------------|---------------|----------|----------------------| +| Document store implementation, one of: `milvuslite`, **TBD** | `milvuslite` | `--document-store-type` | `rag.ingest.document_store.type` | +| Document store service URI. | `./embeddings.db` | `--document-store-uri` | `rag.ingest.document_store.uri` | +| Document store collection name. | `IlabEmbeddings` | `--document-store-collection-name` | `rag.ingest.document_store.collection_name` | +| Base directories where models are stored. | `$HOME/.cache/instructlab/models` | `--retriever-embedder-model-dir` | `rag.ingest.embedder.model_dir` | +| Name of the embedding model. | **TBD**` | `--embedding-model` | `rag.ingest.embedder.model_name` | + +Equivalent YAML configuration: + +```yaml +rag: + ingest: + document_store: + type: milvuslite + uri: 'embeddings.db' + collection_name: IlabEmbeddings + embedder: + model_dir: '...' + model_name: ibm-granite/granite-embedding-125m-english +``` + +### 2.6 RAG Chat Pipeline Command + +The proposal is to add a `chat.rag.enable` configuration (or the equivalent `--rag` flag) to the `model chat` command, like: + +```bash +ilab model chat --rag +``` + +As with the commands in the `ilab rag` group, a precondition is that `ILAB_ENABLE_EXPERIMENTAL` environment variable must be set to `1`. + +#### Command Purpose + +This command enhances the existing `ilab model chat` functionality by integrating contextual information retrieved from user-provided documents, +enriching the conversational experience with relevant insights. + +#### Revised chat pipeline + +* Start with the user's input, `user_query`. +* Use the given `user_query` to retrieve relevant contextual information from the embedding database (semantic search). +* Append the retrieved context to the original LLM request. +* Send the context augmented request to the LLM and return the response to the user. + +#### Prompt Template + +A default non-configurable template is used with parameters to specify the user query and the context, like: + +```text +Given the following information, answer the question. +Context: +{context} +Question: +{user_query} +Answer: +``` + +Future extensions should align prompt management with the existing InstructLab design. + +### 2.7 RAG Chat Commands + +The `/r` command may be added to the `ilab model chat` command to dynamically toggle the execution of the RAG pipeline. +This will only appear in the help list if `ILAB_ENABLE_EXPERIMENTAL` environment variable is set to `1`. + +The current status could be displayed with an additional marker on the chat status bar, as in (top right corner): + +```console +>>> /h [RAG][S][default] +╭───────────────────────────────────────────────────────────── system ──────────────────────────────────────────────────────────────╮ +│ Help / TL;DR │ +│ │ +│ • /q: quit │ +│ • /h: show help │ +│ • /a assistant: amend assistant (i.e., model) │ +│ • /c context: change context (available contexts: default, cli_helper) │ +│ • /lc: list contexts │ +│ • /m: toggle multiline (for the next session only) │ +│ • /M: toggle multiline │ +│ • /n: new session │ +│ • /N: new session (ignoring loaded) │ +│ • /d : display previous response based on input, if passed 1 then previous, if 2 then second last response and so on. │ +│ • /p : previous response in plain text based on input, if passed 1 then previous, if 2 then second last response and so on. │ +│ • /r: toggle the status of the RAG pipeline. │ +│ • /md : previous response in Markdown based on input, if passed 1 then previous, if 2 then second last response and so on. │ +│ • /s filepath: save current session to filepath │ +│ • /l filepath: load filepath and start a new session │ +│ • /L filepath: load filepath (permanently) and start a new session │ +│ │ +│ Press Alt (or Meta) and Enter or Esc Enter to end multiline input. │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +``` + +### 2.8 RAG Chat Options + +As we stated in [2.1 Working Assumptions](#21-working-assumption), we will introduce new configuration options for the specific `chat` command. + +| Description | Default Value | CLI Flag | Configuration Option | +|-------------|---------------|----------|----------------------| +| Enable or disable the RAG pipeline. | `false` | `--rag` (boolean)| `chat.rag.enabled` | +| The maximum number of documents to retrieve. | `10` | `--retriever-top-k` | `chat.rag.retriever.top_k` | +| Document store implementation, one of: `milvuslite`, **TBD** | `milvuslite` | `--document-store-type` | `chat.rag.document_store.type` | +| Document store service URI. | `./embeddings.db` | `--document-store-uri` | `chat.rag.document_store.uri` | +| Document store collection name. | `IlabEmbeddings` | `--document-store-collection-name` | `chat.rag.document_store.collection_name` | +| Base directories where models are stored. | `$HOME/.cache/instructlab/models` | `--retriever-embedder-model-dir` | `chat.rag.retriever.embedder.model_dir` | +| Name of the embedding model. | **TBD** | `--retriever-embedder-model-name` | `chat.rag.retriever.embedder.model_name` | + +Equivalent YAML document for the newly proposed options: + +```yaml +chat: + enable: false + retriever: + top_k: 20 + embedder: + model_name: ibm-granite/granite-embedding-125m-english + document_store: + type: milvuslite + uri: embeddings.db + collection_name: IlabEmbeddings +``` + +### 2.9 References + +* [Haystack-DocumentSplitter](https://github.com/deepset-ai/haystack/blob/f0c3692cf2a86c69de8738d53af925500e8a5126/haystack/components/preprocessors/document_splitter.py#L55) is temporarily adopted with default settings until a splitter based on the [docling chunkers][chunkers] is integrated + in Haystack. +* [MilvusEmbeddingRetriever](https://github.com/milvus-io/milvus-haystack/blob/77b27de00c2f0278e28b434f4883853a959f5466/src/milvus_haystack/milvus_embedding_retriever.py#L18) + +### 2.10 Workflow Visualization + +Embedding ingestion pipeline: +![ingestion-mvp](./images/ingestion-mvp.png) +RAG-based Chat pipeline: +![rag-chat](./images/rag-chat.png) + +### 2.11 Proposed Implementation Stack + +> **ℹ️ Note:** This stack is still under review. The proposed list represents potential candidates based on the current state of discussions. + +The following technologies form the foundation of the proposed solution: + +* [Haystack](https://haystack.deepset.ai/): Framework for implementing RAG pipelines and applications. +* [MilvusLite](https://milvus.io/docs/milvus_lite.md): The default vector database for efficient storage and retrieval of embeddings. +* [Docling](https://github.com/DS4SD/docling): Document processing tool. For more details, refer to William’s blog, [Docling: The missing document processing companion for generative AI](https://www.redhat.com/en/blog/docling-missing-document-processing-companion-generative-ai). + +## 3. Design Considerations + +* As decided in [PR #165](https://github.com/instructlab/dev-docs/pull/165), functions related to RAG ingestion + and retrieval are located in the dedicated folder `src/instructlab/rag`. +* The solution must minimize changes to existing modules by importing the required functions from the + `instructlab.rag` package. +* The solution must adopt a pluggable design to facilitate seamless integration of additional components: + * **Vector stores**: Support all selected implementations (e.g., Milvus). + * **Embedding models**: Handle embedding models using the appropriate embedder implementation for the + chosen framework (e.g., Haystack). + * Consider using factory functions to abstract implementations and enhance code flexibility. +* Optional dependencies for 3rd party integrations should be defined in `pyproject.toml` and documented for + clarity. Users can install optional components with commands like: + + `pip install instructlab[milvus]` + + 3rd party dependencies may also be grouped in files such as `requirements/milvus.txt`. + +## 4. Future Enhancements + +> ℹ️ **Note**: +> +> Following are preliminary thoughts about features we might add in the future. +> Actual design and implementation will likely change from what is defined below. + +### 4.1 Model Evaluation + +**TODO** A separate ADR will be defined. + +### 4.2 Advanced RAG retrieval steps + +* [Ranking retriever's result][ranking]: + +```bash +ilab model chat --rag --ranking --ranking-top-k=5 --ranking-model=cross-encoder/ms-marco-MiniLM-L-12-v2 +``` + +* [Query expansion][expansion]: + +```bash +ilab model chat --rag --query-expansion --query-expansion-prompt="$QUERY_EXPANSION_PROMPT" --query-expansion-num-of-queries=5 +``` + +* Using retrieval strategy: + +```bash +ilab model chat --rag --retrieval-strategy query-expansion --retrieval-strategy-options="prompt=$QUERY_EXPANSION_PROMPT;num_of_queries=5" +``` + +* ... + +### 4.3 Containerized Indexing Service + +Generate a containerized RAG artifact to expose a `/query` endpoint that can serve as an alternative source : + +```bash +ilab rag ingest --build-image --image-name=docker.io/user/my_rag_artifacts:1.0 +``` + +Then serve it and use it in a chat session: + +```bash +ilab serve --rag-embeddings --image-name=docker.io/user/my_rag_artifacts:1.0 --port 8123 +ilab model chat --rag --retriever-type api --retriever-uri http://localhost:8123 +``` + +[ilab-knowledge]: https://github.com/instructlab/taxonomy?tab=readme-ov-file#getting-started-with-knowledge-contributions +[sdg-diff-strategy]: https://github.com/instructlab/sdg/blob/main/src/instructlab/sdg/utils/taxonomy.py +[chat_template]: https://github.com/instructlab/instructlab/blob/0a773f05f8f57285930df101575241c649f591ce/src/instructlab/configuration.py#L244 +[augment_chat_template]: https://github.com/instructlab/instructlab/blob/48e3f7f1574ae50036d6e342b8d78d8eb9546bd5/src/instructlab/model/backends/llama_cpp.py#L281 +[ranking]: https://docs.haystack.deepset.ai/v1.21/reference/ranker-api +[expansion]: https://haystack.deepset.ai/blog/query-expansion +[chunkers]: https://github.com/DS4SD/docling/blob/main/docs/concepts/chunking.md \ No newline at end of file diff --git a/docs/rag/images/ingestion-mvp.png b/docs/rag/images/ingestion-mvp.png new file mode 100644 index 0000000000000000000000000000000000000000..e3dfa651c23af10d2cdcb6eeafb001b1e105e727 GIT binary patch literal 120239 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≻4jK&E^$L?iYzBGyf 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ξOe;x8Dalsa$&T+aeHsjnP&V>&y}L$2r=xT~$>IpOtZy|t?YNFuq5WlGY;%fR zjt321%ViKb&{Y^gU)2 zf2zfKN*;oVBJrhc2+`KlT{%Ez5Fy3v+)Kc?1!8zd;K|q8#=&rkcwo?pq3osshrAjC z5?t8IGV$ZEjC85K*3_wOCNBEna}0FD`y~Oy(T{^K72G!o9Eemo6Y13M?b9)1wTFji zP&Bwc8fi(C>_-2$Wq^RZzPy~yN*k2~mXo|snv^}36YVw6>Falx=N@7xh@?hvV-q&5 zpjxfLmQ17OC*O;4Vquiehvq=LR(3@&S`(5lRre4?($^MPnja`Gg4&krc9)1z9M&~5 zWP3X1sLf@G>QNPJ>MuN3emIDk1ilR|TkBDgAZ8+6c7EhM*LIN%FR9|)DD*$Bj2?&% z<^1w@aWjFMgr}0R)V;;vU|OzbK38PbqQutwPL?Y99Rj z@>cpqFv;k1>CY>O-}+OFx@FsN%T^iJbyigm7J%F{eL5Cj5n6mj^k`jgQR>bES)>rA!CAAz9S&M_Emh z>vtbfj$74)e@X}WvrOhrf1BwfFSxCNpR*m1O)vUnc*b5-H#x(u?@omBV}F~eKAwWL zH370iOR{!c^tziZY4atnR>d_iH%6ZOwN8M0i*Yig68!n%&~FIQP9$heSrJ{4xjDYOdKJFX!6 zYSe`Y?~48nrH)BXmW&TDXFd2uU<5V>0%pK28{6ZUdcSO7{VJGqm4!gV#qk*lyjGEd zHul-cj`R<VaBlPbl%D>wtJ{)ZsNJh=>5qrUo5U5WpLZI9r~xQ3YbZ=`Ns~| z4-@Gl3BoA2c~pqL&jq(jc+q#CB-Z#d_YeoTlHcZhHz}#xYa(k@WqK9b>pLiyektX9Nm`u>EFX90XGFUM zovv<@vgA5|!RsiOtt;H3JoVqke6&VE-8#e2T_k>hoWIPQ zrOysWr{|?ircT=rwjby*M$*>dLV3(IG3cUVa0Bb?AS!;sURRGAk+Mmo0b=W>Z{zMF z*1#EdvQF>T0|&b0MU+R%W#|EFq<}?v4~47&!zu|&%rupksO5^SU@&DBuN>yz{dx(e zn&YTv{i;7E5?3*r*1)YWMlJ05$*~QfFG&nON~2l*0bBO)(uk}9Fsu)INTP7aTl)st zEvamh(cPV1FA6!%&u=?dI=0Gz-wn+Z*t_fqdz!4NG^6i6KvQRfJ@@jA?z|A7^lLyMt#J?KdeciPwd)6}*J+=pasg-tCf^XKwS( z2Y-j4rYn<{?0~VbQTq{iOOUWxhuhrwCkScl_PSb}(a!z;xF}$nle&6Ak+#A^masMa z5u}Zwlr(xSRLQlU+%qI7o6|?(V&g=;Cr2;gvqrt-{2oFHQ}x-0UFy<%B}X8mPS}_% zXljm)Js$K)AFO%X&-;hXTtnJD9lG++w(Gxe_TQg)65x^SVlJD)k}ugd+LFY`7T>kD zC}V8qmixT#i&2y}ba3*%J!Y}Z>r133SgL5Wj6{hyqk{sc2rG#n1{`uX1?Z)IC;~IF zYD2KIuLe@Jvq2(A=VvNVisZS5CXTNp;Ta!=itB;y8_Q$j4DHqA#Ej%sEcDTo6|5BA zWr7XTAa@T-pO&Ep=#r@|j@q@Fqox*}C#A_6+C{Lm9<6A2Yx2W$HV4NJ+xEyGrzcAL z9C04Kg8l*=Z?G9y6HW>~A+kfWt@^`mZK1S79CeGF09xzXWzDIa|Md(nKMrv)T+QD9 zEDCcGCD+td+S>jj{NAssU07P)LS>1AlJdxM#Wy+ET@IBlS;*rM%n^^Yvs>Z0?1wpC zD^<~7?eGb@SjR@Cbx!5!{2^+Y^X56mtCV-x&Sta?X- znEn(ik}q~%f4#Lo1n|%#ZH@}%^Qx^Cv6|4ON) zRf2^uSku6yQs-9M8s$xfNU6i1Mu_xD80X*LwxrC9j?|k&i?pG}BlTJBwbic~R)Trq zxs+84&XLlu0C+x}sf`me7+j5dmA)$}S6r=VHfa(50%QY{D$hA|dpW^Bm4|1qnB!OL zUwaaGPjq}s7rOwi?q<|K@Z9)D1UB(b<}q;R6FXMx~ZK$udEFoK!h0*n;+XOFlk5mdlvNXwXgpRgnY@kkNj90 z6y>zu+1Nvq4fy=7nZn~J0O1p0A-^q7hR6IX*qZdsY}VHKZv{CLcOZUtXu zWt{?0RRt*$7`^5@s45`?tb(XZdyz|~RCw~+y+T^@&Z{-pRtYZIE?2y)L zPM(ImF znPAC7i<{^YnJL=>kbv6X`sKab)J7%C$%BgZ&JeqrgqXL44TNpatY+12kfa2_G_6B&^jOB+LIH)`p zVb=pN-5U_kB`Py776_0=?MM>JMaF_)o#sz=5)vG|=y}iB$MdaXg@3NB<|zQBv#~X> zCkZJsU}GV#;uk2R2HRLt$ov7nKO+qHjlNlPg^xWX)Mu9K(7)jMbgQ4~_vc)DjR6g0 z6l_nWNTYJPql#Ja&2EY4Iyuxlh~>{@y!Y>CrC+W#JLL_*X;4smLSo;eDF}{Aza2CU z4s{C(W-|mOUhWU|!JT?6Wc$D=s_27%he5i?M}=MWR0K4R z<_urB4>1VwEOLzx%*Zz%Z>rJ&FuY>X&x42hyv!~%xqaJj3LoQU4)QYMFV-+!8QgUZ zakU*5wD2RNQ4h0RBAu))ZGsnmP6zw<|MhDD8S%e9&e_q;bFJ)>kF4G9zg@j6>h>`8 z1eVL9sG!OiYjIPx1_GOQmKj{)DvM~DFU)=T(r$}NfxMKvbjjMw0(nXR+EpD^i2w#o zg*^u3wr|yV&V-kkvJCtQ+k^F+E(Tz)o8U_8a6RE&nE%Wmq`lvG z?|&)K-#-=rJu0?ykP`sP{@4Kr7d>&U{pKBRdopvKj$-ZUT79eSI-b}nv%$$<@^XQ*t9$>P%f{(81zEGwufjG4}b z(Q5o(6)Xt!&*(WmoQ)88mny2|W6~i2sfoRfiIRww+NkfUO>kZm-=Kl^G`K2Eyp^dN zn#qNdhQ2pdUz{$Q^-IhQf<3csSUH!pxVvvz--w*#?UZ4rjw(>Xideckw{LF@`$UjV zxbUS;1Hme-G4%1->oh-K=M>3+eCf<#k;5DqgDa5a(PMM|VUP?Jirkf|-3sXX*orFF znC?bDa8@-0vOn`XmU9?grq-%h>|!aQd-3q)5e8VKf;y>ZIZv7-;K5kBC!WwWSRGBe z={N?l0i4v$UYnXOy25(x6GF~B*~JId?vr`t`VNw?j|0y&mN2qeGKENdE_tLc4mJyWGL2 zzYZ_s!x2%J4dM z_6h+sU2D@A3%qZYrX}832{57@@C*ic!C=`wi$P5*Kdhi2T#*p;!W57~?78?lnQJ&W z$)gCjCgARf66)X0KVg(O*L)k#4qOGU`9C9IMKOU1T~QAK6v*(X&oMG^HRP$XSqr;n zqpvc&q~S6ywOKk`QD0na5>eP^5UoLL@Vd0MjN35TKcSp5+DTU>#ubBmh3WeJDjzy% zcV$Wc&kIl{S+g=%YoUHZiV`Fi4|PvO=3D5wTse?8J}wUdNklk{L?V5cpRr8+t+r{K+m7Pc2I8#pc~oJ z!dD^AbY)bu&MV|ISep5f31i|I;cT%~c&qCa2F&JbX3<5pAs256-BjyU5bG(=sqdZu z-LB6|50B95O+Of_VE$u|;#o{YQ;C!u;o;{k8;49Kp;bC=O;bbAIc7Y4Z}2Di4et_J z4832TJsADh5Jhb8@Rxp6m%Ow-b?h3<5gycFwjaEAQ7PH(#7Q%w-Adeu*RqjC$oGtc zFym5Z_Pnqq2N&Il5=X`S(3&cddVuBnELQl!Q1%(;QEskTwp=SBb&Xeh6(e1_R=V*lZUiFXxhFK|g4IYN6>2A?awr0XJisq{76&*;}lgCVTLh3vUhUDm|ymzCvC z#EW8$3}X{7DkG$*o6|^_G^uTO?hZR?y2B_w7kmgMTMWNZ-_J5Ht>kyIh7Y|Aqg{yX zUsJzyUlCWk_vF+25nLzpD03_A@4}nO#y+$hWzlG*(3E_RBWWgin;re@TcXh~;Z!m7#pEfdt3T(jm!)A&rarqPZOk7pqR9rE z>+WR5&U3281DB>JvIrk(s}A=3yxt$dDSEon1l<-q6v=plsdy5}yraiaNVw16==plY z^m}}Yi7kDo1lJz9Y`=&*dv&<2Gsng7@z6PHDjyJBJ4X{jk_Pf}J^bA#yZ>LG1Z1^N zB>!x(d%Y}@&Io1O*pNKP)h$tpp(+z=iAY-J43b64@$qGxXs?sG zz%5TKBHf(xpz5rIoS)E(&O#B@LGZ)74&B$&kQ*Y%CaaQ>L>6OHXw5IN-n+701sN17yC$ z#RugQWEFB@#?hUeAf7B{r8SO~MQi@hPqS@_jTWsRg3qsak%y2Cv+SyR$I3-0re9~= z)#15#a#}XlX}tT{H#S6l(3nySB=L1YY) z$*F_jaA-)FBDJ{N^L!^nv22D^6!*o9RK`)OfOU)%zNv-Aw~c;mF+6s?_56M9&Y8u_ z+G~;nkr7HuA#rSlD(++nb&2;^9G}9#$jXS8Mw;kCqa&EK*O;v>!^3Gw@DLu*lM}T( zx;>|K5`#b(QE?%yBxAoIGL zYFlsW#r0aG+*VMZdAZVae7)tIsADl&;m4ti5!OQ3yvC14ZL$7Q@G(I$34Z~?k(SSX zIwsD5-V{RPh0qxr$T!G8a^>G5KV|@CtpAEzSD}2RhW0JfpuHFidD#>^WeZ+aT_7*E ze%WExs7|0y>j%-X*Vm*z)UE_CC39fhW%Aq~NO;lW7ANzWA|f?T2Tun)p9-lgaSSfM z0V^`{;*Xw6Q)^FJHZc9^Y<1U~cy1dLAy=NCJ2t~(zBnmnr2PJwtsm0YsJ%~x(aACa z^^nl)fn8IUu(No{?W2s)cpl{Lts#SXn95KI6dIn)6MnIZD>~yMk(FbpT7t5wt340W3Wvo@wJ}mGcsTY{qSECxXzB{-8R98XN#SrWaat0;}95D z_Uy^+z<=gLNzTiCfX!WOVP3H=q%vx9b>QtXbQ5S)L9&i(3VZvUPGcQ6c=g#+rIgJ&S|Ojgp|ZnU#U3;cn4_P+8F<>N-Ts5c7eHajNAa0^^LFT z=tmwDl>XQ@HVhI*wWv8P+e<3b=+w{0nlu(jhkmGMLVtwtseI?q2X@eiTeWr^g-{dA z^2PVx+lYBVZm`F@vs%_+hG<~@-7)59*lG=}8|#pQ+&61NSD!0hi3a>oc7OrTDbzPo zw!LJl?qV8U9}nfSh0;_4!CIj}3qbz?zhfPKUXNCTiOTVI7h_#$Mh|9j?91TugDb9N zu!9-k+kWWBD;GU~-nLeLKzuQ#)jwUqw06x=)Bd9XAnjN|@Szx+%#YvmR^DOq79*e0o z7Q~gpIx#pklhsD>zXP)tfnMaAQFM<(oSU&l1#CwX;^tx9*z2}~s2WSZGLNmENpwd3 zxs=rpBf7U@*8APhS}s0~b<|H}`pO{SP_7^B0YaAW5Z7ra%ocai6G_~n@LGCKCGZ-| zujo+4?g4X87QXW%O?#90*xn|A7LZCfyDdzlfq0~+6M0?@9az5mAQ$-I7lK?nAM*_< zrHsWd(9MqZ#jFs5l`4fjP`;vQ>a0jVNEU73QmiJ(mIqWOu2G`tW;eIQg1(1BOg6?c z?ACjt9TTE_SM(50YGJ}TrX!5~;5iiJS=3mS8mEe%L{8!0&`>iDt=hO~_QO2uA-IaQ zUAm?%V-uAdN#boH^>cCxsFt7d5gy1N%^|O()a)CGfI7xnx9dq6pe;Um;$Um26t*=NVdmQe;7In}=z zh{x1VB&4F9GCoa23fZL~pUzHB7K)~-Lnm|0Z9fZLtJo)(f&@6L4f+4rv3ObcQ6Y^+ zm?&ookOO9La-A>G39mAhXI#GL$bIzDB=JWx4+;(Jld73qr>8VF{3#1*M2UIj32n1A zVn`{3gf)=(_ze3gM#Ae)yT20@-|_Fi)K&GRDf?oR^C7su_-EK25hrck0ejx7LS)f_ zRmzj&NCTWm9444r1*s{E&-@rE( z$0G{M=UecdkDgc=&DT#=MRQ@NYG z)2Tyn$KcWBwUEvBa}Hf|b<1so3uu4Sx*(;xpvK>`&{>9hNgWpAl8IX>ze?g`cdOoj zr4cijz(0+*1^G`p3QPGL?ZoQsZ3%i(%WuRGx`Y^^gGP*8cgk!Zvz6vOdW`-^rLJ znvYSJKC2voY(yEa;&{IKU|7mHE)AC9jV2<3xTql4SDs;(f!h;{lr|Zhdu|f%yY^@b z6QQ~K{JVD9An;NBkBViy$Bi7wQBR@j&Uc&CUOr z0GlMj>|NWs?+~duq)#7{o4^DeyM*Dtu=->|y@8O%`+XAxr(nJ%oAkcc&Mpfh%4&Hk>BrD%F zLMV7R^c23J$cLh5&WcD&*=1oJAL{1sF>N4q9h11D=NV)(1W-;+oYz}Pm&cF+-8GXs zPnRIA2wy7=$G`Cpye5Qo%;A6ADgmt1>s!hSODP3DeF+~9fb&dA(Da2fTKoDe*W5o!CEF4Flh4XIr zyF!2A`WiJ#$lXL*BJ)oU!fU5CQ?&Q9p3_4*)JLC4S8|PcLV>0q(!L|fP_Z78ta=6x zXww9)EOo`-Xp3;aA`(*V#LK^OT!H_N!qodeWSwJpUftHV8{2AZtFf&%wv9$j(%4pG z+cq0ER@2zF&Bpvz+UMDOzsL8d`IS3&=NxmcF|KirYh5~*o@k^13ercd(__r6F76$Z zbIS|18&k0gjk@bm-JEK*#f{|J;PWBI##-O^a4s}({Wybb%i4l|Tk@ip=TMO_n|)Zx zQb)>e8(T=>Zn%pB4ZIJRoe2JrT%}VskHG^ckmyI^_e#5k4DOJ>?$*~$yyMumkp*Ik z5%f>rHuac(_upiFR#^Y_n#h7l%?QNk%W_-CW31XD*=%ZR|Nr(Ah%|vLLS+~E*hYAD zk`PKl>FYe@hDA1_I=0P^wm5)^&Dr66=S$@RGHvc(tbolZ&{l{Zva%gj+15(FjL;e7 zLmBdk>3H9Gqk23~pT{Duv1WBzKQHVZVJ^J6PD*S+k<2yeA%ZxYd<$~7N)ux;PU2}> z$(HvSQ1N@8;a5*Q0oz_JM%|XnKpvjvBN&7WOI1RdnJPoHRPgSTHmw%<1D6eHH&P|~ zotV0pijj~op?SM+y0Y#vk*ZLlNCl$Zlaf00v!gYW%7|iQtD+h2NAj5;+ggZ6DXUOH zaaU5{p$`)Uj|%*^+J5jhttD~idqK|4%GtuHaLrUApRQIBFN=b3y%Pxi=YQr1?#}@X zV8BX*T4-F)1McEf(m7){$1-42V=tLcE1KbRTM%DwA+P-X;X~QdTRvIg z51!5$Ny{SmG}+5-S#Bl6$lr#_zbo&aRvWyRsZ-dn zbVQ4ONOf5Xe@y=LXh7(Hq@lQ;O=eWE%-vE^Z6o-q&tMU?G8N^#C=xo>NJS6$0tI)O zKO7h3B>f$PFuoJhU}wqNJQ_O7I!Q=Xa2Z<^}N(5HED{o{cyE#p> zrLjBJ!ls}~d*!KioF1Q)U5s5XK!2ZwIOGx4hSW4P*={M~O}47VVtKsguJmFQ{pyab z2lOZG(x>#lmu4p>bUE*J{ENDMaCdiyIYJhdmo_(B6LNurq*<7`tMorP=AR#5B7G(a zAmdVmYx(cb!!@ms7=CF}4ROrr72AUm@+#!?p|BkxD-9v#*Y1a3 zpGh%Pk;2`|gCW+hNAhut=r|!EJGBm3j@EGz6v_gxw3(kw_3PnYv1o}zCEO}+Yfccy z&teDyZ*FhfP)xZ>gm&UxnloktQ95UV*(666{s}K@E+Zpm9lRJ(oEQAAinVO=y<|r3 z%0A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 literal 0 HcmV?d00001 diff --git a/docs/rag/images/rag-chat.png b/docs/rag/images/rag-chat.png new file mode 100644 index 0000000000000000000000000000000000000000..b13c6ced54a8bbe298de03110f3eb6a9f0569de1 GIT binary patch literal 99204 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

&d1&omquGmJ!iHV&>_* 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 BXtDqR literal 0 HcmV?d00001 From 6406b74b25a111c775f8d289bd45cefe1028cdd0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 09:54:17 +0000 Subject: [PATCH 68/83] Bump DavidAnson/markdownlint-cli2-action from 19.0.0 to 19.1.0 Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 19.0.0 to 19.1.0. - [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases) - [Commits](https://github.com/davidanson/markdownlint-cli2-action/compare/a23dae216ce3fee4db69da41fed90d2a4af801cf...05f32210e84442804257b2a6f20b273450ec8265) --- updated-dependencies: - dependency-name: DavidAnson/markdownlint-cli2-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 1635d804..51b13db0 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -41,6 +41,6 @@ jobs: with: fetch-depth: 0 - name: "Check Markdown documents" - uses: DavidAnson/markdownlint-cli2-action@a23dae216ce3fee4db69da41fed90d2a4af801cf # v19.0.0 + uses: DavidAnson/markdownlint-cli2-action@05f32210e84442804257b2a6f20b273450ec8265 # v19.1.0 with: globs: '**/*.md' From bc40b0eae48bd138ea070b521c14c6633f8d0096 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 09:54:20 +0000 Subject: [PATCH 69/83] Bump step-security/harden-runner from 2.10.3 to 2.10.4 Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.10.3 to 2.10.4. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](https://github.com/step-security/harden-runner/compare/c95a14d0e5bab51a9f56296a4eb0e416910cd350...cb605e52c26070c328afc4562f0b4ada7618a84e) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/actionlint.yml | 2 +- .github/workflows/docs.yml | 2 +- .github/workflows/spellcheck.yml | 2 +- .github/workflows/stale_bot.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml index fd88dd4e..c50f6063 100644 --- a/.github/workflows/actionlint.yml +++ b/.github/workflows/actionlint.yml @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 1635d804..0799d379 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -33,7 +33,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 63c3cf83..c3ab658b 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs diff --git a/.github/workflows/stale_bot.yml b/.github/workflows/stale_bot.yml index 7578bb92..57ebf648 100644 --- a/.github/workflows/stale_bot.yml +++ b/.github/workflows/stale_bot.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Harden Runner" - uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3 + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: disable-sudo: true egress-policy: block From 63c308b5e1fb3f06758eb735d0b9623963f7be76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 10:10:53 +0000 Subject: [PATCH 70/83] Bump rhysd/actionlint from 1.7.6 to 1.7.7 in /.github/workflows Bumps rhysd/actionlint from 1.7.6 to 1.7.7. --- updated-dependencies: - dependency-name: rhysd/actionlint dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/actionlint.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actionlint.dockerfile b/.github/workflows/actionlint.dockerfile index b9780283..d4df32d2 100644 --- a/.github/workflows/actionlint.dockerfile +++ b/.github/workflows/actionlint.dockerfile @@ -1,3 +1,3 @@ # Since dependabot cannot update workflows using docker, # we use this indirection since dependabot can update this file. -FROM rhysd/actionlint:1.7.6@sha256:e3856d413f923accc4120884ff79f6bdba3dd53fd42884d325f21af61cc15ce0 +FROM rhysd/actionlint:1.7.7@sha256:887a259a5a534f3c4f36cb02dca341673c6089431057242cdc931e9f133147e9 From efc3a26d0ba4f22a751fb92bb75b1f4235aa6b4d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Jan 2025 09:25:35 +0000 Subject: [PATCH 71/83] Bump actions/stale from 9.0.0 to 9.1.0 Bumps [actions/stale](https://github.com/actions/stale) from 9.0.0 to 9.1.0. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/28ca1036281a5e5922ead5184a1bbf96e5fc984e...5bef64f19d7facfb25b37b414482c7164d639639) --- updated-dependencies: - dependency-name: actions/stale dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/stale_bot.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale_bot.yml b/.github/workflows/stale_bot.yml index 7578bb92..c3fa9c6c 100644 --- a/.github/workflows/stale_bot.yml +++ b/.github/workflows/stale_bot.yml @@ -32,7 +32,7 @@ jobs: api.github.com:443 - name: "Stale Action" - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0 + uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0 with: stale-issue-label: 'stale' stale-issue-message: > From 22263ce91d29bd992f0a2271a792946f565d957e Mon Sep 17 00:00:00 2001 From: Anastas Stoyanovsky Date: Tue, 14 Jan 2025 13:19:27 -0500 Subject: [PATCH 72/83] Create adr-feature-gating Signed-off-by: Anastas Stoyanovsky --- docs/adr-feature-gating.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 docs/adr-feature-gating.md diff --git a/docs/adr-feature-gating.md b/docs/adr-feature-gating.md new file mode 100644 index 00000000..b3b17fdd --- /dev/null +++ b/docs/adr-feature-gating.md @@ -0,0 +1,26 @@ +# InstructLab Feature Gating Patterns + +## Context + +Motivated by the currently [in-progress RAG development](https://github.com/instructlab/dev-docs/pull/161) in [dev preview scope](https://access.redhat.com/support/offerings/devpreview), there is a use case for introducing feature gating (sometimes equivalently called "feature flags"). The specific use case desired is to have default settings for feature gating in the application that can be overridden using environment variables. + +One common pattern is per-feature gating, i.e., configuration per-feature. This fine-grained control might be desirable in the future, especially to enable user segmentation for individual experimental features. We do not need that level of fine-grained control at this time. + +There is precedent [in OpenShift](https://docs.openshift.com/container-platform/4.17/nodes/clusters/nodes-cluster-enabling-features.html) for enabling sets of features based on support scope. Following this pattern would be consistent with OpenShift terminology and meets our needs at this time. + +## Decision + +InstructLab will adopt feature gating based on feature sets using the OpenShift terminology of `DevPreviewNoUpgrade` and `TechPreviewNoUpgrade`, able to be overridden using an environment variable. + +## Status + +Proposed + +## Consequences + +* Feature gating concepts will be consistent with OpenShift, lowering the learning curve of one application's configuration when coming from the other. +* We will not need to (*yet*) spend the time to develop our own taxonomy for feature gating. +* Messaging to users about support commitments when using dev preview or tech preview will be clear - in particular, that no version upgrade commitments are made, nor the ability to disable those scopes in order to revert to a supported application state. +* We have a decision to make about whether to introduce a new dependency for feature flagging or make our own simple one. +* There is a migration path to finer-grained feature gating via the [`CustomNoUpgrade`](https://github.com/openshift/api/blob/master/config/v1/types_feature.go#L54) scope. +* We will have to make sure to communicate what these feature gate scopes mean to users and what commitments they entail, in documentation and/or otherwise. From cf0bf3ff070784421fe8ae9109d60660e99894c3 Mon Sep 17 00:00:00 2001 From: Charlie Doern Date: Fri, 24 Jan 2025 14:52:08 -0500 Subject: [PATCH 73/83] introduce document for instructlab-sdk Signed-off-by: Charlie Doern --- .spellcheck-en-custom.txt | 4 + docs/sdk/instructlab-sdk.md | 153 ++++++++++++++++++++++++++++++++++++ 2 files changed, 157 insertions(+) create mode 100644 docs/sdk/instructlab-sdk.md diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 385f0769..38ab79d5 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -6,6 +6,8 @@ agentic Akash AMDGPU Anil +API +api arge args arXiv @@ -215,6 +217,8 @@ Salawu scalable SDG sdg +SDK +sdk semvar sexualized SHA diff --git a/docs/sdk/instructlab-sdk.md b/docs/sdk/instructlab-sdk.md new file mode 100644 index 00000000..9ffa56fa --- /dev/null +++ b/docs/sdk/instructlab-sdk.md @@ -0,0 +1,153 @@ +# InstructLab Python SDK + +## Motivation + +Today, the only way to "drive" the InstructLab opinionated workflow is via the `ilab` CLI. While this process provides a succinct way for everyday users to initialize a config, generate synthetic data, train a model, and evaluate it: the guardrails are quite limiting both in what a user can do and what the development team can add as features exposed directly to the user over time. + +Additionally, current consumers of InstructLab are finding themselves importing different library private and public APIs in combination with CLI functionality to achieve the workflows they want. While these more advanced usage patterns are not for everyone, providing ways to run bespoke and piecemeal workflows in a standardized and safe way for the community is a necessity. + +Unifying these various ranges of advanced workflows under an overarching `InstructLab Python SDK` will allow for new usage patterns and a clearer story on what InstructLab can and should provide as user accessible endpoints. + +While each library can and _should_ have their own publicly accessible SDK, not all functionality being added to SDG, Training, and Eval needs to be correlated directly to the "InstructLab workflow". This Python SDK should, as the CLI does, expose an opinionated flow that uses functionality from the various libraries. The InstructLab SDK should be derived from the library APIs, not the other way around. SDG, for example, currently has a `generate_data` method, meant to only be accessed by InstructLab. This method simply calls other publicly available SDG functionality. Orchestration of the InstructLab flow like this should not be of concern to the individual libraries and instead be handled by the overarching InstructLab SDK which will maintain the user contracts. The InstructLab SDK will need to work within the bounds of what the Libraries expose as public APIs. + +The benefit of the above is that the opinionated flow can be accessed in a more nuanced and piecemeal way while also gaining the potential for more advanced features. Say a consumer wants to: + +1. Setup a custom config file for ilab (optional) +2. Initialize a taxonomy +3. Ensure their taxonomy is valid +4. Ingest some data for RAG and SDG (SDG coming soon) +5. Generate synthetic data using an InstructLab pipeline +6. Do some custom handling per their use case +7. Fine-tune a model using the custom config they initialized for their hardware +8. Evaluate their model after training using various benchmarks + +A user could do this if they had an SDK. + +(the structure of the SDK and actual arguments is discussed below) + +However today, users are forced to run a sequence of commands tailored to only work with the proper directory structure on the system. + +## Major Goals + +1. Modularize the InstructLab workflow such that any part can be run independently +2. Allow users to choose whether or not to take advantage of the config/system-profile method of running InstructLab. Meaning they do not need any pre-existing configuration to run the SDK. +3. Standardize user contracts for the existing functionality of the InstructLab workflow. Existing CLI commands should be using the SDK once past click parsing, not separate code. +4. Define Contracts loose enough that functionality can be expanded as more advanced features are released. +5. Document SDK usage in upcoming InstructLab releases. + +## Non-Goals + +1. Exposing all library functionality immediately +2. Replacing CLI +3. Shipping an SDK that is generally available as opposed to v1alpha1 or v1beta1. + +## Design + +### Versioning + +The SDK would start at version v1alpha1 such that it can change/break at any time for the first few iterations as libraries adjust their API surface. + +### Structure + +This SDK should live in a net new package inside of `instructlab/instructlab` preferably to limit unnecessary imports in a new repository. The SDK could be imported as `instructlab.core...` + +The user surface initially should look like this: + +`instructlab.core` contains all SDK definitions. Users can `from instructlab.core import...` to use specific SDK classes + +For most of the existing InstructLab command groups, there should be a class: + +`from instructlab.core import, Config, Taxonomy, Data, Model, RAG, System` + +The full list of classes and their methods for now (subject to change during development process): + +```console +instructlab.core.Config +instructlab.core.Config.init +instructlab.core.Config.show (get) +instructlab.core.Taxonomy +instructlab.core.Taxonomy.diff +instructlab.core.System +instructlab.core.System.info +instructlab.core.Data +instructlab.core.Data.ingest +instructlab.core.Data.generate_data +instructlab.core.Model +instructlab.core.Model.serve +instructlab.core.Model.train_model +instructlab.core.Model.process_data (calling the training library's data process class in a safe way) +instructlab.core.Model.evaluate_mt_bench +instructlab.core.Model.evaluate_dk_bench +instructlab.core.Model.evaluate_mmlu_bench +instructlab.core.RAG.ingest +instructlab.core.RAG.convert +``` + +a brief example: + +```python + +from instructlab.core import Config, Taxonomy, Data, Model + +config_object = Config.init(...) +diff = Taxonomy.diff() + +if diff: + data_client = Data(data_path="", teacher_model="", num_cpus="", taxonomy_path="",) + + # not in v1alpha1 + data_path = data_client.ingest() + # not in v1alpha1 + + openai_compat_client = some_server() + + data_jsonls = data_client.generate_data(client=openai_compat_client, data=data_path) + + some_custom_handling(data_jsonls) + + # you can either use a config obj or pass trainer args + model_client = Model(student_model=path_to_student_model, configuration=config_object) + + model_path = model_client.train_model() + + # since we initialized the model client with the config, the training args are passed implicitly + eval_output = model_client.mt_bench(model_path=model_path) +``` + +The above example utilizes the configuration object to instantiate the `Model` class. However, a user could also pass `training_args=` directly to `model_client.train_model` to override the configuration class defaults. This allows the SDK to utilize the System Profiles of the ilab CLI but not rely on them too much. + +Presumably, the distinct methods under each class will grow, which is why I am opting to make very distinct classes per command group. Another benefit to the parent classes is that individual methods can inherit defaults from the instantiation of the object. + +These initial exposed functions can expand to include any new functionality that is more SDK oriented from the various libraries. For example, if SDG adds something like subset selection, teacher as annotator, data mixing, etc we could expose an `instructlab.core.Data.annotate` or `instructlab.core.Data.mix` that could be invoked in sequence in a user's script with other parts of the ilab workflow. Some things make _less_ sense to be exposed via a CLI, but still are critical to ensuring users get a good model and properly generated data. + +There are certain things that only exist in `ilab` currently and functionality that is going to be moving these such as data ingestion, RAG, etc. Forming an SDK for `instructlab` allows us to capture all of these concerns under one API. + +These endpoints in combination with the curated InstructLab Config File will open up these workflows to users and allow InstructLab to be easily incorporated into other projects. Allowing people to run things like data generation, and full fine-tuning via an SDK that pulls in their pre-existing `config.yaml` but also can be run independently will open new avenues for InstructLab adoption and extensibility. + +## Changes to the CLI + +The `ilab` CLI will need to adapt to this new structure. Commands like `ilab data generate` should, in terms of code, follow this flow: + +1. `src/instructlab/cli/data/generate.py` +2. `src/instructlab/data/generate.py` +3. `src/instructlab/process.py` +4. `src/instructlab/core/data/generate.py` + +So generally: cli -> process management package to kick off a sub-process -> internal handling package -> core SDK (public definitions) -> library code, is the flow. + +The flow of the CLI today is such that the cli package for a command (`src/instructlab/cli/data/generate.py`) parses the command line options, manages creating a sub-process, and passes control to the core code (`/src/instructlab/core/data/generate.py`). This then calls out to the library APIs + +The internal handling package is necessary as it allows us to split off a sub-process when it makes the most sense for us before calling the library code directly. This is how the CLI works today. + +The difference with an SDK is that we would eventually want to end up executing `core/data/generator.py`, the actual publicly consumable python SDK. This will ensure that the CLI can do whatever custom handling it needs to do on top, but eventually it must boil down to the `core` package which uses publicly available methods from the various libraries. + +## Scope of work + +In upcoming releases the InstructLab team should aim to: + +1. Design the SDK given the structure above +2. Converse with Library maintainers to negotiate user contracts +3. Begin work to re-architect how the CLI works using the SDK +4. Publish an alpha SDK for public consumption + +After this initial work, the team can scope adding net new functionality that is not in the CLI to the SDK. \ No newline at end of file From 56b21555cb8f71af403e71e94c528d79217f02c5 Mon Sep 17 00:00:00 2001 From: Charlie Doern Date: Fri, 31 Jan 2025 16:08:03 -0500 Subject: [PATCH 74/83] amend merge criteria the rule that the Oversight Committee needs to merge every dev-doc PR has not scaled with the project. We now write dev-docs for most design changes for any instructlab repo. This rule has also not regularly been followed. Amend this rule such that 2 maintainers of any instructlab can approve a PR and a third maintainer of any instructlab repo can verify that sufficient reviews have been given and merge a PR Signed-off-by: Charlie Doern --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 660711e1..881210d3 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,11 @@ please ping the Oversight Committee for help. out from maintainers of relevant components. The broader the scope or more controversial the change, the more broad the consensus should be required for merging. The final approval and merge (or action, e.g. deleting a repo) - falls to a member of the Oversight Committee. This final review is to ensure that + falls to two maintainers of any InstructLab Organization repository as well as + an additional third maintainer of any InstructLab Organization repository to + merge the PR after verifying that sufficient reviews have been given. If there are + disputes on the design document that cannot be resolved, an Oversight Committee + member can be consulted as an arbitrator. These approvals ensure that adequate opportunity and attention has been given by the affected parties. * Examples of non-trivial changes include approving proposal for new repositories, creation of new repositories, changes to organization level GitHub settings, archiving From bc3f0c817a8284d427350b7d6f31be43c243d626 Mon Sep 17 00:00:00 2001 From: Courtney Pacheco <6019922+courtneypacheco@users.noreply.github.com> Date: Wed, 19 Feb 2025 22:20:58 -0500 Subject: [PATCH 75/83] Remove explicit DCO Check from InstructLab Signed-off-by: Courtney Pacheco <6019922+courtneypacheco@users.noreply.github.com> --- .spellcheck-en-custom.txt | 1 + docs/ci/ci-remove-dco-check.md | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 docs/ci/ci-remove-dco-check.md diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 38ab79d5..7a2fef81 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -255,6 +255,7 @@ traigers triager Triagers triagers +txt UI ui unquantized diff --git a/docs/ci/ci-remove-dco-check.md b/docs/ci/ci-remove-dco-check.md new file mode 100644 index 00000000..1b76719f --- /dev/null +++ b/docs/ci/ci-remove-dco-check.md @@ -0,0 +1,11 @@ +# Remove DCO Sign-off Check + +## Overview + +Presently, all repositories under our `instructlab` GitHub org require contributors to add a [Developer Certificate Origin (DCO)](https://developercertificate.org/) sign-off in each commit to indicate that they agree to the DCO legal terms. While these DCO sign-offs can be a great way for us to validate that a contributor agrees to the DCO legal terms, many upstream projects actively use the DCO without explicitly requiring contributors to add "Signed-off-by" to their commits. So in other words, we can still require contributors to agree to the DCO terms, but we don't necessarily _need_ contributors to add DCO sign-offs in each commit. + +We can look at the `gnuradio/volk` repository as an example of how to enforce the DCO terms without explicitly requiring contributors to add sign-offs. Essentially, they have added a copy of the DCO text to their repository under [docs/DCO.txt](https://github.com/gnuradio/volk/blob/d9d6abfcc4aaeec2d60abd482f74fded158818b5/docs/DCO.txt) and referenced that file [here in their CONTRIBUTING.md](https://github.com/gnuradio/volk/blob/308948abf8384bb4bf6467e14b585df708789782/docs/CONTRIBUTING.md?plain=1#L22) guide. + +## Changes Going Forward + +We should mimic how other open source projects implicitly enforce the DCO terms. More specifically, we should make an exact copy of the [DCO agreement document](https://developercertificate.org/) and save that copy to a `DCO.txt` file located at the root of each InstructLab repository (i.e., on the same level as the main `README.md` file in each repository). While some open source repositories opt to place the DCO agreement terms under a `docs/` folder, us placing `DCO.txt` at the root of each repository makes the DCO agreement visible and easily accessible for all contributors. Finally, we can then update each repository's `CONTRIBUTING.md` guide to clearly state that anyone who makes a contribution to InstructLab will be implicitly agreeing to the DCO terms located under `DCO.txt` -- and a relative link to that file shall be provided within each InstructLab repository. \ No newline at end of file From e972118818e933995fbb97587ba5191b6465d0b0 Mon Sep 17 00:00:00 2001 From: Ali Maredia Date: Wed, 12 Mar 2025 07:57:41 -0400 Subject: [PATCH 76/83] Introduce new support-utils repo Signed-off-by: Ali Maredia --- docs/support-utils/support-utils-repo.md | 40 ++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 docs/support-utils/support-utils-repo.md diff --git a/docs/support-utils/support-utils-repo.md b/docs/support-utils/support-utils-repo.md new file mode 100644 index 00000000..fe9a21f6 --- /dev/null +++ b/docs/support-utils/support-utils-repo.md @@ -0,0 +1,40 @@ +# Create Separate Repo for User Utilities + +## Idea Overview + +Create a separate repository within the `instructlab` GitHub org called `support-utils`. +This repository would house scripts and notebooks outside of the scope of the LAB Methodology implemented in the [Instructlab Core](https://github.com/instructlab/instructlab) repository that enhance the InstructLab experience. +Many users and community members already have such scripts they use day to day. +The `support-utils` repo would be a place where the maintainers of the InstructLab project can collect and curate them for the benefit of the community. +Scripts in this repository may become features or incorporated in the InstructLab Core repository after use and review by users and developers. + +## Repository Structure + +The repository will have two categories of scripts. Scripts either live in the `hack` and `beta` directories. + +```bash +support-utils +| +| +|- beta +| +|- hack +``` + +The `hack` directory is open for the contribution of scripts of any quality. + +Scripts in the `beta` directory will be required to have documentation, and automated functional testing. +These scripts are meant to be run by users for feedback and may graduate into full blown features in other InstructLab repos. + +Beyond this initial structure, the structure within those two directories will evolve as scripts are contributed to each. + +## Additional Info + +A few areas of focus for the first scripts that will be added to the repository are: + +- Automating qna.yaml creation +- Assessing document readiness knowing the limitations of Docling +- Visualizing synthetically generated data for inspection + +This repo would not be released as a package on PYPI but initially as just `.zip` and `.tar.gz` files on GitHub. +Releases would serve the purpose of giving users having specific versions of scripts in `beta` and for development project management purposes. From fa7b2f6ce36ad409ef615c7fd190c5669a68b612 Mon Sep 17 00:00:00 2001 From: Ali Maredia Date: Tue, 25 Mar 2025 08:34:45 -0400 Subject: [PATCH 77/83] Create a proposal for an examples repo Signed-off-by: Ali Maredia --- docs/examples/examples-repo.md | 44 ++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 docs/examples/examples-repo.md diff --git a/docs/examples/examples-repo.md b/docs/examples/examples-repo.md new file mode 100644 index 00000000..e9d76a45 --- /dev/null +++ b/docs/examples/examples-repo.md @@ -0,0 +1,44 @@ +# Create A Repo for InstructLab Examples + +## Idea Overview + +Create a separate repository within the `instructlab` GitHub org called `examples`. +This repository would house [Jupyter notebooks](https://jupyter.org/) and other examples that illustrate parts of or the entire LAB methodology. +The `examples` repo would be a place where the maintainers of the InstructLab project can collect notebooks for the benefit of the community. +All notebooks submitted to this repository would be carefully documented and tested before being merged. + +## Repository Structure + +The repository will start by housing notebooks and have two categories of notebooks. Notebooks either live in the `combined-stages` or `use-cases` directories. + +```bash +examples +| +|- notebooks + | + |- combined-stages + | |- training-with-eval + | |- requirements.txt + | |- training-with-eval.ipynb + |- use-cases + | |- policy-documents + | | |- requirements.txt + | | |- legislative-act.ipynb + | |- instruction-manuals + | | |- requirements.txt + | | |- how-to-build-a-house.ipynb +``` + +### Notebooks for Combined InstructLab stages + +Notebooks in the `combined-stages` directory go through parts of or the entire InstructLab workflow that users might want to reference or use. +Some examples of combined stages are a notebook that runs through training then evaluation or a notebook that goes from document pre-processing to SDG. + +### Notebooks for End-to-End (e2e) use cases + +Notebooks in the `use-cases` directory reflect real world use cases from start to finish. + +## Additional Info + +This repo would not be released as a package on PYPI but initially as just `.zip` and `.tar.gz` files on GitHub. +Releases would serve the purpose of giving users specific versions of notebooks they could run reliably. From 1e985c1afe4ad4473c6c3064b97817c5e6ee08af Mon Sep 17 00:00:00 2001 From: Ihar Hrachyshka Date: Thu, 15 May 2025 10:15:05 -0400 Subject: [PATCH 78/83] Require launch-ec2-runner-with-fallback use for all ec2 runners Signed-off-by: Ihar Hrachyshka --- docs/ci/ec2-runners.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 docs/ci/ec2-runners.md diff --git a/docs/ci/ec2-runners.md b/docs/ci/ec2-runners.md new file mode 100644 index 00000000..e688ccbd --- /dev/null +++ b/docs/ci/ec2-runners.md @@ -0,0 +1,28 @@ +# CI/CD with EC2 Runners + +## Problem + +Projects run E2E tests on EC2 runners for small, medium, and large jobs. (Some +projects may have other names for such jobs, like `smoke` in `training`). + +These runners are used to get access to accelerated hardware (e.g., GPUs) to +run compute intensive processes. + +Access to instances with such hardware is sometimes limited and depends on the +current demand among all EC2 users in a particular zone. This means that +sometimes requested instance types are not available, which makes jobs that +rely on these instances fail. + +## Solution + +Availability depends on a particular zone. If a zone is busy, we can try +another zone. + +For this, a new +[`launch-ec2-runner-with-fallback`](https://github.com/instructlab/ci-actions/tree/main/actions/launch-ec2-runner-with-fallback) +action was implemented in `ci-actions` repository. If adopted, this action will +walk through AZs and try to request an instance in each AZ until it finds one. + +All projects that rely on AWS EC2 runners should adopt the +`launch-ec2-runner-with-fallback` action in all of the jobs to avoid fluke test +failures. From 8df8bf08ab2ebff1648cea6b840b2b1e4f6d0603 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 May 2025 09:36:05 +0000 Subject: [PATCH 79/83] Bump rojopolis/spellcheck-github-actions from 0.46.0 to 0.49.0 Bumps [rojopolis/spellcheck-github-actions](https://github.com/rojopolis/spellcheck-github-actions) from 0.46.0 to 0.49.0. - [Release notes](https://github.com/rojopolis/spellcheck-github-actions/releases) - [Changelog](https://github.com/rojopolis/spellcheck-github-actions/blob/master/CHANGELOG.md) - [Commits](https://github.com/rojopolis/spellcheck-github-actions/compare/e7d2b8d65030d75d79a50c069a6ef30522e534eb...584b2ae95998967a53af7fbfb7f5b15352c38748) --- updated-dependencies: - dependency-name: rojopolis/spellcheck-github-actions dependency-version: 0.49.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/spellcheck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index c3ab658b..53559c01 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -42,4 +42,4 @@ jobs: fetch-depth: 0 - name: Spellcheck - uses: rojopolis/spellcheck-github-actions@e7d2b8d65030d75d79a50c069a6ef30522e534eb # v0.46.0 + uses: rojopolis/spellcheck-github-actions@584b2ae95998967a53af7fbfb7f5b15352c38748 # v0.49.0 From a7e6ce45ef560a39d496af7ab5037af90bfd49fa Mon Sep 17 00:00:00 2001 From: Ihar Hrachyshka Date: Wed, 14 May 2025 12:12:48 -0400 Subject: [PATCH 80/83] Document pip constraints CI enforcement for all dependencies This work is being implemented in the main (instructlab/instructlab) repository. The same approach should be applied across all the repos. Signed-off-by: Ihar Hrachyshka --- .spellcheck-en-custom.txt | 1 + docs/ci/dependency-constraints.md | 66 +++++++++++++++++++++++++++++++ docs/dependency-management.md | 2 +- 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 docs/ci/dependency-constraints.md diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt index 38ab79d5..6d2132ac 100644 --- a/.spellcheck-en-custom.txt +++ b/.spellcheck-en-custom.txt @@ -120,6 +120,7 @@ Langgraph leaderboard lifecycle lignment +linters LLM LLMs llms diff --git a/docs/ci/dependency-constraints.md b/docs/ci/dependency-constraints.md new file mode 100644 index 00000000..e834d438 --- /dev/null +++ b/docs/ci/dependency-constraints.md @@ -0,0 +1,66 @@ +# Dependency Constraints in InstructLab CI + +This document describes how Python dependencies should be managed in +InstructLab CI. + +## Goals + +1. Ensure that the CI environment is consistent and reproducible. +2. Ensure that new dependency releases do not break the CI environment. +3. Ensure that we adopt new dependency releases in the CI environment in a + timely manner. + +## Approach + +### Pin all versions with constraints files + +Each repository should contain a [pip +constraints](https://pip.pypa.io/en/stable/user_guide/#constraints-files) file +that lists the pinned versions of all dependencies used in the CI environment. + +In case a repository supports multiple platforms (`linux` vs `darwin`) or +accelerators (`cuda`, `cpu`, `hpu`), multiple constraints files may be +generated. + +The constraints files should be used in all CI jobs that install Python +dependencies (using `pip` or otherwise), including linters, unit tests, +integration tests, and functional tests. + +### Update constraints files regularly + +Each repository should define a new `tox` target called `constraints` that will +be used to re-generate all the constraints files in the project. + +Updates to these files should be generated automatically by the CI system using +the [update-constraints](https://github.com/instructlab/ci-actions/tree/main/actions/update-constraints) +action from `ci-actions` repository and should not be modified manually +(subject to rare exceptions). A periodic CI job should be added to ensure this +happens on a regular basis (at least once a week). + +The job will update constraints file and post the result as a PR for review. +The PR will be validated by all the relevant CI jobs. Project core team is +expected to review these PRs in a timely manner (within 3 business days). The +team should make sure that all the relevant CI jobs are passing before merging +the PR. + +### Uncap all dependencies + +At this point, no new dependency releases should affect the CI environment. +Projects should then uncap all their dependencies in requirements files, as per +[dependency management policy](../dependency-management.md). + +Note: In rare situations, a cap may be justified. For example, when we know for +sure that a new release of the upstream dependency will break the project, and +when we don't have capacity to deliver a fix in a timely manner. These +situations should be rare and a mitigation plan should be in place to uncap the +dependency. + +Specifically, + +- A tracking issue should be reported in the issue tracking system capturing + any known details about the issue. +- A new **temporary** constraint should be added to `constraints-dev.txt.in` + file. The temporary constraint should refer to the tracking issue in a + comment above it. +- The tracking issue should be assigned a high priority and considered a + blocker for an upcoming release. diff --git a/docs/dependency-management.md b/docs/dependency-management.md index d1301e9a..b376c8f7 100644 --- a/docs/dependency-management.md +++ b/docs/dependency-management.md @@ -11,7 +11,7 @@ This document describes the policies for adding and updating build and runtime d 4. Only apply "caps" to dependencies (using `<`) when that dependency has established a pattern of producing new releases with breaking changes. 5. Pin versions in CI, with frequent automated updates. -Best practices for python dependencies call for using ranges in package requirements and pinning versions only in CI jobs. +Best practices for python dependencies call for using ranges in package requirements and [pinning versions only in CI jobs](./ci/dependency-constraints.md). Using pinned versions in a list of constraints used for tests allows us to know and advertise exactly what versions have been tested in CI. That information is useful for users and re-packagers to understand which versions of dependencies are compatible with more specificity than the ranges provide. From 045e20227980f941f942cd2c2affc2b2a29662ce Mon Sep 17 00:00:00 2001 From: Ihar Hrachyshka Date: Wed, 18 Jun 2025 18:59:39 -0400 Subject: [PATCH 81/83] Remove requirement to use harden-runner action In all the time it was applied, no single repo cared enough to enable `block` policy for egress network traffic. All the action did is it produced churn where we were updating tags for the action to new versions. We *could* switch these actions to `block` but I'd rather remove the requirement if in all this time we haven't seen an actual need. Signed-off-by: Ihar Hrachyshka --- .github/workflows/actionlint.yml | 5 ----- .github/workflows/docs.yml | 4 ---- .github/workflows/spellcheck.yml | 5 ----- .github/workflows/stale_bot.yml | 8 -------- docs/github-actions-providers.md | 1 - docs/github-actions-use-policy.md | 28 ---------------------------- 6 files changed, 51 deletions(-) diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml index c50f6063..026789d3 100644 --- a/.github/workflows/actionlint.yml +++ b/.github/workflows/actionlint.yml @@ -29,11 +29,6 @@ jobs: actionlint: runs-on: ubuntu-latest steps: - - name: "Harden Runner" - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - name: "Checkout" uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 6293de0d..666dc8ba 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -32,10 +32,6 @@ jobs: markdown-lint: runs-on: ubuntu-latest steps: - - name: "Harden Runner" - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: "Checkout" uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 53559c01..11678452 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -31,11 +31,6 @@ jobs: name: Spellcheck (en_US) runs-on: ubuntu-latest steps: - - name: "Harden Runner" - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - name: "Checkout" uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: diff --git a/.github/workflows/stale_bot.yml b/.github/workflows/stale_bot.yml index 38c23865..5885295c 100644 --- a/.github/workflows/stale_bot.yml +++ b/.github/workflows/stale_bot.yml @@ -23,14 +23,6 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - name: "Harden Runner" - uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 - with: - disable-sudo: true - egress-policy: block - allowed-endpoints: > - api.github.com:443 - - name: "Stale Action" uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0 with: diff --git a/docs/github-actions-providers.md b/docs/github-actions-providers.md index 59637f8b..e1ff7200 100644 --- a/docs/github-actions-providers.md +++ b/docs/github-actions-providers.md @@ -10,7 +10,6 @@ * `pypa/*@*` - Python Packaging actions * `rojopolis/spellcheck-github-actions@*` - Spellcheck action * `sigstore/gh-action-sigstore-python@*` - Sigstore Python action -* `step-security/harden-runner@*` - Harden Runner action * `ludeeus/action-shellcheck@*` - Shellcheck action * `hynek/build-and-inspect-python-package@*` - Build and inspect Python package action * `andstor/file-existence-action@*` - File existence action diff --git a/docs/github-actions-use-policy.md b/docs/github-actions-use-policy.md index b680ba9a..ba925638 100644 --- a/docs/github-actions-use-policy.md +++ b/docs/github-actions-use-policy.md @@ -60,31 +60,3 @@ Allowed providers will include all GitHub created actions (`actions/*`) as well The InstructLab organization's Settings->Actions->General must be configured to allow select actions including actions created by GitHub along with the allowed providers. Adding actions to the allowed providers or denied providers lists will require approval by the organization maintainers along with updating the organization's settings. This can be done by submitting a Pull Request to modify [`github-actions-providers.md`](github-actions-providers.md). - -## Harden the GitHub Action runner - -To further increase security, the first step of each job in a workflow must be the [`step-security/harden-runner`](https://github.com/step-security/harden-runner) action. -This action hardens the action runner by implementing network egress control and some infrastructure security. - -```yaml -- name: "Harden Runner" - uses: step-security/harden-runner@a4aa98b93cab29d9b1101a6143fb8bce00e2eac4 # v2.7.1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs -``` - -Each execution of the workflow job will produce a report showing endpoints accessed by the job and possible source file overwrites. -The report will also suggest modifications to the harden-runner action's configuration to further increase security. - -```yaml -- name: "Harden Runner" - uses: step-security/harden-runner@a4aa98b93cab29d9b1101a6143fb8bce00e2eac4 # v2.7.1 - with: - disable-sudo: true - egress-policy: block - allowed-endpoints: > - github.com:443 -``` - -Hardening the action runner like this can prevent malicious or misbehaving actions or the misuse of actions from exfiltrating secrets. -The article [Harden-Runner Defends Against Arbitrary Command Execution in `tj-actions/changed-files` GitHub Action](https://www.stepsecurity.io/blog/defend-against-arbitrary-command-execution-in-tj-actions-changed-files) shows how the misuse of an action could allow an attacker with a well-crafted pull request to exfiltrate secrets. From f3632be7b6d9d26ed252c90259c61fc8beddb887 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 10:31:33 +0000 Subject: [PATCH 82/83] Bump rojopolis/spellcheck-github-actions from 0.49.0 to 0.51.0 Bumps [rojopolis/spellcheck-github-actions](https://github.com/rojopolis/spellcheck-github-actions) from 0.49.0 to 0.51.0. - [Release notes](https://github.com/rojopolis/spellcheck-github-actions/releases) - [Changelog](https://github.com/rojopolis/spellcheck-github-actions/blob/master/CHANGELOG.md) - [Commits](https://github.com/rojopolis/spellcheck-github-actions/compare/584b2ae95998967a53af7fbfb7f5b15352c38748...35a02bae020e6999c5c37fabaf447f2eb8822ca7) --- updated-dependencies: - dependency-name: rojopolis/spellcheck-github-actions dependency-version: 0.51.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/spellcheck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 53559c01..a7bd5285 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -42,4 +42,4 @@ jobs: fetch-depth: 0 - name: Spellcheck - uses: rojopolis/spellcheck-github-actions@584b2ae95998967a53af7fbfb7f5b15352c38748 # v0.49.0 + uses: rojopolis/spellcheck-github-actions@35a02bae020e6999c5c37fabaf447f2eb8822ca7 # v0.51.0 From 29b1333e16ad3df3a9b67b2616d50990e1a9a6c2 Mon Sep 17 00:00:00 2001 From: Ali Maredia Date: Thu, 26 Jun 2025 16:36:20 -0400 Subject: [PATCH 83/83] Removal of support-utils repo from dev-docs In correspondance of deleting of repo. Signed-off-by: Ali Maredia --- docs/support-utils/support-utils-repo.md | 40 ------------------------ 1 file changed, 40 deletions(-) delete mode 100644 docs/support-utils/support-utils-repo.md diff --git a/docs/support-utils/support-utils-repo.md b/docs/support-utils/support-utils-repo.md deleted file mode 100644 index fe9a21f6..00000000 --- a/docs/support-utils/support-utils-repo.md +++ /dev/null @@ -1,40 +0,0 @@ -# Create Separate Repo for User Utilities - -## Idea Overview - -Create a separate repository within the `instructlab` GitHub org called `support-utils`. -This repository would house scripts and notebooks outside of the scope of the LAB Methodology implemented in the [Instructlab Core](https://github.com/instructlab/instructlab) repository that enhance the InstructLab experience. -Many users and community members already have such scripts they use day to day. -The `support-utils` repo would be a place where the maintainers of the InstructLab project can collect and curate them for the benefit of the community. -Scripts in this repository may become features or incorporated in the InstructLab Core repository after use and review by users and developers. - -## Repository Structure - -The repository will have two categories of scripts. Scripts either live in the `hack` and `beta` directories. - -```bash -support-utils -| -| -|- beta -| -|- hack -``` - -The `hack` directory is open for the contribution of scripts of any quality. - -Scripts in the `beta` directory will be required to have documentation, and automated functional testing. -These scripts are meant to be run by users for feedback and may graduate into full blown features in other InstructLab repos. - -Beyond this initial structure, the structure within those two directories will evolve as scripts are contributed to each. - -## Additional Info - -A few areas of focus for the first scripts that will be added to the repository are: - -- Automating qna.yaml creation -- Assessing document readiness knowing the limitations of Docling -- Visualizing synthetically generated data for inspection - -This repo would not be released as a package on PYPI but initially as just `.zip` and `.tar.gz` files on GitHub. -Releases would serve the purpose of giving users having specific versions of scripts in `beta` and for development project management purposes.

A>f#7#t)E0N7)rExWmd(3+FRWc6wcbd7XeDzS|d`Yow z;)+f7H>5Ma36oAp8B~bE>Vf{%KbuVNNcX$}X2~u7?*c%PGPbmo+WXUzrR|2#O-##E z-2gIb%H`}NRwv5uXFyqZ9pT^119(ZE3xE{Wcz$?%5aVSch@l9&m#7pnW2i{+02XCF zK0Z_&oKY!epmGIfB?Q#l4NUc=@2$NV`S8zTuTE4Pg}>_BdC;Qzp5PEy6Zc2(dRo5v zqUHEKACay@jiZf}rs`{Qv0=*>I+=z1K ku0%@EV2Ret2_U*JPBGJ()WpKVisx9E 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 U9d~;DKh#fG)97ZQ`h(#A19s);0{{R3 literal 0 HcmV?d00001 diff --git a/docs/rag/images/rag-taxonomy-no-training.png b/docs/rag/images/rag-taxonomy-no-training.png new file mode 100644 index 0000000000000000000000000000000000000000..7308d7949ef5a666d671386781b68b70d4b85ba6 GIT binary patch literal 238590 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

ROMu{=a#CzQQXos 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°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 z zhIX|gu5-e2lim?!v&EOnB$Q634m2T z=M`g(&`vd87@G(u z=tXyh2U*v|bYXkDxr0SSoBXD9bSPU8txni90|hhbQ>>IkH#@DXJ&E;) z+be1M7C=|R-z!OM4JOdH5UoSbP<`I{eH4VxWc0~Dwh7edj)&YteLwjeQ~BeXX^DIZ z5I+xL7=5lYZBN}ZVg4UNl`%j(K{6K41oZ~dBFB?t~k> z?>m!hLHTm_lv|v~^k7iuf(d919~=?5?}~pc zxVqxuv2UgYkOs<~Z4v$dSP5bfAi|vpC%SefzyoH1Sk*IZi$OumSfeP&?4T_Un~`Gv zUN0p`i}wj#50n!Y6Tj(J%MX2rxKAYj!f&fl6M-k}3ucdCfy~&5N$z-$#lcR0V>t(Y zR-r8OTNPXKTNRsFaP{3N>(O{J+|XBhtzo-du}ul$Ev8(|P*Sx92V5K7PM_jKK+C9m zxRx90HFxo*1f{}k=}&>7^f>lm#)zhj?a7f&-9SA%OKU%lx%gK6KN1Xcbz_k3srr-Q z>G2-`@t`n_bnjCrpEyCzR@l7D#Pg!iQ*bM(d`TV4bEu#3H>K5rILwkJTZq}dx(Iyv!iU@S z**?+Px1IRt!}00L*KGjAo*a>zKpv+R4p4W`?(vd%9bPpjmT6fIOQOI12KWw zK3s?K&+E3}KULG=Yb5$&oZiA}Vay`?{>q+$kQ8wT(9dby_JBonV5c;B=3=MeAE7T6Gr*8X8gchW(30JgEW+Ihm`2M0Z{5JG6 zcCI#U5oTY%k!4o}!jjkofgWW9a_C-dwV-_aOExBu_Ots!nWa+AUT(jLVc)JL4LLB} zAg4=Z_E@0U#;Xw?Mv(FIR)}CGwk#5tQUuCJeNxnMN_xJM7YAfML7S)kHb7O|j#_sK z?)JX;73~cakHjVeNPfvkQk{Cd=MB5h-S*KrA>z4YbT*Y5X;6JW;DlaR@(J^#_B2HO zDh{`9#N@)E&&?-(bePYP0RoBo0H~x&I;)7^*P!YmkbnLPpb^ICiS%&GK2ZJ^GUn6$ z{hjU^#idcqt4=XSob3axw+YF}YDND;F8bxCgv!KRDd!AxUSRqMw>x$Coa}%id)9$T%KX`|J@99W|3Kuk1%bHOeT;W>fHD`@NpG#Ak?gOjqM%u{A2l zu+uU@6%any6E?F|FWb%g@f<_kp-y<)^b)@;eMy)z&(8MFf6||joo|H!GC+m`ONc+d zTCc5f1l({~0UP_k?g(Zo^vE0LjhXsLouS@*@i7Q!-UW0GY!hrO6_UYuwA=QaU7Yjz zGx7ga-)$bQ*PVtlfq!l%$$bF4DZ+IMXIm@ij?~plikJftkYxPRM5H?pPsRvi`6nHK zkudqu3|&n83O@JDFbB}oMSko$AR=sJSD$>)KOPc$Y^t1H@?@_V`p@dJ&)bzr*-`j9 z;YAr>{sQK3jA^$NF*mq09W#)rZo2ZCmD6&B<5LaTqX+wUy<1?(Q)cYz%Nu_d+4L@& z{*r73eTDVZrXMQ2F}TKy7p&J-isAwr?n!kn>9VulgdTWinDPav_?-*ar)XoXo@{OjCO==lBeT3|t02lCb%H@6spxtkX5SFt}6K^Pi{O zSz#hcO+6o;1(Rw|Kx28v04ik+b;vr?SfNa;d^IJ?NI^8R}UAdgVe z!BzT-phSGVGXmI`%pU$u^0m-A45{^D;NOHwusJiq+7h%7gaE!Rs>(Qp!9;hz8Dk)Jew4C8NGWSKL_Inn+0 zgNmrm*T@m6_=12kRQw5DvQzk-=5&2s4p4CD+x+LF%mRt-OSP^}Q+0s^GXBxcRz2R< z8;enKe6SUdLfDqrqaC6bi(nX8Ij$6S{9|l*|5BA)Q3|(Ei@JKNMxGJFqaohO!mFd% zYWd%FSCpeaX@Wp;&(9}{wG(GFu{0*#9U-(4ER7&H9F+|oRyqRxx@2U!%3KC=RC9nw z_m+;?Obq&;=N_ryA?3tc((3S`iz1EZ*uncGdJrO7(8VbaXLeu4T4cwA&U)}sHobGo zVX(mCwm6=>MNzk^LHr>(O8TU4!f;g{{-u!8ucdQCkw~fk0Fbudn{~q#0wr4`?z#R& ze{26+C8=CHtc>tuMi?YE?2xLmq9i@E18JJPZgL(4%9o&L{t7LRI0(Ykw&DxeK&ONh z`AXigXh@-rv|k&m1$iu$Sbr`@Q&AIL)Wdp{-BnHA)J*;7_}nZ7&}dj7+FoIW%S$1s z%&_kQrGtTb)b;!}C+=_cjX*`@5wnNQEhk2}rFj8cEG-D5B&C1HW~y>whIkaPeidhfFcY!4*_P-$3_DPXb zj+Qy)3<{wEpnXz;qfNaGep5a<^~H{+&(A4-*hP6=B(vq{9S+NWo2%u?rEFmVp77_c z$&AMt`m4WZNbL~(tns&aPNysw#`+x^4dCcO^LRI98LGX(27>#ow~Vch{w%Mr#}(a) zQY_+>RD(3D?u0}EztUUh+~>q)#vErg9t-MS%EtyLPYqrptphFZOiz$0_;seLghafj zdSIG=4a}J-mwIhgiEd5d{QK3n_-s0IQc5dv3@_Tse#~ztpA$P=_u?Qs z78U9eHn>D$@w2MZbB2++({=RrSo$5QQU%-n?=ql~!Y{i-6?7Z{9>UUcG|Lr}u`u`S z(UZ4kBB}0cFNfggB1?acFT?>6a|O^fq|x^ET2 zanO;Hkdo7U-kG&@wyl)XsZ(8PFOJljt}w4FLrrhfY>><=S)%GizmPQTHISeda${N6 z5cs0_vf!fSemo^q=4Kyx#OJCqa#>$Jl!64ieX+Z1oD2)~H@r1j{JtlJM}$-Yp|<>Q z+uno-cTU_5;p25ns?93w@Ju_^tp&+79oD#gX&`s=uMt;_`&>K)#!m=X5&31(v6qMO zgATmV-9M;G;%@UTM{k@n2!0Z4JlBBh(aU5~hN6aYKjk>?{wmbDDM2B80Q*7GTZQ{p zqwo%+=cu3r29K`!wm0FA2FF zSZE7#RGKqosqUKR&-8&E=`x^y6Z_+Nx>fk@wkXj2XU%Y7jXQ zupvD<1OcrjIKwG{B6UF9*~)Y(a1gCd zpE*$n2;8ZE_&i0>fEgrK%DK7*@%%nrUJzq6S7TpeBo9=3&^u7U0Xs=s@iB{Nk#HCM zOr4xOjE=pyFFCeRbf&;rXbnRzE%UI5#C?o*!5wbA=G_Qu|6@n8$#g0k?NB@ZJ)NZM zuy&PWSI^mg82)0?yNR7y#p35tZGAC*jf>LAOpwy3`XT3oM7r9#s~p{_Iz1Bmqrpn!*c-j< z8R!|djyeD!0qd^w9A?|s0%JMl0*Q>dAx`{{4rb1*v2&J%OsZ^jRvecER;NUCH$w&K z>_r2IU49qEzxUq9&&GULw)MdN44+`8qeFf6x~V#Qp;Ir+6$XSiG4lb?B|uL~HS;Ib zL+O&IQi(aeKDYU3)x>r<4RbMnj*$OswcoD5O&#icR#9g9!=iZ1A~sI8Ky_;D)f^4D zcDh-PpQlR`a!u?q3T~!1kD9b`QW4>&CiJLTe~HJW4yLrYAqmH!4nlTVSuKB`LTz6L zxQY_a9b1#cFMo}Hdd<{LZw)$hlDBUxGK48qXsTdyHBZ9Dnhg=X zm}E!$=E*g&c|8NY5^_Cq_6v#>-)L2)9TL0SrJSOPa(0dcp9nnZ;zJ|>`MQ({epa2OyKRs&0Y}JfimGyu zI%;pn&N}1Z)BE*MMd*A@b;?_US4R#EhN`$k@tDtuNl@peDRr4!=5`?3%DM*Fs zgg1#r2&h$bdk)P$l#m|!otZ{VRs}-){yTkjPDC^*(~Z?5f9bJ}>iTTwYUo1hR_VIF zjK;q`pMQ4I>OuBa6|)dem@h!*pSN_t*2b61s)fD75+H3jDRG$F#QyH<@R;iGA&`Ld&yy{I-L^ITUH{|dIDzZm^f0Jnjjv!D;l#rkrn zvg&6qnPUOv`@d?chJ0G5>$uy>(Dk+aCuiNOz~y z0i;s_X{5V51Sx5h4(XIeQc60dq>)s*yQC42ZfSh$=)L!Mz3;u5_s5%gGjE1r&QbQ> zYkzBf*S9|06HKI+Ul3?t-U()E)Jk)uJqkieV?hfcRi7_}aLO0hhz6!st@wuZ?M%_g zEVeX1XQ!cRwXZ>y?Fp`;M*ij}QV$^#N519lz*NXp*g+Z*kbhqwHX!dl0wL;f6UVF4 z3Ai`5pNf`I7SVowOKT~kO2zS1@SASyb>YB+nTM-aS@qmGHZWzb7c3k;7GGmrD8V?I zNXJ0U7!i7?g%xEu7Se_L;&uO{`Jo6I*W3OC>6rYA!` zHREk_^OWfd>`u5=?S*%_X+q;N1n6vz1IbwIdT`^C6nx&YU3X0?$i|JD_+iJwo(5#J zO_>VGRbu2f782Y?@Q~y(!aUIT`mn_`)_>Y5R4Q;(!s<5iJ_oY@NS$D6(HxtSSKYH` zH_mbT(~a51dO--4$e)Q?>PN!}St*$$tF;VQ`9zB(!st*2497)@vyq)-X|77=yv2vS z%%j4L#+AycPMzHC$|j1mAGS5YBj>|t zZLFPNtPIntc+A8oLi!vqR$k~Lt)m9+Gj_YTPNS3^@#Y%@iN1?)o~dx{&>mE`M{491 zj{Ep*%!m8isf3dN3-jZf#sX7W}Pdcmsv#?~*L6!;ChrQ>ovIR6_?;5a_6! z#lHIKk8X_Ri&e-%G&f~0Xj;Ymr5UHM>-8g_q)gV2t-&EjZuAG$=D+k(k^hT+HF=dp zg_o3~>_*Y}HZm*8T_kDpD<6*z_D~wE{KI$=;aHw95>StijaX4}DuHD-hM=VN zNfCmAjIDInH5#-hT>mLneYz!#ykss z{3Ve~wyzG8>&#Qq;(0d@+Vq9E=UQQu)u6|@v;iF&VNC4{RV`2ZtK_6Xwlyb?oZ6_HGKiyMm#<2o(8nIN{$!iTYUw-Wx?bN-A}p@F-OF6}d~`b^F{#nah7=|B zNU6VljcyXxopvN$#;jAjOV@TL4|mkkV(z?sCh)igc#2sw141-0TCgjjMts=>D%lkC zlTTP-iKZ;g`|h{w#1a%xhB@3Vw&T(vZ{bNls zi@)IQt%vg$|B26cNx5!fDpcGHKYpm5t-~MPhoGSh=j;=@aOxii($%Ph8xiuzyv3f* z^-w#&vI{5WcueM(he~=)Dphcc-q@5s@9NE^@dX82vIRX>we{S(2$B|~8fsC4d|puG zG&Cw~ufFAZLTt^)rA2wzN|%bGbKK@(a-dcPG1qWiipaPMnWXTJNm1e*CnmCiCW%YcNbR3m(mB- za5UcGE~T%)^eA-JW0LmkbxTn0PPFBw^2DcI%LZ4mTD!b-}wB_}e-rPy| z+Z1irbI<==L3wHkC-8vBJlBX^f7oYtfw_3}h2|xk_FhI1Bw1q!Z4R3orV4=cpjnDx z6$M>!^o&kfhBRgnwq&NFzhmu{k!WHFnc2cpLN&*<%W;wDurtNSLG9IGVRV~D7)7;= zz=}W2JFtIXKsP|tn`bzFe+8C(Be-!}jzYL%*vCAoIH=}sHj2|MkFHq>)#a{jn_`{V zK#eBH+M$-Ui;VP)G*m$3DznT7esn7sp)D-vy?AWsU4-^rkER zASJlbQiPrYsl-58wDO&oG-WxQD1Lhk!W$&TH3TB}^hf3064dK3O0`D@X0I>aYF$GF zG0x-??F5<8nFzI<*%#))j=7_rr~ydRp$C}n+- z`HJ3uJ%~M;%I^Z}Wh2tm`H9BysM9dU!9}xSg^19By_M;}avfjb9qBW}-2DQlFSj#^ zUfs>-a5I!2mO8nbVxKp5O$Wc=FOEQ)x84d~z6XcA?8i;+Ust4~+8C8laP|63M7K=E zB5Pmzz58+X#1l0_l01tF9UZ@$OE`vItTtsv#PjGGc^03$*Q(XZ-m}%`_49moGEoX$ ztBxC;=9<53LwMv8uN)o{Fb?euKiVdOEY4<$Yc6=f@=$;8Z4-uZ)6DSt18S4}f;^fxH zIvYxsek96R_`|kh9AAhrhRrZ)#OA`Ko7nEIE4kV!8i#d|vB?tb&g^!t-@`$uu!@oL zsW}H1Be~SSI@6@I-nFZe9}1qXtu7SXA&)IoK1FI-8aYhYI3F!iA#8t1Mk?$XLRmap zAA3)AP~{W0GokaX+)SR@=4~nAG(;e|NUNw`fAK@wIZ03p)|ef6o%ofroXRJ%)$7|G zcmBMWSvO;)uim=iCM(ykeL4@3_@wTBFSj>Gq`CFLD4iZIJ!DLK+gQ(Hj!JgCn} z)anD6CdNu4OVgCuc(HkkR-wM4+-M{&FQmi?%WR~Ny2XrlCqfJ9Lrt;zM`AKU5x-uL zMIX2|g*0~8-w}-u?+EZ|c$MdL^t+p{n zJoLM+GsHaI>gABR&KbOZZAQuHgZv)5zxErRi2f-YbZmKQ@!W~9(hzuI52hqWW`^~! zLXu~8mROTN$a%5H_SJ^(>YsMqG^u!Pt@*#5M&PjRoTA>g#I&-}U_!+%uV13Lz&gCs z-;(L>kl>_cXwrpouNk%K2FBW$OQ^bA2Tl~bol<$Nh+X%|**PeYgbgX<^`|J5d4udd zKBbI`wIqxcRC_QS@9-uFj$zbebCH)6qd5I0f+ap4aYDLbC*5oo?xA?{Y7wWmz?zhh z_wKc%f7S+GAl5Awje2=bEgm^z#O^aXJrauD`pZFDhXeP?3B_iMnKwlII6J|q5y!N+ zx!!rk+YdYIsQj;%fTLJL6lp8_Q**J0!{9p^1H_q$05_gyge6Tu{80R7K2MSxwLb@f z_RZ4{n$~(9;X8){RBuM3JYwWe_1E<7-ea;ku%Ok7@pO&{p?(dN`UnU$; z`QBxWdtupzTk~4clek7tAM8v>+i(XT==rcrkZnbFlTde`?#$5J9OBnF2t1Z*YwtAK zD6&S8t*p<|`L)@Q4)KMQsrV${m3q~Jw{;L&1B&}v4og%o<)G;Q8r$`b*D!UK%K+wk1 zwXm}lyV~;%gVu^`!3fEZYXhsXS#v4fJ zNb%w(+nJEd$IdTdD#GsMqRYYeFsZP339QB~b6WUSwi@3y4&_#|(t20;I4I#-s!s}Q z4WP$XoH#maG$MC=$Ve|KG2Rb7^_M=~Pe&KLdLkwFy;3?W3IOGX>A@bzr5=jUQAZIBS3{az7lzt`k$O$-8Z2jq3Q6!(-EGCp( zI~k6jnseHk8|*s0B+~R;ZYf-C0)Z!VHQ@dJcWns?Fc)Z=>Io!!V8;9Vg1&^<{7l)~ zC6c#%$1o7ujy{pd=}={1^j#^~Bf4c%;K3VS*bOPT`6D`Y5N-dwo2!$+D3JesFbitj zph6*TM?oh~-PkK|HIw?LExXiuBdNG_x?!BaaU$v%&!;^LxWbGSPr$45fVlQ*@FG74%JI_Ckg9X6 zj=%>4ZT`BBC68;pHqr;z*D*{;=_2%CytORC84n2B9P`7dK2(YOw&qDvqM$f(XyT;$ zeq-!;hmHLnw#jpY2}T(TAvt8$3qPUdk0hYn#A(AN0mV<35*n1@Hl%03EPNDd;5Qn> zeY9bV9#0fdjX9C{z*X;ld3~NwGBx`CkGe!8Z>JrES7=J{UakY^;@Z<6Nv_Iu9nN_* zGP-aU?_L?^XK3KgP@Rpnd+&} z&a^67ur$+z`RLxsbxL3Y?3*>^2qFfyiuDr2)Z!k&`T6CCh@Yw8#Mh#_4v#LbQ{6gc zPs!My*D(6|dOY?Ko|84`eo1}5maiGXait6Cb4KN}&7pvI4uky}kb!!P?BQSosY%w6 z#-|k>y5(-q{cx(4BZ$#Av4;c=Uf{q!Pm(lC@bxe|Id)hm32*W*V0%H9x6C%#J(DyY zI?`%569>1d(AEo?X)B-V`Kne+f5e!h7pA`ij@DVB)$tsK19;2bJ*_ zjh|Ll;sdcK+>Mp9>iNhLvi@1cF=407R^#cj`pS&y$Qfw_t^h(b+tkv-Chxz^`8LwiNH(`MrBn;JbX%1(4@?n4==B|?rjDal7 zXvfld-<=+0aWkLzL=Emy0Hm7|20L#ohXaS%yC7iEp}re_(sbD@qnfyO274J@aaY?h z{{k0D0`5`17-Voi?`PWWQyYC4arVbIZC&G*k3*$Hu|7we-`wlg?ox+u{=y_410uI4 zcZIgR1Jop0&+CjrsTzac9<#fQNfJYYG2dpqEC)bup?Wp+ha`eRh8)nzc-?t9wi<*?Azs7 zoDk#`w3IR%NffgTT3KJmu?; z{f;Le@vFL7he8|0#0E)_bQ`ITcVpQ!ukkfU5iNy6%T5G`rVpAV1CM2lC~zteV7ww7 zjTP7hklM~`4uE^is?)l=A(X;l24^6lU)-T1EWX1DC{)5HRBoKybd=$zt- zk(aIpHIBJvqOYEm%oes|ItAEXmhBR>5d~?fH?C zH%D+yTQS7j2fbc;g`#&hm9%Z7X*0(gHb=BrVMqw5*cw6KNp3O?PUI0=o#CC2UY}0; zCp{wzL=^~{T(Z}bbj4ZQR|f+MYVE>gj7syf!A<8%AM{>MvUuyanE9t_GC?gQ%*=`zTS_~_`lIlcE zV`qJR+z{C0Eq9;RIE!N2nplG7RBVoKY}89_z5DhudJe0z?!i5XE4D5Fb|W8SjXsY_ zSnKEs+mgDH1Yge9oatPP2>%!%L;RAb;3*5s;l}%)J-ACB)IL){1}YxqRXURjDiPQT z#qV*6)BHS=?yumst?Zg5oks!CG{lvN$brz_R_WyIDP+U#nycH=mibDSR}}^vIp(3^ zh#Tlp;pqpT^FkQ?pDO#a`~B!sIGY>_Xc?sU7j*R^I}0F1hrribg|x+TyES@{M8aNQ z#4f(fEZFbaspF18-A;*z9ZW5 zp>EM*lYS%h#q(lC$Yc+u;jENaHaX={ZfTl80xhWvMZz5Z%|Sz9_jS$UA53U<~c zrEY5bdBkL0)Waa|`&3$VkZnG5`Hg2YjN0T(SL%Zs&#RPM#$)syu?Z4!VI&t_o4{lq zXA$dzGxVakgS%#~uTKt?7K$^LUG20r7eAH6E^!gPzcL}L-Zl#_BzZ1PDiPotOiE*e z7I2~^^)!<^xpg7X*^A7Cv845ldnD3MyzvX1P$rmya3jh33&nxHzCP#s*z<bSwHMYhE92j&Bl_)numVxBm&t1B2674@vtRu$ilx3 zvL4(cEAC0(R6lz5V$Fk7^0@=(SN83rS^!W1+BdgR58QTjgFm<0RMJ5e^3i6*5j8jv z1s9f9w?CSQGY{o{gixbdBN+kaWnZj>ktp!7V1AN)&cpCHT{f#u<@|ht;5MdjBwtg; z-j*X>HRN1W#$5zurD1sBC|~`GI>LepiIz}kr^svd(-#79iclx4V9M1MONR<`=C1PV z48tY0IOdvGsmEgww5b;JO_iFO+w`9lN4c)Yx|MsO`nSiT37T&jjd|+IX*LA}rO0;J zI8jt|!nr9DYineS$sU}!CYL|KA8@%9vZ`3-!z*0rGM>uho^`3~u*TZs-WS@yPgU;U z*^Jm&R99#5zno$imv|SsmCDDWHjLjxU@+jlA5&XQfRXG>EI6!(J8=HwQ0Gkj`oR|} z+Cs&jMcXiVE*Q3ZxCTZ7zQD~IrujkbcY*sd4vD~LE}NTKhCXIEm5-t)f8Hgxo6EaB zKY$mmT6sDo#lkZ>?NI1D%GneCA7E^nRQag69CRMNOx;K!5f0eq(4IRM*W)5-zy)N@ zY;7%`3w~mOeBMk&Of~luMO8tB9olWTr704p((r8&HKwv>go_emgcqlq*!0Z|fZZuX z4W1sQRHeLCm?jxj5v89B&u)fpdiRdDgABQQlN?=5aV1U_V+-|EOXaccVZ4wSTHp_z z#m5j`c~CCfJLn$O_5!O}V*6dC996~0!h=P6SUe@46)*an()X#USo~z|ZFjRM&X_c% z`4()?_i%4ARk_~%FLb6q8t*T*@cD1u#5%@Pe6E~57Z<<%5S?$^pQs5-8cQCKVm4h< zRv5-A%;#ML4My`U;I2`w?)#yZFtn29yu*g^Ev$_w>z&OHn3=J=V74^K$(@VDRXBK? zraYn+_fYxET2D@Ihyst(wsV&Mg3!e=3dP4jO|uDrGf|ZlzME zGM1ap@qg*}_>Ga}d`r+42SM2Knw$9D1$QWm1PXqSrYj>G17_$k12l9nfr9r+*o%)z z@5syczRi`}75CO$y-jU;#ql;T-UG=}DRxn(g;XCqY`mk8mup{RqMq#k2v*%g!<`U) zs!K5@5P{B+h&72|prSU3C1yHv!1Tj?obSY{Le2iL zTQh=+!R5)OnhAoH+iL5HvUyaY_|jctOKNL6MeORV?Z9h|N8Q>b150ULjXZ_c-2g4r z$QHQYANDA8389njW1(ZgmqBZE1YN*aFx<}Zns~YFEQHBFi(D%NyQ&%9%`1GZ>urXb zDmf)e_Kffye|kb*b}5!ZkOiL)dQGjeYl+Q~XmKrm*m~8v;&MI@VgENX&rTkE$IGcN zvNMyPA!9tGS}fQv!6ZF_ap|^aP^$MER&xu0ReWCST%^H@@tqWscfv>Rcze(OrLjz^ zqt36~mW^a{K9iw#<~AJ_i`_1|b7=+MoCxeQ*iiXLQy;{<_>c^k-dmMtua97HOgns+ zcP7tS5$L*1(_7>6rz1w5fsPaNybPZTmTI#)-@E)+!F3;?i~f2Rx43kit-Q$6a;qA5{8r1X9Y zC$@6u9$j~)>-%`dT+F=CfR^IZhhQh$G`tDEFr%l~mG_ag!+cx1%$yW@RiZ~!gU5() zdhWxNEYzvN^#|a(hjJll?|m^vXRQ7V#WZW^9M>;+_;Qa4)ogqFcKbcSQ=*$vx`J*`>y^uam&)cUuH^WqF*#r#!vp*&>S6HE=*7KrVdq0+Heg;unIYj|F z);LHqZgU@35ENjpFn4B{0X%}YGfqF`p>H}l#l_1Yoe$e^-=LQdF{yLNk=lkqa#c9#<%8C%@4 zD#kubkE4Dj03bTB9q!?TG60$4=p5`dhN@YFpCjKUuw)zhOAco3(9wxQp@L}=l;vFQ zX%c=VuNYxo7uYX)>NnOE8};EZ_`may4TupLK+WCM@J2m-Ul#j1YPfiC*? zO(<_XGMuO&k5|Fi=62#}x_kxXm`WR$*&+A=l_I!VC$d064IEf`;>-Jyp;XXU2plZ3 z0mJ{3_Y8XA>mz)R9_@V0b8KLR03t{XZK&oz5el8^9n?LsLSM`@2_lWk7GMJr*Sy4D zf83=X?Fe#jj!|q4IOkZQQo6>>TXQT9wsR?7l^rJU8pf=XqIwcVMvXOP$4zOp#aTDn zk3cmMbH*vJYZH_Yb%;-VK0rTky&8J)0x)EES8(n(j0u(k_?j(~WFnOSUbS#_eVG6X z>$!@N?Vb+>ap6u=~iN(lH0`P?0_2HnF2wjB4}puj5jm@n_Np&zVQ z(}srt5oTvS{{kzbgjz(2IM(hcMnAVVMw$cDb*fR$>ghx6&EP+dOka`$3fY}JnI=UB zA7V$=Du1JrC_<6AdKaB9=Bkl44$U0gX=0fCBFY%vj&i+=mu@=(7xON5>Sw+IAKoFw ziT#H2dIH4>kZKq=2Nf8or=Kb7-zAw-tu27xn~!wmVL51h!(n%nJMnnw0IKRC z5IG_xR2-ye!1%*o=rg{a$QO3?;OsQJ3Hw`Fsr^Ec4)Y&DUJE1xs6BDm#x88?cKN`* ztOo#&BROZGzY`EW8H!x{hTWDOPlBEF$(x67MVgR^*pOaBaM;*hJ_B$lSUn1G;hl=r z<{s@}p6Eu996kTahM7JcnTaGEw*)&~I<`K55)yd~714(VJCO?510F(I5;R7{uvdtW z(Tq=n%;rVKK$A3F#HWP@oO^@{uT5@Lbc0!PKR7`?5qh(T7IzL66Bhs>5QiKmHa0D5TqOke^QQu2uB`^4!solW#?oVY}3OfIqe<&ECwE%fT6;*N)iP zi}A<%h`YiT=!?PKhLsE@C5%r|%=cX-xN)y{IK8-Ge=eu( zFQd5fRS}!{wYh*l+yfaADc3Cnsxt^!6(22*ms9&|Dbbbe|G?AzrD~}rpt<9>WWnMb z(z#?gW=@00#Qg^qvuz)&Yjz=EWflx`6nM6)02@WKTu#~Y%z_d-0{)oHo$;m09~53@ z1n;iDZkGjwz{jzMW;w~1pb=1Nls5)6&qTu?yBq%pCvgS}fWYqoM%@AjgrA>W1~!Tk z>qARYD;f3K=XW?;p=!S2e=>d=%6Zo5zeTL)DP^6yw9}9RoQW)r68%3y_4@-q;G6l2 zgCKi;V3*zq8lgJCg+m$e*FfV+>R|9FJ6@gaX0D&aq76o@_eS$+-W;ep8-3WI+` z{}M3!feMt#NCZE81pvGL{9zUaGlTZj8`IE?@A z7dHaYmYl}x{hqQrVfKGoBP+Dd*+8-2FKNT#29$YDy$182SK)>tpFWJ@?3E8Qdg%9! zon~1b%HD0Avhe>f6R7tPxX1o6kCq(lbEpTx%}M@SB>wqrgbOaVS*4E~09Fx48bb_L z5$fv}Wvn;;M>4>Mz4HJntWZ_>|IOlb;jG{5%66SgJ8p9}u>MC{34bYP!QaY>^#7(% zM^gC#S7g(&7Mwtio%E|Qj1?*@z^sb@aQg@f(X~h(x_1Noq5jk=cuK5dqsPw9M$avQ zlS_3pXd4lO@Y0BG;u>Wlq6zj)uH0Y_kFjAEdml~{7xzoe``bTkvoBmW6lm*|SkDr8 zPMXKTsJ0D15`sik`hucdN8i%Tzki7LP5;|V)`Wk_Qky2!aP}Esle#!QV*9%mKn|PP zIPd`|&%nBM9_&Xw@puwV4WozE^F0MZY!GMroGJ28D9k#j~mgFSrz(7A`Vy_i?Q{Y1{|b^{@4`AGXSWLo!>LMHtrwa;vRB+5ctPBx49}s zs9x0NY06;_sP1QSJcL?SPGyWgF@#lsd%=vN%pyPoO5*vuxAKW4*a3sh*M_vbKUws|ekwhC^pGyn8)^uO5a3nvbMmOd%o|9?Uf zY@9Yh3y(e3SxICqxDy`9K=Y$RBA_M&Vl!!s(CPgG)M?;AnjF{MU-R!bn2Gcy`1El8 zeWC&qDriZ29K4`iKl=x6GooA#q>tgs_CYx!>mHU16SJ`>>Ef;c&9loe+5y2lpt zCqmU*h&H?EYhfr}r35}3BG8pEqgR2$MSrL#!b8JUKwWdS zZr)BCuu&e-Os@d^J)&Xc|GgntYXv!si4M7VfPz7@VaBy(fXMvkpQEp>y)Cl_mOQ8Q zs95@-ICmKoufW7=cJFr`ljvyzDA1L_Foyi8rMO5$YNQ{CT^RYW0yN*!3DCB}1TS zZ%8pSzdVnfEZ2xmH=$LlkYMTAlC+PX?e@1bc z99HrbY6-?ee-8XH;!S|4`{H7>wggl^>$P4d3*0VvxUUxLstR$m*XljJE|KuMwBH8@ooQ zBxfA!e_T$mo~N~G+WVgEjzA4AycN>|<`3EaCMojM9FxYMIEZtJj9O+Y1Mp;a+&-#u z&IWroj`%ChT9t;wt2i3>ogcxk)}4->5^2sa&AKGnJ@^Vpx*)pg`gudL^38@)pf zP_RPu;C!Ffop_miQNGP@!0UZrIOjlX9&QABSRl||7Q)B$)D(*gPs-#qZG|D5LXV_o z*;iB48%o6%1Bo9^P3-sTe0&AS#GBLbxJ(yPrazE;Q^_{n!w>p;R)bJ`a*`%uJQBit z!%C&THN5BPGfA3?A^obsX_6A!1vC*`i2UEI7J=oU$~=&Po=buv-k=)uAxl&wuWp#O zKwBA}U6{oQfP&eEkM8d7XB$_q;O{zj$;M9B@cR&Q%^?zxwE15#%3+Z4Gnj?FSI~QG zq7aFokklNa)YH`cRkri(kFtcs1X|Ud*j5dcZ^=H>37~xUG~5}~yQqG&c*;OjFfR>q zY(p+BO8*i*5oj&PCpj8sQ5quGpomuc?B_6G(@|berosghNGb&C&jsA8pvC5Bt&J`{ zF5)?BYlh_sJa-pT=z>3j8yyU+e;P+-kaB&}MN6lWKJz>nk{oML(K$;bwieZWIQEDq za+@B0l?LTqr`v4e7l)O?2CI5dHJLE7{7uL#ZGzT7Bv zrW(YHx;+_%Sa9R$!Mk4}C_4_&7w}o_0Q9ib>B;INFJ0d`T$two)5KoLsr%l4a(cBUcqoE#>{6oh+;{EIrpV|=lT zTjdLvL#mh0NA1oCAe~qo1Ur)0%u^k_e}c6KDz&*LNk{lf1H%wJJcc0!j`jgb4{UM( zKGI8{l-y}n{81}Jd2JSuq0{)Cw^y7D?Fu_xPF>Vzj!W9p_;NE>7xcJLU*LPp`{6m( zfL2{5#He(2u0iFm%wt@(v#$EO=&1}E{dkEw0dsIQ?b~E6hV^p$9LCk!*$ppGi80ZPW9XFeibigWboq=^aV`&RKK&5}`6Yy-Jb05TS~_xT_G zIb|5!%^M>RzI_y8iNjYUDG=?nHb-4dm>gvzNt)!S7S4PMQ6%@Xy20Z<`&5lrZjX`F zKvgr;IPtc66SwYbSFIJku6vmzuhXCuM*A%ZR66D^buuuPj?_^l9DOO$o5YAvC{Bp6 zi;T-XFJLm;4-TMu!_|F16wC*P^hQoCIc7<+&+F2C?$uQdL1`{FkD_&xHgA))d`w8tlXiyqt^ayF*I-Ze zqpeT={NWWu2P8NNT^wd1{&-LE!laJQ`n^pWOC{`xmM@y5ubSSqCwpH#hYMUq@{+pjj;k)_>F`6-(z{ihV6cqB0SiBeM}P9lLtL z-xp>J3dde-dceh9r$~46V0_U;#kD4 zbmFBS%E_fsd+EY|^3oV&q!w&+-dMC)>(+7!kV@UwKb8F1q!Ky#QBo$M_zj*ik`z`T zCG4}wZ2zX$YCn*8d=LyTS7G1P?EC7cXevrLY#~r>IcX-YhUSM~isfFlXbth1rjT-r zijeF^)LgHFwo#An0Fkq9YL@j#;X9R|Tk+CPBHN}`KZ~r&B6IkPO(?C51w(TKE|A+5 zrcK8;MK^lKx1X?R-;K7Kaj%r$`C2mGjzv`K&zQOt+e_17@&DT+1)=0X2};W|G0u4a`zudRKpDDztdD(Kv-~1~Q=d zuDPdAi2~|_5&XQf+VYRXYjFIS(nP*c+D} zNf+e>uW7upNF_ymx^nr&582aLo#r;uKRs8H6d1RyRw`WD2h^|)GvP%wmGWW(kOeUh-SA=!ERLgcs42xiSLxAyyrTSr+^-v(?4GJVm= zK$D?ZxYwU24IwBNywGITC?PB@5j+8fVTZA1m{Dcs052>K@MWxTJLEN7Wy2rPzmA$y z$I|o$g_c%Y^u;#3&U|uj9)ql;W~{Qbj~K}Vs~1_p1gdnxH})p@22P*>TK(y5utpdY z3=+C!LTG-Y>F(=ytw)(!c%rfkd-g0EqmrTiAZQI*%3@;|c6t=H$YYu7f+X(9WjF z8w(rpl;|nrk`6TZ!?J^LYY5S%9EEL9?MiGkopdUAFF`)!U!jH=5jVI9FlL85%j__a z=f0=j8*l_;a{m%k3)(p>RjfwVxz<}wN*F3jF4rEJPE!q+#n59!!|q_!okj)yw9`|O zG(327g%Xd6G5YP?n`ON{TB}gkkS`K*E3oiU5JDEhXB?6%v6m#mo}X}Bl_Pwv+NP-7 zwNV8eL#j1k;|@|j*I=Vzwde65`m$@(8wnk>QdwkeXpV2w`p?x_oKQ75?cUf(tb1X4 ztW6=vvhRXkdf>^`kf<}1!L^@#it>n-xS}0nA62Ha>2TedeARkt8Ee~9-9DZGPAqmg zR#jP4&NvM5psa}!Om{f3K8HH_pqVU(`@Y+mxf0$xZk2xM8 zSykda}0o3nwZ`ZMN7f%R*u!TsTcYxP`QRrH;U z&?m`+&V4a+M6zEl_%Y2GN6}eEQa)Fz45J=l)KtbGXji?)wofspce&gNI34`(fthv+ z-pVM*fPA#zwXvwQXy$=-#aCC1P<^hq4llyo!-3lv=zn>CE<}AARPK5L;z$&t1rdT7 zy!4frf9eKkU5^6sx|zxid2eWY6E-JupxnKpN^qv^wr4c2HzB?T=jA~1Xxe{;a(+c; zPN1oX_Y6{KAj(z2Zd6&q0QZAJkU;`v9dzStk%`;yDCOL|_c|2{cc z6vU?(h#vMXl$X{92>_T@?t z48!?dMM=tWz63 zT6M%`jUSjkm8i;_j@rK%trjFO0dfLwHiR7m4RAg9zerwCw!l$J5(njgXnT-Z%vbS( zisg!`B#~#GjUe(~r84k6#fG66zyPgdoD%~N)=S8>KMdr_K&=qn|0Jg)v8|?@832)X zy0{EU0!k!<kgs51npQw zYoyM&)VSF~3iYG5Dm*Iu10xMCMu%pwDz?FO6*Cv_tKcY&CNUAnBw=Hr;aG;JOn~nJK>YrJh@z?4b^VP+5fEv%M7e18!h=u z>R-AWI*xRRIu9*me+)6wq#RdVtO8l-Ny;q|nDF1zbZ zv%X|z-xsxsFlg>%t46ND=1jjV4pZGFg*2sfi*8sSd_enqFTXqH2Kj{;T*M9f1ST0VfKcF>p-a?K!onWQkoy&OXVZ^_Ri^W$|S>WK2@OMOt*umxt zQ{mhaOAzt6zB0ynNdx1vnxyDBVHvIc&NVi_d#5W0#n1hzZFLSDr52$_W@H}4smS%6^BQ~ zImB;+;Fn_2n&W+@%zZBZ7e98O{P3a}6~zX^fC>n_s<_-X8V9*Nmg$ASuiBxa|4v|l zmM+=8S#(nfep^HpNhdqX^Q`LtLFiK{p%LcJIH64pXi=N8OeKidiKrvl%sI+?>o!S& zUJ(#&qE$f(M=`_rr5_u(A}G0K>t^})@>#f|hDn}pTt`zwGabIO;7;$r%r{Ut|2vvz zW<|T%4+`VMy8NMB@~uI7&F7d34T0p+;N$OV&(vzlSQATI|F-Q8SnQHk5^9-YwIh<# zzf&j4Qb4-hnR!)Dp~)_Cy(kb3#tOWb-Ij6tDgZhMOBSDr{yalZ!R|mkXw*o+5qc+( z(sCj(eGJb|$v*YKL^ron2_*$&@s>Sc!AzA6B~WzQkbwxJ4YGsm)>lEAvA#@5-{~t9 zJflj^Tt29!j2e|43J}VG@}L*6UGx>`q}<|O3=s(7e8!5u;;Q-3f&~;w3>*pA@u}S; zFf-|Uy5CleO5k7?pyx+i5LMc8B|`723WR3VJ}80eiP0$7aT+3Y^IJ!Mf?qEN-e%3+ z$QcOxhkdF!DOik$%cSu6NqrWe9xGiA#3NtA!K9-Qhtsp8%MbU)OG~AR>cas7ib3_a z(1fg-Im`&d;bD>}tP5nB4MqOzumwB6``cP@^ZH0%4o0R#(7#8^nRwDT*s9M4wE*J4 zOls4d4hR$Ip@U%_N$SiR&_Q1teC=6l1*WSv1`f||Il*yBRM~|6$JPgCh8SVPkrvHu zphU8ZnJhHR5Lln`IlAH7YL)!*g#!cU-fVb@kKz~)_Mb4=b7Jp{U8CDSaWkUc$4mMaNVCLW@UMqEfuF9>3LC=aJ&_O9 zEvPzh6<;%je><4G{yW4Jz)ER*=rrs6JrIvI*)UOHRxykgF9sYeWUg1LCMvPUC<}E; zK>=Kflm#Yoy{|~7de4udy!DAK=697Yt?aa8@N}?AU}H0aBFNipag!)OHx>?HW0@Z& zi)DzT>H#4{4(t^{KQ}76E$BOnD=@q5!FWnt51scG-{RvQ;(7fec&t?B?Q3qwPp5ZI zc^=KLCUK4(B~M~(BQ>Oew+|U~2jp#ni%>C|>?cSZ*Ma=p6=a3ZsNz&I?*&IM6)zpi z_jJF^zjicG$Z#`V$T(H0E9(dZN{>URo5i=;v9eZ>JCviAXLR@aql+ox*-w$ZXnfE0 z;Auj+eiGXCuOTT21|4CxQr|!$LDTKsLTz?LOH0}5ja$%b4$lyeX3fj&hW|D6|@`a?IbD^59VtSuyO*?tR6A2VTMoJT(#lmfWDv}R|b$AWUCiqEe zYsXM?)TRsP6nmu|X4LihqB3n-_nYPKH%Nt!?2&l-M3UAy8_0V$be`qkS$xr`}q!ApFyBrqR1et@WbpY_589~I-cs% zc(H2T+OrCha=T7rs&u%Ysh`w5Uf1h4K9*H={^Vc{`k5J^=>_UCnS`%=>KJ@29IL45 z{R#9msKK>yT>%CCi(lv_jzIJ^q3AxnKYWno_ZT)N)NAw#=r-}j*Pf-qr>=;;-U!;! z`^L!a%Gdw0o-%X6^BLFHB(07t0mCv48nlx09`a0zFF~$y8o9qZvo0{wx)0~cI0-s< z5uyJF(j{Odc1N!3&$;3b#tBH7ItoM`zJa0nqt?vl+n#e&*WM(|Tp0$NMdy6$P0p+sLAr{@{Wa zdiI$C`>$UV-GI?R`lBD3GB1SYK(8MGUgvbF)w|D}*2<}wE?tfHsefy$Z#YyCsPJ(* z52kko9u6zb6^d5?%ErbD+ZoB`h7aSirUUk0!8ysA3W!%|4_SICjfnozTml%TaHH#} zG<8v&Kq?<}$Pih&05Lt+^=;|4NwbTb7wzeHm)VmOXa?f=dmh)fcGQxRB&~xdkaVd* zwOdkkR#s{B*K5%}>J5Y@rucB#bpn#!ye+M1C;*~e~P>uP&> z%6?T_(CL3{Cp_fpUSR$ooeV9?`nKDLnw2(7@9ty4mt$js4&Ze7_SvWSFjds4iXlFr z#l7P?jLyd(DARXkAk`c~JY5IUWJX^)Z-9HvAvJ_7)7A`k_pC-q!ky|28@(t7)Wobu z<6k#Hw1jZ55+4f|*M+kqDmWzS{oBT9MU7i%h;CcsIG4f>3{BI; zNG-bazUk9FUUDocZe{a%?l++0BO(#(<>pGA@Ud_l^?qF@LNXR^;L-YChlnu5~=vy&7 z5?y+KgOSeU`Tv8xw{WW>dfSB+Q4tFyB@{Lt!lpwSq`PC&A>G~G4FVz|4bt5Wl7e(e zmvnc1vj>0YecyBbgLA&?+Si^nD`(cMe4hKc7XU&9QNEEpTJZ7x;L~jnFh`tfs>u^$ z3zReu1nL8*)G2V0H%@}mX9&$e`YA8Gm4a3g3eLEc-f82CIXR!Hp59F70Gh%j5i%Hn z1h9R_q$DkH`;T5xAy#pV%z!fLb9*^H$^2K(f~Q=ngqi~f=x!5kR?P^g&tBdfM85AL zVt=s{&-Ed5@oTL#^qt@GkhH)%RNbH1^IdCNaIU*XyM@0ZBn_=xNS^^hyqFG@-j2+d zDKxp7r_F%2;#(rgqm%^INuQnkRP*1SK8EX%p@*JuGx)X$K8{Wy7EpSBxLuC~$k#NglHXvNaS_jIs$?>+@VNl0OGGWN^_I$w?z-EEcT5^KO zWhEMC_y__F6ACz=p!ts8_K}|L&s>`g<3n$aGQJxU;~+1c?M73dTc2UH?l%Fe9k#r{ zANckXeaNqJI#%Jrf6qoFYzNa&MPJN}mTf!9->Sf9;s8IwJ`T>m^Y^UU`W2)c0BH;; zb|DuxTbVqnEihu^O>-PYY6ZvWe_FA= zLm0iyAj>kSO`k)ecM}xXEY~b@pF(2-L2P8m-cL|u{Kof|(7l8MmW~Wj1{6aLX+NPI zKILq^)o7FoaxolK*A$|$P}C4brykicjbAIot7Go2V(ohSf)0V6=u(L}dkI#JUU?l2$wXXj6yayM|jD0V|YK z;_n%)=`tlLl`Y#&lE00C`Z{|9)Yp@Uh1RQtR2JuCxgr5VI5Vp&t6M&tLN|*5f`PiT zIH=g0!%+3vhS=DjsYn&}iH$c__0Ckt$pfHx1(+2!*DbIFM+x|y^>XU6^vCNSS+9mX zm)Fc>(s7^9CdxhD(htUxHS+tX)kYrLrezZ>uE8mSfmG?J@5`6l^>z|#!W z>P)5Ri*K*;x*6uxDSc`mE&XYsoye`VHX(0`5M~}F>MQg@voF}*A2qG~Mj}fXRGRg$`#sy23hoh-6BwW4M#G z))t&o@gC}`>Sgj_8+(SmWf0u=U>tu~o>XrHibfHMwd_#)Qx^e^XufFGJ=|iOA|X}H zr=(&fwSCT68KsVZH7ph2ba38Sri!PbK1)_o*!?T7Ft*mlA^cT9Pr0OOSu6X^F9M!I z=ekD9(D#x)$+=^dM?Be-j+#FVA5tVr^XRV;sBU-UQNz&&Oe;hEBW2oWGHd`ppJ*7h zOr~d|#b6p*nf{#>g%YH-eoor#-0+eaL*L)3BqZ~{Mg;z63u5*wuW?6rBgiR($f4Uv zz+VNR+Sm2ECLI$MPA#Hp zRfS#v5{qSI96p2rV$Wn{!J8Txca1W&>72MYK-UOgAvl!Q25J4xe7+J-qY>G8kn9v} zsQ?uE3bH`uYee{bNc((H^N7qnO_R|f$ri<$25f}XpIXcz*kzCN^~GggtiLj%`XWlA z>`k_9d_KvjfVmd(P9l@vc)y!Y4BPw>5daZu5n+r%+!p8ALw4Gq6sf&RGPYLVLZ*a> zS8G8MB!gg0J0-_kagb_<0-euz_qJwuQZ34Tee*hDIth|ajHe-t$-@VpwLD<+fIh4b z(yD)zj3VHj_Q9!5Zn+P6r|VPwYPdrjr3>b3lX%@65voZ;C0wBBF&n^|#FTI0%CCOq zNabUuNaYexcJLgduvrt`>OoY9T;}KX6;mn(%mO`$)z6+J0{d$ogdzxvIMR{d z!$m4iPIc##%~eWC7+`+{E}&&#|0K=j*M|VMEFF1PO#-og`{IJ$p`CZbiWgvIP?6}f zsfYnY-`gu6rbQ8$iAweywAa>K9?BJJi3+rY z>bPW6kq8o`a7BW{8=lPg@Y6(QvqW#p>vOA3F}7rMMTzhQ#kN>WI0PHH zg9V_H_2zQZG7;gDt7c8nm~?{5CB8bCWURG#p7)-w^wx3Oq`DTc5B;TE5s!!`3>Z}S zlMq3uHMx4?L^pWQVQ;`!OKG`SPo-T?c1U^gmcHY_WEBD2_edZDN9DG118R1%TwRX6 zgDTlly=xP1ZKW>Nn_J9l4`7`FEKFU^*~8MC0JW@)Q2#UF*}PE!0+#2@Pv-Bz&?RtL z`RP7dAzXCiW%+DU0TB**JH_MDe)dqDA+<&;9$liF7K@o2w+MHV8woB#`~+mPBne0< z&Qg>lob5#7qCXureX;z5#s3K2WjqnBft_L~84~#LF`nuGzS5cKG#>|`YymV$5MZT; zebv*R5Cu`jE|~;C;soq~9vMD157$y3R(vZGnSg#*9?)xa$d9I)=uhJnaH=`yW2 zW4sIiN4rm#q=;-#w?n5XqhTGuv(5*fE`yw27*AGl%Tay_HW#G?OfFMo@sfZN;1)=H zz|jiuuDkF8xJg1F>i1EA{!$dcUk;ZEro;F2 zZ*2eoCmbsDACzR^ivn(~L_Ah|`a#?m4V?NRF95+qXkAe_z~Lk-P_<$Y98Hs(w%P&| znFg1pQ&OCQurU*q^P97Ie)^RN?px`b0nRg+#a$YIz>jAB51|o|OH=qG@*s@ECEGa> zmu{t^y=0`q^X3#X4g{NlFB3{sf5kY_i%IJ1_Z*<*D0sQ)ZUNg_S9=Sz6WMyQ&pkgm zyH)^7gy9VIOjn0*~@a}x<@OHHDKLV6bdSd2JuY$Dz5|-d; z*y5`sU`Lurf(xvKMxHgCUUAc(u7_D0jaZ8Z*w&TTaseM@=8fmRA2|(G<-Gfq#13N* zV51H^Fp39)L77b2m3x^EAod!wgrx@>@ z-JtltuI-Ecavdkx870{8@&!h zXm`U(tg;x%4VNYGXbRlUKio&RyWY&15i9lGXJM~jTlMp{`3ulY0g#$^SJ##JPZ_cR zUQ1c12Ny|#`fM4WGH^!E^XFI}0W`h?&YzA{^%7}1%Ayc@N_Z65G1G~JhyzGl<;I9nenSbA+(g9)>Kka19Z#;0 z)L~w)!_f>W5C~|F% zoW|KE}M=HPs+*iYWCqqh$pF%?>nG$CK2xI`kYENGb z%Trjdcbb_(BOom(Uf+qm;!-ZkzNnOXZX}&mbLj%#ix^LelMMXA86|}{rks&w$d~?ruWrqbgi~xXL zxEe)8lLLHdA%-bCPwBG&^hYKvh_B32xt=2|D`TxKi1^BN+2*l`lN3kjbciIqMy&5WQQ$2xVJ< zR!#qJv+*kX$u@v=Tm}y5Sj^@hCakP@(a?~MPH9;cJ_Z*nsqfLqZCFhvqjZkgQK@8p zr+yz*bnC=;RB>HvT^u|<-NY@|OM)4FSCJpfPwa9qApz$&528eIs%tJ2&f2;N7HJaH zJQ?N#B%&Tw@j|c|N?^5wtnBa{GM$0OQBQ<}JA7?!s76stgKEn78$fAqo&&UAF>5_R zbETvoW{Il9)gW+mx$s12=6~qKM=3Ss#{?Owq#bpYM7C+Z#*d2khdJw@T>i#Uq@Wp` zmzKg&I1y;LUbX|?5 zvus~`s7Ck)INt=3CzCLa5-zurR($4>Bl)>!KWIyT!2i)EX8{&Mj5+rD)!eU9_9*XQ zr!56aQYB{EV&u&|Hdnq)d1}%^li1i-cB1(RSB5Aj1URJV-Lx2@n9+bxK{U!2K{ij% zd%DMJ_ot8b#nF+1?@YvNma_pY$~_NYgFX&WC2#p+*ST(?PF3C2$WwnIC^U|hN6`NQ zOJ910$C)RMf^F}PN3R!X7nZ3H z9}Rf`TSS0i=gMlxymmP`OQTfh_IH(Rm1COc(SP99CtS$c^LCOLQzcgkZz>}tpG7^D zkwoDlVBc7)?^~$4`5MjT8n+oy(eW^TOj_r64nuVx9B>?k8Hl5V5=|pPMK=H8Pu5Q< zN*Up2AKdD*a@BW+j_c-YGtvO^kXSSP_~sIxu|j76PGJqK@!cl^&xT&_d<#gV9D4fr zcm{x3HdeXoJryBO(A;(Ns09dfa^~q;mVjk=NB6j97tU&MZ-4^}a7wsIvqc;r#(3V1 z&o`6F^+EpO4L~pbVsa0d#LKRJKdW6l>7*Px0-&rvnilsps#Z&2tj6XoY%RAVF5iT& zE04BtRlylM3I$G3 zqy?w#V&ThkTtqm$erdM~Z2Q=}B#(Kcn%crCs6 z^-NKWZk0=wRL99FH0M0*lj7P9oQb;PIEEy9lTcTFaBz^!906S!pg1vcbIB^^*Q_J!~`8 z@wMH^K(VG^q{bw0G)ynIQe`dy?H^^OcURV71o)NWrF@jLCBkXfWyW2oMw<1pf9xa` zhVpU)C%w-DF<)5-3}`Wl_u=eC6-H#o>qS$CmOjs~pZ!erA`^5k+eEH#tNDWtLW&PpRh2OR? zBBTXtC7^8BJt8eQ$QD>)LO1kSn`WOfX5;B3VL@#F~bX`MspKz z;GFp$Kr;F%>-a|OnLbMYZ_Oo3bl?$3FQvWCkx8j5vJyzKm>zRiI(U5Ctr+6`=_||xeR_3#_>=I-EcbL8 zUbwhf%HM^DLPN%9zNE4pUG~<*!~ERpPLxq+Gsj)|hRCMIeh_8n6o>{uK(T;{Fv;fV zvO#wP#hE0O#>t7M-HUrwA`5OX9!9_|O6f*T1L2>ELzI9MlCXgd@f5tVl&(q*tU4Q$ z>7H~QU1RbaP8UTD%MK1}&T>~=L;RVBPbEBG_0TyiXioKaaf{HEQc=Cio!SHY4K`ugeOAEq^QY6_-dQeB|;r4P%)FlWoLUkOo`q)4Cy!ncA9@A zwNAYH62(%4-0)VevYqou}X$Kt3f~hC% zH5zNQI+{IXjSK{^F^y>4T?)R^L z9B?DQVjCNbzfXVhLR+kX^GuT5ejNHZC`O8B3SxuqWvdiIzT-o3ESi?X8<{ zzbZZjKf7Y2yV)beHatjKwDXs@Lnf+cy@z_s^xoT@&bs3wT2>Y+lY8Ng0qilzG}-*& zklE;Dtd&}inODd>j4D^EofVP-b%aYV9_K}Co)oPf>#>b*U{l0bAOxE7uL*Xi?;iz8 zMhT40*3f*(RGspctPEltqHG^G#3x0jZEP4q8P>F-T)X)DF~@-~33sGcC!POk3kI3m zsrf4HAai-vS9Uc3(@HJrkOTR&AlS;=T3W0v*Eg&oH@z z=N<(92fo4)X`ex0)&eTRSB%!*B7qbahbyAx%_5w+{V&&x<|0?GX!>-ugECt1s6rd? zav*3gCSx!&=bhI3V!C4}YX=B|k!4`nJlDL5*_!l2!anPGB{}L`^7S5DoY3VE=KS#Y zix6epG3NVX4#{eLnm=ex63p*w0eb5XU;o~Q?mu~YUeJYbZ3THh!qpqfZ|EC1Zw4^FCEt`nx|2C7_J(k;NgLbaA|~agvkUtUE5g4mpYSW z`hC`abJ?ijJ*@=up;DmMz#IN)yy5lBKbjhXT(F_3ncXS7AuEqS1`b3;9KKHYq|F_xZGQLMt@!*pbKYj-@U@*s0TN7ZjlPQiU;%*fg}?<3daH@jBpY%{FQZdKnkO8G@r>uZZGC)o z>!55+E7p0G2eBUK+xKs*7Pc=3P9fM0$_sto70Ewa-Hl%)&%Lo(jtfokkWTbJpVgO4 zo~v_gG(jTh`suOoLr<#2M&fxv=O*GG67R-RU^J=N_GSFBLS}P0IzBIACs-^uPo6No ztjB}-M)>tZ8&3qTjJ4Cem=v{H=MN)xV0(*+4zo9e^E{)!ZQUntti<3*Ff zJQL^Zdemmh_|vHDR`)}m6CDJG#choyWn2pWHG#j-eSNg-4t3mE`A2_;n=~X}T4D+w{^+vLTZtu$l*8}w$Koyc!Kha$zKu!EiSxy3 z3Q0?L*04>mke146p~lp+;BN|=Wjxa9e*I$EMK=ciyc>qw7_P}ccKPL%;nt+!nd_fz z9yrR4`s&wPm;Yuas}lV{(nA1U*;&d{e1K(Jp^K!f^% zbVJIufuA7ZV_fz7;%(Wq1O_8~_|lbO0*~TZrij+qZ6Cc&=QE0>7%6{;AK$wW=KJ2b zbEv*cDV0!s^>QrP5a?QP@lJtA%g`NFBSOMk;6$>v;Wtf@Rhpw@#f;A=qBDGH8J@DL z6z(RRAe5SDH#?sOm~{miUN~NegiZ2!l|1&Ms9Vw%~7>X2#R}T!2 zcfXq=Yu>9RzBpQole7~HRGNcX9|AF7Qb62h5S6EqrUSJAj7My-^F*{Rmd;6L-4Ffe zqG@-Zdi5&^l3y6XqVB!q9RMx4CW9f8N;&Yd8_`aEd9z=W9>I-IouS@BGFYws!1jeM?4ti-AQ)W}uXY zgoE$?W7PhSn!9*tCtr?(f|{Mwyr0}?OEI+F9j(?bKdaJPf9$k7UoR)Yzj-_K%EcC7 z7e&xh&OtskfDCBF)9jhWi%l%89{6YJ^G#?;cxXplAbcgZ{IHvSt^bo*-BCMg zEL~LQYtu?@Hutd!E&)ILoJxy9S)T2zxj+e)+C?A3ufCp*KC5VMP4m1}O<}I{n;I?N z0QHrz_V!(;QPsL9KSSWsb%FpC%kc-?ob4yRC~?vIe!}E|u%GMs&b54$-m96mT@`Bx zny*mYX3IoTFI*)uImR+W8H-lPWayq9j@6BnU5!?vH#RlRyDDnj7^hbJP?cBQt|z{k zdEC1Y;9VhtL>NY98e8M5MqjEH$T3q;pmk%l;p}~m)swpTlBIvD61V!;R2gCi!AorjH|Vt6sV zqG(~@xXo!lJUB#ireCQMqRcwMo}8BoqNNcwqFyrybP_IR+Nf~6DeU4~v5@H9Byqf% zP{&${y3ES-oJg)^IGeBga5xz-b24?cbMoZU+Iabu>&@%8$I_9$PcC|Y*P=RmcFrfp zec^pQox+QG_GaG~X>AU*#6BO6j{NdfVq->J;DCP&*y1M5l!HZSLY@!i4L2Y!m6)Y)y}n-zgw!yhX#p zN2NBL-%?S)3Z%Z57o-p^NS5~E+X)HI{-*uII!niVn?1YyJe4iHGf<0pk;;k4QH?Rd zhVmnG19S?}Z7T6t`1$R@+RD!X3 zbBsiPk(otLynhk>aOY8Fc=(=aj9FLFj{~LJAOv%3MuT9cHWDLA97`8Fd~YR zb=b+JY4vr(vNzt>VR1il^guheraw7DM#30LWBLAg99TrJCq581JwDugqTTss?(&cL z#YG?oj-u*o9v)*%ffQPeT%-9wesxZR-O(oaO8l&8w5}m^7bY`vxgH!tuidIWbz^{b zF+*0bcaui$cGK*GliU2K+v%x7po_@?DlhvA?W0YytMkmUSCE`1zt{-o3#xy;f6>wU z>e^#dO{tACb9ZCy#r)_`@AWQIz4RiXc2SXUo1K7I({-5O_XLgO+dWnx?S88k6m3F- z%0d}&t~(crZS6kz{l^b5A%Ojd>Aegr2BevmdO57E`FI&kGmwH+O2=@)*gnHklT*F zz1zBPzj`Z{C^%eg_MHYvCQ`#I$sK!7Cw@4ViD-8OO;hmJQhJ`@@pH34jWEg!(MHd< z&5$Tr`G#H0-KN~N&aqzfQJ0eMw$ujeZ;G`K+>TvCkLv=AQm0NAwYz|!f?BKvAEF?e zP-OZD0lP`sqj9&wyh5*Pg&dXI!aQ$LQ<(d+$pu!d=fs^fswr=CopT#eL%lQ##;u_t z1x7(MW@cJtLW2r~wyVcO)8hNmkeh|6w8xOrG-7V8dww;uSn{FYn`a-3T`TvBM!A<& z6l_M>F|zSOoc4g;xBAs%M|Q}VCx8bdG$pB4t{3Ylj;X!<7*n9eg3VdMUdk{%N*Y)f zW}W8R)$Il*{E^T2f$5tXkM((PXsdpdHZL!A!82A$phd!|piCaONzu9bbb{`><|L_V ztXTc~4OgZMWCtx>y-;S05oc#&VkQ z`|PmwB?mN1IdBAG9MN z@L{}Arh2WG@jPN@8P`Pp18`tze(AHIaN?f`s3AJrdg)rIe@=G_>q^>nP$9UOqib&4 z-tNF2b2nB;`z_{5e!Y*u=QkA37~DV7@OCynMo<%__$plJiEUuNT>5?c?BrIU4d>FQ zb1jrC|F5^T)C!XkgI&nNao#VX;!SfZWLJ?C3z=}K7x1-xBo81oV*R3WNBfzlo)3wC zb9q=D>v0rs5lTzahJ$@QX{P+cw};Y?jT8!V<=<8bQhuQ(@OV)kB(fIrfvddPy;QM` zj3qI!=;;qE1=MG4Q|UYFCpPaO%9UkY-npso!g>wSzv_CiV%Tx=HqAN;X5U!Le|R1D zs(`j!Q3!b)IHAcAz6q3|HC1a&_@gwW#OGf$GZRT_^Ke*IO-5WIeW>XG<8q zg*m=P&}sWMb6SZxu8&fNGW139@Up*rFN`*sG@ ztP6%64M-S72h9N`)Rg7=bwIa?zp$R#bglSm@T|dB`>7jS{y@xk>}l$fi+{j!Z8v*Hb#9mG<-AfumS3Z>BqnNa6G_t)}@tX0#z}99k@{Ly~wY`E>Z@*Hb$!7Y=(n-h1 z!EANzy$0FyK|jFI9`*UBE_oEG%07EwsmHSj{4ndzoG?S_EWEUm)p*Uo#p@n z(blJ?fHBQ*o!yrB#Gd%$uNZ9v-e%mWAD&kw$1tJF)V*EOuW$>LAHxfp!taTYISg^i;4?y^hq>d92p^HLlu z#Dhnjrb&zC?`+&Gtr^&?C=`i?#HZM+qJrrwg^EY)TGobMDkOMqoa(;cjnoC?AL%bq zl^r z#>%0cE;&1$rlPda8kY`=YkqB4P3LmlD(>+X&atZE=5iu&RFKsZpd&f_&ZLON31hxb@w z_KA=LlAL58(ucSYx65ALaV^or$O{B$pN*j-i9%(W_|PEvmK^Ni2j+B6F_%HDLZ(v- z(v7drG7@4%sJl^+xo-|APuWo`AMZVCx$L<=oJD?Mf z`FMhe{$+?FwX;k$>PqO>y-jWHpcnQMst?kq0NEBzguCJMK_Rui0N-9;zW_U|x6d`U z1=>TXYZ2bRS^l(?_qluAV4R&z%#ZDLh}Z5~7%j11Ire9Vh^d$p&7j&m)Xb?Y0_PRu z(9f4HZ*{)lLeSHTy2N6icQ9pk*}bMJ)M)|m55;nUNKh#(-4<^9ZDouFdRY{aa?+(T z0*SsrZQvO37%lFwh0=_eA>exh=PZwV;K{~WDZEv}9z2wDskL}|2(B98TK9n$`F6n7ub*?1;9MS8Y zgXPOFFxJ}qA=mLCXV@sZzzXii7X?TA)LL`W!#FJGIPw94L~d-c(^>|H7k+%oC{W+ z87w4>#WVc?852Xd5pB1J?7;h3|eosC7L73)&QGRN}muaO4E zlj8BfqW2nkx;bH7x@TBFYn8Q%{&=Wdx;0A8r=D5k8{uu|aM3|E{8Y9*95hGqr&dJe zshhCtxpauKgxVFN@QU1zuU$E4pVT?O5ZUsXOc?RybYKvZx)HXs{v*O9>Hn2;hi1d-$S2$ESE8|3bO0$cQ1zR`rVdUx^>UK$Trhvz6!tEC^28)o!md@ zE#!-u+UCE3UeT^3E6KeJXUf(Q2-%@1iC--=rHx93LTL;7C2|4Fhog?z}+vx zM2|aeCKHPX3E;qj{_5h~|27Hzk(To3k*-|V;>OmSzrQ{Dw7>ur;_FYBHfe`EdJ@DZi;WO0v7uQO75#_AM}C2!I%mjU}Pk*MkE zrZE2CiV**(A;!n_$=c2ydDb*!{q-J0qq|c@b(8=_a%!xM7|lrn_Kuj8H&v$`XP;o7 zSYB7HpJ(zD9Avg6j7xpZc|2Hg*?y)j)bjR#ETfQ@u?_30A2YCQL!yx;T9R;LkSu~= zjII))6<1Tk<_FIk zlvg9;HocD?i$eziDb={)2M&v^SD!Wpm5q@C@Sgyz1&C~`3Ol%f_^JPt`03AnT?vqQv3|*Xxo&4X*tDwl9YL@Y@!x^iFaH72^Yp<0HxLYUMhi+pipol=vh+ zb@n7alA#nO^m{O*$|P8%;5_-(7wZ|OTFujtiHqX#%DvmKzwLc+G`kgFJ|B6^V((Bo zQwu1Ym<}c~y1C~wJid8<8uL8mWq*Pmic0Z)BsDkvEa5SYJyn!_P_jrqrofh?tgX#T zsQuoT2l0PgT~zlgHW?gff9`~y#|*jiGKxwuDvItbJU3CqN~toRrQ~!ujr|mYDbg8? zv4KK>iJbUf*X(ryY-c1@QT8F@$)$onGyy)Rn8b3InsHeDYb{7o^KR4H zi3vB`KcuW66!*CHZa4mJfjms;!btg{on5hHFR+dAWUTniC=nri(EqQ$?k@>1%jn}i zNJC!n4Xsu7LIImIqMC_|H$ZEV72^nW7AYzJQST=nn3+b?^wsQVL_fV zPzyRNMWa4E#7$kE^FzNPwSm?KvA>mVG6{FKHl2V34b`LPB2B-DWKIHs4LJ6oB#FC= zP2U&Lp7e@a;}I_yAneB>QSa`&X~t!7`0|gpw1d7KabL^nVl_U-ERWac z$t z(C{%Okh5M%!bquH`SdNKiztGM?*rx+mewD8&uAx5lWO|-5L5ta`;r1ys%ZR0!ovcK`6e8dCyQJAi|uc4ajCW@isRe-p7&Lm&13@aOBw10R09I)OQVEA z&a)&&qu~zSOgy5FQvr?mzKLc1zM=e0mLOW!ys0OS1u>@Nvxson2=Dy6NOSG1H_3kz zc7q*((}5BI4A^ricV=AnPbH?z+S~t)kmHXSg2{M6)H_b+Zijg{vM?N`x_qj==DQ~G zWOfDrm$;;~jmOc*nt==609JEbISeAEYA~2mNP4*j5bZXePMefD9_Zw$lxO3ySqrFE z8fR78?My3VOMD}BI?8sh%Ob-j6gBM|qO#^<=k2|85(%LkNH+Z&)KvNs-VXPPft_kf z=C3Mx`1v*le-GfNf&BXc#>;459;f94-6u%!Jq88|w6ocA(c5&ggjY14<^zlQpGb?Q z3qew;6zYj0bve4{2ue4XCnp+?Zhrp$n=XO-KjibGsWqEm#$!M9&+zJXmkdw*wH`Za5XR{=qYyvu(g}p#8r}2OO4(Ex*38WZ7+vzj^<@IENpH7r9Mo zZ?5t2Ms(mU4x6=JIy<5DuS6y>uJeUQ7!A`^X8EY(6n}o!hP?5EzXDwXBhbSg+{;>1M|{)qI(^|btx=|FX6Q?mLv5Z z>gGpR-NdyIJ5Q8thc$|7utS z4>6yKmThS(<_EL({34i2^ZIlFk!?n7wNvC^d-+!9@zZU34Ed^-SRhlxk37!Q4%n5QJWbl6! z1NcN*Az09|*-!lH`Q%4;NVOcwV4ahnkw-rqP+Fkh%o{qVSnhLh-UKV8cDgz890?H+4&V??^v;Gi{@(QA$GMOSPj^LuWX{ z*It+o7z0WGUjE(OCu*A+z1p+6_n#3K=JO=_*fGfZrDOWO1oYO&9HXcsi&-og>WLzxm9ESNT34jj7;tjXTh7;Bn{T8XyP8 z(_z1l?%-rrylj`jrEz9)?Pj#$(cXLzs#$#o2I~Kbnc#A2Xlm?C+J}9lGd6AT~JCMde5PYj~o^iwl(*WqJ^{Aa)QGL z=FU%Y^<109tr-JuEUv0`vB0t~r*cmfm>DK*Mm>Xv9BWCfz z5FQ9+Ni*Bg{I1P0usp6fJFU+EGXTArXD|OIlH1nbq<~rIEG=|QFkRbUvDV$+bAcB< zFfI$|X1#aYu$|loeU|zlb?-{G1+OgbM&)BCm-b*h`lVa&%EDQ_CS)H<9^|5}HaSxS z`WdWma$9}lt6ny{za=yI0E2PY%rR^Q6n;^taxOVpw7lY?BXh6bopMqs8V)Ii$D?Dm z-HQ0&n0W1Iuz1i7`WRSwa16SGPBw*J@Ct=NyngP4kVG06js$SSy`apqX{_`xNJ5ll`t4BqR@gBP7m==9%v zk6E|I#$vb=N;h@ie)QGPy7n$2+-kmpG4vAp;?8R}Qx)uIbKT_6rhO_8ESxUgSzrb} z-#YGFuEBj{V;LO#uH=x>wWymU0_F$>4iC&YGHZ4TBCGeY|9Jlum`7=r(=I*?Er7W* z${)FW_1c^y;9Q8MTm-$K;b1?3GJFDWnHC9FKnJTN1$d=fu#^_p{RXo(B%ZJP&Se z_EwbTW{s+MogCfV*X@efRYC(aJ~)FBpi^Kf*5BZTNeT4Smt&O?p5;62;DA|Y-G6$v zMN3L1!|%a1g=J8s4lov-XjB`UE|^Yxin~eA*QOo3(ev^4lZxj{bB>?|(?a!KjKKiL z!q!w}+Um~%O}|-_#aH-K#ZtJg!K@hFJ|uuqpfFo+cdMN(Au`@Q_oJranrW*&%3m2~ z&6iG!J75eQc?YHRo0!?H@wC51$7(l?d!RQ<@>GSzqD^xJ*p`8=QKQ!Q9?R%Z0w!k?u%ZlH16v7{$-d&g()E0P5lRs+{!VB&z3i6f1_W5_JU{XeyHTS3dY^H1RMhc;M50z#ZOp|+AX+0;$ zoMfM!jLiL;{?HwdjPCyDKj5H6#~77QvD(W%Mdu1;Zm?fm!wcy~PA^zkDFfu>wrq05(cm^te& zQn&M<`$U#HFr6XUPJ^}(s_Wz#t(dQkeMbZFt#xr^LTW5v+o5Bj&F2vcaPdktzq)^8 zh7ZI&Ytch@cSkO}V_$l}jG*MpxBsR}&I8bgfx&0g{%T0|_r^JRPY3^p>W_Kt7zoP4 zAS|JZGELX!Hcr$DM_@SXs!QacAsN8(1jM6bG;-Z6C>mK4Dqger*Reo<`lG;DHPEFq zNl0u6)&mqObi`}v2ac*xrcQDznUNh5n5`2`r*Ec4TeqDDjIZ1KnSss6^9?Tp}#|n=8P$tO=y0Y&f?M^UQ zY3$tLA7|${D=-^q^!o6hy~_MnaKNI2-X~Jr0I!U>aXNi&R5mzb8klngDf=x=%?rP`TnhRGGxx~rvY7BFa&&JI^8yzZDRO6l&+9*x`g;P z&Y_cD0i3p=jQ7n-ca8~6zzqH~Ft4R#{Cf?$m@u$uLFomgy}(SEJGbtiQfH?udEfD9 zWY*YWYk#}KY6J|{2_G%avmk{*bRF66J%T5GgW0llj$3()N3D}25K_Pl?hCvhnxVol z*hx#4Cpf)B|J4PUm=2sPpe$epI>H7bRiI06S#f4~J?gIivhcn`>rqDKXLYQBfnc6c zI&p*AR2ZZf%tq&aHeuywQI(?redyMVEk)$HJ_tuzSpEA1#JTrxN*DfxRFcQIb?Ck* z;nG@pFo}M=tQhD8J|L7{h>+}9vaF7i(XBF%38rk|E<|Wb@aYzNWu&V zG#kOkgF?**Dtu1C^4Y-0p;t>gkRXU#6f(34nD&ew6~BKtW~mu+FdUkDKXNmGY3K*7 zM%Q_awso6`u2j0465Hn|2pALZGoml|{k+No^%%@Jh3juBnwe?#^UD>5>-$bX=UWa2GkEa?GbeugqtC_e^fkf@W<6(k zSm4*x>G0)ek$=bPSD0<$4ER(AqTlZO3d2CZ{&Yl=k88uceY2(0{d3&6etqyp5B%5V zHz~KOKf6)g9rSfzoDVrD%2`NW6*!qc(4e2YvLSaLorUSB@g0JZ89l%Y-NL`7^nxzb|A<#jkEbluyUE}@a$FM^YnBxt;CLQaC#4B*Rq+>X=HHFz`@rkK} z8R%WXY`+($R8P|E8gF`xX@12tErl z)PKKrj023$1ilv?o4z;6Q|5_qwkk7TP8-E;yz@8S}p`$Q_Qg(8+PAfO9GoYMrs*>jS1|jEX5{*Q~izKm8ni z^KD9h9vtSO24Vx&F_Yv9_eBbH%qZ}{%+2I{Q;04zv>kt4AGTFyw5=N$tb&;^>HL2+ zT=^qZ@Av=yDWS53duKK1jqD?Ph@NP!nH$QanaTQ2wo=yKg_Oy@rIbBnlC|u6L=e*8yFYfp3orSjPNiQ{(UsB6yIGT_GIS55nDKE?A<-egr zLM0?f$(4aW(@p+J5?xkX_osoqvxY}fgGSi-nJ}}<8-@=1%NwH$KoJG`h#uzu|H0Ye z-S#^~^-t{PW)4;h?f_i_CUBtU?dhbsSCXPnzP3QS?|WQY8w8 zf;Jql7DJE|Y$VGc4m1NBGNfw}P?8jM4qkMIEF!4Ebpk^S(=u3^@swj2DQ%U&49He6 zWB5Uj2_2plH0*U|$j+R3aaQ$=@z&nY&77t$R@0|ej34Gb7%C;3el3)|o9p@Nr&WoO zpIo*i+B6Nc@A;sY&)jW&{3`q>5-*0% zO1CUr#UU}v!_zh+-Y*aWE8*qr%kQ#j4AtCEMmIL-0bH2a2@d|t2RekvG2f~1DF7zP z>p9vm+ru9;kClEMM-&D^0Tqp?PsXLa`#n4SDEu726n7w*eahjXC)l)BBW&h0xFd2U z-&vuCfy=fLlV!TO{DAFVi-AR#Grpdg4r`}y1_`d)mErl_N^>g@eO3G4o-Eks5gM3IUD6v}dBQ&?%iQlh20jQk$tj2ylC^O>w}~j)l#5d#_z1?bLb2HA<{C8i zey#s(&FBo&9a7lu#VyK%Do&7NFfYcx;ESGr)Sc>tNpoHah=kQeo=DuMQY=mc0U75s zz(-;q$Cf$ha}zU6nkF}-F551ws{U$7 z%wIks<&(x=;<7(9uT6b>Ryfw(90`8c*5%Ko2118-4g(C`2cMZXx2t)U`|nqGe37h9CD{P9M6y;- zT(`*GIL!tFz-3ZkSLtngASc*UT5shVi*0!m(8c?~#&?RcL$X}(;sZh=TK=Z642l1l zclCYc?HcI}@vJOb_drZBuF{}QK^Mb2H~YxlklVl@yH0nqm!@?s{{5gCtpb{&hq?8e zU-S=S3|PFmo2=#nuYwDw>ch9y!I1LBk}dbjN}zqD?iXx(j_GE;@IQPaAZ1{ze0MVLsDfXIkT-zE(~dI%!bdPLEQ(bEf6#rc{=_zU z8hB*JYhOPeW;2i}z)E#f(31UW!aEvECHHF)U6gw&AD9eR40QSfRd_gTL-#y<9I*l# z9P3hOnb)B4S&cJ@)ezd>Djt|;I1bE@Jwd8f*QBpqP8L1THe9vD5X7w4_y4-*2CF5R zr}kyq?$NO;PiArkrOK-u^Z_@hI>~(NKovhry^Jwo!g2|2T!0;QRyxkAF3$t6k zO~b*P*Wp+~a6plZ)xR_!S4>W5t9@N@*Ytm+%!RsCKF&3)fCGa19cvEyP(}#R9jzZJ zu_{HtB5ozwC^wnzB4Qg84Ow|fmF^E_p4XHt<{%ojmmmwR7cat@gQVEXf+{ORGP}eO zFViP@CYu_UOpCd<8?Q_`@glFBU+zw_S?&L!R$Q`J4GQ$H@yx=yTGJxE1^txvXP%#p zoblZdLcS3!c1uG_{L%CiSX*KBisyW!ws6++^C&C5CHFL<#3qd7bTfOCI|hiZH}l&8 zMaIFEpzI5g>iXY=8a7_?sA8(8Kc2S+fFl@3fK8>Z@gv$FV$vT zn~g`37NlB=j~t@h6kA;W3BvkZExWzia>B?s;J#77`Nk9YScEr(TRa#sV8vZ(P`7=1 zXbSTc1mC_EGDxe%4!0RbO+T!?>(>jT(@dRsotjNVOOb@pcicti*gfD=^76KZ?#wxi zQH~E znRn*%R-2^rNH)sRLiF~1m**g%5fyy-UY27kzo>c=y|` zOi~Y!M2IwgB4l)h6vjr?BUNhPEZ7UTzsa9R7~GvkGM-Q>aNHE2JIRqaBLOpU0=Q>mTGSNjtSZ* z+Zjs+88zx@8v`3ga{oGhbUy&NWVDA%>Lr7WO(=YXC>^-WSuMIs`50oGqkfs08_9R{ zZ7Tf9&(p}$3s@OC&>*NsNZdK)s-_J+BFV6|&@|7)mY>iVtetaA;DM+l&C)^ajSU5l z;7l9hFI!cTfI2^rQK! zvBz4k6lP$~)a+<+SJMNUbPVnkV6+lM2e?bw+iCLWb0;QRK*}xP>7V0Njp#y8Us5!@ zUSX=%gDpqa{LG`w5_F2sRGJ}*QDJ)ZbI_`$(=`Z$7lZcY@jadTRZ# z_+tL#0h^$W?O)1q7!!!<)XDDgYtG_!)gZ~gx{gToQoW!5%@)H(r2Jyy3)2Q^V?+0Q zsL-VFb<<71va*WD3xupR(y6P&WM7WNj}ZO&fq8@UL<|h7e4%_=YP;X1Rbd{sT+%-D z4~)quj%7saVB{nIhNK`khZ*&i(^9qe;lrBN!j{ae4xG@t@4uV&0ZC~de?M69v~J|} zv($4EyLE^Kl9g-%#fRVoSVcaPk2y!0H&)TnSc1cIe7v z`!nUgcQ=-LCj}~Iyg|y|>v*sR8f41H7kk~mtz7I!^~U9Cnd5oQUla(fkLjgXg+z{b zfhN~nT%F;ZI{;3YJ!N~Pg1k@pSfu={Q$gBGCyU2ATfh*dIjmNuh8eh&cAX5~3Gh<0 zo$&EKam)dqwdgKae`7>j2SVhNcu_t_F^JO-<$Efh>LmkC_)$=Bo~`+?%O&m|jH?e< zAB2&Vv#~IMklG3LLMPu$&Ydwt#Z0T)!MT-W2@U={9sQOUWh`F#fzVx2)5atuJP5zC zC72Zv6?W#`&E>h^km>z4u_tlcRWJY55zWS`Q+1a_LtW)l*CXbw$_i&Wn~GIf7T2qK zS-W-pd{DSz9#Ku#3Kp))_rj2P7NqoBq^eiZ>l5N@ToMj$sq-%<>|b8^HL)djlPWxS uDw2S$PxZy8a;u3y+p8)2V9Hb`#?4&S>wlR4Jo`W8kBx=B`SVj3qW=fZhmouR literal 0 HcmV?d00001 diff --git a/docs/rag/images/rag-model-training.png b/docs/rag/images/rag-model-training.png new file mode 100644 index 0000000000000000000000000000000000000000..738ef1e0151e640c559fedef6e1da72b52370edf GIT binary patch literal 240929 zcmeFZWmFvBw)Pt=Ktpg39taKrg1ZF`5Znn6AV30*ySrO};O@{saCZnE+@*1M*IVrT z_rB*n@3~*^r!z*4z<@zjuUc!(`K)LDW`Y&vC0~JvKrddrcqJ_*uJqysJmkd-xM8H1 zz)#-xDHa1?U~H8nMPERMiFaPSAb%k(E~4V3x1Wmm6Gvj&pM^)Vj|WkLDufCb0~Z(P z(;$xz40VAQrHEn-`G-Md388l=S(Go~qfzNaV#s+qV>GXylr3IyR4=j%nAJL7Eo`0K z+&dH%7ccES+Jxza@Wu^vnN!^nZN=|NFxK zcbWa?4gBxs`mbB#`TPIhLkb(W_xk!5X&IRqN{Ns!$En~ODq+~?3q#JU12-M%|A=hA zSKu4$b|}v_hhibRjr~EGZ>Y3uz7e`f>InW5pmQ*QIi>ObKSD7-7PrTJ-Cz=jY>|2y z^Tt5Jm6Ph1PWd!`x=?(U_&5gj{>`CeYRAKc7$HxOjXd6?rn4N43d6#;B|7ysE2dV> z7x7i!=Q)2R+r0nhDc3(<_%o!Fq9#cE>!betz$-$q3IZ2Dnl9%o%ne$f9vgo!>+(WE zb!xsP@;_d$^$Tp^)h^hCq7u9lw%HscBrpW2M+#j2wA-6vg6yq+`DfTsdO%Fi#dlsx z_}3W7m9e>M-hcfgY_t9wnxAXUL={DW#DCI-eR|kwY2CEV%5FO4x`wC6yIh5I!L&^%`9JUUm=DMg9zqllmT`=q z%`R4-S%!-9t)MElOm9~-i{(p4?{D@eT~{5@hKliDB^67Az<9cCzttztbY7(8!;l==6 zM{J4;yl6jNc*|viL#rsPRr8H*E8Vl@2a~p1k!tZ<)gl#XWnt}F%ecxBLB8#@Ww*0% zta1WiB9@TJC5}=ZmpDPdF) zoKOg#&$O#P5g<(0m>JQx?}PvZQZwBUZVD3YAYY82o?5n)=Q zT`S-6cxy3RZIQsJRVBq~xj-u!NgBsc)}-Weu}gh(x)Hi{z^(rF&5PdE7;4!Z)nYYd z1~*cMU%-n7g`~eZ)`=u!e>+8IJe0&SmiI9^!`b8ELcLHiQ?#i5>HbXNX0NO@N4L>I zsmaOu;^y*TK36*St#?K3l1niv(RF%6hqo7jz z-3jSCf4}