Packed training allows training multiple compatible WaveNet submodels within a single larger masked WaveNet. This is useful for creating a single .nam file containing several WaveNet sizes that share the same temporal architecture but use different channel counts.
To use packed training, set the name in your model configuration to "PackedWaveNet" and run the nam-full command. No special CLI flags are required; the trainer automatically selects the PackedLightningModule based on the config.
Configuration Requirements:
- The
submodels list contains individual WaveNet configurations. - Temporal settings (e.g.,
kernel_size, dilations, activation) must match across all submodels. - Channel counts (e.g.,
channels) can differ between submodels. - Use
export.container_max_values to control the max_value thresholds in the exported SlimmableContainer. Options include "uniform" or a sorted list of values (one per submodel).
{
"net": {
"name": "PackedWaveNet",
"config": {
"submodels": [
{
"name": "small",
"config": {
"layers_configs": [
{
"input_size": 1,
"condition_size": 1,
"channels": 3,
"head": {"out_channels": 1, "kernel_size": 1, "bias": true},
"kernel_size": 6,
"dilations": [1, 5, 29, 97, 227],
"activation": "LeakyReLU"
}
],
"head": null,
"head_scale": 0.01
}
},
{
"name": "large",
"config": {
"layers_configs": [
{
"input_size": 1,
"condition_size": 1,
"channels": 8,
"head": {"out_channels": 1, "kernel_size": 1, "bias": true},
"kernel_size": 6,
"dilations": [1, 5, 29, 97, 227],
"activation": "LeakyReLU"
}
],
"head": null,
"head_scale": 0.01
}
}
],
"export": {
"container_max_values": "uniform"
}
}
}
}