Skip to content

Centralize config for export/push parameters and improve quantization default handling #24

@codewithdark-git

Description

@codewithdark-git

Summary

Currently, the package requires users to pass the same parameters (e.g. gguf, quantization type, output format) separately into multiple methods such as export() and push(). This creates inconsistent behavior, duplicated configuration, and unclear defaults.

We should move these settings into a single top-level config directory/object that is provided when initializing the Turbo instance. Then all downstream methods (export, push, etc.) should automatically use that shared config.


Current Problems

1. Inconsistent behavior between export() and push()

Example:

  • If gguf=True is passed to export(), the model exports as GGUF.
  • If the same flag is not also passed to push(), it falls back to another default format (e.g. safetensors).

This means users must remember to repeat the same config in multiple places.

2. Random / unclear quantization defaults

For quantization type (8-bit, 4-bit, 2-bit), the Turbo constructor appears to choose defaults unpredictably.

Sometimes it selects:

  • 8-bit
  • 4-bit

This should be explicit and deterministic.

3. Repetitive parameter passing

The same arguments are being passed across multiple functions:

  • export(...)
  • push(...)

This is noisy, harder to maintain, and error-prone.


Proposed Solution

Create a single config directory/object at the top level and pass it into Turbo during initialization.

Example:

config = {
    "format": "gguf",
    "quantization": "4bit",
    "push_format": "gguf"
    # All other parameters to pass to config, optional and required
}

turbo = Turbo(config=config)

Then usage becomes:

model.export()
model.push()

No repeated parameters needed.


Expected Benefits

  • Cleaner API design
  • Consistent behavior across export/push flows
  • No duplicated arguments
  • Easier maintenance
  • Clearer defaults
  • More modular architecture
  • Better developer experience

Suggested Implementation Notes

  • Resolve all export/push settings during Turbo initialization.
  • Store config internally.
  • export() and push() should consume internal config unless explicitly overridden.
  • Quantization defaults should be fixed and documented.

Impact

This would significantly improve usability and remove confusion around format + quantization handling.

Metadata

Metadata

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions