Download inference/server/serve.py from ricursiveAI/Ripple-65B-Preview: direct link, hf CLI and curl.
- Browser
- Download file 2.29 kB
-
https://huggingface.co/ricursiveAI/Ripple-65B-Preview/resolve/refs%2Fpr%2F1/inference/server/serve.py
- Command line
-
hf download hf://ricursiveAI/Ripple-65B-Preview@refs/pr/1/inference/server/serve.py
-
curl -L -o serve.py https://huggingface.co/ricursiveAI/Ripple-65B-Preview/resolve/refs%2Fpr%2F1/inference/server/serve.py
2.29 kB
| # /// script | |
| # requires-python = ">=3.12,<3.13" | |
| # dependencies = [ | |
| # "sglang==0.5.19", | |
| # "torch==2.13.0+cu130", | |
| # ] | |
| # [tool.uv] | |
| # index-strategy = "unsafe-best-match" | |
| # prerelease = "allow" | |
| # [[tool.uv.index]] | |
| # url = "https://download.pytorch.org/whl/cu130" | |
| # /// | |
| """Serve Ripple + DFlash2 on two B200s. Accepts standard SGLang CLI flags.""" | |
| import os | |
| import shlex | |
| import sys | |
| from pathlib import Path | |
| sys.dont_write_bytecode = True | |
| # SGLang sizes the draft's positional cache for the target context, even with | |
| # windowed draft attention. Allow its 128Ki position limit to grow to 1Mi; | |
| # --speculative-draft-window-size still limits draft attention to 16Ki tokens. | |
| os.environ.setdefault("SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN", "1") | |
| # Top-level registration also runs in SGLang's spawned worker processes. | |
| from sglang.srt.models.registry import ModelRegistry | |
| from model import RicursiveForCausalLM | |
| import ripple_format | |
| ModelRegistry.models["RicursiveForCausalLM"] = RicursiveForCausalLM | |
| ripple_format.register() | |
| DEFAULT_ARGS = shlex.split(""" | |
| --host 127.0.0.1 --served-model-name ripple --trust-remote-code | |
| --dtype bfloat16 --kv-cache-dtype bfloat16 --tp-size 2 | |
| --attention-backend trtllm_mha --page-size 64 | |
| --speculative-algorithm DFLASH --speculative-draft-model-quantization unquant | |
| --speculative-num-draft-tokens 16 --speculative-draft-window-size 16384 | |
| --speculative-draft-attention-backend triton | |
| --context-length 1048576 --mem-fraction-static 0.80 --max-running-requests 16 | |
| --cuda-graph-backend-prefill disabled | |
| --tool-call-parser ripple --reasoning-parser ripple | |
| """) | |
| DEFAULT_ARGS += [ | |
| "--chat-template", | |
| str(Path(__file__).resolve().parents[2] / "chat_template.jinja"), | |
| ] | |
| def main(): | |
| from sglang.srt.entrypoints.http_server import launch_server | |
| from sglang.srt.server_args import prepare_server_args | |
| from sglang.srt.utils import kill_process_tree | |
| args = prepare_server_args(DEFAULT_ARGS + sys.argv[1:]) | |
| if args.dtype != "bfloat16" or args.kv_cache_dtype != "bfloat16": | |
| raise ValueError("Only BF16 weights and KV cache are supported") | |
| try: | |
| launch_server(args) | |
| finally: | |
| kill_process_tree(os.getpid(), include_parent=False) | |
| if __name__ == "__main__": | |
| main() | |