mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-09-29 15:43:00 +00:00
Merge pull request #326939 from abysssol/ollama-split-test
nixos/ollama: split cuda and rocm from service test
This commit is contained in:
commit
dfef8af6e9
@ -687,7 +687,9 @@ in {
|
|||||||
ocis = handleTest ./ocis.nix {};
|
ocis = handleTest ./ocis.nix {};
|
||||||
oddjobd = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./oddjobd.nix {};
|
oddjobd = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./oddjobd.nix {};
|
||||||
oh-my-zsh = handleTest ./oh-my-zsh.nix {};
|
oh-my-zsh = handleTest ./oh-my-zsh.nix {};
|
||||||
ollama = handleTest ./ollama.nix {};
|
ollama = runTest ./ollama.nix;
|
||||||
|
ollama-cuda = runTestOn ["x86_64-linux" "aarch64-linux"] ./ollama-cuda.nix;
|
||||||
|
ollama-rocm = runTestOn ["x86_64-linux" "aarch64-linux"] ./ollama-rocm.nix;
|
||||||
ombi = handleTest ./ombi.nix {};
|
ombi = handleTest ./ombi.nix {};
|
||||||
openarena = handleTest ./openarena.nix {};
|
openarena = handleTest ./openarena.nix {};
|
||||||
openldap = handleTest ./openldap.nix {};
|
openldap = handleTest ./openldap.nix {};
|
||||||
|
17
nixos/tests/ollama-cuda.nix
Normal file
17
nixos/tests/ollama-cuda.nix
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
name = "ollama-cuda";
|
||||||
|
meta.maintainers = with lib.maintainers; [ abysssol ];
|
||||||
|
|
||||||
|
nodes.cuda =
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
services.ollama.enable = true;
|
||||||
|
services.ollama.acceleration = "cuda";
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
cuda.wait_for_unit("multi-user.target")
|
||||||
|
cuda.wait_for_open_port(11434)
|
||||||
|
'';
|
||||||
|
}
|
17
nixos/tests/ollama-rocm.nix
Normal file
17
nixos/tests/ollama-rocm.nix
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
name = "ollama-rocm";
|
||||||
|
meta.maintainers = with lib.maintainers; [ abysssol ];
|
||||||
|
|
||||||
|
nodes.rocm =
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
services.ollama.enable = true;
|
||||||
|
services.ollama.acceleration = "rocm";
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
rocm.wait_for_unit("multi-user.target")
|
||||||
|
rocm.wait_for_open_port(11434)
|
||||||
|
'';
|
||||||
|
}
|
@ -1,56 +1,53 @@
|
|||||||
import ./make-test-python.nix ({ pkgs, lib, ... }:
|
{ lib, ... }:
|
||||||
let
|
let
|
||||||
mainPort = 11434;
|
mainPort = 11434;
|
||||||
altPort = 11435;
|
altPort = 11435;
|
||||||
|
|
||||||
curlRequest = port: request:
|
|
||||||
"curl http://127.0.0.1:${toString port}/api/generate -d '${builtins.toJSON request}'";
|
|
||||||
|
|
||||||
prompt = {
|
|
||||||
model = "tinydolphin";
|
|
||||||
prompt = "lorem ipsum";
|
|
||||||
options = {
|
|
||||||
seed = 69;
|
|
||||||
temperature = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
name = "ollama";
|
name = "ollama";
|
||||||
meta = with lib.maintainers; {
|
meta.maintainers = with lib.maintainers; [ abysssol ];
|
||||||
maintainers = [ abysssol ];
|
|
||||||
};
|
|
||||||
|
|
||||||
nodes = {
|
nodes = {
|
||||||
cpu = { ... }: {
|
cpu =
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
services.ollama.enable = true;
|
services.ollama.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
rocm = { ... }: {
|
altAddress =
|
||||||
services.ollama.enable = true;
|
{ ... }:
|
||||||
services.ollama.acceleration = "rocm";
|
{
|
||||||
};
|
|
||||||
|
|
||||||
cuda = { ... }: {
|
|
||||||
services.ollama.enable = true;
|
|
||||||
services.ollama.acceleration = "cuda";
|
|
||||||
};
|
|
||||||
|
|
||||||
altAddress = { ... }: {
|
|
||||||
services.ollama.enable = true;
|
services.ollama.enable = true;
|
||||||
services.ollama.port = altPort;
|
services.ollama.port = altPort;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
vms = [ cpu, rocm, cuda, altAddress ];
|
import json
|
||||||
|
|
||||||
|
def curl_request_ollama(prompt, port):
|
||||||
|
json_prompt = json.dumps(prompt)
|
||||||
|
return f"""curl http://127.0.0.1:{port}/api/generate -d '{json_prompt}'"""
|
||||||
|
|
||||||
|
prompt = {
|
||||||
|
"model": "tinydolphin",
|
||||||
|
"prompt": "lorem ipsum",
|
||||||
|
"options": {
|
||||||
|
"seed": 69,
|
||||||
|
"temperature": 0,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
vms = [
|
||||||
|
(cpu, ${toString mainPort}),
|
||||||
|
(altAddress, ${toString altPort}),
|
||||||
|
]
|
||||||
|
|
||||||
start_all()
|
start_all()
|
||||||
for vm in vms:
|
for (vm, port) in vms:
|
||||||
vm.wait_for_unit("multi-user.target")
|
vm.wait_for_unit("multi-user.target")
|
||||||
|
vm.wait_for_open_port(port)
|
||||||
stdout = cpu.succeed("""${curlRequest mainPort prompt}""", timeout=100)
|
stdout = vm.succeed(curl_request_ollama(prompt, port), timeout = 100)
|
||||||
|
|
||||||
stdout = altAddress.succeed("""${curlRequest altPort prompt}""", timeout=100)
|
|
||||||
'';
|
'';
|
||||||
})
|
}
|
||||||
|
@ -214,6 +214,8 @@ goBuild ((lib.optionalAttrs enableRocm {
|
|||||||
};
|
};
|
||||||
} // lib.optionalAttrs stdenv.isLinux {
|
} // lib.optionalAttrs stdenv.isLinux {
|
||||||
inherit ollama-rocm ollama-cuda;
|
inherit ollama-rocm ollama-cuda;
|
||||||
|
service-cuda = nixosTests.ollama-cuda;
|
||||||
|
service-rocm = nixosTests.ollama-rocm;
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
Loading…
Reference in New Issue
Block a user