alterna ai
ALTERNA AI / ГЛАВА 17 · 05

17.5 Приближённое хранение весов

На предыдущей странице: несколько запросов используют общую вычислительную работу.

Заменим множество точных значений меньшим набором кодов и масштабов. Это экономит память, но может внести ошибку восстановления.

Первый запуск обрабатывает префикс. Каждый последующий добавляет одну позицию; K/V прошлых позиций можно сохранять. Выборка и сжатое хранение решают разные задачи.

Храним приближение на дискретной сетке

Symmetric per-tensor int8 quantization выбирает scale по максимальному модулю и округляет x/s в диапазон [-127,127]. Dequantization возвращает sq, обычно не равное исходному x. Zero представляется точно; один outlier растягивает шаг для всего tensor.

s=max⁡i∣xi∣127,qi=clip⁡(round⁡(xi/s),−127,127),x^i=sqi.s=\frac{\max_i|x_i|}{127},\quad q_i=\operatorname{clip}(\operatorname{round}(x_i/s),-127,127),\quad \hat x_i=sq_i.

Per-channel scales уменьшают часть ошибки, но добавляют metadata и требования kernel. Weight-only, weight-activation и KV-cache quantization — разные contracts. SmoothQuant переносит трудность activation outliers эквивалентным rescaling; обычный fixture ниже не является SmoothQuant. F11.

Что показывает модель. График показывает исходные значения, grid, codes и reconstruction error. Memory ledger обязан учитывать scales/zero-points/group metadata, а benchmark — фактически используемый kernel. Меньший файл без ускоренного kernel может не дать latency gain.

Граница применимости. Малый max error одного tensor не доказывает сохранение end-task quality. Ошибки проходят через много layers; calibration data может не покрыть deployment distribution. «INT8» не определяет scheme полностью, а «4-bit model» не сообщает group size, compute dtype и quantized components.

values_17e=[-1.0,0.2,0.9]; scale_17e=max(map(abs,values_17e))/127
codes_17e=[max(-127,min(127,round(value/scale_17e))) for value in values_17e]
restored_17e=[code*scale_17e for code in codes_17e]
max_error_17e=max(abs(a-b) for a,b in zip(values_17e,restored_17e))
assert codes_17e==[-127,25,114] and max_error_17e<scale_17e/2

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Quantization показывает code, scale и reconstruction error.

Что хранится во время ответа. Как этот вопрос продолжает полученный результат?

Python-примеры главы 17 Академическая база →