tico 0.2.0.dev260708__tar.gz → 0.2.0.dev260709__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/PKG-INFO +1 -1
  2. tico-0.2.0.dev260709/tico/_version.py +1 -0
  3. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/adapters/gemma4.py +87 -10
  4. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/wrapper_smoke/cases/qwen3_vl.py +105 -16
  5. tico-0.2.0.dev260709/tico/quantization/recipes/override_policies.py +688 -0
  6. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/stages/ptq.py +7 -0
  7. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_model.py +134 -33
  8. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/utils.py +170 -9
  9. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico.egg-info/PKG-INFO +1 -1
  10. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico.egg-info/SOURCES.txt +1 -0
  11. tico-0.2.0.dev260708/tico/_version.py +0 -1
  12. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/LICENSE +0 -0
  13. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/README.md +0 -0
  14. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/pyproject.toml +0 -0
  15. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/setup.cfg +0 -0
  16. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/__init__.py +0 -0
  17. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/config/__init__.py +0 -0
  18. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/config/base.py +0 -0
  19. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/config/factory.py +0 -0
  20. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/config/v1.py +0 -0
  21. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/experimental/__init__.py +0 -0
  22. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/interpreter/__init__.py +0 -0
  23. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/interpreter/infer.py +0 -0
  24. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/interpreter/interpreter.py +0 -0
  25. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/__init__.py +0 -0
  26. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/cast_aten_where_arg_type.py +0 -0
  27. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/cast_clamp_mixed_type_args.py +0 -0
  28. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/cast_mixed_type_args.py +0 -0
  29. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/const_prop_pass.py +0 -0
  30. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/convert_conv1d_to_conv2d.py +0 -0
  31. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/convert_conv3d_to_conv2d.py +0 -0
  32. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/convert_expand_to_slice_cat.py +0 -0
  33. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/convert_gather_to_gather_nd.py +0 -0
  34. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/convert_layout_op_to_reshape.py +0 -0
  35. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/convert_matmul_to_linear.py +0 -0
  36. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/convert_repeat_to_expand_copy.py +0 -0
  37. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/convert_sym_size_to_circle_shape.py +0 -0
  38. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/convert_to_relu6.py +0 -0
  39. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/decompose_addmm.py +0 -0
  40. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/decompose_batch_norm.py +0 -0
  41. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/decompose_fake_quantize.py +0 -0
  42. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/decompose_fake_quantize_tensor_qparams.py +0 -0
  43. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/decompose_group_norm.py +0 -0
  44. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/decompose_grouped_conv2d.py +0 -0
  45. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/decompose_slice_scatter.py +0 -0
  46. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/eliminate_rank_round_trip_region.py +0 -0
  47. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/extract_dtype_kwargs.py +0 -0
  48. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/fill_meta_val.py +0 -0
  49. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/fuse_leading_unsqueeze_reshape.py +0 -0
  50. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/fuse_redundant_reshape_to_mean.py +0 -0
  51. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/legalize_causal_mask_value.py +0 -0
  52. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/legalize_predefined_layout_operators.py +0 -0
  53. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/lower_copy.py +0 -0
  54. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/lower_pow2_to_mul.py +0 -0
  55. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/lower_to_resize_nearest_neighbor.py +0 -0
  56. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/lower_to_slice.py +0 -0
  57. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/merge_consecutive_cat.py +0 -0
  58. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/ops.py +0 -0
  59. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/remove_nop.py +0 -0
  60. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/remove_redundant_assert_nodes.py +0 -0
  61. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/remove_redundant_expand.py +0 -0
  62. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/remove_redundant_permute.py +0 -0
  63. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/remove_redundant_reshape.py +0 -0
  64. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/remove_redundant_slice.py +0 -0
  65. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/remove_redundant_to_copy.py +0 -0
  66. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/remove_unused_placeholder.py +0 -0
  67. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/restore_linear.py +0 -0
  68. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/passes/segment_index_select.py +0 -0
  69. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/pt2_to_circle.py +0 -0
  70. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/__init__.py +0 -0
  71. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/__init__.py +0 -0
  72. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/cle/__init__.py +0 -0
  73. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/cle/cle.py +0 -0
  74. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/cle/quantizer.py +0 -0
  75. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/fpi_gptq/__init__.py +0 -0
  76. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/fpi_gptq/fpi_gptq.py +0 -0
  77. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/fpi_gptq/quantizer.py +0 -0
  78. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/fpi_gptq/util.py +0 -0
  79. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/gptq/__init__.py +0 -0
  80. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/gptq/gptq.py +0 -0
  81. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/gptq/quant.py +0 -0
  82. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/gptq/quantizer.py +0 -0
  83. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/gptq/utils.py +0 -0
  84. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/qwen3_vl_gptq/__init__.py +0 -0
  85. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/qwen3_vl_gptq/gptq.py +0 -0
  86. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/qwen3_vl_gptq/quantizer.py +0 -0
  87. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/qwen3_vl_gptq/utils.py +0 -0
  88. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/smoothquant/__init__.py +0 -0
  89. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/smoothquant/observer.py +0 -0
  90. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/smoothquant/quantizer.py +0 -0
  91. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/smoothquant/smooth_quant.py +0 -0
  92. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/spinquant/__init__.py +0 -0
  93. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/spinquant/fuse_norm_utils.py +0 -0
  94. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/spinquant/hadamard_utils.py +0 -0
  95. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/spinquant/quantizer.py +0 -0
  96. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/spinquant/qwen3_vl_model_utils.py +0 -0
  97. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/spinquant/qwen3_vl_quantizer.py +0 -0
  98. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/spinquant/qwen3_vl_rotation_utils.py +0 -0
  99. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/spinquant/rotation_utils.py +0 -0
  100. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/spinquant/spin_llama.py +0 -0
  101. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/algorithm/spinquant/spin_qwen3_vl.py +0 -0
  102. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/__init__.py +0 -0
  103. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/base.py +0 -0
  104. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/builders.py +0 -0
  105. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/cle.py +0 -0
  106. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/fpi_gptq.py +0 -0
  107. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/gemma4_builders.py +0 -0
  108. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/gptq.py +0 -0
  109. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/llama_attention.py +0 -0
  110. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/ptq.py +0 -0
  111. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/qwen3_vl_attention.py +0 -0
  112. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/qwen3_vl_gptq.py +0 -0
  113. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/qwen3_vl_spinquant.py +0 -0
  114. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/smoothquant.py +0 -0
  115. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/specs.py +0 -0
  116. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/spinquant.py +0 -0
  117. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/config/utils.py +0 -0
  118. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/__init__.py +0 -0
  119. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/backend.py +0 -0
  120. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/evaluate.py +0 -0
  121. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/executor/__init__.py +0 -0
  122. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/executor/backend_executor.py +0 -0
  123. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/executor/circle_executor.py +0 -0
  124. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/executor/triv24_executor.py +0 -0
  125. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/hellaswag_eval_utils.py +0 -0
  126. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/llava_bench_judge_eval_utils.py +0 -0
  127. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/lmms_eval_utils.py +0 -0
  128. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/lmms_tasks/videomme_mini/utils.py +0 -0
  129. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/metric.py +0 -0
  130. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/mmlu_eval_utils.py +0 -0
  131. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/mmmu_eval_utils.py +0 -0
  132. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/optional_deps.py +0 -0
  133. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/script/llm_tasks_eval.py +0 -0
  134. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/script/mini_vqa_eval.py +0 -0
  135. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/utils.py +0 -0
  136. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/evaluation/vlm_eval_utils.py +0 -0
  137. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/examples/__init__.py +0 -0
  138. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/examples/configs/__init__.py +0 -0
  139. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/examples/evaluate.py +0 -0
  140. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/examples/inspector.py +0 -0
  141. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/examples/quantize.py +0 -0
  142. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/passes/__init__.py +0 -0
  143. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/passes/fold_quant_ops.py +0 -0
  144. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/passes/insert_quantize_on_dtype_mismatch.py +0 -0
  145. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/passes/propagate_qparam_backward.py +0 -0
  146. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/passes/propagate_qparam_forward.py +0 -0
  147. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/passes/qparam_safe_const_prop.py +0 -0
  148. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/passes/quantize_bias.py +0 -0
  149. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/passes/remove_weight_dequant_op.py +0 -0
  150. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/public_interface.py +0 -0
  151. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/quantizer.py +0 -0
  152. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/quantizer_registry.py +0 -0
  153. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/__init__.py +0 -0
  154. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/adapters/__init__.py +0 -0
  155. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/adapters/base.py +0 -0
  156. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/adapters/llama.py +0 -0
  157. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/adapters/qwen3_vl.py +0 -0
  158. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/config.py +0 -0
  159. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/context.py +0 -0
  160. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/data/__init__.py +0 -0
  161. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/data/llm.py +0 -0
  162. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/data/vlm.py +0 -0
  163. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/__init__.py +0 -0
  164. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/static_gemma4_runtime.py +0 -0
  165. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/static_llama_runtime.py +0 -0
  166. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/static_qwen3_vl_runtime.py +0 -0
  167. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/tied_embedding.py +0 -0
  168. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/trace.py +0 -0
  169. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/wrapper_smoke/__init__.py +0 -0
  170. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/wrapper_smoke/case.py +0 -0
  171. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/wrapper_smoke/cases/__init__.py +0 -0
  172. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/wrapper_smoke/cases/gemma4.py +0 -0
  173. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/wrapper_smoke/cases/llama.py +0 -0
  174. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/wrapper_smoke/cases/nn.py +0 -0
  175. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/wrapper_smoke/registry.py +0 -0
  176. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/wrapper_smoke/result.py +0 -0
  177. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/wrapper_smoke/runner.py +0 -0
  178. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/debug/wrapper_smoke/utils.py +0 -0
  179. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/evaluation/__init__.py +0 -0
  180. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/evaluation/hellaswag.py +0 -0
  181. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/evaluation/llava_bench_judge.py +0 -0
  182. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/evaluation/llm.py +0 -0
  183. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/evaluation/mmlu.py +0 -0
  184. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/evaluation/mmmu.py +0 -0
  185. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/evaluation/video_mme.py +0 -0
  186. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/evaluation/vlm.py +0 -0
  187. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/export/__init__.py +0 -0
  188. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/export/checkpoint.py +0 -0
  189. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/export/circle.py +0 -0
  190. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/export/llama.py +0 -0
  191. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/qparams.py +0 -0
  192. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/runner.py +0 -0
  193. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/stages/__init__.py +0 -0
  194. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/stages/base.py +0 -0
  195. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/stages/cle.py +0 -0
  196. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/stages/gptq.py +0 -0
  197. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/stages/smoothquant.py +0 -0
  198. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/stages/spinquant.py +0 -0
  199. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/recipes/utils.py +0 -0
  200. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/__init__.py +0 -0
  201. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/dtypes.py +0 -0
  202. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/__init__.py +0 -0
  203. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/compare_ppl.py +0 -0
  204. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/debug_quant_outputs.py +0 -0
  205. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/evaluate_fk_llama_model.py +0 -0
  206. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/gemma4/__init__.py +0 -0
  207. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/gemma4/quantize_for_causal_lm.py +0 -0
  208. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/gemma4/quantize_for_conditional_generation.py +0 -0
  209. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/gemma4/quantize_model.py +0 -0
  210. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/gemma4/quantize_multimodal_embedder.py +0 -0
  211. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/gemma4/quantize_text_scaled_word_embedding.py +0 -0
  212. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/gemma4/quantize_vision_model.py +0 -0
  213. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/gemma4/quantize_vision_patch_embedder.py +0 -0
  214. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/gemma4/quantize_vision_pooler.py +0 -0
  215. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/llama/__init__.py +0 -0
  216. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/llama/quantize_attention_decode.py +0 -0
  217. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/llama/quantize_attention_prefill.py +0 -0
  218. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/llama/quantize_decoder_layer_decode.py +0 -0
  219. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/llama/quantize_decoder_layer_prefill.py +0 -0
  220. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/llama/quantize_mlp.py +0 -0
  221. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/nn/__init__.py +0 -0
  222. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/nn/quantize_conv3d.py +0 -0
  223. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/nn/quantize_conv3d_special_case.py +0 -0
  224. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/nn/quantize_layernorm.py +0 -0
  225. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/nn/quantize_linear.py +0 -0
  226. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/nn/quantize_tied_embedding.py +0 -0
  227. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/quantize_full_qmodel_with_gptq.py +0 -0
  228. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/quantize_qwen3_vl_with_gptq.py +0 -0
  229. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/quantize_with_gptq.py +0 -0
  230. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/qwen/__init__.py +0 -0
  231. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/qwen/quantize_for_conditional_generation.py +0 -0
  232. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/qwen/quantize_model.py +0 -0
  233. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/qwen/quantize_text_attention.py +0 -0
  234. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/qwen/quantize_text_decoder_layer.py +0 -0
  235. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/qwen/quantize_text_mlp.py +0 -0
  236. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/qwen/quantize_text_model.py +0 -0
  237. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/qwen/quantize_vision_attention.py +0 -0
  238. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/qwen/quantize_vision_block.py +0 -0
  239. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/qwen/quantize_vision_mlp.py +0 -0
  240. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/qwen/quantize_vision_model.py +0 -0
  241. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/qwen/quantize_vision_patch_embed.py +0 -0
  242. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/qwen/quantize_vision_patch_merger.py +0 -0
  243. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/qwen/trace_qwen.py +0 -0
  244. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/examples/static_llama_layer_runtime.py +0 -0
  245. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/mode.py +0 -0
  246. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/observers/__init__.py +0 -0
  247. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/observers/affine_base.py +0 -0
  248. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/observers/base.py +0 -0
  249. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/observers/ema.py +0 -0
  250. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/observers/identity.py +0 -0
  251. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/observers/minmax.py +0 -0
  252. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/observers/mx.py +0 -0
  253. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/qscheme.py +0 -0
  254. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/quantizer.py +0 -0
  255. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/utils/__init__.py +0 -0
  256. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/utils/check_missing_qparam.py +0 -0
  257. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/utils/introspection.py +0 -0
  258. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/utils/metrics.py +0 -0
  259. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/utils/reduce_utils.py +0 -0
  260. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/utils/utils.py +0 -0
  261. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/utils/version.py +0 -0
  262. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrap_helper.py +0 -0
  263. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/__init__.py +0 -0
  264. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/fairseq/__init__.py +0 -0
  265. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/fairseq/decoder_export_single_step.py +0 -0
  266. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/fairseq/quant_decoder.py +0 -0
  267. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/fairseq/quant_decoder_layer.py +0 -0
  268. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/fairseq/quant_encoder.py +0 -0
  269. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/fairseq/quant_encoder_layer.py +0 -0
  270. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/fairseq/quant_mha.py +0 -0
  271. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/__init__.py +0 -0
  272. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/export_adapters.py +0 -0
  273. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_clippable_linear.py +0 -0
  274. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_for_causal_lm.py +0 -0
  275. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_for_conditional_generation.py +0 -0
  276. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_multimodal_embedder.py +0 -0
  277. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_rmsnorm.py +0 -0
  278. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_text_attention.py +0 -0
  279. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_text_decoder_layer.py +0 -0
  280. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_text_mlp.py +0 -0
  281. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_text_model.py +0 -0
  282. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_text_scaled_word_embedding.py +0 -0
  283. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_vision_attention.py +0 -0
  284. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_vision_encoder.py +0 -0
  285. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_vision_encoder_layer.py +0 -0
  286. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_vision_mlp.py +0 -0
  287. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_vision_model.py +0 -0
  288. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_vision_patch_embedder.py +0 -0
  289. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/gemma4/quant_vision_pooler.py +0 -0
  290. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/llama/__init__.py +0 -0
  291. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/llama/export_adapters.py +0 -0
  292. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/llama/quant_attention.py +0 -0
  293. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/llama/quant_decoder_layer.py +0 -0
  294. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/llama/quant_mlp.py +0 -0
  295. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/llama/quant_model.py +0 -0
  296. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/llama/quant_model_for_causal_lm.py +0 -0
  297. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/nn/__init__.py +0 -0
  298. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/nn/quant_conv3d.py +0 -0
  299. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/nn/quant_conv3d_decomposed.py +0 -0
  300. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/nn/quant_embedding.py +0 -0
  301. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/nn/quant_layernorm.py +0 -0
  302. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/nn/quant_linear.py +0 -0
  303. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/nn/quant_silu.py +0 -0
  304. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/ops/__init__.py +0 -0
  305. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/ops/quant_rmsnorm.py +0 -0
  306. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/ptq_wrapper.py +0 -0
  307. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/quant_elementwise.py +0 -0
  308. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/quant_module_base.py +0 -0
  309. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/qwen_vl/export_adapters.py +0 -0
  310. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/qwen_vl/quant_for_conditional_generation.py +0 -0
  311. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/qwen_vl/quant_model.py +0 -0
  312. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/qwen_vl/quant_text_attention.py +0 -0
  313. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/qwen_vl/quant_text_decoder_layer.py +0 -0
  314. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/qwen_vl/quant_text_mlp.py +0 -0
  315. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/qwen_vl/quant_text_model.py +0 -0
  316. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/qwen_vl/quant_vision_attention.py +0 -0
  317. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/qwen_vl/quant_vision_block.py +0 -0
  318. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/qwen_vl/quant_vision_mlp.py +0 -0
  319. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/qwen_vl/quant_vision_model.py +0 -0
  320. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/qwen_vl/quant_vision_patch_embed.py +0 -0
  321. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/qwen_vl/quant_vision_patch_merger.py +0 -0
  322. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/quantization/wrapq/wrappers/registry.py +0 -0
  323. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/__init__.py +0 -0
  324. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/circle_graph.py +0 -0
  325. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/circle_mapping.py +0 -0
  326. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/circle_serializer.py +0 -0
  327. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/__init__.py +0 -0
  328. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/adapters/__init__.py +0 -0
  329. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/adapters/llama_rmsnorm.py +0 -0
  330. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/adapters/onert/__init__.py +0 -0
  331. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/adapters/onert/llama_attention.py +0 -0
  332. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/hashable_opcode.py +0 -0
  333. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/node_visitor.py +0 -0
  334. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_abs.py +0 -0
  335. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_add.py +0 -0
  336. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_alias_copy.py +0 -0
  337. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_any.py +0 -0
  338. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_arange_start_step.py +0 -0
  339. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_argmax.py +0 -0
  340. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_attention.py +0 -0
  341. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_avg_pool2d.py +0 -0
  342. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_bmm.py +0 -0
  343. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_cat.py +0 -0
  344. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_circle_gather_nd.py +0 -0
  345. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_circle_shape.py +0 -0
  346. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_clamp.py +0 -0
  347. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_clone.py +0 -0
  348. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_constant_pad_nd.py +0 -0
  349. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_conv2d.py +0 -0
  350. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_cos.py +0 -0
  351. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_cumsum.py +0 -0
  352. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_depthwise_conv2d.py +0 -0
  353. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_dequantize_per_channel.py +0 -0
  354. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_dequantize_per_tensor.py +0 -0
  355. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_div.py +0 -0
  356. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_elu.py +0 -0
  357. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_embedding.py +0 -0
  358. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_eq.py +0 -0
  359. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_exp.py +0 -0
  360. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_expand.py +0 -0
  361. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_full.py +0 -0
  362. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_full_like.py +0 -0
  363. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_ge.py +0 -0
  364. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_gelu.py +0 -0
  365. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_gt.py +0 -0
  366. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_index.py +0 -0
  367. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_index_select.py +0 -0
  368. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_instance_norm.py +0 -0
  369. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_le.py +0 -0
  370. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_leaky_relu.py +0 -0
  371. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_linear.py +0 -0
  372. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_log.py +0 -0
  373. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_log1p.py +0 -0
  374. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_logical_and.py +0 -0
  375. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_logical_not.py +0 -0
  376. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_lt.py +0 -0
  377. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_max_dim.py +0 -0
  378. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_max_pool2d_with_indices.py +0 -0
  379. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_maximum.py +0 -0
  380. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_mean.py +0 -0
  381. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_minimum.py +0 -0
  382. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_mm.py +0 -0
  383. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_mul.py +0 -0
  384. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_ne.py +0 -0
  385. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_neg.py +0 -0
  386. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_permute.py +0 -0
  387. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_pow.py +0 -0
  388. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_prelu.py +0 -0
  389. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_quantize_per_tensor.py +0 -0
  390. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_reciprocal.py +0 -0
  391. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_relu.py +0 -0
  392. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_relu6.py +0 -0
  393. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_repeat.py +0 -0
  394. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_reshape.py +0 -0
  395. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_resize_nearest_neighbor.py +0 -0
  396. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_rmsnorm.py +0 -0
  397. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_round.py +0 -0
  398. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_rsqrt.py +0 -0
  399. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_scalar_tensor.py +0 -0
  400. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_select_copy.py +0 -0
  401. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_sigmoid.py +0 -0
  402. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_sin.py +0 -0
  403. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_slice.py +0 -0
  404. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_softmax.py +0 -0
  405. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_split_with_sizes.py +0 -0
  406. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_sqrt.py +0 -0
  407. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_squeeze.py +0 -0
  408. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_sub.py +0 -0
  409. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_sum.py +0 -0
  410. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_tanh.py +0 -0
  411. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_to_copy.py +0 -0
  412. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_transpose_conv.py +0 -0
  413. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_unsqueeze.py +0 -0
  414. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_view.py +0 -0
  415. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/op_where.py +0 -0
  416. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/operators/utils.py +0 -0
  417. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/pack.py +0 -0
  418. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/serialize/quant_param.py +0 -0
  419. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/__init__.py +0 -0
  420. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/compat/__init__.py +0 -0
  421. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/compat/torch.py +0 -0
  422. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/compat/transformers.py +0 -0
  423. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/convert.py +0 -0
  424. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/define.py +0 -0
  425. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/diff_graph.py +0 -0
  426. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/dtype.py +0 -0
  427. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/errors.py +0 -0
  428. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/graph.py +0 -0
  429. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/installed_packages.py +0 -0
  430. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/logging.py +0 -0
  431. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/model.py +0 -0
  432. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/mx/__init__.py +0 -0
  433. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/mx/dtypes.py +0 -0
  434. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/mx/elemwise_ops.py +0 -0
  435. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/mx/formats.py +0 -0
  436. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/mx/mx_ops.py +0 -0
  437. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/padding.py +0 -0
  438. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/passes.py +0 -0
  439. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/pytree_utils.py +0 -0
  440. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/record_input.py +0 -0
  441. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/register_custom_op.py +0 -0
  442. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/serialize.py +0 -0
  443. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/signature.py +0 -0
  444. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/trace_decorators.py +0 -0
  445. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/utils.py +0 -0
  446. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/validate_args_kwargs.py +0 -0
  447. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico/utils/version.py +0 -0
  448. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico.egg-info/dependency_links.txt +0 -0
  449. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico.egg-info/entry_points.txt +0 -0
  450. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico.egg-info/requires.txt +0 -0
  451. {tico-0.2.0.dev260708 → tico-0.2.0.dev260709}/tico.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tico
