Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create Sherlock example for Completion pipeline #1305

Closed
9 tasks done
mdemoret-nv opened this issue Oct 22, 2023 · 1 comment · Fixed by #1332
Closed
9 tasks done

Create Sherlock example for Completion pipeline #1305

mdemoret-nv opened this issue Oct 22, 2023 · 1 comment · Fixed by #1332
Assignees
Labels
sherlock Issues/PRs related to Sherlock workflows and components

Comments

@mdemoret-nv
Copy link
Contributor

mdemoret-nv commented Oct 22, 2023

Is this a new feature, an improvement, or a change to existing functionality?

New Feature

How would you describe the priority of this feature request

High

Please provide a clear description of problem this feature solves

As part of the Sherlock work, an example showing how to use Morpheus to execute multiple LLM completion queries inside of a pipeline.

Describe your ideal solution

Purpose

The purpose of this example is to illustrate how a user could build a pipeline while will integrate an LLM service into a Morpheus pipeline. This example is the most basic building block on how to use the LLMEngine without requiring any external services or pre-existing data.

Scenario

This example will show one single implementation but the pipeline and components could be used in many scenarios with different requirements. At a high level, the following illustrates different customization points for this pipeline and the specific choices made for this example:

  • LLM Service
    • This pipeline could support any type of LLM service which is compatible with our LLMService interface.
    • Such services include OpenAI, NeMo, or even running locally using llama-cpp-python
    • For this example, we will focus on using NeMo as the LLM service. This provides an opportunity to show the benefits of using NeMo over other LLM services and helps build components around the NeMo ecosystem. Additionally, more complex pipelines could be built using NeMo + Inform without requiring any changes to the pipeline.
  • Downstream tasks
    • After the LLM has been run, the output of the model could be used in any number of tasks such as training a model, running analysis, or even simulating an attack.
    • For this example, we will not have any downstream tasks to keep the implementation simple and the focus on the LLMEngine

Implementation

This example will be composed of a single click command.

Morpheus pipeline

The Morpheus pipeline is built using the following components:

  1. An InMemorySourceStage to hold the LLM queries in a DataFrame
  2. A DeserializationStage to convert the MessageMeta objects into ControlMessages needed by the LLMEngine
  3. New functionality was added to the DeserializeStage to support ControlMessages and add a default task to each message.
  4. A LLMEngineStage then wraps the core LLMEngine functionality
    1. An ExtracterNode pulls the questions out of the DataFrame
    2. A PromptTemplateNode converts the data and a template into the final inputs for the LLM
    3. The LLM is executed using an LLMGenerateNode to run the LLM queries
    4. Finally, the responses are put back into the ControlMessage using a SimpleTaskHandler
  5. The pipeline concludes with an InMemorySink stage to store the results.

Completion Criteria

The following items need to be satisfied to consider this issue complete:

  • A README.md containing information on the following:
    • Background information about the problem at hand
    • Information about the specific implementation and reasoning behind design decisions (use content from this issue)
    • Step-by-step instructions for running the following:
      • How to run the Morpheus pipeline
        • Including instructions on using the NeMo service
    • The README.md should be linked in the developer docs
  • A functioning Morpheus pipeline command which satisfies the following:
    • Should run without error using all default arguments
    • Correctly run the queries through the specified NeMo model
    • Provide information about the success or failure of the pipeline. Including the number of queries run, throughput and total runtime.
  • Tests should be added which include the following
    • Test successfully running the Morpheus pipeline
      • Outputs from the model can be pre-calculated using the NeMo playground or the NeMo curl API to verify the responses from Morpheus are correct

Dependent Issues

The following issues should be resolved before this can be completed:

Tasks

  1. feature request sherlock
  2. feature request sherlock
    cwharris
  3. feature request sherlock
    dagardner-nv
  4. 4 of 4
    sherlock
    dagardner-nv
  5. 4 of 4
    sherlock
    dagardner-nv
  6. 4 of 4
    sherlock
    dagardner-nv
  7. 4 of 4
    sherlock
    dagardner-nv
  8. 4 of 4
    sherlock
    dagardner-nv
  9. 4 of 4
    sherlock
    dagardner-nv

Additional context

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct
  • I have searched the open feature requests and have found no duplicates for this feature request
@mdemoret-nv mdemoret-nv added the sherlock Issues/PRs related to Sherlock workflows and components label Oct 22, 2023
@mdemoret-nv mdemoret-nv added this to the 23.11 - Sherlock milestone Oct 22, 2023
@bsuryadevara bsuryadevara linked a pull request Nov 6, 2023 that will close this issue
@mdemoret-nv
Copy link
Contributor Author

Closing since it was completed in 23.11

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
sherlock Issues/PRs related to Sherlock workflows and components
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

2 participants