put prompt processing in same stream

This commit is contained in:
Awni Hannun 2024-11-25 08:06:12 -08:00
parent adaab81029
commit 3586c876aa

View File

@ -274,13 +274,14 @@ def generate_step(
y = sampler(logprobs) y = sampler(logprobs)
return y, logprobs.squeeze(0) return y, logprobs.squeeze(0)
while y.size > prefill_step_size: with mx.stream(generation_stream):
model(y[:prefill_step_size][None], cache=prompt_cache) while y.size > prefill_step_size:
mx.eval([c.state for c in prompt_cache]) model(y[:prefill_step_size][None], cache=prompt_cache)
y = y[prefill_step_size:] mx.eval([c.state for c in prompt_cache])
mx.metal.clear_cache() y = y[prefill_step_size:]
mx.metal.clear_cache()
y, logprobs = _step(y) y, logprobs = _step(y)
mx.async_eval(y, logprobs) mx.async_eval(y, logprobs)
n = 0 n = 0