-
Notifications
You must be signed in to change notification settings - Fork 11.9k
Feature Request: Installable package via winget #8188
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
The macOS situation is a bit easier to handle because there is only the Metal backend, and we know that it is available on every device. For windows and linux we would need different builds for CPU AVX, CPU AVX2, CPU AVX512, CUDA, HIP, SYCL, Vulkan,.. which is not very user friendly to say the least. |
@slaren there are already builds for all those different compute acceleration options. I agree that choosing which backend to install is rather confusing. But I'm not understanding why making the existing builds available via winget would make things more confusing? |
Ah. I didn't see this issue earlier. I kind of started looking into this already as well. |
I don't think that uploading a dozen different packages to winget is going to be a good experience for the users. It's barely tolerable as it is on the github releases, and here we assume that the users will be somehow technically competent enough to choose the right version. I would expect a winget package to be easier to use than what we can currently offer. |
@slaren gotcha @max-krasnyansky having a script to algorithmically determine which build is most appropriate would be great (whether for winget or even just for determining which of the builds on GH will run on a given machine) |
Sorry, if I wasn't clear. My plan was to publish decent CPU versions to start so that simple Then we can look into either having winget "auto-select" a better optimized version based on the user's machine If winget itself can't do that (I need to look a bit deeper into their package metadata format and options) then we can figure out something else. Maybe our own script, etc. |
@max-krasnyansky : |
Yep. I saw that they have the |
I think we are in a good position now to start releasing winget packages. I have been looking into how this could be done, and it looks fairly simple. Winget can automatically install a zip file to a private directory and add the executables to the path, so we don't really need do much beyond creating a manifest. An example of how to do this is the cURL package. Once we create and submit the manifest, updates can be handled with a github action such as this one. My plan is to start with a x64 package that includes only the Vulkan backend. This should be fairly safe since Vulkan is likely to work well enough on most systems. Currently including multiple GPU backends can cause issues when the same devices are supported by more than one backend, once this is resolved, the package will be extended to include other backends. Packages for Arm can also be added later. |
@slaren I'm also thinking about it lately, the name of each archive in the release looks quite confusing even for experienced user like me (i.e. should I use AVX, AVX2 or AVX512 for my windows laptop - I don't even know which processor I'm using) Just asking, could we maybe have a "super" package that decide which package to be download? For example, if system has CUDA, great, download CUDA. |
Btw no sure if this helps, but we can also allow the binary to download |
Prerequisites
Feature Description
On macos/linux, user can install a pre-built version llama.cpp easily via
brew
It would be nice to have the equivalent to that on windows, via
winget
Motivation
The pre-built binary is already available via releases: https://github.com/ggerganov/llama.cpp/releases
It would be nice to somehow push them to https://winget.run/
However, I'm not familiar with working on windows, so I create this issue to further discuss and to look for help from the community.
Possible Implementation
No response
The text was updated successfully, but these errors were encountered: