mlboydaisuke's picture
Add README.md
9de2eb8 verified
|
Raw
History Blame Contribute Delete
3.94 kB
metadata
license: openrail
library_name: coreml
pipeline_tag: text-to-image
base_model: ByteDance/Hyper-SD
base_model_relation: quantized
tags:
  - coreml
  - core-ml
  - ios
  - macos
  - apple
  - on-device
  - text-to-image
  - stable-diffusion
  - one-step
  - lora
  - arxiv:2404.13686

Hyper-SD (1-Step) — Core ML

ByteDance, 2024

Single-step text-to-image from SD1.5 via TCD distillation. 512×512. Chunked UNet (6-bit).

Hyper-SD (1-Step) demo Hyper-SD (1-Step) demo

Core ML conversion of ByteDance/Hyper-SD for on-device inference on iPhone, iPad and Mac. Converted with coremltools; the packages are stateless, so all sequencing and buffering lives in your Swift code.

Task text to image
Upstream ByteDance/Hyper-SD
Packages 4
Download size 905 MB
Minimum iOS 17.0
Peak RAM ~1000 MB

Files

File Size Compute units SHA-256
HyperSDTextEncoder.mlpackage.zip 216 MB cpuAndNeuralEngine 201b0fcc3573811a…
HyperSDUnetChunk1.mlpackage.zip 310 MB cpuAndNeuralEngine 279da11b8231aeeb…
HyperSDUnetChunk2.mlpackage.zip 290 MB cpuAndNeuralEngine 0a700d11a105da58…
HyperSDVAEDecoder.mlpackage.zip 87 MB cpuAndGPU 1260371542d845a2…
vocab.json 1 MB - e089ad92ba36837a…
merges.txt 512 KB - 9fd691f7c8039210…
Total 905 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.

Download

hf download mlboydaisuke/coreml-zoo --include "hypersd/*" --local-dir ./hypersd
unzip './hypersd/hypersd/*.zip' -d ./hypersd

Use in Swift

import CoreML

let config = MLModelConfiguration()
config.computeUnits = .cpuAndNeuralEngine   // as converted — see the table above

// Unzip the .mlpackage, drop it into your Xcode target and Xcode compiles it
// at build time:
let model = try HyperSDTextEncoder(configuration: config)

// ...or compile a downloaded .mlpackage at runtime:
let compiled = try await MLModel.compileModel(at: mlpackageURL)
let model = try MLModel(contentsOf: compiled, configuration: config)

This model is split into 4 Core ML packages that are driven in sequence from Swift. Load them one at a time, copy the outputs out of the MLMultiArray buffers and release each model before loading the next — two large Core ML models resident at once will OOM on an iPhone.

Demo

  • Sample appsample_apps/HyperSDDemo, a standalone SwiftUI project.
  • Models Zoo — this model is downloadable and runnable inside the Models Zoo app on the App Store, no build required.

Conversion

License

The conversion inherits the upstream license: OpenRAIL-M.

Credits

  • Upstream authors: ByteDance/Hyper-SD, 2024
  • Core ML conversion: john-rocky (Daisuke Majima)