Thank you for your review!
**Q1: The proposed method has limitations and may not be easily applicable to activation quantization in LLM. During inference, the memory accesses for activations also take a large amount of time.**
**A1**: If the batchsize is 1, for example LLM use for a single user, the activations for Llama 2 7B are 4000x smaller than the weight matrix. So for this case, the activation just take 0.025% of overhead. For larger batch sizes, the activations are a larger overhead, but even for batch sizes common in deployments, like ChatGPT, loading the activations for a 7B model would only account for at most about 7% of overhead. As such, this limitation is not a big one.
**Q2: The unstructured sparse pattern of the outliers is not very friendly to GPUs, and this will impose significant overhead on the computation.**
**A2**: We measured the overhead and still provide faster inference than a unquantized model. So yes, there is an overhead, but inference is still fast. With the right implementation, for a 7B model, we could generate about 115 tokens per second on a single RTX 4090 consumer GPU. As such, this would still be fast enough to be practical. Thus, there is no significant practical disadvantage to having the sparse structure.
**Q3: [...] weight outliers are stored with the Run-Length Coding [...] group-wise outliers used in the proposed method? Or only save individual outliers? For the two types of outliers, do they both use the same format to store?**
**A3**: We use the run-length coding for all outliers. This means both the grouped outliers and sparse ones identified in our analysis are quantized in the same way. The group-wise outliers only make up about 0.1 to 0.2% of total weights. As such, having a separate encoding just for these outliers is not very beneficial since the efficiency gains would be minimal.
**Q4: As for the weights in multi-head attention and the MLP, is there any difference when quantizing those weights? Or they are all the same?**
**A4**: We did not study this question in this work, but we studied this before (unpublished results) and we found that essentially the performance per weights is approximately the same. Since MLP layers have in total more weights than all attention layers, this means that MLP layers as a whole have slightly more importance. But for individual parameters in the weights, the importance is roughly the same. As such, there is no major difference between quantizing multi-head attention and MLP layer weights. We see some difference in outliers distribution, but these are small and only account for less than 1% of all quantized values.
**Q5: Did you compare the model accuracy and the real speedup with the 8-bit weight quantization methods? I just wanna if it is worth quantizing the weights to 4-bit with such a large overhead from the unstructured sparse outliers.**
**A5**: Our method should be about 2x slower than 8-bit methods, but reduces memory by more than 2x times. As such, this method is best used for very large models that are difficult to use. For example, our method is ideal for a 7B model on mobile devices, or a 13B model on laptops, or a 65B model on consumer GPUs. 8-bit methods are more suitable when one runs large batch sizes, such when a company deploys LLMs in production since they usually do not have memory problems because LLMs are distributed across 8 GPUs.
**Q6: Can you compare the performance between the quantized GEMM with 4-bit SpQR and the quantized GEMM with a normal 4-bit weight quantization method? [...]**
**A6**: The currently best methods for 4-bit quantization are about 3.5x faster than 16-bit methods. SpQR is 1.15x faster than 16-bit methods. As such 4-bit quantization without outliers is up to 3.04x faster than SpQR. However, the performance of SpQR is much better while also compressing the model more strongly, that is close to 3.4 bits per parameter on average. For example, at 3.4 bit the memory savings compared to 4-bit techniques are about 1.3x better and the performance gap in terms of perplexity between 16-bit and 4-bit methods is halved. Taking these factors into consideration, SpQR is pretty close in speed to other methods, because one would need more bits (~5 bits) to achieve similar performance which is about 50% more GPU memory. So for example, SpQR enables to run Falcon 180B on a single GPU, but to get the same performance with regular quantization methods one would need to use two GPUs to fit this model. Since models keep increasing in scale over time, the memory benefit is an important factor.