From e074e76b31d4fff13e87a455dbc3acdaa92c537a Mon Sep 17 00:00:00 2001 From: Shi Shuai <126407087+shuaills@users.noreply.github.com> Date: Fri, 21 Feb 2025 19:25:52 +0000 Subject: [PATCH] docs: Add offline engine launch example and documentation (#3771) --- docs/backend/offline_engine_api.ipynb | 3 ++- examples/runtime/engine/launch_engine.py | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 examples/runtime/engine/launch_engine.py diff --git a/docs/backend/offline_engine_api.ipynb b/docs/backend/offline_engine_api.ipynb index aa2159f3c52..64a0fe3f99d 100644 --- a/docs/backend/offline_engine_api.ipynb +++ b/docs/backend/offline_engine_api.ipynb @@ -18,6 +18,8 @@ "- Non-streaming asynchronous generation\n", "- Streaming asynchronous generation\n", "\n", + "****To launch the offline engine, `__main__` condition is necessary in your own script because we use \"spawn\" to create subprocesses, for more details please refer to [launch_engine](https://github.com/sgl-project/sglang/blob/main/examples/runtime/engine/launch_engine.py).****\n", + "\n", "Additionally, you can easily build a custom server on top of the SGLang offline engine. A detailed example working in a python script can be found in [custom_server](https://github.com/sgl-project/sglang/blob/main/examples/runtime/engine/custom_server.py)." ] }, @@ -45,7 +47,6 @@ "if is_in_ci():\n", " import patch\n", "\n", - "\n", "llm = sgl.Engine(model_path=\"meta-llama/Meta-Llama-3.1-8B-Instruct\")" ] }, diff --git a/examples/runtime/engine/launch_engine.py b/examples/runtime/engine/launch_engine.py new file mode 100644 index 00000000000..b97e0bcd579 --- /dev/null +++ b/examples/runtime/engine/launch_engine.py @@ -0,0 +1,17 @@ +""" +This example demonstrates how to launch the offline engine. +""" + +import sglang as sgl + + +def main(): + llm = sgl.Engine(model_path="meta-llama/Meta-Llama-3.1-8B-Instruct") + llm.generate("What is the capital of France?") + llm.shutdown() + + +# The __main__ condition is necessary here because we use "spawn" to create subprocesses +# Spawn starts a fresh program every time, if there is no __main__, it will run into infinite loop to keep spawning processes from sgl.Engine +if __name__ == "__main__": + main()