
coremltools; the packages are stateless, so all sequencing and buffering lives in your Swift code.| Task | text to image |
| Upstream | amd/Nitro-E |
| Packages | 3 |
| Download size | 987 MB |
| Minimum iOS | 18.0 |
| Peak RAM | ~2500 MB |
| File | Size | Compute units | SHA-256 |
|---|---|---|---|
NitroE_TextEncoder.mlpackage.zip | 545 MB | cpuAndNeuralEngine | 9b366b29d790ab98… |
NitroE_EMMDiT.mlpackage.zip | 283 MB | cpuAndNeuralEngine | 93a7ed971c5c419d… |
NitroE_VAEDecoder.mlpackage.zip | 153 MB | cpuAndNeuralEngine | 4837023736d82b49… |
Llama3Vocab.json | 2 MB | - | f8f40517934d6f5d… |
Llama3Merges.txt | 3 MB | - | 0cd100e0ab7dbd83… |
| Total | 987 MB |
compute_units is not a suggestion -- it is the configuration the conversion was verified against. Moving a package to a different compute unit can silently change the numerics (FP16 attention overflow) or crash on the GPU.1hf download mlboydaisuke/coreml-zoo --include "nitroe/*" --local-dir ./nitroe
2unzip './nitroe/nitroe/*.zip' -d ./nitroe1import CoreML
2
3let config = MLModelConfiguration()
4config.computeUnits = .cpuAndNeuralEngine // as converted — see the table above
5
6// Unzip the .mlpackage, drop it into your Xcode target and Xcode compiles it
7// at build time:
8let model = try NitroE_TextEncoder(configuration: config)
9
10// ...or compile a downloaded .mlpackage at runtime:
11let compiled = try await MLModel.compileModel(at: mlpackageURL)
12let model = try MLModel(contentsOf: compiled, configuration: config)This model is split into 3 Core ML packages that are driven in sequence from Swift. Load them one at a time, copy the outputs out of theMLMultiArraybuffers and release each model before loading the next — two large Core ML models resident at once will OOM on an iPhone.
sample_apps/NitroEDemo, a standalone SwiftUI project.convert_nitro_e_emmdit.pydocs/coreml_conversion_notes.mdNitro-E itself is MIT; the bundled text encoder is Llama 3.2 and carries the Llama 3.2 Community License.