3
- Version: 0.2.0.dev260708
3
+ Version: 0.2.0.dev260709
4
4
  Summary: Convert Exported Torch Module To Circle
5
5
  License: This file provides full text of licenses used in this project
6
6
 
@@ -0,0 +1 @@
1
+ __version__ = "0.2.0.dev260709"
@@ -12,7 +12,8 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import Any, Mapping, Sequence
15
+ from contextlib import contextmanager
16
+ from typing import Any, Iterator, Mapping, Sequence
16
17
 
17
18
  import torch
18
19
  import tqdm
@@ -111,19 +112,95 @@ class Gemma4Adapter(ModelAdapter):
111
112
  if text_config is not None and hasattr(text_config, "use_cache"):
112
113
  text_config.use_cache = False
113
114
 
115
+ @staticmethod
116
+ def _static_calibration_image_size(
117
+ cfg: Mapping[str, Any],
118
+ ) -> tuple[int, int] | None:
119
+ """Return the configured static image size for calibration samples."""
120
+ model_args = cfg.get("model_args", {})
121
+ if not isinstance(model_args, Mapping):
122
+ return None
123
+
124
+ vision_cfg = model_args.get("vision", {})
125
+ if not isinstance(vision_cfg, Mapping):
126
+ return None
127
+
128
+ height = vision_cfg.get("image_height")
129
+ width = vision_cfg.get("image_width")
130
+ if height is None and width is None:
131
+ return None
132
+ if height is None or width is None:
133
+ raise ValueError(
134
+ "Both model_args.vision.image_height and "
135
+ "model_args.vision.image_width must be set for static Gemma4 "
136
+ "calibration resizing."
137
+ )
138
+
139
+ parsed_height = int(height)
140
+ parsed_width = int(width)
141
+ if parsed_height <= 0 or parsed_width <= 0:
142
+ raise ValueError(
143
+ "Gemma4 static calibration image dimensions must be positive: "
144
+ f"image_height={parsed_height}, image_width={parsed_width}."
145
+ )
146
+ return parsed_height, parsed_width
147
+
148
+ @staticmethod
149
+ @contextmanager
150
+ def _fixed_image_processor_size(
151
+ processor: Any,
152
+ image_size: tuple[int, int] | None,
153
+ ) -> Iterator[None]:
154
+ """Temporarily force processor image resizing for static calibration."""
155
+ if image_size is None:
156
+ yield
157
+ return
158
+
159
+ image_processor = getattr(processor, "image_processor", None)
160
+ if image_processor is None:
161
+ yield
162
+ return
163
+
164
+ height, width = image_size
165
+ updates: dict[str, Any] = {
166
+ "do_resize": True,
167
+ "size": {"height": height, "width": width},
168
+ }
169
+ if hasattr(image_processor, "crop_size"):
170
+ updates["crop_size"] = {"height": height, "width": width}
171
+
172
+ originals: dict[str, tuple[bool, Any]] = {}
173
+ for attr, value in updates.items():
174
+ originals[attr] = (
175
+ hasattr(image_processor, attr),
176
+ getattr(image_processor, attr, None),
177
+ )
178
+ setattr(image_processor, attr, value)
179
+
180
+ try:
181
+ yield
182
+ finally:
183
+ for attr, (had_attr, original) in originals.items():
184
+ if had_attr:
185
+ setattr(image_processor, attr, original)
186
+ elif hasattr(image_processor, attr):
187
+ delattr(image_processor, attr)
188
+
114
189
  def build_calibration_inputs(self, ctx: RecipeContext) -> list[dict]:
