onecomp 1.3.2__tar.gz → 1.3.4__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 (319) hide show
  1. {onecomp-1.3.2/onecomp.egg-info → onecomp-1.3.4}/PKG-INFO +7 -2
  2. {onecomp-1.3.2 → onecomp-1.3.4}/README.md +6 -1
  3. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/__version__.py +1 -1
  4. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/_lpcd_config.py +3 -2
  5. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/model_config.py +9 -2
  6. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/qep/_qep_config.py +2 -2
  7. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/qep/_quantize_with_qep_arch.py +11 -4
  8. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantized_model_loader.py +12 -17
  9. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/_quantizer.py +26 -6
  10. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/gptq/gptq_layer.py +0 -6
  11. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/runner.py +9 -0
  12. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/blockwise.py +78 -2
  13. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/unfuse_moe.py +7 -2
  14. {onecomp-1.3.2 → onecomp-1.3.4/onecomp.egg-info}/PKG-INFO +7 -2
  15. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp.egg-info/SOURCES.txt +1 -0
  16. onecomp-1.3.4/scripts/prepare_calibration_cache.py +284 -0
  17. {onecomp-1.3.2 → onecomp-1.3.4}/LICENSE +0 -0
  18. {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/llama3-8b-gptq/quant_benchmark.py +0 -0
  19. {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/llama3-8b-jointq/quant_benchmark.py +0 -0
  20. {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/llama3-8b-lpcd-gptq/quant_benchmark.py +0 -0
  21. {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/llama3-8b-qep-gptq/quant_benchmark.py +0 -0
  22. {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/llama3-8b-various/quant_benchmark.py +0 -0
  23. {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/qwen3-14b-gptq/quant_benchmark.py +0 -0
  24. {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/qwen3-14b-jointq/quant_benchmark.py +0 -0
  25. {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/qwen3-8b-gptq/quant_benchmark.py +0 -0
  26. {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/qwen3-8b-jointq/quant_benchmark.py +0 -0
  27. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/__init__.py +0 -0
  28. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/api/__init__.py +0 -0
  29. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/api/jobs.py +0 -0
  30. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/constants.py +0 -0
  31. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/core/__init__.py +0 -0
  32. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/core/config.py +0 -0
  33. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/core/database.py +0 -0
  34. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/main.py +0 -0
  35. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/models/__init__.py +0 -0
  36. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/models/job.py +0 -0
  37. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/schemas/__init__.py +0 -0
  38. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/schemas/job.py +0 -0
  39. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/services/__init__.py +0 -0
  40. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/services/huggingface.py +0 -0
  41. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/services/inference.py +0 -0
  42. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/services/job_store.py +0 -0
  43. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/worker/__init__.py +0 -0
  44. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/worker/celery_app.py +0 -0
  45. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/worker/tasks.py +0 -0
  46. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/cpu_patch.py +0 -0
  47. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/start_backend.py +0 -0
  48. {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/start_worker.py +0 -0
  49. {onecomp-1.3.2 → onecomp-1.3.4}/envs/vllm/v0_24_0_rocm/src/onecomp_vllm_v0_24_0_rocm/__init__.py +0 -0
  50. {onecomp-1.3.2 → onecomp-1.3.4}/envs/vllm/v0_24_0_rocm/src/onecomp_vllm_v0_24_0_rocm/patch.py +0 -0
  51. {onecomp-1.3.2 → onecomp-1.3.4}/example/cpu_inference/example_gptq_gguf_cpu.py +0 -0
  52. {onecomp-1.3.2 → onecomp-1.3.4}/example/cpu_inference/example_mixed_gptq_gguf_cpu.py +0 -0
  53. {onecomp-1.3.2 → onecomp-1.3.4}/example/cpu_inference/example_serve_cpu.py +0 -0
  54. {onecomp-1.3.2 → onecomp-1.3.4}/example/example_auto_run.py +0 -0
  55. {onecomp-1.3.2 → onecomp-1.3.4}/example/example_autobit.py +0 -0
  56. {onecomp-1.3.2 → onecomp-1.3.4}/example/example_custom_calibration.py +0 -0
  57. {onecomp-1.3.2 → onecomp-1.3.4}/example/example_gptq.py +0 -0
  58. {onecomp-1.3.2 → onecomp-1.3.4}/example/example_jointq.py +0 -0
  59. {onecomp-1.3.2 → onecomp-1.3.4}/example/example_lpcd_gptq.py +0 -0
  60. {onecomp-1.3.2 → onecomp-1.3.4}/example/example_mdbf.py +0 -0
  61. {onecomp-1.3.2 → onecomp-1.3.4}/example/example_qep_gptq.py +0 -0
  62. {onecomp-1.3.2 → onecomp-1.3.4}/example/example_save_load.py +0 -0
  63. {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_blockwise_global_ptq.py +0 -0
  64. {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_blockwise_global_ptq_staged.py +0 -0
  65. {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_blockwise_ptq.py +0 -0
  66. {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_global_ptq.py +0 -0
  67. {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_global_ptq_dbf.py +0 -0
  68. {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_global_ptq_distributed.py +0 -0
  69. {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_lora_gptq_vllm_inference.py +0 -0
  70. {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_lora_sft.py +0 -0
  71. {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_lora_sft_knowledge.py +0 -0
  72. {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_lora_sft_knowledge_jointq.py +0 -0
  73. {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_reload_post_process_resave.py +0 -0
  74. {onecomp-1.3.2 → onecomp-1.3.4}/example/pre_process/example_llama_preprocess_rtn.py +0 -0
  75. {onecomp-1.3.2 → onecomp-1.3.4}/example/pre_process/example_preprocess_save_load.py +0 -0
  76. {onecomp-1.3.2 → onecomp-1.3.4}/example/vllm_inference/example_autobit_vllm_inference.py +0 -0
  77. {onecomp-1.3.2 → onecomp-1.3.4}/example/vllm_inference/example_dbf_vllm_inference.py +0 -0
  78. {onecomp-1.3.2 → onecomp-1.3.4}/example/vllm_inference/example_gptq_vllm_gptoss_inference.py +0 -0
  79. {onecomp-1.3.2 → onecomp-1.3.4}/example/vllm_inference/example_gptq_vllm_inference.py +0 -0
  80. {onecomp-1.3.2 → onecomp-1.3.4}/example/vllm_inference/example_gptq_vllm_qwen36_inference.py +0 -0
  81. {onecomp-1.3.2 → onecomp-1.3.4}/example/vllm_inference/example_jointq_vllm_inference.py +0 -0
  82. {onecomp-1.3.2 → onecomp-1.3.4}/llamacpp_plugins/__init__.py +0 -0
  83. {onecomp-1.3.2 → onecomp-1.3.4}/llamacpp_plugins/gptq/__init__.py +0 -0
  84. {onecomp-1.3.2 → onecomp-1.3.4}/llamacpp_plugins/gptq/constants.py +0 -0
  85. {onecomp-1.3.2 → onecomp-1.3.4}/llamacpp_plugins/gptq/llamacpp_plugin.py +0 -0
  86. {onecomp-1.3.2 → onecomp-1.3.4}/model_validation/autobit/validate_autobit.py +0 -0
  87. {onecomp-1.3.2 → onecomp-1.3.4}/model_validation/autobit_qep/validate_autobit.py +0 -0
  88. {onecomp-1.3.2 → onecomp-1.3.4}/model_validation/gptq/validate_gptq.py +0 -0
  89. {onecomp-1.3.2 → onecomp-1.3.4}/model_validation/gptq/validate_load.py +0 -0
  90. {onecomp-1.3.2 → onecomp-1.3.4}/model_validation/gptq/validate_vllm.py +0 -0
  91. {onecomp-1.3.2 → onecomp-1.3.4}/model_validation/jointq/validate_jointq.py +0 -0
  92. {onecomp-1.3.2 → onecomp-1.3.4}/model_validation/qep_gptq/validate_gptq.py +0 -0
  93. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/__init__.py +0 -0
  94. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/__main__.py +0 -0
  95. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/analyzer/__init__.py +0 -0
  96. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/analyzer/cumulative_error.py +0 -0
  97. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/analyzer/quantization_error.py +0 -0
  98. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/analyzer/weight_outlier.py +0 -0
  99. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/__init__.py +0 -0
  100. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/_cache.py +0 -0
  101. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/c4.py +0 -0
  102. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/calibration_config.py +0 -0
  103. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/calibration_data_loader.py +0 -0
  104. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/chunking.py +0 -0
  105. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/custom.py +0 -0
  106. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/wikitext.py +0 -0
  107. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cli.py +0 -0
  108. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/__init__.py +0 -0
  109. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/cli.py +0 -0
  110. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/eval/__init__.py +0 -0
  111. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/eval/benchmark.py +0 -0
  112. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/eval/inspect_gguf.py +0 -0
  113. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/eval/parity.py +0 -0
  114. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/eval/perplexity.py +0 -0
  115. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/__init__.py +0 -0
  116. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/auto.py +0 -0
  117. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/blocks.py +0 -0
  118. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/checkpoint.py +0 -0
  119. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/dequantize.py +0 -0
  120. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/direct.py +0 -0
  121. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/fallback.py +0 -0
  122. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/rotation.py +0 -0
  123. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/skeleton.py +0 -0
  124. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/inference.py +0 -0
  125. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/llama_tooling.py +0 -0
  126. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/serve.py +0 -0
  127. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/__init__.py +0 -0
  128. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/__main__.py +0 -0
  129. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/conf/__init__.py +0 -0
  130. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/conf/eval_config.yaml +0 -0
  131. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/__init__.py +0 -0
  132. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/base.py +0 -0
  133. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/__init__.py +0 -0
  134. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/adapter.py +0 -0
  135. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/data.py +0 -0
  136. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/gen_answer.py +0 -0
  137. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/judge.py +0 -0
  138. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/radar_chart.py +0 -0
  139. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/run.py +0 -0
  140. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/show_result.py +0 -0
  141. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/throughput/__init__.py +0 -0
  142. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/throughput/adapter.py +0 -0
  143. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/throughput/bench.py +0 -0
  144. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/throughput/run.py +0 -0
  145. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/orchestrator/__init__.py +0 -0
  146. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/orchestrator/aggregator.py +0 -0
  147. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/orchestrator/runner.py +0 -0
  148. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/orchestrator/server.py +0 -0
  149. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/orchestrator/subprocess_runner.py +0 -0
  150. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/run_evaluate.py +0 -0
  151. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/schema.py +0 -0
  152. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/utils/__init__.py +0 -0
  153. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/utils/model_utils.py +0 -0
  154. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/utils/ports.py +0 -0
  155. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/utils/resources.py +0 -0
  156. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/utils/secrets.py +0 -0
  157. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/export/__init__.py +0 -0
  158. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/export/gguf_export.py +0 -0
  159. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/export/gguf_reader.py +0 -0
  160. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/export/gguf_writer.py +0 -0
  161. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/export/hub.py +0 -0
  162. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/export/model_card.py +0 -0
  163. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/log.py +0 -0
  164. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/__init__.py +0 -0
  165. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/_gradient_solver.py +0 -0
  166. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/_lpcd_runner.py +0 -0
  167. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/_metric.py +0 -0
  168. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/_refiner.py +0 -0
  169. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/arch/_llama.py +0 -0
  170. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/arch/_llama_cf.py +0 -0
  171. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/arch/_qwen3.py +0 -0
  172. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/__init__.py +0 -0
  173. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_base.py +0 -0
  174. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/__init__.py +0 -0
  175. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/dbf_block_optimizer.py +0 -0
  176. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/dbf_cbq_optimizer.py +0 -0
  177. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/generic_block_optimizer.py +0 -0
  178. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/gptq_block_optimizer.py +0 -0
  179. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/gptq_cbq_optimizer.py +0 -0
  180. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/helpers.py +0 -0
  181. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/onebit_block_optimizer.py +0 -0
  182. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/onebit_cbq_optimizer.py +0 -0
  183. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_global_ptq/__init__.py +0 -0
  184. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_global_ptq/core.py +0 -0
  185. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_global_ptq/dbf_adapter.py +0 -0
  186. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_global_ptq/gptq_adapter.py +0 -0
  187. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_global_ptq/helpers.py +0 -0
  188. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_global_ptq/losses.py +0 -0
  189. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_global_ptq/trainer.py +0 -0
  190. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_runtime.py +0 -0
  191. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/blockwise_ptq.py +0 -0
  192. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/global_ptq.py +0 -0
  193. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/global_ptq_distributed.py +0 -0
  194. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/post_process_lora_sft.py +0 -0
  195. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/__init__.py +0 -0
  196. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/hadamard_utils.py +0 -0
  197. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/modeling_llama.py +0 -0
  198. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/modeling_qwen3.py +0 -0
  199. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/optimizer.py +0 -0
  200. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/prepare_rotated_model.py +0 -0
  201. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/preprocess_args.py +0 -0
  202. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/quant_models.py +0 -0
  203. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/rotation_utils.py +0 -0
  204. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/train_rotation.py +0 -0
  205. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/qep/__init__.py +0 -0
  206. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/qep/_quantize_with_qep.py +0 -0
  207. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/__init__.py +0 -0
  208. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/arb/__init__.py +0 -0
  209. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/arb/_arb.py +0 -0
  210. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/arb/arb_impl.py +0 -0
  211. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/autobit/__init__.py +0 -0
  212. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/autobit/_autobit.py +0 -0
  213. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/autobit/activation_stats.py +0 -0
  214. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/autobit/dbf_fallback.py +0 -0
  215. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/autobit/ilp.py +0 -0
  216. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/autobit/manual.py +0 -0
  217. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/autobit/visualize.py +0 -0
  218. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/cq/__init__.py +0 -0
  219. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/cq/_cq.py +0 -0
  220. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/cq/cq_impl.py +0 -0
  221. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/__init__.py +0 -0
  222. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/_dbf.py +0 -0
  223. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/admm_extended.py +0 -0
  224. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/balance.py +0 -0
  225. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/config.py +0 -0
  226. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/dbf_impl.py +0 -0
  227. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/dbf_layer.py +0 -0
  228. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/dbf_original.py +0 -0
  229. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/fine_tune.py +0 -0
  230. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/middle.py +0 -0
  231. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/gemlite.py +0 -0
  232. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/gptq/__init__.py +0 -0
  233. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/gptq/_gptq.py +0 -0
  234. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/gptq/config.py +0 -0
  235. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/__init__.py +0 -0
  236. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/_jointq.py +0 -0
  237. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/__init__.py +0 -0
  238. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/__version__.py +0 -0
  239. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/clip.py +0 -0
  240. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/error_propagation/__init__.py +0 -0
  241. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/error_propagation/local_search_advanced.py +0 -0
  242. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/error_propagation/quantize_advanced.py +0 -0
  243. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/error_propagation/quantizer_advanced.py +0 -0
  244. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/local_search.py +0 -0
  245. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/quantize.py +0 -0
  246. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/quantize_multi_gpu.py +0 -0
  247. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/quantizer.py +0 -0
  248. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/solution.py +0 -0
  249. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/__init__.py +0 -0
  250. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/_mdbf.py +0 -0
  251. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/admm.py +0 -0
  252. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/config.py +0 -0
  253. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/gradient_refine.py +0 -0
  254. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/initialize.py +0 -0
  255. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/mdbf_impl.py +0 -0
  256. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/mdbf_layer.py +0 -0
  257. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/utils.py +0 -0
  258. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/onebit/__init__.py +0 -0
  259. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/onebit/_onebit.py +0 -0
  260. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/onebit/onebit_impl.py +0 -0
  261. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/onebit/onebit_layer.py +0 -0
  262. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/qbb/__init__.py +0 -0
  263. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/qbb/_qbb.py +0 -0
  264. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/qbb/qbb_impl.py +0 -0
  265. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/quip/__init__.py +0 -0
  266. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/quip/_quip.py +0 -0
  267. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/quip/quant_quip.py +0 -0
  268. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/quip/quip_impl.py +0 -0
  269. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/quip/utils.py +0 -0
  270. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/quip/utils_had.py +0 -0
  271. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/quip/vector_balance.py +0 -0
  272. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/rtn/__init__.py +0 -0
  273. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/rtn/_rtn.py +0 -0
  274. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/rtn/quantizer.py +0 -0
  275. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/rtn/rtn_impl.py +0 -0
  276. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/rotated_model_config.py +0 -0
  277. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/runner_methods/__init__.py +0 -0
  278. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/runner_methods/chunked_quantization.py +0 -0
  279. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/runner_methods/jointq_error_propagation.py +0 -0
  280. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/runner_methods/multi_gpu_quantization.py +0 -0
  281. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/__init__.py +0 -0
  282. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/accuracy.py +0 -0
  283. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/activation_capture.py +0 -0
  284. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/activation_check.py +0 -0
  285. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/device.py +0 -0
  286. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/dtype.py +0 -0
  287. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/lora.py +0 -0
  288. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/model_inputs.py +0 -0
  289. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/mxfp4_compat.py +0 -0
  290. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/perplexity.py +0 -0
  291. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/quant_config.py +0 -0
  292. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/quantization_progress.py +0 -0
  293. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/vram_estimator.py +0 -0
  294. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp.egg-info/dependency_links.txt +0 -0
  295. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp.egg-info/entry_points.txt +0 -0
  296. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp.egg-info/requires.txt +0 -0
  297. {onecomp-1.3.2 → onecomp-1.3.4}/onecomp.egg-info/top_level.txt +0 -0
  298. {onecomp-1.3.2 → onecomp-1.3.4}/pyproject.toml +0 -0
  299. {onecomp-1.3.2 → onecomp-1.3.4}/scripts/check_copyright_header.py +0 -0
  300. {onecomp-1.3.2 → onecomp-1.3.4}/scripts/check_no_japanese.py +0 -0
  301. {onecomp-1.3.2 → onecomp-1.3.4}/setup.cfg +0 -0
  302. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/__init__.py +0 -0
  303. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/dbf/__init__.py +0 -0
  304. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/dbf/modules/__init__.py +0 -0
  305. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/dbf/modules/gemlite_linear.py +0 -0
  306. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/dbf/modules/naive.py +0 -0
  307. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/dbf/vllm_plugin.py +0 -0
  308. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/gptq/__init__.py +0 -0
  309. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/gptq/constants.py +0 -0
  310. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/gptq/gptoss_wna16_moe.py +0 -0
  311. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/gptq/vllm_plugin.py +0 -0
  312. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/patches/__init__.py +0 -0
  313. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/patches/_paths.py +0 -0
  314. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/patches/apply_all.py +0 -0
  315. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/patches/gpt_oss_gptq_moe.py +0 -0
  316. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/patches/gpt_oss_wna16_bias.py +0 -0
  317. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/utils/__init__.py +0 -0
  318. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/utils/module.py +0 -0
  319. {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/utils/rotation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onecomp
3
- Version: 1.3.2
3
+ Version: 1.3.4
4
4
  Summary: Python package for LLM compression
5
5
  Author: Keiji Kimura
6
6
  License: MIT License
@@ -473,7 +473,12 @@ See the [GPT-OSS guide](docs/user-guide/gptoss.md) for HF save/load, patch detai
473
473
 
474
474
  ## 📄 License
475
475
 
476
- See [LICENSE](./LICENSE) for more details.
476
+ OneComp is licensed under the [MIT License](./LICENSE).
477
+
478
+ The dependencies installed with OneComp are separate open-source software (OSS)
479
+ projects and are distributed under their respective licenses. Their licenses
480
+ may change when the dependencies are updated, so please check the license
481
+ terms of the installed versions as well.
477
482
 
478
483
  ## Citation
479
484
 
@@ -359,7 +359,12 @@ See the [GPT-OSS guide](docs/user-guide/gptoss.md) for HF save/load, patch detai
359
359
 
360
360
  ## 📄 License
361
361
 
362
- See [LICENSE](./LICENSE) for more details.
362
+ OneComp is licensed under the [MIT License](./LICENSE).
363
+
364
+ The dependencies installed with OneComp are separate open-source software (OSS)
365
+ projects and are distributed under their respective licenses. Their licenses
366
+ may change when the dependencies are updated, so please check the license
367
+ terms of the installed versions as well.
363
368
 
364
369
  ## Citation
365
370
 
@@ -6,4 +6,4 @@ Author: Keiji Kimura
6
6
 
7
7
  """
8
8
 
9
- __version__ = "1.3.2"
9
+ __version__ = "1.3.4"
@@ -25,7 +25,8 @@ class LPCDConfig:
25
25
  gd_steps: Number of gradient-descent epochs per sub-problem.
26
26
  gd_batch_size: Effective batch size for gradient accumulation.
27
27
  gd_base_lr: Base learning rate for gradient-descent solver.
28
- device: Device to perform LPCD optimisation on.
28
+ device: Device to perform LPCD optimisation on. Default is None.
29
+ When None, Runner synchronises it with ModelConfig.device.
29
30
 
30
31
  Examples:
31
32
  Minimal (residual correction only, fast)::
@@ -53,4 +54,4 @@ class LPCDConfig:
53
54
  gd_steps: int = 20
54
55
  gd_batch_size: int = 16
55
56
  gd_base_lr: float = 1e-4
56
- device: str = "cuda:0"
57
+ device: str = None
@@ -11,7 +11,7 @@ from logging import getLogger
11
11
  import torch
12
12
  from transformers import AutoConfig, AutoModelForCausalLM, AutoTokenizer
13
13
 
14
- from .utils.device import get_default_device
14
+ from .utils.device import get_default_device, is_mps_device
15
15
  from .utils.dtype import needs_bfloat16
16
16
 
17
17
  try:
@@ -95,9 +95,14 @@ class ModelConfig:
95
95
  If ``None`` (default), ``self.device`` is used.
96
96
  """
97
97
  effective_device = device_map if device_map is not None else self.device
98
+ if effective_device == "auto":
99
+ target_device = get_default_device()
100
+ else:
101
+ target_device = effective_device
102
+ load_device = "cpu" if is_mps_device(target_device) else effective_device
98
103
  kwargs = dict(
99
104
  dtype=self.dtype if self.dtype == "auto" else getattr(torch, self.dtype),
100
- device_map=effective_device,
105
+ device_map=load_device,
101
106
  )
102
107
 
103
108
  config = self.load_config()
@@ -135,6 +140,8 @@ class ModelConfig:
135
140
  raise
136
141
  self.logger.info("AutoModelForCausalLM failed; trying AutoModelForImageTextToText.")
137
142
  model = _AutoVLM.from_pretrained(self.get_model_id_or_path(), **kwargs)
143
+ if is_mps_device(target_device):
144
+ model = model.to(target_device)
138
145
  model.eval()
139
146
  self.logger.info("Model loaded with dtype=%s", next(model.parameters()).dtype)
140
147
  return model
@@ -25,7 +25,7 @@ class QEPConfig:
25
25
  Default is 0.5.
26
26
  device (str): Device to use for QEP computations
27
27
  (e.g., "cuda", "mps", "cpu").
28
- Default is "cuda:0".
28
+ Default is None. When None, Runner synchronises it with ModelConfig.device.
29
29
  exclude_layer_keywords (list[str]): List of keywords to identify
30
30
  layers excluded from error propagation. Layers whose names
31
31
  contain any of these keywords will be excluded.
@@ -52,6 +52,6 @@ class QEPConfig:
52
52
  general: bool = False
53
53
  percdamp: float = 0.01
54
54
  perccorr: float = 0.5
55
- device: str = "cuda:0"
55
+ device: str = None
56
56
  exclude_layer_keywords: list[str] = field(default_factory=lambda: ["mlp.down_proj"])
57
57
  # TODO: exclude_layer_keywords depends on the architecture and needs to be fixed
@@ -298,8 +298,15 @@ def _rtn_fallback_result(module: nn.Module, quantizer: Quantizer, name: str) ->
298
298
 
299
299
  result_dict = run_rtn(module, wbits=wbits, groupsize=groupsize, sym=quantizer.sym)
300
300
 
301
- # RTN's raw scale/zero are (out_features, num_groups); GPTQResult
302
- # expects (num_groups, out_features).
301
+ scales = result_dict["scale"]
302
+ qzeros = result_dict["zero"]
303
+
304
+ if groupsize != -1:
305
+ # RTN's raw scale/zero are (out_features, num_groups); GPTQResult
306
+ # expects (num_groups, out_features).
307
+ scales = scales.T
308
+ qzeros = qzeros.T
309
+
303
310
  return GPTQResult(
304
311
  dequantized_weight=result_dict["dequantized_weight"],
305
312
  wbits=wbits,
@@ -307,8 +314,8 @@ def _rtn_fallback_result(module: nn.Module, quantizer: Quantizer, name: str) ->
307
314
  actorder=False,
308
315
  sym=quantizer.sym,
309
316
  qweight=result_dict["quantized_weight"],
310
- scales=result_dict["scale"].T,
311
- qzeros=result_dict["zero"].T,
317
+ scales=scales,
318
+ qzeros=qzeros,
312
319
  perm=None,
313
320
  )
314
321
 
@@ -123,20 +123,16 @@ class QuantizedModelLoader:
123
123
  elif unfuse_moe_experts(model, logger):
124
124
  logger.info("Unfused MoE expert tensors for quantized model load")
125
125
 
126
- # Align checkpoint key prefixes with the empty model built from config.
127
- # Gemma3 VLMs are a common case: weights saved from from_pretrained
128
- # use model.language_model.model.layers. (language_model is a
129
- # ForCausalLM wrapper) while from_config exposes
130
- # model.language_model.layers.* directly.
131
- state_dict = cls._remap_state_dict_keys(state_dict, model)
132
-
133
- # Replace quantized layers with empty modules and align quantized
134
- # tensor keys with the actual module names in the model built from
135
- # config. This is required when the saved checkpoint and the
136
- # from_config model use different wrapper prefixes, e.g.
137
- # model.language_model.layers.* vs model.layers.*.
126
+ # Replace quantized layers first. This resolves every quantizer's
127
+ # tensor state by layer prefix while the model still exposes the
128
+ # original empty Linear modules.
138
129
  state_dict = cls._replace_quantized_layers(model, state_dict, quant_config)
139
130
 
131
+ # Align remaining checkpoint keys with the model built from config.
132
+ # Quantized keys now already use the actual module prefix, so this
133
+ # generic remap only handles non-quantized parameters and buffers.
134
+ state_dict = cls._remap_state_dict_keys(state_dict, model)
135
+
140
136
  # Load all weights (quantized + non-quantized) in one go. strict=False
141
137
  # is intentional because some wrapper-only components may be absent, but
142
138
  # critical language-model and quantized-buffer mismatches must fail fast.
@@ -593,11 +589,10 @@ class QuantizedModelLoader:
593
589
  silently skips mismatched keys and leaves layers at their empty-model
594
590
  initial values (often all zeros for quantized buffers).
595
591
 
596
- Remapping runs before _replace_quantized_layers, so the empty
597
- model still exposes nn.Linear.weight rather than GPTQ buffers
598
- (``qweight``, ``scales``, …). Known prefix rewrites are therefore
599
- applied from checkpoint key patterns alone; they must not require the
600
- destination key to already exist in model.named_parameters().
592
+ Quantized layers are resolved by _replace_quantized_layers before
593
+ this method runs. Therefore this method only remaps ordinary model
594
+ parameters and buffers; quantizer-specific tensor fields are already
595
+ materialized under their actual module prefixes.
601
596
 
602
597
  Args:
603
598
  state_dict: Tensors loaded from *.safetensors.
@@ -400,12 +400,32 @@ class Quantizer(metaclass=ABCMeta):
400
400
  weight[:, dead] = 0
401
401
 
402
402
  # QEP correction
403
- damp = percdamp * torch.mean(torch.diag(hessian))
404
- diag = torch.arange(hessian.shape[0], device=hessian.device)
405
- hessian[diag, diag] += damp
406
- rhs = weight @ delta_hatX
407
- delta_weight = _safe_cholesky_and_solve(hessian, rhs).t()
408
- weight = weight + (perccorr * delta_weight)
403
+ damp_scale = 1.0
404
+ max_retries = 5
405
+ for attempt in range(max_retries):
406
+ try:
407
+ damp = percdamp * torch.mean(torch.diag(hessian))
408
+ diag = torch.arange(hessian.shape[0], device=hessian.device)
409
+ hessian[diag, diag] += damp
410
+ rhs = weight @ delta_hatX
411
+ delta_weight = _safe_cholesky_and_solve(hessian, rhs).t()
412
+ weight = weight + (perccorr * delta_weight)
413
+ break
414
+ except torch._C._LinAlgError:
415
+ damp_scale *= 10.0
416
+ extra = damp_scale * damp
417
+ hessian[diag, diag] += extra
418
+ self.logger.warning(
419
+ "Cholesky failed (attempt %d/%d); adding extra damping %.2e",
420
+ attempt + 1,
421
+ max_retries,
422
+ extra,
423
+ )
424
+ else:
425
+ raise RuntimeError(
426
+ "Cholesky decomposition failed after %d damping attempts. "
427
+ "The Hessian may be severely ill-conditioned." % max_retries
428
+ )
409
429
 
410
430
  if isinstance(module, Conv1d):
411
431
  weight = weight.t()
@@ -414,12 +414,6 @@ class GPTQLinear(nn.Module):
414
414
  if self._gemlite_layer is not None:
415
415
  self.using_gemlite = True
416
416
 
417
- # Permutation order
418
- if perm is not None and actorder:
419
- self.register_buffer("perm", perm.to(device))
420
- else:
421
- self.perm = None
422
-
423
417
  # Bias
424
418
  if bias is not None:
425
419
  self.register_buffer("bias", bias.to(torch.float16).to(device))
@@ -261,9 +261,13 @@ class Runner:
261
261
  self.qep_config = None
262
262
  if qep:
263
263
  self.qep_config = qep_config if qep_config is not None else QEPConfig()
264
+ if self.qep_config.device is None and self.model_config is not None:
265
+ self.qep_config.device = str(self.model_config.get_device())
264
266
  self.lpcd_config = None
265
267
  if lpcd:
266
268
  self.lpcd_config = lpcd_config if lpcd_config is not None else LPCDConfig()
269
+ if self.lpcd_config.device is None and self.model_config is not None:
270
+ self.lpcd_config.device = str(self.model_config.get_device())
267
271
  self.report_progress = report_progress
268
272
 
269
273
  def check(self):
@@ -375,6 +379,11 @@ class Runner:
375
379
  if is_mps_device(device):
376
380
  if self.multi_gpu:
377
381
  raise ValueError("multi_gpu is not supported on MPS device.")
382
+ if batch_size is not None:
383
+ raise ValueError(
384
+ "MPS quantization does not support calibration_config.batch_size. "
385
+ "Remove batch_size from CalibrationConfig and run without chunked calibration."
386
+ )
378
387
  all_quantizers = self.quantizers if self.quantizers is not None else [self.quantizer]
379
388
  for i, q in enumerate(all_quantizers):
380
389
  label = f"quantizers[{i}]" if self.quantizers else "quantizer"
@@ -6,6 +6,7 @@ Author: Yudai Fujimoto, Akihiro Yoshida, Yuma Ichikawa
6
6
 
7
7
  """
8
8
 
9
+ from collections import UserDict
9
10
  from logging import getLogger
10
11
 
11
12
  import torch
@@ -95,6 +96,7 @@ class Catcher(nn.Module):
95
96
  _PER_LAYER_INPUTS_KEY = "_per_layer_inputs"
96
97
  _POS_EMB_MAP_KEY = "_position_embeddings_map"
97
98
  _ATTN_MASK_MAP_KEY = "_attention_mask_map"
99
+ _SHARED_KV_STATES_KEY = "shared_kv_states"
98
100
 
99
101
 
100
102
  def _find_blocks_parent(model, blocks):
@@ -243,9 +245,15 @@ def get_blocks_and_inputs(
243
245
 
244
246
  # Now capture block inputs for all calibration samples.
245
247
  block_inps = []
246
- for inp in inp_ids.split(batch_size):
248
+ for first in range(0, inp_ids.shape[0], batch_size):
249
+ last = min(first + batch_size, inp_ids.shape[0])
250
+ inp = inp_ids[first:last]
251
+ batch_model_kwargs = {
252
+ k: v[first:last] if isinstance(v, torch.Tensor) and v.dim() >= 1 else v
253
+ for k, v in model_kwargs.items()
254
+ }
247
255
  try:
248
- _ = model(inp, **model_kwargs)
256
+ _ = model(inp, **batch_model_kwargs)
249
257
  except StopForward:
250
258
  block_inps.append(blocks[0].inp.cpu())
251
259
 
@@ -361,6 +369,10 @@ def move_kwargs_to_device(x, device):
361
369
  return [move_kwargs_to_device(v, device) for v in x]
362
370
  elif isinstance(x, tuple):
363
371
  return tuple(move_kwargs_to_device(v, device) for v in x)
372
+ elif isinstance(x, UserDict):
373
+ for k, v in list(x.items()):
374
+ x[k] = move_kwargs_to_device(v, device)
375
+ return x
364
376
  else:
365
377
  return x
366
378
 
@@ -396,6 +408,10 @@ def expand_kwargs_batch(kwargs, batch_size):
396
408
  return [_expand(t) for t in v]
397
409
  elif isinstance(v, dict):
398
410
  return {k: _expand(val) for k, val in v.items()}
411
+ elif isinstance(v, UserDict):
412
+ for k, val in list(v.items()):
413
+ v[k] = _expand(val)
414
+ return v
399
415
  return v
400
416
 
401
417
  return {k: _expand(v) for k, v in kwargs.items()}
@@ -433,9 +449,46 @@ def prepare_block_kwargs(batch_kwargs, block, pli, offset, batch_size, device):
433
449
  if layer_type and layer_type in mask_map:
434
450
  batch_kwargs["attention_mask"] = mask_map[layer_type]
435
451
 
452
+ # 4) Gemma4 shared KV state. Provider blocks write states into a fresh
453
+ # batch-local mapping; consumer blocks read the matching calibration slice.
454
+ shared_kv_states = batch_kwargs.get(_SHARED_KV_STATES_KEY)
455
+ self_attn = getattr(block, "self_attn", None)
456
+ if isinstance(shared_kv_states, UserDict) and getattr(
457
+ self_attn, "store_full_length_kv", False
458
+ ):
459
+ batch_kwargs[_SHARED_KV_STATES_KEY] = UserDict()
460
+ elif isinstance(shared_kv_states, UserDict) and getattr(
461
+ self_attn, "is_kv_shared_layer", False
462
+ ):
463
+ batch_kwargs[_SHARED_KV_STATES_KEY] = _slice_shared_kv_states(
464
+ shared_kv_states, offset, batch_size, device
465
+ )
466
+
436
467
  return batch_kwargs
437
468
 
438
469
 
470
+ def _slice_shared_kv_states(shared_kv_states, offset, batch_size, device):
471
+ batch_shared_kv_states = UserDict()
472
+ for key, value in shared_kv_states.items():
473
+ if isinstance(value, tuple):
474
+ batch_shared_kv_states[key] = tuple(
475
+ _slice_shared_kv_tensor(v, offset, batch_size, device) for v in value
476
+ )
477
+ else:
478
+ batch_shared_kv_states[key] = _slice_shared_kv_tensor(
479
+ value, offset, batch_size, device
480
+ )
481
+ return batch_shared_kv_states
482
+
483
+
484
+ def _slice_shared_kv_tensor(value, offset, batch_size, device):
485
+ if isinstance(value, torch.Tensor):
486
+ if value.dim() >= 1 and value.shape[0] >= offset + batch_size:
487
+ value = value[offset : offset + batch_size]
488
+ return value.to(device)
489
+ return value
490
+
491
+
439
492
  def _get_block_layer_type(block: nn.Module) -> str | None:
440
493
  return (
441
494
  getattr(block, "layer_type", None)
@@ -468,6 +521,9 @@ def forward_input(
468
521
  pli = kwargs.get(_PER_LAYER_INPUTS_KEY)
469
522
  next_inps = []
470
523
  offset = 0
524
+ shared_kv_chunks = {}
525
+ self_attn = getattr(block, "self_attn", None)
526
+ stores_shared_kv = getattr(self_attn, "store_full_length_kv", False)
471
527
  for inp in inps.split(batch_size):
472
528
  bs = inp.shape[0]
473
529
  batch_kwargs = expand_kwargs_batch(kwargs, bs)
@@ -475,7 +531,27 @@ def forward_input(
475
531
  out = block(inp.to(device), **batch_kwargs)
476
532
  out = out[0] if isinstance(out, tuple) else out
477
533
  next_inps.append(out.cpu())
534
+ if stores_shared_kv:
535
+ for key, value in batch_kwargs[_SHARED_KV_STATES_KEY].items():
536
+ shared_kv_chunks.setdefault(key, []).append(
537
+ tuple(v.detach().cpu() for v in value)
538
+ if isinstance(value, tuple)
539
+ else value.detach().cpu()
540
+ )
478
541
  offset += bs
542
+
543
+ if shared_kv_chunks:
544
+ shared_kv_states = kwargs.get(_SHARED_KV_STATES_KEY)
545
+ if not isinstance(shared_kv_states, UserDict):
546
+ shared_kv_states = UserDict()
547
+ kwargs[_SHARED_KV_STATES_KEY] = shared_kv_states
548
+ for key, chunks in shared_kv_chunks.items():
549
+ if isinstance(chunks[0], tuple):
550
+ shared_kv_states[key] = tuple(
551
+ torch.cat([chunk[i] for chunk in chunks], dim=0) for i in range(len(chunks[0]))
552
+ )
553
+ else:
554
+ shared_kv_states[key] = torch.cat(chunks, dim=0)
479
555
  return torch.cat(next_inps)
480
556
 
481
557
 
@@ -55,6 +55,9 @@ class _UnfusedExperts(nn.Module):
55
55
  def __getitem__(self, idx):
56
56
  return getattr(self, str(int(idx)))
57
57
 
58
+ def __iter__(self):
59
+ return iter(self._modules.values())
60
+
58
61
  def forward(
59
62
  self,
60
63
  hidden_states: torch.Tensor,
@@ -584,17 +587,19 @@ def _fuse_one(
584
587
  expert0 = unfused[0]
585
588
  inter = expert0.gate_proj.out_features
586
589
  hidden = expert0.gate_proj.in_features
590
+ up_w0, _ = _dequantized_weight_bias(expert0.up_proj)
591
+ down_w0, _ = _dequantized_weight_bias(expert0.down_proj)
587
592
  gate_up_3d = torch.empty(
588
593
  num_experts,
589
594
  2 * inter,
590
595
  hidden,
591
- dtype=expert0.gate_proj.weight.dtype,
596
+ dtype=up_w0.dtype,
592
597
  )
593
598
  down_3d = torch.empty(
594
599
  num_experts,
595
600
  hidden,
596
601
  inter,
597
- dtype=expert0.down_proj.weight.dtype,
602
+ dtype=down_w0.dtype,
598
603
  )
599
604
  for i in range(num_experts):
600
605
  expert = unfused[i]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onecomp
3
- Version: 1.3.2
3
+ Version: 1.3.4
4
4
  Summary: Python package for LLM compression
5
5
  Author: Keiji Kimura
6
6
  License: MIT License
@@ -473,7 +473,12 @@ See the [GPT-OSS guide](docs/user-guide/gptoss.md) for HF save/load, patch detai
473
473
 
474
474
  ## 📄 License
475
475
 
476
- See [LICENSE](./LICENSE) for more details.
476
+ OneComp is licensed under the [MIT License](./LICENSE).
477
+
478
+ The dependencies installed with OneComp are separate open-source software (OSS)
479
+ projects and are distributed under their respective licenses. Their licenses
480
+ may change when the dependencies are updated, so please check the license
481
+ terms of the installed versions as well.
477
482
 
478
483
  ## Citation
479
484
 
@@ -296,6 +296,7 @@ onecomp/utils/unfuse_moe.py
296
296
  onecomp/utils/vram_estimator.py
297
297
  scripts/check_copyright_header.py
298
298
  scripts/check_no_japanese.py
299
+ scripts/prepare_calibration_cache.py
299
300
  vllm_plugins/__init__.py
300
301
  vllm_plugins/dbf/__init__.py
301
302
  vllm_plugins/dbf/vllm_plugin.py