Configuration

June 5, 2026 ยท View on GitHub

This page describes all configurable components in Fujitsu One Compression (OneComp).

ModelConfig

ModelConfig wraps model loading and tokenizer initialization.

from onecomp import ModelConfig

model_config = ModelConfig(
    model_id="meta-llama/Llama-2-7b-hf",
    dtype="float16",
    device="cuda:0",
)
ParameterTypeDescriptionDefault
model_idstrHugging Face Hub model IDNone
pathstrLocal path to model directoryNone
dtypestrModel precision ("float16", "float32")"float16"
devicestrDevice placement ("cpu", "cuda", "mps", "auto")"auto"

!!! note Provide exactly one of model_id or path. A ValueError is raised if neither is specified.

!!! note "macOS (MPS)" On Apple Silicon, set device="mps" for GPTQ / AutoBit (GPTQ-only) quantization. Only GPTQ quantizers are supported on MPS; DBF fallback and multi-GPU are not. See the macOS / MPS guide for details.

Runner

Runner is the main entry point for quantization. It manages the full pipeline: loading the model, preparing calibration data, executing quantization, and providing evaluation utilities.

from onecomp import CalibrationConfig, Runner

calib_config = CalibrationConfig(
    max_length=2048,
    num_calibration_samples=512,
)

runner = Runner(
    model_config=model_config,
    quantizer=quantizer,
    calibration_config=calib_config,
    qep=False,
    lpcd=False,
)

Core Parameters

ParameterTypeDescriptionDefault
model_configModelConfigModel and tokenizer configurationโ€”
quantizerQuantizerQuantization methodNone
quantizerslist[Quantizer]Multiple quantizers (for benchmarking)None
calibration_configCalibrationConfigCalibration data configurationNone (auto)
qepboolEnable QEPFalse
qep_configQEPConfigQEP configurationNone
lpcdboolEnable LPCDFalse
lpcd_configLPCDConfigLPCD configurationNone

Advanced Parameters

ParameterTypeDescriptionDefault
multi_gpuboolEnable multi-GPU layer-wise parallel quantizationFalse
gpu_idslist[int]Specific GPU IDs to useNone

!!! note When calibration_config is None, a CalibrationConfig() with default values is created automatically.

CalibrationConfig

CalibrationConfig groups all calibration-related parameters into a single dataclass.

from onecomp import CalibrationConfig

calib_config = CalibrationConfig(
    calibration_dataset="wikitext2",
    max_length=2048,
    num_calibration_samples=256,
    strategy="concat_rand",
)
ParameterTypeDescriptionDefault
calibration_datasetstrDataset name ("c4", "wikitext2"), local file path, or HuggingFace Hub ID"c4"
max_lengthintMaximum token length per calibration chunk2048
num_calibration_samplesintTarget number of calibration samples512
strategystrChunking strategy (see table below)"drop_rand"
seedintRandom seed for stochastic strategies0
batch_sizeintBatch size for chunked calibration forward passesNone
num_layers_per_groupintLayers processed simultaneously in chunked mode7
text_keystrColumn name when loading custom or Hub datasets"text"
use_quality_filterboolApply C4 quality filteringFalse
max_documentsintCap on documents loaded from custom/Hub sources10000

Calibration Strategies

StrategyDescription
"drop_rand"Tokenize each document independently; take a random window of max_length tokens.
"drop_head"Same, but always take the first max_length tokens.
"concat_chunk"Concatenate all texts, tokenize, and split into fixed-length chunks.
"concat_chunk_align"Same as concat_chunk, but adjusts samples so chunk count equals num_calibration_samples.
"concat_rand"Concatenate all texts, tokenize, then randomly sample windows. Standard GPTQ/AWQ approach.

Supported Calibration Datasets

ValueSource
"c4"AllenAI C4 dataset (default)
"wikitext2"WikiText-2 dataset (Salesforce)
Local file path.txt, .json, .jsonl, .csv, .tsv, .parquet, .arrow, or HuggingFace Dataset directory
HuggingFace Hub IDAny public dataset (e.g. "username/dataset")

Valid Parameter Combinations

quantizersqepmulti_gpucalibration_config.batch_size
SpecifiedFalseFalseSpecified
NoneTrueFalseNone
NoneFalseTrueNone
NoneFalseFalseSpecified
NoneFalseFalseNone

QEPConfig

QEPConfig controls Quantization Error Propagation behavior.

from onecomp import QEPConfig

qep_config = QEPConfig(
    general=False,
    percdamp=0.01,
    perccorr=0.5,
    device="cuda:0",
    exclude_layer_keywords=["mlp.down_proj"],
)
ParameterTypeDescriptionDefault
generalboolUse generic (architecture-independent) QEPFalse
percdampfloatDamping percentage for Hessian regularization0.01
perccorrfloatCorrection percentage for error propagation0.5
devicestrDevice for QEP computations ("cuda", "mps", "cpu")"cuda:0"
exclude_layer_keywordslist[str]Layer keywords excluded from error propagation["mlp.down_proj"]

!!! tip The default general=False uses the architecture-aware implementation, which is faster because it exploits shared activations (e.g., QKV layers sharing the same input in Llama-like models).

LPCDConfig

LPCDConfig controls Layer-Projected Coordinate Descent (LPCD) refinement.

from onecomp import LPCDConfig

lpcd_config = LPCDConfig(
    enable_residual=True,
    percdamp=0.01,
    perccorr=0.5,
    use_closed_form=True,
    device="cuda:0",
)
ParameterTypeDescriptionDefault
enable_qkboolJointly refine q_proj / k_projFalse
enable_voboolJointly refine v_proj / o_projFalse
enable_udboolJointly refine up_proj / down_projFalse
enable_residualboolRefine residual-path modules (o_proj, down_proj)True
alt_stepsintAlternating coordinate-descent steps1
percdampfloatDamping percentage for Hessian regularization0.01
perccorrfloatCorrection percentage for relaxed weights0.5
use_closed_formboolUse closed-form solvers where availableTrue
gd_stepsintGradient-descent steps per sub-problem20
gd_batch_sizeintEffective batch size for gradient accumulation16
gd_base_lrfloatBase learning rate for gradient solver1e-4
devicestrDevice for LPCD computation"cuda:0"

!!! tip LPCDConfig() defaults to residual-only refinement, which is the fastest way to get started. Enable enable_qk, enable_vo, and enable_ud for broader submodule refinement.

!!! note When combining LPCD with QEP, use the architecture-aware QEP path (QEPConfig(general=False)). The current LPCD implementation does not support QEPConfig(general=True).

Quantizer Common Parameters

All quantizers inherit from the Quantizer base class and share these parameters:

ParameterTypeDescriptionDefault
namestrQuantizer name (defaults to class name)None
num_layersintMaximum layers to quantizeNone
calc_quant_errorboolCalculate quantization error per layerFalse
include_layer_nameslist[str]Layers to quantize (exact match)None
exclude_layer_nameslist[str]Layers to skip (exact match)["lm_head"]
include_layer_keywordslist[str]Quantize layers containing any keywordNone
exclude_layer_keywordslist[str]Skip layers containing any keywordNone

Layer Selection Priority

  1. Filter by layer type (target_layer_types)
  2. If include_layer_names is set, only include exact matches
  3. If include_layer_keywords is set, only include layers containing any keyword
  4. Exclude exclude_layer_names (exact match)
  5. Exclude exclude_layer_keywords (keyword match)
  6. Limit by num_layers