spybyscript's picture
Parakeet TDT 0.6B v3 for Core AI: 8-bit palettized encoder (0.65 GB), Mac and iPhone validated
56ae5ae verified
|
Raw History Blame Contribute Delete
1.79 kB

Reproducing the conversion

You need:

  • Python 3.11, with PyTorch 2.11.0, Transformers 5.17.0, coreai-torch 0.4.2, coreai-core 1.0.0b2, coreai-opt 0.2.1, numpy and huggingface_hub;
  • macOS 27 with Xcode 27.

The source: nvidia/parakeet-tdt-0.6b-v3 at revision 541d1f99c6b0c3cd0b11a95167540bb8edefd82b. You need these files:

  • README.md
  • config.json
  • generation_config.json
  • model.safetensors, whose SHA-256 is 3a2026366188c8c68598edbbff92f8d11590a08e0ae2e6775544e7b07d6a5e11
  • tokenizer.json
  • tokenizer_config.json

Put them in a folder with a source-provenance.json:

{"repo_id": "nvidia/parakeet-tdt-0.6b-v3", "revision": "541d1f99c6b0c3cd0b11a95167540bb8edefd82b",
 "files": ["README.md", "config.json", "generation_config.json", "model.safetensors", "tokenizer.json", "tokenizer_config.json"]}

Export, from this folder:

PYTHONPATH=. python parakeet_export.py --source /path/to/source --output /path/to/pal8 \
  --encoder-weights pal8 --small-weights fp16

What the export does:

  • Encoder and projection: palettized with coreai-opt's 8-bit per-tensor k-means preset (KMeansPalettizerConfig.presets.w8()), then cast to FP16 with a 16-bit output.
  • Predictor and joint: wrapped so their weights are FP16 while their inputs and outputs stay FP32.
  • Frontend: stays FP32.
  • References: each component's export-time reference tensors go in references/.
  • Manifest: lists every file's size and SHA-256.

Defaults, with no flags, reproduce the plain FP16 conversion.

Files here:

  • parakeet_export.py: the export.
  • parakeet_adapters.py: the frontend, encoder, predictor and joint graphs.
  • nemotron/graphs.py: the explicit LSTM predictor and joint graphs, shared with the Nemotron conversion.