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.
- {onecomp-1.3.2/onecomp.egg-info → onecomp-1.3.4}/PKG-INFO +7 -2
- {onecomp-1.3.2 → onecomp-1.3.4}/README.md +6 -1
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/__version__.py +1 -1
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/_lpcd_config.py +3 -2
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/model_config.py +9 -2
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/qep/_qep_config.py +2 -2
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/qep/_quantize_with_qep_arch.py +11 -4
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantized_model_loader.py +12 -17
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/_quantizer.py +26 -6
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/gptq/gptq_layer.py +0 -6
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/runner.py +9 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/blockwise.py +78 -2
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/unfuse_moe.py +7 -2
- {onecomp-1.3.2 → onecomp-1.3.4/onecomp.egg-info}/PKG-INFO +7 -2
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp.egg-info/SOURCES.txt +1 -0
- onecomp-1.3.4/scripts/prepare_calibration_cache.py +284 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/LICENSE +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/llama3-8b-gptq/quant_benchmark.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/llama3-8b-jointq/quant_benchmark.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/llama3-8b-lpcd-gptq/quant_benchmark.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/llama3-8b-qep-gptq/quant_benchmark.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/llama3-8b-various/quant_benchmark.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/qwen3-14b-gptq/quant_benchmark.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/qwen3-14b-jointq/quant_benchmark.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/qwen3-8b-gptq/quant_benchmark.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/benchmark/qwen3-8b-jointq/quant_benchmark.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/api/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/api/jobs.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/constants.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/core/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/core/config.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/core/database.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/main.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/models/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/models/job.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/schemas/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/schemas/job.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/services/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/services/huggingface.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/services/inference.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/services/job_store.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/worker/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/worker/celery_app.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/app/worker/tasks.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/cpu_patch.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/start_backend.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/dashboard/backend/start_worker.py +0 -0
- {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
- {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
- {onecomp-1.3.2 → onecomp-1.3.4}/example/cpu_inference/example_gptq_gguf_cpu.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/cpu_inference/example_mixed_gptq_gguf_cpu.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/cpu_inference/example_serve_cpu.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/example_auto_run.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/example_autobit.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/example_custom_calibration.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/example_gptq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/example_jointq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/example_lpcd_gptq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/example_mdbf.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/example_qep_gptq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/example_save_load.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_blockwise_global_ptq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_blockwise_global_ptq_staged.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_blockwise_ptq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_global_ptq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_global_ptq_dbf.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_global_ptq_distributed.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_lora_gptq_vllm_inference.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_lora_sft.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_lora_sft_knowledge.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_lora_sft_knowledge_jointq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/post_process/example_reload_post_process_resave.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/pre_process/example_llama_preprocess_rtn.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/pre_process/example_preprocess_save_load.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/vllm_inference/example_autobit_vllm_inference.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/vllm_inference/example_dbf_vllm_inference.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/vllm_inference/example_gptq_vllm_gptoss_inference.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/vllm_inference/example_gptq_vllm_inference.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/vllm_inference/example_gptq_vllm_qwen36_inference.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/example/vllm_inference/example_jointq_vllm_inference.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/llamacpp_plugins/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/llamacpp_plugins/gptq/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/llamacpp_plugins/gptq/constants.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/llamacpp_plugins/gptq/llamacpp_plugin.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/model_validation/autobit/validate_autobit.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/model_validation/autobit_qep/validate_autobit.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/model_validation/gptq/validate_gptq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/model_validation/gptq/validate_load.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/model_validation/gptq/validate_vllm.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/model_validation/jointq/validate_jointq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/model_validation/qep_gptq/validate_gptq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/__main__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/analyzer/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/analyzer/cumulative_error.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/analyzer/quantization_error.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/analyzer/weight_outlier.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/_cache.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/c4.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/calibration_config.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/calibration_data_loader.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/chunking.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/custom.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/calibration/wikitext.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cli.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/cli.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/eval/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/eval/benchmark.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/eval/inspect_gguf.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/eval/parity.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/eval/perplexity.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/auto.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/blocks.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/checkpoint.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/dequantize.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/direct.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/fallback.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/rotation.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/export/skeleton.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/inference.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/llama_tooling.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/cpu/serve.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/__main__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/conf/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/conf/eval_config.yaml +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/base.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/adapter.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/data.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/gen_answer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/judge.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/radar_chart.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/run.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/mt_bench/show_result.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/throughput/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/throughput/adapter.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/throughput/bench.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/evals/throughput/run.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/orchestrator/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/orchestrator/aggregator.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/orchestrator/runner.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/orchestrator/server.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/orchestrator/subprocess_runner.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/run_evaluate.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/schema.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/utils/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/utils/model_utils.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/utils/ports.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/utils/resources.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/eval/utils/secrets.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/export/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/export/gguf_export.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/export/gguf_reader.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/export/gguf_writer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/export/hub.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/export/model_card.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/log.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/_gradient_solver.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/_lpcd_runner.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/_metric.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/_refiner.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/arch/_llama.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/arch/_llama_cf.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/lpcd/arch/_qwen3.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_base.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/dbf_block_optimizer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/dbf_cbq_optimizer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/generic_block_optimizer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/gptq_block_optimizer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/gptq_cbq_optimizer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/helpers.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/onebit_block_optimizer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_blockwise/onebit_cbq_optimizer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_global_ptq/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_global_ptq/core.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_global_ptq/dbf_adapter.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_global_ptq/gptq_adapter.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_global_ptq/helpers.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_global_ptq/losses.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_global_ptq/trainer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/_runtime.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/blockwise_ptq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/global_ptq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/global_ptq_distributed.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/post_process/post_process_lora_sft.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/hadamard_utils.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/modeling_llama.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/modeling_qwen3.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/optimizer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/prepare_rotated_model.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/preprocess_args.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/quant_models.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/rotation_utils.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/pre_process/train_rotation.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/qep/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/qep/_quantize_with_qep.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/arb/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/arb/_arb.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/arb/arb_impl.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/autobit/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/autobit/_autobit.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/autobit/activation_stats.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/autobit/dbf_fallback.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/autobit/ilp.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/autobit/manual.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/autobit/visualize.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/cq/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/cq/_cq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/cq/cq_impl.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/_dbf.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/admm_extended.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/balance.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/config.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/dbf_impl.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/dbf_layer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/dbf_original.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/fine_tune.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/dbf/middle.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/gemlite.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/gptq/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/gptq/_gptq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/gptq/config.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/_jointq.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/__version__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/clip.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/error_propagation/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/error_propagation/local_search_advanced.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/error_propagation/quantize_advanced.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/error_propagation/quantizer_advanced.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/local_search.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/quantize.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/quantize_multi_gpu.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/quantizer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/jointq/core/solution.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/_mdbf.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/admm.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/config.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/gradient_refine.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/initialize.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/mdbf_impl.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/mdbf_layer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/mdbf/utils.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/onebit/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/onebit/_onebit.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/onebit/onebit_impl.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/onebit/onebit_layer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/qbb/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/qbb/_qbb.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/qbb/qbb_impl.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/quip/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/quip/_quip.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/quip/quant_quip.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/quip/quip_impl.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/quip/utils.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/quip/utils_had.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/quip/vector_balance.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/rtn/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/rtn/_rtn.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/rtn/quantizer.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/quantizer/rtn/rtn_impl.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/rotated_model_config.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/runner_methods/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/runner_methods/chunked_quantization.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/runner_methods/jointq_error_propagation.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/runner_methods/multi_gpu_quantization.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/accuracy.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/activation_capture.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/activation_check.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/device.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/dtype.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/lora.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/model_inputs.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/mxfp4_compat.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/perplexity.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/quant_config.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/quantization_progress.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp/utils/vram_estimator.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp.egg-info/dependency_links.txt +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp.egg-info/entry_points.txt +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp.egg-info/requires.txt +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/onecomp.egg-info/top_level.txt +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/pyproject.toml +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/scripts/check_copyright_header.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/scripts/check_no_japanese.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/setup.cfg +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/dbf/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/dbf/modules/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/dbf/modules/gemlite_linear.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/dbf/modules/naive.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/dbf/vllm_plugin.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/gptq/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/gptq/constants.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/gptq/gptoss_wna16_moe.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/gptq/vllm_plugin.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/patches/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/patches/_paths.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/patches/apply_all.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/patches/gpt_oss_gptq_moe.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/patches/gpt_oss_wna16_bias.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/utils/__init__.py +0 -0
- {onecomp-1.3.2 → onecomp-1.3.4}/vllm_plugins/utils/module.py +0 -0
- {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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
|
@@ -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 =
|
|
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=
|
|
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
|
|
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 =
|
|
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
|
-
|
|
302
|
-
|
|
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=
|
|
311
|
-
qzeros=
|
|
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
|
-
#
|
|
127
|
-
#
|
|
128
|
-
#
|
|
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
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
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
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
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
|
|
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, **
|
|
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=
|
|
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=
|
|
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.
|
|
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
|
-
|
|
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
|