"lib/engines/python/src/lib.rs" did not exist on "6ca24080e654c770e197112fdc8e1e0f41517807"
  1. 07 May, 2025 2 commits
  2. 06 May, 2025 2 commits
    • jthomson04's avatar
      c4213899
    • 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
  3. 05 May, 2025 1 commit
  4. 29 Apr, 2025 1 commit
    • Graham King's avatar
      chore: Split PushRouter from Client (#817) · a1a10365
      Graham King authored
      In a distributed system we don't know if the remote workers need pre-processing done ingress-side or not. Previously Client required us to decide this before discovering the remote endpoints, which was fine because pre-processing was worker-side.
      
      As part of moving pre-processing back to ingress-side we need to split this into two steps:
      - Client discovers the endpoints, and (later PR) will fetch their Model Deployment Card.
      - PushRouter will use the Model Deployment Card to decide if they need pre-processing or not, which affects the types of the generic parameters.
      
      Part of #743
      a1a10365
  5. 26 Apr, 2025 1 commit
  6. 21 Apr, 2025 2 commits
  7. 18 Apr, 2025 1 commit
  8. 12 Apr, 2025 1 commit
  9. 11 Apr, 2025 1 commit
  10. 04 Apr, 2025 2 commits
  11. 03 Apr, 2025 1 commit
  12. 02 Apr, 2025 1 commit
  13. 01 Apr, 2025 1 commit
  14. 17 Mar, 2025 1 commit
  15. 11 Mar, 2025 2 commits
  16. 09 Mar, 2025 2 commits
  17. 08 Mar, 2025 1 commit
  18. 07 Mar, 2025 1 commit
    • Graham King's avatar
      feat: Python bring-your-own-engine with our tokenizer (#47) · 12714d90
      Graham King authored
      Instead of using `out=pystr:<my.py>` we can now do this:
      ```
      dynemo-run out=pytok:/home/graham/my_python_engine.py --model-path <hf-repo-checkout>
      ```
      
      That engine will receive and respond with tokens. Here's an example engine file:
      ```
      import asyncio
      
      async def generate(request):
          yield {"token_ids":[791]}
          await asyncio.sleep(0.1)
          yield {"token_ids":[6864]}
          await asyncio.sleep(0.1)
          yield {"token_ids":[315]}
          await asyncio.sleep(0.1)
          yield {"token_ids":[9822]}
          await asyncio.sleep(0.1)
          yield {"token_ids":[374]}
          await asyncio.sleep(0.1)
          yield {"token_ids":[12366]}
          await asyncio.sleep(0.1)
          yield {"token_ids":[13]}
      ```
      
      Also reduce duplication by making the bindings engine use the llm lib engine.
      12714d90
  19. 06 Mar, 2025 1 commit
  20. 05 Mar, 2025 1 commit
  21. 04 Mar, 2025 2 commits
  22. 28 Feb, 2025 1 commit
  23. 27 Feb, 2025 1 commit
  24. 25 Feb, 2025 4 commits