1. 06 May, 2025 1 commit
    • Daniel Hiltgen's avatar
      Move quantization to new backend (#10363) · 42481045
      Daniel Hiltgen authored
      * Move quantization logic to GGML via new backend
      
      This moves the model aware logic to Go code and calls GGMLs quantization code for model creation.
      
      * Remove "add model quantizations"
      
      This is no longer needed now that quantization is implemented in Go+GGML code directly.
      42481045
  2. 05 May, 2025 1 commit
  3. 02 May, 2025 3 commits
    • Jesse Gross's avatar
      ggml: Fix race that resulted in "context canceled" when loading · a6ef73f4
      Jesse Gross authored
      Successfully completing processing with an errgroup cancels the
      associated context. However, we also have a goroutine that is checking
      for cancelation of the context. As a result, there is a race where
      the goroutine can pick up the cancelation and report an error,
      replacing the sucessful error message.
      
      To avoid that, this replaces the goroutine with a cancelation check
      when we are reading files. This also has the advantage of stopping
      all reads relatively quickly on error and also ensuring that there are
      no outstanding I/O operations when we return in this case.
      
      The downside is that if a file read blocks forever (for example, over
      the network) then cancelation of the context effectively won't be
      honored. However, this is also true for other smaller files we read
      and the tensors are read in small chunks (128K), so it's consistent
      and better on balance overall.
      a6ef73f4
    • Jesse Gross's avatar
      ollamarunner: Re-enable worst case graph preallocation. · c2f5d666
      Jesse Gross authored
      Worst case graph preallocation was disabled by a27462b7
      "ollamarunner: Temporarily disable worst case graph preallocation"
      since it caused crashes with large batches when not using the GPU.
      
      This backports upstream llama.cpp commit f057808
      "ggml: Don't assert fail when tensor data changes (#13222)", which
      fixes the underlying bug and allows reverting the previous workaround.
      c2f5d666
    • Jeffrey Morgan's avatar
      llama: update to commit e1e8e099 (#10513) · 8dd12c87
      Jeffrey Morgan authored
      8dd12c87
  4. 30 Apr, 2025 1 commit
  5. 25 Apr, 2025 2 commits
  6. 18 Apr, 2025 1 commit
  7. 17 Apr, 2025 1 commit
  8. 16 Apr, 2025 1 commit
  9. 15 Apr, 2025 1 commit
  10. 11 Apr, 2025 4 commits
    • Jesse Gross's avatar
      ggml: Fix memory leak on input tensors · f50d6912
      Jesse Gross authored
      For every forward pass through the model, we need to allocate input
      tensors: tokens, images, positions, outputs and masks. These get
      allocated in system memory.
      
      However, when we close the context that the tensors were allocated
      through, the metadata gets freed but the actual backend memory does
      not. This results in a significant memory leak.
      
      This makes it so that all the memory allocated through a context
      gets freed when it is closed.
      
      Fixes #10040
      f50d6912
    • Jesse Gross's avatar
      ggml: Don't allocate CPU buffers as CUDA Host buffers · 34c3b68f
      Jesse Gross authored
      Allocating (and in particular, freeing) memory from CUDA host buffers
      is expensive and can cause a significant performance hit if we do
      it for every token. Using normal system memory avoids this issue
      and also gives the OS more flexibility to manage it.
      
      There is no performance impact from this patch directly (either
      positive or negative) but it makes a difference once we start
      freeing memory correctly.
      34c3b68f
    • Jesse Gross's avatar
      ggml: Use pointer receivers for Context · f33ccd5d
      Jesse Gross authored
      Context is currently mixed between pointer and value receivers. Change
      this to be all pointer receivers so don't have to reason about whether
      the things we are updating in the struct will be retained.
      f33ccd5d
    • Jesse Gross's avatar
      ggml: Log filesystem errors · bc108b9a
      Jesse Gross authored
      Sometimes loading the GGUF file fails with:
      panic: context canceled
      
      This is probably a filesystem error but it doesn't provide any
      information about what happened.
      bc108b9a
  11. 08 Apr, 2025 2 commits
    • Jesse Gross's avatar
      ollamarunner: Preallocate worst case graph at startup · dbb149e6
      Jesse Gross authored
      Currently, the KV cache and graph are lazily allocated as needed.
      The cache is fully allocated on first use of the corresponding
      layer whereas the graph grows with the size of the context.
      
      This can be an issue if another application allocates more VRAM
      after we do our calculations - Ollama will crash in the middle of
      inference. If we instead allocate the maximum needed memory at
      startup of the runner, we will either succeed or fail at that point
      rather than at some surprising time in the future.
      
      Currently, this only generates a worst case batch for text, which
      means that vision models may get a partial allocation and continue
      to lazily allocate the rest.
      dbb149e6
    • Jesse Gross's avatar
      ggml: Check for OOM and return as Go errors · a807985e
      Jesse Gross authored
      If there is a CUDA OOM, we currently don't check the return value
      and will evetually segfault. This checks for the problem and generates
      a Go error. At the moment, this will still result in a panic but having
      the error is the first step to being able to handle it more gracefully.
      a807985e
  12. 05 Apr, 2025 1 commit
  13. 03 Apr, 2025 2 commits
  14. 27 Mar, 2025 2 commits
    • Jesse Gross's avatar
      ml: Remove Output from Context interface · 01aa7887
      Jesse Gross authored
      Model implementations should use Input for all of their tensors
      supplied to the model. This includes tensors that relate to the
      outputs, which is confusing since there is also an Output funciton.
      
      Since Output is only used internally in GGML and not used by any
      model implementations, we can remove it from the interface to
      reduce confusion.
      01aa7887
    • saman-amd's avatar
      Add gfx1200 & gfx1201 support on linux (#9878) · ead27aa9
      saman-amd authored
      ead27aa9
  15. 21 Mar, 2025 1 commit
  16. 18 Mar, 2025 1 commit
  17. 17 Mar, 2025 2 commits
  18. 13 Mar, 2025 1 commit
  19. 12 Mar, 2025 1 commit
  20. 11 Mar, 2025 8 commits
  21. 08 Mar, 2025 2 commits
  22. 07 Mar, 2025 1 commit