Alright, spent about an hour doing this (would be a lot easier if I didn’t have to uninstall one to install the other lo, but in any case, it’s done).
I ended up having to do this four times instead of two…because the first set of results grabbing the responses only lead to more questions than answers.
I have 36 entities exposed and repeated the phrase “turn off hallway lights and kitchen lights” three times for each integration, taking the logs from the third time each time. During this run for each (and the subsequent dual run, as I needed to repeat) Extended OpenAI is around 1.4 seconds to process and Hass Local OpenAI is 7+ seconds to process. I just copy/pasted my prompt from Extended OpenAI into Hass Local.
Have a look:
Extended OpenAI Conversation logs:
Feb 04 08:03:02 mediaserver bash[1612383]: Template supports tool calls but does not natively describe tools. The fallback behaviour used may produce bad results, inspect prompt w/ --verbo>
Feb 04 08:03:02 mediaserver bash[1612383]: srv params_from_: Chat format: Hermes 2 Pro
Feb 04 08:03:02 mediaserver bash[1612383]: slot get_availabl: id 3 | task -1 | selected slot by LCP similarity, sim_best = 0.991 (> 0.100 thold), f_keep = 1.000
Feb 04 08:03:02 mediaserver bash[1612383]: slot launch_slot_: id 3 | task -1 | sampler chain: logits -> ?penalties -> ?dry -> ?top-n-sigma -> top-k -> ?typical -> ?top-p -> min-p -> ?xtc >
Feb 04 08:03:02 mediaserver bash[1612383]: slot launch_slot_: id 3 | task 302 | processing task, is_child = 0
Feb 04 08:03:02 mediaserver bash[1612383]: slot update_slots: id 3 | task 302 | new prompt, n_ctx_slot = 7168, n_keep = 0, task.n_tokens = 2029
Feb 04 08:03:02 mediaserver bash[1612383]: slot update_slots: id 3 | task 302 | n_tokens = 2011, memory_seq_rm [2011, end)
Feb 04 08:03:02 mediaserver bash[1612383]: slot update_slots: id 3 | task 302 | prompt processing progress, n_tokens = 2029, batch.n_tokens = 18, progress = 1.000000
Feb 04 08:03:02 mediaserver bash[1612383]: slot update_slots: id 3 | task 302 | prompt done, n_tokens = 2029, batch.n_tokens = 18
Feb 04 08:03:02 mediaserver bash[1612383]: slot init_sampler: id 3 | task 302 | init sampler, took 0.11 ms, tokens: text = 2029, total = 2029
Feb 04 08:03:03 mediaserver bash[1612383]: slot print_timing: id 3 | task 302 |
Feb 04 08:03:03 mediaserver bash[1612383]: prompt eval time = 88.83 ms / 18 tokens ( 4.94 ms per token, 202.63 tokens per second)
Feb 04 08:03:03 mediaserver bash[1612383]: eval time = 1036.00 ms / 62 tokens ( 16.71 ms per token, 59.85 tokens per second)
Feb 04 08:03:03 mediaserver bash[1612383]: total time = 1124.84 ms / 80 tokens
Feb 04 08:03:03 mediaserver bash[1612383]: slot release: id 3 | task 302 | stop processing: n_tokens = 2090, truncated = 0
Feb 04 08:03:03 mediaserver bash[1612383]: srv update_slots: all slots are idle
Feb 04 08:03:03 mediaserver bash[1612383]: srv log_server_r: done request: POST /v1/chat/completions 192.168.0.104 200
Feb 04 08:03:03 mediaserver bash[1612383]: Template supports tool calls but does not natively describe tools. The fallback behaviour used may produce bad results, inspect prompt w/ --verbo>
Feb 04 08:03:03 mediaserver bash[1612383]: srv params_from_: Chat format: Hermes 2 Pro
Feb 04 08:03:03 mediaserver bash[1612383]: slot get_availabl: id 3 | task -1 | selected slot by LCP similarity, sim_best = 0.989 (> 0.100 thold), f_keep = 1.000
Feb 04 08:03:03 mediaserver bash[1612383]: slot launch_slot_: id 3 | task -1 | sampler chain: logits -> ?penalties -> ?dry -> ?top-n-sigma -> top-k -> ?typical -> ?top-p -> min-p -> ?xtc >
Feb 04 08:03:03 mediaserver bash[1612383]: slot launch_slot_: id 3 | task 365 | processing task, is_child = 0
Feb 04 08:03:03 mediaserver bash[1612383]: slot update_slots: id 3 | task 365 | new prompt, n_ctx_slot = 7168, n_keep = 0, task.n_tokens = 2114
Feb 04 08:03:03 mediaserver bash[1612383]: slot update_slots: id 3 | task 365 | n_tokens = 2090, memory_seq_rm [2090, end)
Feb 04 08:03:03 mediaserver bash[1612383]: slot update_slots: id 3 | task 365 | prompt processing progress, n_tokens = 2114, batch.n_tokens = 24, progress = 1.000000
Feb 04 08:03:03 mediaserver bash[1612383]: slot update_slots: id 3 | task 365 | prompt done, n_tokens = 2114, batch.n_tokens = 24
Feb 04 08:03:03 mediaserver bash[1612383]: slot init_sampler: id 3 | task 365 | init sampler, took 0.12 ms, tokens: text = 2114, total = 2114
Feb 04 08:03:03 mediaserver bash[1612383]: slot print_timing: id 3 | task 365 |
Feb 04 08:03:03 mediaserver bash[1612383]: prompt eval time = 91.53 ms / 24 tokens ( 3.81 ms per token, 262.21 tokens per second)
Feb 04 08:03:03 mediaserver bash[1612383]: eval time = 187.35 ms / 12 tokens ( 15.61 ms per token, 64.05 tokens per second)
Feb 04 08:03:03 mediaserver bash[1612383]: total time = 278.88 ms / 36 tokens
Feb 04 08:03:03 mediaserver bash[1612383]: slot release: id 3 | task 365 | stop processing: n_tokens = 2125, truncated = 0
Feb 04 08:03:03 mediaserver bash[1612383]: srv update_slots: all slots are idle
Feb 04 08:03:03 mediaserver bash[1612383]: srv log_server_r: done request: POST /v1/chat/completions 192.168.0.104 200
Hass Local OpenAI:
Feb 04 08:15:07 mediaserver bash[1612383]: Template supports tool calls but does not natively describe tools. The fallback behaviour used may produce bad results, inspect prompt w/ --verbo>
Feb 04 08:15:07 mediaserver bash[1612383]: srv params_from_: Chat format: Hermes 2 Pro
Feb 04 08:15:07 mediaserver bash[1612383]: slot get_availabl: id 2 | task -1 | selected slot by LRU, t_last = 80846605254
Feb 04 08:15:07 mediaserver bash[1612383]: slot launch_slot_: id 2 | task -1 | sampler chain: logits -> ?penalties -> ?dry -> ?top-n-sigma -> top-k -> ?typical -> top-p -> min-p -> ?xtc ->
Feb 04 08:15:07 mediaserver bash[1612383]: slot launch_slot_: id 2 | task 680 | processing task, is_child = 0
Feb 04 08:15:07 mediaserver bash[1612383]: slot update_slots: id 2 | task 680 | new prompt, n_ctx_slot = 7168, n_keep = 0, task.n_tokens = 5567
Feb 04 08:15:07 mediaserver bash[1612383]: slot update_slots: id 2 | task 680 | n_tokens = 0, memory_seq_rm [0, end)
Feb 04 08:15:07 mediaserver bash[1612383]: slot update_slots: id 2 | task 680 | prompt processing progress, n_tokens = 2048, batch.n_tokens = 2048, progress = 0.367882
Feb 04 08:15:07 mediaserver bash[1612383]: decode: failed to find a memory slot for batch of size 2048
Feb 04 08:15:07 mediaserver bash[1612383]: srv try_clear_id: purging slot 3 with 5820 tokens
Feb 04 08:15:07 mediaserver bash[1612383]: slot prompt_clear: id 3 | task -1 | clearing prompt with 5820 tokens
Feb 04 08:15:07 mediaserver bash[1612383]: srv update_slots: failed to find free space in the KV cache, retrying with smaller batch size, i = 0, n_batch = 2048, ret = 1
Feb 04 08:15:08 mediaserver bash[1612383]: slot update_slots: id 2 | task 680 | n_tokens = 2048, memory_seq_rm [2048, end)
Feb 04 08:15:08 mediaserver bash[1612383]: slot update_slots: id 2 | task 680 | prompt processing progress, n_tokens = 4096, batch.n_tokens = 2048, progress = 0.735764
Feb 04 08:15:11 mediaserver bash[1612383]: slot update_slots: id 2 | task 680 | n_tokens = 4096, memory_seq_rm [4096, end)
Feb 04 08:15:11 mediaserver bash[1612383]: slot update_slots: id 2 | task 680 | prompt processing progress, n_tokens = 5567, batch.n_tokens = 1471, progress = 1.000000
Feb 04 08:15:11 mediaserver bash[1612383]: slot update_slots: id 2 | task 680 | prompt done, n_tokens = 5567, batch.n_tokens = 1471
Feb 04 08:15:11 mediaserver bash[1612383]: slot init_sampler: id 2 | task 680 | init sampler, took 0.30 ms, tokens: text = 5567, total = 5567
Feb 04 08:15:14 mediaserver bash[1612383]: slot print_timing: id 2 | task 680 |
Feb 04 08:15:14 mediaserver bash[1612383]: prompt eval time = 5695.84 ms / 5567 tokens ( 1.02 ms per token, 977.38 tokens per second)
Feb 04 08:15:14 mediaserver bash[1612383]: eval time = 1055.30 ms / 60 tokens ( 17.59 ms per token, 56.86 tokens per second)
Feb 04 08:15:14 mediaserver bash[1612383]: total time = 6751.14 ms / 5627 tokens
Feb 04 08:15:14 mediaserver bash[1612383]: slot release: id 2 | task 680 | stop processing: n_tokens = 5626, truncated = 0
Feb 04 08:15:14 mediaserver bash[1612383]: srv update_slots: all slots are idle
Feb 04 08:15:14 mediaserver bash[1612383]: srv log_server_r: done request: POST /v1/chat/completions 192.168.0.104 200
Feb 04 08:15:14 mediaserver bash[1612383]: Template supports tool calls but does not natively describe tools. The fallback behaviour used may produce bad results, inspect prompt w/ --verbo>
Feb 04 08:15:14 mediaserver bash[1612383]: srv params_from_: Chat format: Hermes 2 Pro
Feb 04 08:15:14 mediaserver bash[1612383]: slot get_availabl: id 2 | task -1 | selected slot by LCP similarity, sim_best = 0.968 (> 0.100 thold), f_keep = 1.000
Feb 04 08:15:14 mediaserver bash[1612383]: slot launch_slot_: id 2 | task -1 | sampler chain: logits -> ?penalties -> ?dry -> ?top-n-sigma -> top-k -> ?typical -> top-p -> min-p -> ?xtc ->
Feb 04 08:15:14 mediaserver bash[1612383]: slot launch_slot_: id 2 | task 743 | processing task, is_child = 0
Feb 04 08:15:14 mediaserver bash[1612383]: slot update_slots: id 2 | task 743 | new prompt, n_ctx_slot = 7168, n_keep = 0, task.n_tokens = 5810
Feb 04 08:15:14 mediaserver bash[1612383]: slot update_slots: id 2 | task 743 | n_tokens = 5626, memory_seq_rm [5626, end)
Feb 04 08:15:14 mediaserver bash[1612383]: slot update_slots: id 2 | task 743 | prompt processing progress, n_tokens = 5810, batch.n_tokens = 184, progress = 1.000000
Feb 04 08:15:14 mediaserver bash[1612383]: slot update_slots: id 2 | task 743 | prompt done, n_tokens = 5810, batch.n_tokens = 184
Feb 04 08:15:14 mediaserver bash[1612383]: slot init_sampler: id 2 | task 743 | init sampler, took 0.32 ms, tokens: text = 5810, total = 5810
Feb 04 08:15:14 mediaserver bash[1612383]: slot print_timing: id 2 | task 743 |
Feb 04 08:15:14 mediaserver bash[1612383]: prompt eval time = 271.77 ms / 184 tokens ( 1.48 ms per token, 677.05 tokens per second)
Feb 04 08:15:14 mediaserver bash[1612383]: eval time = 197.38 ms / 12 tokens ( 16.45 ms per token, 60.79 tokens per second)
Feb 04 08:15:14 mediaserver bash[1612383]: total time = 469.15 ms / 196 tokens
Feb 04 08:15:14 mediaserver bash[1612383]: slot release: id 2 | task 743 | stop processing: n_tokens = 5821, truncated = 0
Feb 04 08:15:14 mediaserver bash[1612383]: srv update_slots: all slots are idle
Feb 04 08:15:14 mediaserver bash[1612383]: srv log_server_r: done request: POST /v1/chat/completions 192.168.0.104 200
So why did I have to do it again? Well, because I could see there was a massive token discrepancy from one to the other. I wanted to see what exactly was getting passed so I had to enable “verbose logging” within llama-server and do the whole thing again.
If you’re interested in looking at the nearly 4k lines produced by Hass Local let me know. I also have the corresponding log file for Extended OpenAI which is just a little over 1200 lines. I’d upload them here but it won’t allow me to and I don’t want to take the time to upload them elsewhere and share the link here unless someone feels it’s worth looking at.
Suffice it to say though, I’ll be sticking with Extended OpenAI for the time being.