ollama nix flake

dpiehjr4  于 6个月前  发布在  其他
关注(0)|答案(4)|浏览(58)

如果有一个nix flake,可以通过flakehub.com上的nix flakes来消费它,那就太好了。

6xfqseft

6xfqseft1#

Ollama已经打包在nixpkgs中(目前仅支持0.0.17版本,但version bump正在开发中)
使用flake的好处是可以暴露一个库,该库允许从nix构建模型。例如:

{
    
    buildModelfile = {
        from,
        parameters ? {},
        template ? null,
        system ? "",
        adapters ? [],
        license ? null
    }:let
        l = pkgs.lib // builtins;
        parametersString = (l.concatStringSep "\n" (l.mapAttrs (param: val: "PARAMETER ${param} ${value}") parameters));
        templateString = if (builtins.isString template) then ''TEMPLATE """${template}"""'' else "";
        systemString = if (builtins.isString template) then ''SYSTEM """${template}"""'' else "";
        licenseString = if (builtins.isString template) then ''LICENSE """${template}"""'' else "";
        adaptersString = (l.concatStringSep "\n" (l.map (adapter: "ADAPTER ${adapter}") adapters));
    in pkgs.writeTextFile "Modulefile" ''
FROM ${from}
${parametersString}
${templateString}
${systemString}
${adapters}
${licenseString}
'';
}
rqcrx0a6

rqcrx0a62#

拥有一个flake版本也仅仅是允许nix run github:jmorganca/ollama,这并不需要切换到不稳定版本才能安装它。

smtd7mpg

smtd7mpg3#

nixpkgs中的版本似乎与CUDA不兼容,因为它使用了nixpkgs中的llama-cpp包。
这个方便的补丁解决了这个问题。它运行良好,GPU加速也能正常工作!
它避免了将llama-cpp作为子模块引入,我认为这是件好事。
https://github.com/havaker/ollama-nix
我不确定@havaker是否会将他们的补丁贡献给仓库,但如果是这样,那么它确实会打开一整套端到端集成测试,可以在nix ci中使用nixos测试框架运行。

7eumitmz

7eumitmz4#

你可以同样做 nix run nixpkgs/nixos-unstable#ollama
这不会全局改变它。
(或者对于这个问题做 nix run github:nixos/nixpkgs/nixos-unstable#ollama,但我认为这是不必要的)
当然,这并没有解决包可能存在的其他问题,但是你可以自由地与“原生”nix混合搭配!
更多示例请查看 https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-flake#flake-references

相关问题