115
190
  """Build VLM calibration inputs for fixed image-text PTQ."""
116
191
  calib = ctx.cfg.get("calibration", {})
117
192
  runtime = ctx.cfg.get("runtime", {})
118
- return build_vlm_calibration_inputs(
119
- processor=ctx.processor,
120
- dataset=calib.get("dataset", "vqav2"),
121
- datasets=calib.get("datasets"),
122
- n_samples=int(calib.get("n_samples", 128)),
123
- split=calib.get("split", "testdev"),
124
- max_seq_len=calib.get("seq_len"),
125
- seed=int(runtime.get("seed", 42)),
126
- )
193
+ image_size = self._static_calibration_image_size(ctx.cfg)
194
+ with self._fixed_image_processor_size(ctx.processor, image_size):
195
+ return build_vlm_calibration_inputs(
196
+ processor=ctx.processor,
197
+ dataset=calib.get("dataset", "vqav2"),
198
+ datasets=calib.get("datasets"),
199
+ n_samples=int(calib.get("n_samples", 128)),
200
+ split=calib.get("split", "testdev"),
201
+ max_seq_len=calib.get("seq_len"),
202
+ seed=int(runtime.get("seed", 42)),
203
+ )
127
204
 
128
205
  def forward_calibration(
129
206
  self,
@@ -464,14 +464,14 @@ class QwenTextMLPCase(QwenBaseCase):
464
464
  return ForwardInput((torch.randn(2, 8, self.text_cfg.hidden_size),))
465
465
 
466
466
 
467
- class QwenTextDecoderLayerCase(QwenBaseCase):
468
- """Smoke case for qwen/quantize_text_decoder_layer.py."""
467
+ class QwenTextDecoderLayerBaseCase(QwenBaseCase):
468
+ """Base class for Qwen3-VL text decoder-layer smoke cases."""
469
469
 
470
- name = "qwen3_vl_text_decoder_layer"
471
- description = "Quantize one tiny Qwen3-VL text decoder layer."
472
- tags = ("qwen3_vl", "text", "decoder_layer")
470
+ tags: tuple[str, ...] = ("qwen3_vl", "text", "decoder_layer")
473
471
  max_mean_abs_diff = 3.0
474
472
  inplace_convert = True
473
+ seq_len = 8
474
+ export_mode = "prefill"
475
475
 
476
476
  def build(self, cfg: Mapping[str, Any]) -> tuple[torch.nn.Module, torch.nn.Module]:
477
477
  """Build a tiny text decoder layer and reference copy."""
@@ -484,16 +484,92 @@ class QwenTextDecoderLayerCase(QwenBaseCase):
484
484
  module = Qwen3VLTextDecoderLayer(self.text_cfg, layer_idx=0).eval()
485
485
  return module, clone_module(module)
486
486
 
487
+ def export_module(
488
+ self, quantized: torch.nn.Module, cfg: Mapping[str, Any]
489
+ ) -> torch.nn.Module:
490
+ """Export the wrapped text decoder layer in the case-specific mode."""
491
+ wrapped = getattr(quantized, "wrapped", quantized)
492
+ return (
493
+ wrapped.as_export_module(self.export_mode).eval()
494
+ if hasattr(wrapped, "as_export_module")
495
+ else quantized
496
+ )
497
+
498
+
499
+ class QwenTextDecoderLayerPrefillCase(QwenTextDecoderLayerBaseCase):
500
+ """Smoke case for the Qwen3-VL text decoder-layer prefill wrapper path."""
501
+
502
+ name = "qwen3_vl_text_decoder_layer_prefill"
503
+ description = "Quantize one tiny Qwen3-VL text decoder layer in prefill mode."
504
+ tags = ("qwen3_vl", "text", "decoder_layer", "prefill")
505
+ export_mode = "prefill"
506
+
487
507
  def _sample(self) -> ForwardInput:
488
- """Create one synthetic text decoder-layer input."""
489
- seq_len = 8
490
- hidden = torch.randn(1, seq_len, self.text_cfg.hidden_size)
491
- pos = (
492
- torch.randn(1, seq_len, self.text_cfg.head_dim),
493
- torch.randn(1, seq_len, self.text_cfg.head_dim),
508
+ """Create one synthetic text decoder-layer prefill input."""
509
+ hidden = torch.randn(1, self.seq_len, self.text_cfg.hidden_size)
510
+ pos = _text_rope(1, self.seq_len, self.text_cfg.head_dim)
511
+ mask = _causal_mask(self.seq_len)
512
+ position_ids = torch.arange(self.seq_len).unsqueeze(0)
513
+ return ForwardInput(
514
+ (),
515
+ {
516
+ "hidden_states": hidden,
517
+ "position_embeddings": pos,
518
+ "attention_mask": mask,
519
+ "position_ids": position_ids,
520
+ },
494
521
  )
495
- mask = torch.zeros(1, 1, seq_len, seq_len)
496
- position_ids = torch.arange(seq_len).unsqueeze(0)
522
+
523
+ def calibration_inputs(
524
+ self, prepared: torch.nn.Module, cfg: Mapping[str, Any]
525
+ ) -> list[ForwardInput]:
526
+ """Create text decoder-layer prefill calibration samples."""
527
+ return [self._sample() for _ in range(5)]
528
+
529
+ def eval_input(
530
+ self, prepared: torch.nn.Module, cfg: Mapping[str, Any]
531
+ ) -> ForwardInput:
532
+ """Create the text decoder-layer prefill evaluation sample."""
533
+ return self._sample()
534
+
535
+ def export_input(
536
+ self, eval_sample: ForwardInput, cfg: Mapping[str, Any]
537
+ ) -> ForwardInput:
538
+ """Create positional prefill inputs expected by the export adapter."""
539
+ hidden = eval_sample.kwargs["hidden_states"]
540
+ mask = eval_sample.kwargs["attention_mask"]
541
+ pos = eval_sample.kwargs["position_embeddings"]
542
+ return ForwardInput((hidden, mask, pos))
543
+
544
+
545
+ class QwenTextDecoderLayerDecodeCase(QwenTextDecoderLayerBaseCase):
546
+ """Smoke case for the Qwen3-VL text decoder-layer decode wrapper path."""
547
+
548
+ name = "qwen3_vl_text_decoder_layer_decode"
549
+ description = "Quantize one tiny Qwen3-VL text decoder layer in static decode mode."
550
+ tags = ("qwen3_vl", "text", "decoder_layer", "decode")
551
+ compare_reference_source = "prepared"
552
+ export_mode = "decode"
553
+
554
+ def after_prepare(self, prepared: torch.nn.Module, cfg: Mapping[str, Any]) -> None:
555
+ """Force tuple return so hidden states and cache tensors are available."""
556
+ wrapped = getattr(prepared, "wrapped", prepared)
557
+ if hasattr(wrapped, "return_type"):
558
+ wrapped.return_type = "tuple"
559
+
560
+ def _sample(self) -> ForwardInput:
561
+ """Create one synthetic static decode text decoder-layer input."""
562
+ hidden = torch.randn(1, 1, self.text_cfg.hidden_size)
563
+ pos = _text_rope(1, 1, self.text_cfg.head_dim)
564
+ mask = torch.zeros(1, 1, 1, self.seq_len)
565
+ position_ids = torch.full((1, 1), self.seq_len - 1, dtype=torch.long)
566
+ past_k = torch.randn(
567
+ 1,
568
+ self.text_cfg.num_key_value_heads,
569
+ self.seq_len - 1,
570
+ self.text_cfg.head_dim,
571
+ )
572
+ past_v = torch.randn_like(past_k)
497
573
  return ForwardInput(
498
574
  (),
499
575
  {
@@ -501,21 +577,33 @@ class QwenTextDecoderLayerCase(QwenBaseCase):
501
577
  "position_embeddings": pos,
502
578
  "attention_mask": mask,
503
579
  "position_ids": position_ids,
580
+ "past_key_values": (past_k, past_v),
581
+ "use_cache": True,
504
582
  },
505
583
  )
506
584
 
507
585
  def calibration_inputs(
508
586
  self, prepared: torch.nn.Module, cfg: Mapping[str, Any]
509
587
  ) -> list[ForwardInput]:
510
- """Create text decoder-layer calibration samples."""
588
+ """Create text decoder-layer decode calibration samples."""
511
589
  return [self._sample() for _ in range(3)]
512
590
 
513
591
  def eval_input(
514
592
  self, prepared: torch.nn.Module, cfg: Mapping[str, Any]
515
593
  ) -> ForwardInput:
516
- """Create the text decoder-layer evaluation sample."""
594
+ """Create the text decoder-layer decode evaluation sample."""
517
595
  return self._sample()
518
596
 
597
+ def export_input(
598
+ self, eval_sample: ForwardInput, cfg: Mapping[str, Any]
599
+ ) -> ForwardInput:
600
+ """Create positional static decode inputs expected by the export adapter."""
601
+ hidden = eval_sample.kwargs["hidden_states"]
602
+ mask = eval_sample.kwargs["attention_mask"]
603
+ pos = eval_sample.kwargs["position_embeddings"]
604
+ past = eval_sample.kwargs["past_key_values"]
605
+ return ForwardInput((hidden, mask, pos, past))
606
+
519
607
 
520
608
  class QwenTextModelCase(QwenBaseCase):
521
609
  """Smoke case for qwen/quantize_text_model.py."""
@@ -871,7 +959,8 @@ QWEN3_VL_CASES: tuple[WrapperSmokeCase, ...] = (
871
959
  QwenTextAttentionPrefillCase(),
872
960
  QwenTextAttentionDecodeCase(),
873
961
  QwenTextMLPCase(),
874
- QwenTextDecoderLayerCase(),
962
+ QwenTextDecoderLayerPrefillCase(),
963
+ QwenTextDecoderLayerDecodeCase(),
875
964
  QwenTextModelCase(),
876
965
  QwenVisionAttentionCase(),
877
966
  QwenVisionMLPCase(),