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:
This should be explicit and deterministic.
3. Repetitive parameter passing
The same arguments are being passed across multiple functions:
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.
Summary
Currently, the package requires users to pass the same parameters (e.g.
gguf, quantization type, output format) separately into multiple methods such asexport()andpush(). 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()andpush()Example:
gguf=Trueis passed toexport(), the model exports as GGUF.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:
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:
Then usage becomes:
No repeated parameters needed.
Expected Benefits
Suggested Implementation Notes
export()andpush()should consume internal config unless explicitly overridden.Impact
This would significantly improve usability and remove confusion around format + quantization handling.