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

epic: Structure Manual QA for cortex.cpp #1225

Closed
1 of 5 tasks
dan-homebrew opened this issue Sep 15, 2024 · 7 comments
Closed
1 of 5 tasks

epic: Structure Manual QA for cortex.cpp #1225

dan-homebrew opened this issue Sep 15, 2024 · 7 comments
Assignees
Labels
category: tests QA automations, tests type: planning Opening up a discussion
Milestone

Comments

@dan-homebrew
Copy link
Contributor

dan-homebrew commented Sep 15, 2024

Goal

  • cortex.cpp

Tasklist

  • Build up Manual QA checklist for cortex.cpp
    • Hardware compatibility matrix
    • Should cover key stories
    • Should include column that tracks "automated testing" (i.e. is there automated tests to cover)
  • Create releases folder in cortex.cpp, where the QA checklist should be committed together with key learnings, lessons to preserve for younger engineers
@dan-homebrew
Copy link
Contributor Author

dan-homebrew commented Sep 16, 2024

@gabrielle-ong For v1.0's Manual QA, I would like us to focus on answering the following questions:

  1. How do I provision all Hardware/OS types to do the testing
  2. Does the Installer install the correct files to their respective locations?
  3. Does the Installer install the correct version of llama.cpp?
  4. Is the user able to pull, run and chat with llama3.1 successfully?
  5. Does the Uninstaller uninstall all files, and not leave any dangling references?

I provide more context and links to key issues below:

Provisioning of Hardware/OS

Most of our bugs come from when cortex.cpp breaks on some hardware/OS. Catching these will reduce the number of bugs in Jan.

Additionally, I would like to document our process provisioning a VM. This may grow to become its own product in the future (e.g. Menlo Cloud), as other teams may also need cross-platform testing.

Testing Installer

Installers are OS-specific, and install a clear set of files for each operating system. Installers will also need to detect hardware and pull the correct version of llama.cpp (I will cover that in the next section).

First, we will need to verify that the Installer for a particular operating system writes the correct files to the correct locations. The following issues/discussions have relevant context:

Testing Hardware Detection and llama.cpp binary

Installers will also detect the user's hardware, and then pull the correct version of llama.cpp. This is based on:

  • Operating System (e.g. Windows, Mac, Linux)
  • CPU Extension (e.g. AVX-2, noAVX, AVX-512)
  • GPU Acceleration (e.g. CUDA11, CUDA12, Vulkan, sycl, etc)

We should be aligned with the versions published by llama.cpp: https://github.com/ggerganov/llama.cpp/releases

We need to verify that an AVX-2 system is correctly identified as an AVX-2 system, and the correct version is pulled.

We have an open issue, discussing how llama.cpp is installed, which may change how we QA this:
#1217

Pulling and Running Models on llama.cpp

We should verify that Pulling and Running Models writes to the correct Model Folder, and with model.yaml. The following issues/discussions have relevant context:

Testing the OpenAI-compatible API, and CLI commands

We should verify that key API endpoints work:

  • Postman collection testing (e.g. manual testing)
  • Later on, the eng will likely implement some automated tests using the OpenAI library (e.g. for /chat/completions)
  • The key things to verify are the non-OpenAI endpoints, e.g. model loading, model starting, etc

We should also verify that key CLI commands work:

  • e.g. cortex run, etc

Uninstallation

We should verify that Cortex's uninstaller removes all relevant files, and does not leave dangling references.

Updater

We should verify that Cortex's updater works, but this may be challenging for now.

@0xSage 0xSage assigned 0xSage and unassigned gabrielle-ong Sep 19, 2024
@0xSage
Copy link
Contributor

0xSage commented Sep 19, 2024

Nonurgent Question @vansangpfiev @namchuai :

  1. Where do I view the new API?
  2. Do we autogenerate the API reference documentation?
  3. I'd like to QA for OpenAI compatibility at some point. Should we QA API in this milestone?

@0xSage 0xSage added the type: planning Opening up a discussion label Sep 21, 2024
@0xSage 0xSage added this to the v0.1.0 milestone Sep 21, 2024
@dan-homebrew dan-homebrew assigned gabrielle-ong and unassigned 0xSage Sep 26, 2024
@0xSage
Copy link
Contributor

0xSage commented Sep 30, 2024

I itemized test cases here: #1147

@gabrielle-ong gabrielle-ong modified the milestones: v1.0.0, v1.0.1 Oct 14, 2024
@namchuai
Copy link
Contributor

@0xSage ,

  1. Where do I view the new API?
    When we update the API, we also have to update the json file https://github.com/janhq/cortex.cpp/blob/dev/docs/static/openapi/jan.json and it will be publish in https://cortex.so/api-reference

  2. Do we autogenerate the API reference documentation?
    We using continue.dev to gen the update API. Drogon does not have builtin swagger generation (more info: Add support for Swagger drogonframework/drogon#923)

  3. I'd like to QA for OpenAI compatibility at some point. Should we QA API in this milestone?
    IMO, yes.

@gabrielle-ong gabrielle-ong modified the milestones: v1.0.1, v1.0.2 Oct 21, 2024
@gabrielle-ong
Copy link
Contributor

gabrielle-ong commented Oct 22, 2024

#Updated QA list in #1535
(will prefer to close this issue and iterate on the QA list with each release)

@dan-homebrew
Copy link
Contributor Author

#Updated QA list in #1535 (will prefer to close this issue and iterate on the QA list with each release)

Yes, please go ahead to close it. We should add a Github Issue template for QA list, and allow us to version control and incrementally improve the Manual QA checklist

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category: tests QA automations, tests type: planning Opening up a discussion
Projects
Archived in project
Development

No branches or pull requests

4 participants