Устал от того, что мои 2-битные локальные модели разваливаются посреди ответа, и сделал тул, который ловит это прямо в потоке и сделал его опен-соурс!

Paper
Paper

Гоняю квантованные модели локально, и они постоянно ломаются на середине ответа. То зацикливаются и повторяют одну фразу до конца лимита, то сползают с английского в китайский или кириллицу, то сыплют мусором. 2-битные кванты особенно этим грешат. Самое противное, что к моменту, когда ты это видишь, плохие токены уже на экране.

Сделал SIMURG, чтобы ловить это пока ответ ещё генерируется, и обрывать поток до того, как мусор дойдёт до пользователя. Такая порча не случайна, она оставляет статистический след в потоке (растёт доля повторов, смещается распределение письменности, падает предсказательная неожиданность). SIMURG читает этот след посимвольно, держит начало потока в буфере, отпускает только когда оно чистое, и обрывает генерацию как только скор пробивает порог, чтобы хост сделал ретрай.

  • работает с любым OpenAI-совместимым эндпоинтом (vLLM, llama.cpp, Ollama, OpenRouter)
  • только numpy, без GPU, около 197k символов/сек
  • подключается в несколько строк
  • на каждую тревогу выдаёт понятную причину, например «repetition loop rate=0.66» или «script switch en to zh»

pip install simurg

github.com/doofzoff/SIMURG

Буду рад услышать, где он ломается на ваших моделях.

2
1
1