1. 11 Nov, 2025 1 commit
  2. 10 Nov, 2025 1 commit
  3. 07 Nov, 2025 2 commits
  4. 31 Oct, 2025 1 commit
  5. 24 Oct, 2025 2 commits
  6. 17 Oct, 2025 1 commit
  7. 11 Oct, 2025 2 commits
  8. 10 Oct, 2025 1 commit
  9. 08 Oct, 2025 2 commits
  10. 07 Oct, 2025 1 commit
  11. 30 Sep, 2025 1 commit
  12. 18 Sep, 2025 1 commit
  13. 16 Sep, 2025 1 commit
  14. 03 Sep, 2025 1 commit
  15. 06 Aug, 2025 1 commit
  16. 24 Jul, 2025 1 commit
  17. 16 Jul, 2025 1 commit
  18. 15 Jul, 2025 1 commit
  19. 01 Jul, 2025 1 commit
  20. 19 May, 2025 1 commit
    • Graham King's avatar
      feat: Support multiple models on single ingress node (#1127) · aeb79e62
      Graham King authored
      We can now do this:
      
      - Node 1:
      
      ```
      dynamo-run in=http out=dyn
      ```
      
      - Node 2 and 3, two instances of component 'backend' in the nemotron_ultra pipeline:
      
      ```
      dynamo-run in=dyn://nemotron_ultra.backend.generate out=vllm /data/models/NemotronUltra
      ```
      
      - Node 4 and 5, two instances of the 'backend' component in nemotron_super pipeline:
      
      ```
      dynamo-run in=dyn://nemotron_super.backend.generate out=vllm /data/models/NemotronSuper
      ```
      
      The ingress node will discover all four instances and route correctly. We have been planning for this for a long time now.
      
      As part of this auto-discovery is now always `out=dyn`, with no extra URL parts. Previously it could only route to a single pipeline.
      
      Also:
      - Refactor endpoint / instance naming now that I understand them
      - Fix removing models when their instance stops.
      aeb79e62
  21. 14 May, 2025 1 commit
  22. 09 May, 2025 2 commits
    • Graham King's avatar
      docs: Example Chat sglang engine (#1015) · 24e2cbf5
      Graham King authored
      Example of how to connect a Python sglang engine to the message bus (NATS/etc). I
      
      In this example sglang does the pre/post processing. There is already an example where Dynamo does it.
      
      The examples teach this:
      
      - Be a chat completions engine, do your own pre-processing:
      
      ```
      await register_llm(ModelType.Chat, endpoint, config.model)
      ```
      
      - Have Dynamo do pre-processing. It will register us under both Chat and Completions endpoints, because that's handled before a Backend engine gets the request:
      
      ```
      await register_llm(ModelType.Backend, endpoint, config.model)
      ```
      24e2cbf5
    • Graham King's avatar
  23. 08 May, 2025 1 commit
  24. 07 May, 2025 1 commit
  25. 06 May, 2025 2 commits
    • Graham King's avatar
      feat(dynamo-run): vllm and sglang subprocess engines (#954) · 28fd481c
      Graham King authored
      New vllm and sglang engines that run in a sub-process. Will hopefully replace the existing embedded python engines.
          
      Why?
          
        - Pure Python, does not require knowing Rust to work on it. Much simpler to maintain.
        - No embedded Python interpreter which avoids linking libpython and avoids the MacOS virtualenv issues.
        - Should have better performance as it's "native" vllm / sglang.
        - Works with any version of vllm (including v1!) and sglang. Less upgrade struggle.
      28fd481c
    • Graham King's avatar
      feat: dynamo-run <-> python interop (#934) · 99cd9d85
      Graham King authored
      Adding this to a Python script makes it register on the network so that `dynamo-run` can discover it and send it requests:
      ```
      from dynamo.llm import register_llm
      
      MODEL = "Qwen/Qwen2.5-0.5B-Instruct"
      await register_llm(endpoint, MODEL, 3)
      ```
      
      Full vllm example, with pre-processing in dynamo:
      - `dynamo-run in=text out=dyn://dynamo.backend.generate`
      - `cd lib/bindings/python/examples/hello_world`
      - `python server_vllm.py`
      
      This builds on top of the work to move pre-processor to ingress side. It means we can decouple Rust and Python using NATS as the bus.
      
      The `register_llm` call does this:
      
      - Download the model from HF if necessary
      - Load the model deployment card from the HF folder or extract from GGUF
      - Push the tokenizer config etc into NATS object store so ingress can access it from a different machine
      - Publish the model deployment card to ETCD
      99cd9d85
  26. 05 May, 2025 1 commit
  27. 26 Apr, 2025 1 commit
  28. 21 Apr, 2025 1 commit
  29. 18 Apr, 2025 1 commit
  30. 04 Apr, 2025 1 commit
    • Graham King's avatar
      feat: Python decorator dynamo_worker takes optional `static` parameter without etcd (#494) · 88ad3425
      Graham King authored
      Adds `@dynamo_worker(static = True)` to create a static worker which has a predictable name and hence does not require discovery or `etcd` to be running. There can only be a single static worker per namespace / component / endpoint trio.
      
      This contrasts with the default dynamic `dynamo_worker` endpoints we have now, which get a unique random name (based on namespace/component/endpoint), and are discovered by ingress components using etcd.
      
      Also change the hello_world example to use `dynamo_worker(static = True)` so that it is exercised and demonstrated somewhere.
      
      For NIM.
      88ad3425
  31. 11 Mar, 2025 1 commit
  32. 08 Mar, 2025 1 commit
  33. 05 Mar, 2025 1 commit
  34. 25 Feb, 2025 1 commit