llama.cpp/examples/server/tests
Pierrick Hymbert 525213d2f5
server: init functional tests (#5566)
* server: tests: init scenarios
 - health and slots endpoints
 - completion endpoint
 - OAI compatible chat completion requests w/ and without streaming
 - completion multi users scenario
 - multi users scenario on OAI compatible endpoint with streaming
 - multi users with total number of tokens to predict exceeds the KV Cache size
 - server wrong usage scenario, like in Infinite loop of "context shift" #3969
 - slots shifting
 - continuous batching
 - embeddings endpoint
 - multi users embedding endpoint: Segmentation fault #5655
 - OpenAI-compatible embeddings API
 - tokenize endpoint
 - CORS and api key scenario

* server: CI GitHub workflow


---------

Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
2024-02-24 12:28:55 +01:00
..
features server: init functional tests (#5566) 2024-02-24 12:28:55 +01:00
README.md server: init functional tests (#5566) 2024-02-24 12:28:55 +01:00
requirements.txt server: init functional tests (#5566) 2024-02-24 12:28:55 +01:00
tests.sh server: init functional tests (#5566) 2024-02-24 12:28:55 +01:00

Server tests

Python based server tests scenario using BDD and behave:

Tests target GitHub workflows job runners with 4 vCPU.

Requests are using aiohttp, asyncio based http client.

Note: If the host architecture inference speed is faster than GitHub runners one, parallel scenario may randomly fail. To mitigate it, you can increase values in n_predict, kv_size.

Install dependencies

pip install -r requirements.txt

Run tests

  1. Build the server
cd ../../..
mkdir build
cd build
cmake ../
cmake --build . --target server
  1. download required models:
    1. ../../../scripts/hf.sh --repo ggml-org/models --file tinyllamas/stories260K.gguf
  2. Start the test: ./tests.sh

It's possible to override some scenario steps values with environment variables:

  • PORT -> context.server_port to set the listening port of the server during scenario, default: 8080
  • LLAMA_SERVER_BIN_PATH -> to change the server binary path, default: ../../../build/bin/server
  • DEBUG -> "ON" to enable steps and server verbose mode --verbose

Run @bug, @wip or @wrong_usage annotated scenario

Feature or Scenario must be annotated with @llama.cpp to be included in the default scope.

  • @bug annotation aims to link a scenario with a GitHub issue.
  • @wrong_usage are meant to show user issue that are actually an expected behavior
  • @wip to focus on a scenario working in progress

To run a scenario annotated with @bug, start: DEBUG=ON ./tests.sh --no-skipped --tags bug

After changing logic in steps.py, ensure that @bug and @wrong_usage scenario are updated.