Summary
llama-quantize offers the ROCmFPx recipes but cannot produce them: the row-data validation rejects the very types it just wrote, so every FPx quantization aborts.
Reproduction
llama-quantize model-f16.gguf out.gguf Q6_0_ROCMFPX_AGENT
ggml_validate_row_data: invalid type 103
... (repeated per tensor)
llama_model_quantize: failed to quantize: quantized data validation failed
llama_quantize: failed to quantize model from '.../model-f16.gguf'
Exit code 1, output file truncated at ~11 MB.
Cause
ggml_validate_row_data() in ggml/src/ggml-quants.c only handles the two FP4 types:
case GGML_TYPE_Q4_0_ROCMFP4: // 100
case GGML_TYPE_Q4_0_ROCMFP4_FAST: // 101
The FPx family is not covered:
Q6_0_ROCMFPX = 102
Q8_0_ROCMFPX = 103
Q3_0_ROCMFPX = 104
Q2_0_ROCMFPX = 107
Commit e5b4bc02 ("rocmfp4: validate the FP4 row data instead of rejecting it as unknown") added the two FP4 cases; the FPx types were not carried along.
Q6_0_ROCMFPX_AGENT mixes Q8_0_ROCMFPX (103) into the sensitive tensors — which is exactly what makes it the agent/tool-call recipe — so it trips the gap immediately.
Scope
All recipes in the FPx family are affected, which includes every *_AGENT variant advertised in the quantize type list:
Q3_0_ROCMFPX Q3_0_ROCMFPX_AGENT
Q6_0_ROCMFPX Q6_0_ROCMFPX_AGENT Q6_0_ROCMFPX_LEAN
Q8_0_ROCMFPX Q8_0_ROCMFPX_AGENT Q6_0_ROCMFPX_AGENT_LEAN
Q2_0_ROCMFPX
They are selectable and documented, and none of them can be produced.
Fix
Extend ggml_validate_row_data() with the FPx types, following the shape of the two FP4 cases already there.
Summary
llama-quantizeoffers the ROCmFPx recipes but cannot produce them: the row-data validation rejects the very types it just wrote, so every FPx quantization aborts.Reproduction
Exit code 1, output file truncated at ~11 MB.
Cause
ggml_validate_row_data()inggml/src/ggml-quants.conly handles the two FP4 types:The FPx family is not covered:
Commit
e5b4bc02("rocmfp4: validate the FP4 row data instead of rejecting it as unknown") added the two FP4 cases; the FPx types were not carried along.Q6_0_ROCMFPX_AGENTmixesQ8_0_ROCMFPX(103) into the sensitive tensors — which is exactly what makes it the agent/tool-call recipe — so it trips the gap immediately.Scope
All recipes in the FPx family are affected, which includes every
*_AGENTvariant advertised in the quantize type list:They are selectable and documented, and none of them can be produced.
Fix
Extend
ggml_validate_row_data()with the FPx types, following the shape of the two FP4 cases already there.