Add files using upload-large-folder tool
Browse files- README.md +106 -298
- image/blobs/sha256/05377a9e9bca6629850adb9f83b736bed1a337417a42f4fbc7939cb070e4103c +1 -0
- image/blobs/sha256/09a2b4b5da7d9c4dc9fcecdf9587d215738b5a001cc1f544754aa2471f17ccf4 +1 -0
- image/blobs/sha256/0b00322e10db8938039548659894c55192e2ed4bbc1305c1bb9db98646afb9ce +1 -0
- image/blobs/sha256/1045a45a3f55e192bbc825ed2ad291fa1c548e767860db71be78502aabb6971e +0 -0
- image/blobs/sha256/1992bd3360f71a1c0e629ec18d01db28cacf924d57da902ee8d53a87c4fdf077 +1 -0
- image/blobs/sha256/1a032fb77dbde7874914c0efd0a0560300938f33c3de47c86acc09a382af5ba1 +1 -0
- image/blobs/sha256/20fc3f63a37e2e97136281a7bea918f951867dcda5d6a8220cbb8c451842e2c6 +1 -0
- image/blobs/sha256/2913e7d4aae3b053b2337c0f74236067652783d528ac5e6d56a85f13b8e2be28 +0 -0
- image/blobs/sha256/297cc480b713b9d9e67d9705f6fb5083b1d0a71c3e00adb6d2fb544fd181bc90 +1 -0
- image/blobs/sha256/35c97e50ac6404ce6bb0bc653d1d7b75da4c727139f6ad4c2fb4349ab36ddf74 +0 -0
- image/blobs/sha256/473ec4813d862cfcaafff1d3b604c787be8aba9130a29d77aa6260545e33a204 +0 -0
- image/blobs/sha256/4846ed2c3340e69f871c5bb70dffde2e47cf3e2e29799264f1c6e5e3f487a655 +1 -0
- image/blobs/sha256/51bace3613cab52c178386031b223837c9eced816f3b74c2016f9355c343c3c7 +1 -0
- image/blobs/sha256/5628e13ce208b83d793af15fa41c28d1702e7a43e27c8c72944442d01e959a71 +1 -0
- image/blobs/sha256/5c5e6730f02ae4b11cd2835d46daea29c72eb09a77567aaf944d2d50288f2467 +1 -0
- image/blobs/sha256/5cf1af4a91c109c471f328139d54b01ecb2fc30e1d719163250fdc106e1bae19 +1 -0
- image/blobs/sha256/5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef +0 -0
- image/blobs/sha256/783bf7cca84ebcb9f4871153860aac9bf83c54d246bbdba3468c4ad19cc64814 +1 -0
- image/blobs/sha256/7f5224b468f7a4cf2e976cc3a9667b07c57b434f0d2949c376e5266dd636d8ba +1 -0
- image/blobs/sha256/82d59d07267825fcd4ef561fb9947c582b27c60dcd5422a27900b2087ba56e89 +1 -0
- image/blobs/sha256/8c27526b713a72bd442a649055f125a7642d8a9d81bec1aaeafd010d5e75f09b +1 -0
- image/blobs/sha256/90e294f7896d636a22eb471381c0541ec2583d6e4d87a3330ee603c712058373 +0 -0
- image/blobs/sha256/a3929a30463ca9f7e79676224374be8724d0e0b5971b6366028dad8abdd119b4 +1 -0
- image/blobs/sha256/b1e032b4456fa68570df12ada4bae732152fe690d883e20315312e9311e8aefb +1 -0
- image/blobs/sha256/b619284fc58a2511f0e2cf87c6407029e1912483daf54d9081ec13201367482b +0 -0
- image/blobs/sha256/bad2ac50381c951e4a06263ad41715f3eff03ac32a5c02b31546928a1b435ca8 +1 -0
- image/blobs/sha256/d289e67a5acf53049af3e14fd2a36d1afbfcafa54dc20de726fb06bb13ce2d23 +1 -0
- image/blobs/sha256/dcc7c4d7314823f2580f5dd1001063cd7574a7b6f1fdb1a7393b1b1578f93b89 +1 -0
- image/blobs/sha256/e4a3caad98453047bb9214acfacdd96b2e2a9f7f6848c3a9b996517022f57223 +1 -0
- image/blobs/sha256/eb5b37a32a219394704bc5e4f333758d38742ca4e247bcd28b5a44b42b97a327 +1 -0
- image/blobs/sha256/f22d2a87583a45d1c172ba963719a2ee0f27530e83acef41dc1680e6770e308a +1 -0
- image/index.json +1 -0
- image/manifest.json +1 -0
- image/oci-layout +1 -0
- image/repositories +1 -0
- requirements.lock +83 -0
- tt_kernel_manifest.json +111 -0
README.md
CHANGED
|
@@ -1,342 +1,150 @@
|
|
| 1 |
---
|
| 2 |
-
pipeline_tag: keypoint-detection
|
| 3 |
tags:
|
| 4 |
-
- tenstorrent
|
| 5 |
- blackhole
|
| 6 |
- p150
|
| 7 |
-
-
|
| 8 |
-
- tt-
|
| 9 |
-
- tt-
|
| 10 |
-
- keypoint-detection
|
| 11 |
-
- superpoint
|
| 12 |
-
base_model:
|
| 13 |
-
- magic-leap-community/superpoint
|
| 14 |
-
license: other
|
| 15 |
-
license_name: magic-leap-superpoint
|
| 16 |
-
license_link: https://huggingface.co/magic-leap-community/superpoint
|
| 17 |
---
|
| 18 |
|
| 19 |
-
#
|
| 20 |
|
| 21 |
-
SuperPoint keypoint detection and description
|
| 22 |
|
| 23 |
-
**
|
| 24 |
|
| 25 |
-
|
| 26 |
-
|---|---|
|
| 27 |
-
| Hardware | Tenstorrent Blackhole **p150a** (single chip) |
|
| 28 |
-
| Runtime | [tt-metal](https://github.com/tenstorrent/tt-metal) / tt-nn |
|
| 29 |
-
| Upstream model | [huggingface.co/magic-leap-community/superpoint](https://huggingface.co/magic-leap-community/superpoint) |
|
| 30 |
-
| Port source | [github.com/changh95/tt-superpoint](https://github.com/changh95/tt-superpoint) |
|
| 31 |
|
| 32 |
-
|
| 33 |
-
> This repo holds **model code, not weights.** It is a tt-nn port that runs against a
|
| 34 |
-
> built `tt-metal` checkout on a machine with a Blackhole card; weights are fetched
|
| 35 |
-
> from the upstream repo above. See *Licensing* at the end for terms.
|
| 36 |
|
| 37 |
-
|
|
|
|
|
|
|
|
|
|
| 38 |
|
| 39 |
-
|
| 40 |
|
| 41 |
-
|
| 42 |
-
(p150a/p150b) accelerator, implemented with tt-nn.
|
| 43 |
|
| 44 |
-
|
| 45 |
-
|
|
|
|
|
|
|
| 46 |
|
| 47 |
-
|
|
|
|
|
|
|
| 48 |
|
| 49 |
-
|
| 50 |
-
- A built `tt-metal` checkout (the `ttnn` runtime is loaded from there).
|
| 51 |
-
- Python 3.12 venv with `torch`, `torchvision`, `transformers`, and
|
| 52 |
-
`loguru` installed.
|
| 53 |
-
- One visible Blackhole chip.
|
| 54 |
|
| 55 |
```bash
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
```
|
| 62 |
|
| 63 |
-
`
|
| 64 |
-
`
|
| 65 |
-
(
|
| 66 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 67 |
|
| 68 |
-
|
|
|
|
| 69 |
|
| 70 |
-
|
| 71 |
-
Circle radius is proportional to keypoint score.
|
| 72 |
|
| 73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
|
| 75 |
-
|
| 76 |
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
``
|
| 84 |
|
| 85 |
-
##
|
| 86 |
|
| 87 |
-
|
| 88 |
|
| 89 |
| Tensor | PCC |
|
| 90 |
|---|---:|
|
| 91 |
| Pre-NMS score map | **0.9971** |
|
| 92 |
-
| Descriptor map (
|
| 93 |
-
|
| 94 |
-
PCC ≥ 0.99 across both outputs — meets the project's hard accuracy floor.
|
| 95 |
-
|
| 96 |
-
### Keypoint-set evaluation (GT = Hugging Face reference on real image)
|
| 97 |
-
|
| 98 |
-
Real photograph (`sample_data/house_in_field_1080p.jpg`), top-K = 500,
|
| 99 |
-
matching radius = 2 pixels:
|
| 100 |
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
| Recall | **98.80%** |
|
| 104 |
-
| Precision | **98.80%** |
|
| 105 |
-
| **F1** | **98.80%** |
|
| 106 |
-
|
| 107 |
-
For the synthetic `torch.rand` input (distribution the model was not
|
| 108 |
-
trained on), F1 is 97.80% — included as a stability check, not an
|
| 109 |
-
accuracy claim.
|
| 110 |
-
|
| 111 |
-
### Throughput
|
| 112 |
|
| 113 |
-
|
|
|
|
| 114 |
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
| Metric | Random input | Natural image | Paper (Titan X, 2018 Caffe) |
|
| 118 |
|---|---:|---:|---:|
|
| 119 |
-
|
|
| 120 |
-
|
|
| 121 |
-
|
|
| 122 |
-
| Full e2e (incl. host NMS) | 17.50 fps | 17.00 fps | not reported |
|
| 123 |
|
| 124 |
-
|
|
|
|
|
|
|
|
|
|
| 125 |
|
| 126 |
-
|
| 127 |
-
|---|---:|---:|---:|
|
| 128 |
-
| Device forward + device NMS (pre-resident) | 85.59 fps | 85.60 fps (11.68 ms) | 90 fps (11.15 ms) |
|
| 129 |
-
| Traced forward+NMS incl. per-frame H2D | 44.55 fps | 44.56 fps | — |
|
| 130 |
-
| `fps_match_paper` (forward + descriptor sampling) | 28.46 fps | 29.18 fps | 70 fps (13 ms) |
|
| 131 |
-
| **Full e2e (no host NMS)** | **40.69 fps** | **40.73 fps** | not reported |
|
| 132 |
-
|
| 133 |
-
**E2E win**: moving NMS on-device via the fused `sp_eq_mul_mask` C++ kernel
|
| 134 |
-
plus a stack of dispatch/host-side cleanups pushes end-to-end throughput from
|
| 135 |
-
**17.0 → 40.73 fps** on the natural image (**+140%**) and
|
| 136 |
-
**17.5 → 40.69 fps** on random (**+132%**). PCC and F1 are preserved to the
|
| 137 |
-
last digit (0.9971 / 98.80% on natural).
|
| 138 |
-
|
| 139 |
-
The device-NMS trace absorbs the 36 ms host simple_nms into ~7 ms of extra
|
| 140 |
-
device-side work (fold + `max_pool2d` + `sp_eq_mul_mask` + row-major
|
| 141 |
-
channel-0 slice) — that's why `compute_only` and `match_paper` look lower in
|
| 142 |
-
the second table: the traced region now does strictly more work. Pure forward
|
| 143 |
-
fps is unchanged.
|
| 144 |
-
|
| 145 |
-
E2E per-phase breakdown (SP_TRACE_NMS=1, natural image, ms/iter):
|
| 146 |
-
|
| 147 |
-
| Phase | ms |
|
| 148 |
-
|---|---:|
|
| 149 |
-
| Compute-phase (Python dispatch + event records; trace runs async) | 8.4 |
|
| 150 |
-
| D2H (descriptor tile + single-channel NMS map, 2× `ttnn.to_torch`) | 14.3 |
|
| 151 |
-
| Host post (keypoint extraction + grid_sample) | 1.8 |
|
| 152 |
-
|
| 153 |
-
D2H is dominated by ttnn's per-call `from_device` dispatch cost (~6–9 ms per
|
| 154 |
-
call even on a 614 KB tensor); it's the same runtime floor that caps H2D at
|
| 155 |
-
~10.7 ms. Input double-buffering to hide H2D behind trace was tried twice
|
| 156 |
-
and regressed (see the Reverts table) — the fix would need a 1-channel NMS
|
| 157 |
-
kernel to cut layout conversions out of the trace, or a batched D2H API.
|
| 158 |
-
|
| 159 |
-
Measurement methodology: 10-iteration inner loop per metric, SP_N_ITER=100 for
|
| 160 |
-
stable numbers. Compute-only uses `blocking=False` + a single final sync;
|
| 161 |
-
traced forward adds per-frame `load_input_prepared` (H2D of the pre-cast bf16
|
| 162 |
-
host tensor) on cq_id=1, overlapping the trace on cq_id=0. E2E uses the same
|
| 163 |
-
dual-CQ pattern + a blocking D2H of the single-channel NMS output.
|
| 164 |
-
|
| 165 |
-
### Comparison read
|
| 166 |
-
|
| 167 |
-
- **Device forward pass hits 353 fps on a natural image — 3.9× the 2018 Titan X
|
| 168 |
-
baseline.** This is the SRAM-effective number: the traced forward replay
|
| 169 |
-
fits entirely in on-chip L1 with only block 0/1's activations spilling to
|
| 170 |
-
DRAM (per-slice, bounded by the 1.5 MB/core ceiling). Weights stay
|
| 171 |
-
resident across invocations because trace owns the allocator.
|
| 172 |
-
- `inference_speed` (per-frame H2D included) drops to ~72 fps because
|
| 173 |
-
`ttnn.copy_host_to_device_tensor` carries a ~10.7 ms-per-call fixed Python
|
| 174 |
-
dispatch cost independent of payload size. That's a ttnn runtime
|
| 175 |
-
characteristic, not hardware — the PCIe 4.0×16 payload is 600 KB (~20 µs at
|
| 176 |
-
line rate). Dual command queues hide compute behind H2D but not vice versa
|
| 177 |
-
because H2D > compute.
|
| 178 |
-
- `fps_match_paper` (the metric that lines up with the paper's 13 ms figure)
|
| 179 |
-
is at **60%** of paper when paying the per-frame H2D cost each call, and
|
| 180 |
-
exceeds the paper's 70 fps on pure compute (353 fps).
|
| 181 |
-
- End-to-end incl. NMS is lower because the paper does not include NMS in
|
| 182 |
-
its timing.
|
| 183 |
-
|
| 184 |
-
## Optimization trajectory
|
| 185 |
-
|
| 186 |
-
Recorded experiment-by-experiment in `results.tsv`. The commits cited
|
| 187 |
-
here are short hashes from the branch the work was developed on.
|
| 188 |
-
|
| 189 |
-
### Biggest wins (cumulative)
|
| 190 |
-
|
| 191 |
-
| # | Change | Before → After (fps_traced) | Notes |
|
| 192 |
-
|---|---|---:|---|
|
| 193 |
-
| 1 | Initial port (LoFi, bfloat8 weights) | 0 → **5.85** | Score PCC 0.70 — below 99% floor |
|
| 194 |
-
| 2 | HiFi2 + bfloat16 weights + fp32 accumulator (`b0ecf6a`) | 5.85 → **6.41** | PCC jumps to 0.997 — now meets spec |
|
| 195 |
-
| 3 | Descriptor L2-norm moved to device (`1c2a582`) | 6.41 → **6.59** | +2.9% |
|
| 196 |
-
| 4 | **`ttnn.trace` captures the device forward** (`5a705bd`) | 6.59 → **71.31** | **10.8×** — Python dispatch was 97% of wall-clock |
|
| 197 |
-
| 5 | 2 command queues (H2D on CQ1 overlapped with compute) (`787eff6`) | 71.31 → **72.04** | +1% |
|
| 198 |
-
| 6 | Single-pass NMS on host (replaces HF's 3-pass tie-expansion loop) | (e2e: 6.23 → **16.5 fps**) | Host NMS was 119 ms/iter; single pass ~36 ms; F1 98.8% preserved |
|
| 199 |
-
| 7 | Device softmax (verified `ttnn.softmax` respects 65-dim logical shape) (`7d1c378`) | 73.60 | accuracy-neutral; unblocks future on-device post-proc |
|
| 200 |
-
| 8 | **SRAM diagnostic + prebuild host bf16 input once** (`62f112d`) | 73.60 → **353.31** (compute-only) | Isolated ttnn's per-call Python H2D dispatch cost (~10.7 ms/call, payload-independent) from actual device compute (2.83 ms/iter) — hardware forward-pass fps is **3.9×** the paper on natural image |
|
| 201 |
-
| 9 | **Fused `sp_eq_mul_mask` closes NMS loop on device** | (e2e: 17.00 → **24.11 fps**) | Replaces the 36 ms host simple_nms with `ttnn.max_pool2d` + the fused C++ kernel (`ttnn.experimental.sp_eq_mul_mask`) + an on-device channel-0 slice. 7 ms of extra trace work saves 36 ms of host work. F1 unchanged at 98.80%; PCC unchanged at 0.9971. |
|
| 202 |
-
| 10 | **Drop redundant `synchronize_device` before D2H** | (e2e: 24.11 → **34.28 fps**, +40%) | The explicit full-device sync before the D2H phase was forcing CQ1's pipelined H2D to drain at the same time as CQ0's trace; the first `ttnn.to_torch` on CQ0 already blocks implicitly on trace completion, so the sync was pure serialization. One-line removal. |
|
| 203 |
-
| 11 | Drop redundant `.contiguous()` before `.float()` on descriptor | (e2e: 34.28 → 38.11 fps, +6%) | `.float()` on a non-contiguous bf16 tensor already allocates a contiguous fp32 copy; the intermediate `.contiguous()` was doing a second 1.2 MB bf16→bf16 copy. Host post phase 4.5 → 2.3 ms. |
|
| 204 |
-
| 12 | Skip `.float()` on `nms_scores`, keep bf16 | (e2e: 38.11 → 39.87 fps, +4.6%) | `torch.nonzero`, `torch.topk` and indexing all support bf16; only the keypoint coords need an fp32 cast at `grid_sample` call-site (`kp.float()[None]`). Saves a ~1 ms 614 KB bf16→fp32 host copy per iter. |
|
| 205 |
-
| 13 | Consolidate intermediate reshapes in `_device_fold_and_nms` | (e2e: 39.87 → **40.73 fps**, +2.2%) | Two intermediate reshape views — `(b,enc_h,enc_w,64)` and `(b,H,W,1)` — were unnecessary. Reshape directly from row-major `(b,1,enc_h·enc_w,64)` to 5D `(b,enc_h,enc_w,8,8)` pre-permute, and from the permuted tensor to flat `(1,1,b·H·W,1)` post-permute. |
|
| 206 |
-
|
| 207 |
-
### Reverts (PCC fell below 99% or no wall-clock gain)
|
| 208 |
-
|
| 209 |
-
| Change | Why reverted |
|
| 210 |
-
|---|---|
|
| 211 |
-
| bfloat8_b weights on encoder (whole) | score PCC dropped to 0.91 |
|
| 212 |
-
| bfloat8_b weights on encoder block 0 only | score PCC 0.91 |
|
| 213 |
-
| Encoder math fidelity LoFi (with bf16 weights + fp32 acc) | score PCC 0.91 |
|
| 214 |
-
| DRAM slice counts `(2,1,1,1)` and `(2,2,1,1)` | block-0 L1 CB overflow 1.58 MB > 1.57 MB |
|
| 215 |
-
| DRAM slice counts `(4,1,1,1)` | block-1 L1-full slower than 2-slice DRAM |
|
| 216 |
-
| `enable_weights_double_buffer=True` on convs | slower (tighter CBs) |
|
| 217 |
-
| `enable_act_double_buffer=True` | within noise |
|
| 218 |
-
| `reallocate_halo_output=True` | no effect |
|
| 219 |
-
| `full_inner_dim=True` | no effect |
|
| 220 |
-
| `act_block_h_override=32` on block 0 | no improvement |
|
| 221 |
-
| `BLOCK_SHARDED` on encoder block 3 | no benefit at 60×80 |
|
| 222 |
-
| `deallocate_activation=True` on convs | marginal regression |
|
| 223 |
-
| `WIDTH_SHARDED` on block 0 | OOM — 1-channel input can't distribute across banks |
|
| 224 |
-
| Device NMS via standalone trace | per-op Python dispatch ate the savings (+6% for +code) |
|
| 225 |
-
| Device fold+NMS Python-composed (pre-fused-kernel) (`36dc956`) | Used to be net-negative: 6 ms fold + host compare/mask cancelled the 36 ms host-NMS saving. **Superseded**: once `sp_eq_mul_mask` closes the compare+mask on device, the same fold chain becomes net-positive (+41% e2e, now the default via `SP_TRACE_NMS=1`). |
|
| 226 |
-
| Pack descriptor + NMS into one tensor for a single D2H | Tile→row-major layout conversion on 1.2 MB descriptor + `ttnn.concat` added ~7 ms of trace work AND blew up D2H to 53.5 ms (likely the combined tensor broke amortization of trace-tail wait). e2e 34.28 → 14.07 — biggest regression of the whole project. |
|
| 227 |
-
| `ThreadPoolExecutor` for host post-processing | Post is only 2–4 ms; the worker-thread submit/result barrier added ~0.6 ms and GIL contention with `ttnn.to_torch` pushed D2H up. Net flat within noise. |
|
| 228 |
-
| Both D2Hs as `from_device(blocking=False)` + `synchronize_device` | CQ0 dispatch serializes internally regardless; flat (35.89 vs 35.94 baseline). |
|
| 229 |
-
| Cast descriptor to `bfloat8_b` before D2H | Halves the device payload (1.2 MB → 614 KB) but the host-side bf8→fp32 unpack path was *slower* than bf16→fp32 — D2H grew 14.3 → 17.2 ms. Descriptor PCC held at 0.9991 so quality was fine; purely a ttnn host-unpack cost issue. |
|
| 230 |
-
| Skip `to_memory_config(DRAM)` before `to_layout(TILE)` on `s_pooled` | CRASH: `ttnn.max_pool2d`'s sharded output has shard shape (2793, 32) which isn't tile-aligned; `to_layout(TILE)` rejects sharded input unless shards are tile-aligned. Must interleave to DRAM first. |
|
| 231 |
-
| Input double-buffering (two `tt_in` buffers, two captured traces, alternating) | Tried twice — once with D2H split across CQs and once with D2H unchanged — BOTH regressed e2e to ~36 fps. Host post phase consistently jumped 1.8 → 4.4–4.7 ms even with identical post code; suspected DRAM contention between concurrent CQ1 H2D and CQ0 trace, or event-scheduling overhead with two tids. Requires tracy profiling to diagnose; not worth pursuing without profiler data. |
|
| 232 |
-
|
| 233 |
-
### What each run taught
|
| 234 |
-
|
| 235 |
-
- **Precision is a cliff, not a slope.** Either encoder ran in `bfloat16 +
|
| 236 |
-
HiFi2 + fp32 accumulator` and PCC stayed ≥ 0.997, or it didn't and PCC
|
| 237 |
-
fell off to ~0.91 immediately. No halfway config worked.
|
| 238 |
-
- **Trace is the biggest unlock by far.** Before trace, device compute was
|
| 239 |
-
~3% of wall. After trace it became the bulk of wall. Everything else is
|
| 240 |
-
small-percentage tuning.
|
| 241 |
-
- **Structural knobs (DRAM slicing, shard layout, act block) converged at
|
| 242 |
-
the baseline.** On this tiny (~1.3 M-param) model, the auto-chosen
|
| 243 |
-
configs are close enough to optimal that explicit overrides mostly turn
|
| 244 |
-
into noise or CB overflow.
|
| 245 |
-
- **NMS is the dominant host cost** once trace is on. The 9×9 max-pool at
|
| 246 |
-
480×640 is what gates end-to-end throughput. Single-pass instead of 3-pass
|
| 247 |
-
eliminated a 119 ms/iter wall.
|
| 248 |
-
|
| 249 |
-
### Attempted but not completed
|
| 250 |
-
|
| 251 |
-
- **Full fold + NMS inside the traced forward.** **LANDED and wins +41% e2e**
|
| 252 |
-
(opt-in via `SP_TRACE_NMS=1`). The page-alignment error was fixed by
|
| 253 |
-
pinning every reshape to `DRAM_MEMORY_CONFIG` and materialising the
|
| 254 |
-
zero-padding tensor once (trace capture rejects in-trace `ttnn.zeros`
|
| 255 |
-
writes). The previously-blocking overhead — a Python-composed
|
| 256 |
-
eq + multiply that cost ~1.5 ms per extra op in the trace — is now
|
| 257 |
-
replaced by the single-dispatch `ttnn.experimental.sp_eq_mul_mask`
|
| 258 |
-
fused kernel. Host NMS (36 ms) is gone; device trace gains ~7 ms of
|
| 259 |
-
fold + max_pool + fused mask. Net: e2e goes 17.0 → 24.1 fps on the
|
| 260 |
-
natural image.
|
| 261 |
-
- **Device-side `grid_sample`.** `ttnn.grid_sample` exists and is
|
| 262 |
-
verified working. On a natural image with ~500 keypoints, the host
|
| 263 |
-
`F.grid_sample` costs ~1.15 ms — not a meaningful target against
|
| 264 |
-
the 9–14 ms D2H dispatch floor. Worth doing when D2H stops being
|
| 265 |
-
dispatch-dominated.
|
| 266 |
-
- **Input double-buffering to pipeline H2D with trace.** Two tt_in
|
| 267 |
-
buffers, two captured traces, alternating per-iter so CQ1's H2D
|
| 268 |
-
writes a *different* buffer than CQ0's current trace reads. Analysis
|
| 269 |
-
suggested a ~25% ceiling uplift if D2H could also split across CQs.
|
| 270 |
-
**Attempted and reverted twice** — both variants (D2H-split and
|
| 271 |
-
D2H-unchanged) regressed the host post phase from 1.8 to ~4.5 ms,
|
| 272 |
-
wiping out the expected device-side gains. The regression is
|
| 273 |
-
reproducible but unexplained from Python alone; the most likely
|
| 274 |
-
suspects are DRAM/NoC contention between the concurrent CQ1 H2D and
|
| 275 |
-
CQ0 trace, or ttnn event-scheduling overhead when two tids alternate.
|
| 276 |
-
Needs tracy profiling before re-attempting. Documented in `results.tsv`
|
| 277 |
-
under commits `2f00f2b1` and `6d4fae39`.
|
| 278 |
-
- **1-channel NMS kernel (C++).** The current NMS chain pads
|
| 279 |
-
`s_flat` from 1 channel to 32 (via `ttnn.concat` with a persistent
|
| 280 |
-
zero-pad tensor) so that `ttnn.max_pool2d` and `sp_eq_mul_mask` — both
|
| 281 |
-
of which require tile-aligned channel dims (multiples of 32) — can
|
| 282 |
-
run. The 31 zero channels contribute nothing semantically. A custom
|
| 283 |
-
1-channel `max_pool2d`-style Tensix kernel would eliminate the
|
| 284 |
-
concat, one layout conversion, and the 32→1 slice at the end,
|
| 285 |
-
cutting ~3 ms from the trace interior. Similar scope to the landed
|
| 286 |
-
`sp_eq_mul_mask` kernel (~450 LoC).
|
| 287 |
-
- **Custom fused C++ Tensix kernel `ttnn.experimental.sp_eq_mul_mask`** —
|
| 288 |
-
**LANDED and on the critical path** (see `kernels/sp_eq_mul_mask/`).
|
| 289 |
-
Fuses `eq + multiply` into a single JIT-compiled Tensix program that
|
| 290 |
-
keeps the mask tile in a DST register between the SFPU
|
| 291 |
-
`eq_binary_tile` and `mul_binary_tile` calls — no DRAM round-trip for
|
| 292 |
-
the intermediate. ~450 LoC of C++.
|
| 293 |
-
- **Accuracy**: byte-identical to torch reference across match rates
|
| 294 |
-
0 → 100% (max abs diff = 0.0, exact nonzero count).
|
| 295 |
-
- **Throughput**: 0.184 ms/iter fused vs 0.276 ms/iter composed
|
| 296 |
-
(`ttnn.eq` + `ttnn.multiply`) — **1.50×** on a 1×1×307 200×32 bf16 pair.
|
| 297 |
-
- Closes one of the two remaining ops in the device-NMS chain (the
|
| 298 |
-
other — a fold + max_pool + compare — would be a similar-sized custom
|
| 299 |
-
op on top of this template).
|
| 300 |
-
- **Reducing `ttnn.copy_host_to_device_tensor`'s ~10.7 ms-per-call
|
| 301 |
-
dispatch floor.** Runtime-level work; not addressable from the model
|
| 302 |
-
layer. Would take `inference_speed` (forward + per-frame H2D) from
|
| 303 |
-
~72 fps toward the 353 fps compute ceiling.
|
| 304 |
-
|
| 305 |
-
## Layout
|
| 306 |
|
| 307 |
-
``
|
| 308 |
-
tt-superpoint/
|
| 309 |
-
├── README.md
|
| 310 |
-
├── run_benchmark.sh # Driver; requires TT_METAL_DIR
|
| 311 |
-
├── results.tsv # Full experiment log
|
| 312 |
-
├── sample_data/
|
| 313 |
-
│ └── house_in_field_1080p.jpg # Natural-image validation input
|
| 314 |
-
├── media/
|
| 315 |
-
│ └── sample.png # Rendered keypoint visualisation
|
| 316 |
-
├── kernels/
|
| 317 |
-
│ └── sp_eq_mul_mask/ # Fused C++ Tensix kernel (eq + mul in one pass)
|
| 318 |
-
│ ├── README.md # Install + measurements
|
| 319 |
-
│ ├── test.py # Correctness vs torch reference
|
| 320 |
-
│ ├── bench.py # Fused vs composed throughput
|
| 321 |
-
│ ├── {hpp,cpp,nanobind} # Public API + Python binding
|
| 322 |
-
│ └── device/ # Device op + program factory + 3 kernels
|
| 323 |
-
└── models/
|
| 324 |
-
├── visualize.py # Keypoint visualisation script
|
| 325 |
-
├── reference/
|
| 326 |
-
│ └── superpoint_reference.py # HF reference model loader + input helpers
|
| 327 |
-
├── tests/
|
| 328 |
-
│ └── test_superpoint.py # Benchmark + PCC + keypoint-set test
|
| 329 |
-
└── tt/
|
| 330 |
-
└── superpoint_ttnn.py # tt-nn implementation
|
| 331 |
-
```
|
| 332 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 333 |
|
| 334 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 335 |
|
| 336 |
-
##
|
| 337 |
|
| 338 |
-
The
|
| 339 |
|
| 340 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 341 |
|
| 342 |
-
The **port code** here was written by [Hyunggi Chang](https://github.com/changh95) and is published under the same terms, since a port cannot grant more than its upstream does. The **weights are not redistributed** in this repository - they are fetched from the upstream repo, under whatever terms that repo sets.
|
|
|
|
| 1 |
---
|
|
|
|
| 2 |
tags:
|
|
|
|
| 3 |
- blackhole
|
| 4 |
- p150
|
| 5 |
+
- tt-dit-server
|
| 6 |
+
- tt-model-cache
|
| 7 |
+
- tt-model-container
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
+
# superpoint-blackhole
|
| 11 |
|
| 12 |
+
SuperPoint (magic-leap-community/superpoint) keypoint detection and description on a single Tenstorrent Blackhole p150a via tt-nn: a base64 image in, keypoints in original pixel coordinates, scores and 256-d descriptors out, at a fixed 480x640 network input. Pre-NMS score-map PCC 0.9971 and descriptor PCC 0.9991 vs the fp32 torch reference, keypoint F1 98.8% (top-500, 2 px); this server runs the pure-ttnn untraced path with host NMS (roughly 6 fps; the README's 40.7 fps needs trace plus the fused C++ NMS kernel in kernels/, which is not built into this image). Weights are under the Magic Leap SuperPoint licence: academic or non-profit organisation NONCOMMERCIAL research use only. Port source: github.com/changh95/tt-superpoint @ e1eab66e29ff424bc9af6b1118671d9bc08e899e.
|
| 13 |
|
| 14 |
+
Runs on **p150** (mesh `P150`).
|
| 15 |
|
| 16 |
+
Packaged and published with [tt-model-manager](https://github.com/tenstorrent/tt-model-manager) 0.1.0 (manifest schema 5.1).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
|
| 18 |
+
## Quickstart
|
|
|
|
|
|
|
|
|
|
| 19 |
|
| 20 |
+
```bash
|
| 21 |
+
tt-model pull changh95/superpoint-blackhole --with-weights
|
| 22 |
+
tt-model serve changh95/superpoint-blackhole
|
| 23 |
+
```
|
| 24 |
|
| 25 |
+
`pull --with-weights` downloads the Docker image and the [`magic-leap-community/superpoint`](https://huggingface.co/magic-leap-community/superpoint) weights at `734450e9ffe229074f5998494ddc615475cdb20a` (into your HF cache; they are not in the image). `serve` starts the model's own HTTP server on port 20000 (or the next free port, if that one is busy); the first start compiles kernels for your device, which takes several minutes, and the server is ready when it logs `Application startup complete`.
|
| 26 |
|
| 27 |
+
### With tt-cli
|
|
|
|
| 28 |
|
| 29 |
+
```bash
|
| 30 |
+
tt serve changh95/superpoint-blackhole # pulls image + weights, boots, prints the port
|
| 31 |
+
tt model stop changh95/superpoint-blackhole
|
| 32 |
+
```
|
| 33 |
|
| 34 |
+
The port is the one `serve` printed (20000, or the next free one). This is **not** an
|
| 35 |
+
OpenAI-style server: `tt-model curl` / chat clients do not apply. `GET /v1/models` exists
|
| 36 |
+
only so generic probes do not 404; the real routes are below.
|
| 37 |
|
| 38 |
+
### Call it
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
|
| 40 |
```bash
|
| 41 |
+
PORT=20000 # the port serve printed
|
| 42 |
+
curl -s localhost:$PORT/health # {"status":"ok","model":"superpoint-blackhole","device":{...}}
|
| 43 |
+
curl -s localhost:$PORT/info # weights repo+revision, canonical input, defaults, limits, licence
|
| 44 |
+
|
| 45 |
+
# One image -> keypoints. Any PNG/JPEG; it is resized to 640x480 server-side and the
|
| 46 |
+
# keypoints come back in YOUR image's pixel coordinates (see "scale").
|
| 47 |
+
IMG=code/sample_data/house_in_field_1080p.jpg # 1600x900 natural image
|
| 48 |
+
python3 - "$IMG" "$PORT" <<'EOF'
|
| 49 |
+
import base64, json, sys, urllib.request
|
| 50 |
+
img, port = sys.argv[1], sys.argv[2]
|
| 51 |
+
req = {"image": base64.b64encode(open(img, "rb").read()).decode(),
|
| 52 |
+
"max_keypoints": 1024, # -1 = all above threshold
|
| 53 |
+
"keypoint_threshold": 0.005,
|
| 54 |
+
"nms_radius": 4,
|
| 55 |
+
"return_descriptors": True}
|
| 56 |
+
r = urllib.request.Request(f"http://127.0.0.1:{port}/predict", json.dumps(req).encode(),
|
| 57 |
+
{"Content-Type": "application/json"})
|
| 58 |
+
out = json.load(urllib.request.urlopen(r, timeout=300))
|
| 59 |
+
print(out["num_keypoints"], out["keypoints"][:3], out["scores"][:3], out["timing_ms"])
|
| 60 |
+
EOF
|
| 61 |
```
|
| 62 |
|
| 63 |
+
Response fields: `num_keypoints`; `keypoints` (N x [x, y] floats, original-image pixels);
|
| 64 |
+
`scores` (N, post-NMS softmax scores); `original_size`, `image_size` (480x640) and
|
| 65 |
+
`scale` (x = W/640, y = H/480; divide to get network-frame coordinates);
|
| 66 |
+
`params` echoed; `timing_ms` (`preprocess`, `device_forward`, `postprocess`, `total`);
|
| 67 |
+
when `return_descriptors` is true, `descriptors` = `{format: "npz", key: "descriptors",
|
| 68 |
+
dtype: "float16", shape: [N, 256], data: <base64 NPZ>}` -- decode with
|
| 69 |
+
`numpy.load(io.BytesIO(base64.b64decode(d["data"])))["descriptors"]`; rows are
|
| 70 |
+
L2-normalised. Errors: 400 undecodable image / bad field, 503 while starting, 500 with
|
| 71 |
+
the exception text. One image per request; requests are serialised on the chip.
|
| 72 |
|
| 73 |
+
A ready-made check: `python code/models/server/smoke_test.py --url http://127.0.0.1:$PORT`
|
| 74 |
+
prints one PASS/FAIL line with the keypoint count and timings.
|
| 75 |
|
| 76 |
+
### First boot
|
|
|
|
| 77 |
|
| 78 |
+
Weights are 5 MB (`config.json`, `model.safetensors`, `preprocessor_config.json` at the
|
| 79 |
+
pinned revision) and land in your HF cache. The first start JIT-compiles the conv /
|
| 80 |
+
pool / softmax kernels (a few minutes, cached under
|
| 81 |
+
`~/.cache/tt-model/superpoint-blackhole/cache`); the server logs `Loading weights`,
|
| 82 |
+
`Warming up`, `Warmup complete` and is ready at uvicorn's `Application startup complete`.
|
| 83 |
+
Later boots reuse the kernel cache. The weights repo is public and ungated (no token).
|
| 84 |
|
| 85 |
+
### What this server runs
|
| 86 |
|
| 87 |
+
Fixed 480x640 input (bilinear resize, /255, channel 0 -- the HF
|
| 88 |
+
`SuperPointImageProcessor` defaults), 8 encoder convs + 3 max-pools + score and
|
| 89 |
+
descriptor heads in bfloat16 activations / bfloat16 weights / HiFi2 / fp32 accumulate,
|
| 90 |
+
softmax and descriptor L2-norm on device, then host single-pass NMS, threshold, border
|
| 91 |
+
removal, top-k and bilinear descriptor sampling. Untraced, host NMS: this is the
|
| 92 |
+
port's `SP_TRACE_NMS=0`, `SP_NO_TRACE=1` configuration. The benchmark numbers below
|
| 93 |
+
that need trace or the fused `sp_eq_mul_mask` kernel are **not** what this server does.
|
| 94 |
|
| 95 |
+
### Results from the port (Blackhole p150b, 480x640, batch 1, natural image)
|
| 96 |
|
| 97 |
+
PCC vs the Hugging Face fp32 reference:
|
| 98 |
|
| 99 |
| Tensor | PCC |
|
| 100 |
|---|---:|
|
| 101 |
| Pre-NMS score map | **0.9971** |
|
| 102 |
+
| Descriptor map (post L2-norm) | **0.9991** |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 103 |
|
| 104 |
+
Keypoint set vs the reference (`sample_data/house_in_field_1080p.jpg`, top-500, 2 px):
|
| 105 |
+
recall **98.80%**, precision **98.80%**, F1 **98.80%** (synthetic `torch.rand` input: F1 97.80%).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 106 |
|
| 107 |
+
Throughput measured by `models/tests/test_superpoint.py` (needs a tt-metal checkout as
|
| 108 |
+
pytest rootdir for its `device` fixture):
|
| 109 |
|
| 110 |
+
| Path | Device forward (input resident) | Traced fwd incl. H2D | Full e2e |
|
|
|
|
|
|
|
| 111 |
|---|---:|---:|---:|
|
| 112 |
+
| Forward-only trace, host NMS (`SP_TRACE_NMS=0`) | 355 fps (2.81 ms) | 73.6 fps | 17.0 fps |
|
| 113 |
+
| Forward + device NMS, fused kernel (`SP_TRACE_NMS=1`) | 85.6 fps | 44.6 fps | **40.7 fps** |
|
| 114 |
+
| Untraced, host NMS (**this server**) | ~6 fps | -- | ~5 fps |
|
|
|
|
| 115 |
|
| 116 |
+
The fused path needs `kernels/sp_eq_mul_mask/` compiled into tt-metal (see its README);
|
| 117 |
+
a pure-ttnn equivalent (`ttnn.eq` + `ttnn.multiply`) is measured in
|
| 118 |
+
`kernels/sp_eq_mul_mask/bench.py`. `code/results.tsv` is the full experiment log
|
| 119 |
+
(precision cliff: bfloat8/LoFi drop score PCC to 0.70-0.91; trace was a 10.8x unlock).
|
| 120 |
|
| 121 |
+
Sample output (top-500 keypoints on the resized frame): 
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 122 |
|
| 123 |
+
### Layout of `code/`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 124 |
|
| 125 |
+
`models/tt/superpoint_ttnn.py` (tt-nn model), `models/tt/postprocess.py` (validated host
|
| 126 |
+
post-processing), `models/server/app.py` + `smoke_test.py`, `models/reference/`
|
| 127 |
+
(HF reference loader, needs torchvision), `models/tests/test_superpoint.py` (benchmark +
|
| 128 |
+
PCC + F1), `models/visualize.py`, `kernels/sp_eq_mul_mask/` (fused C++ Tensix NMS
|
| 129 |
+
kernel, ~450 LoC), `sample_data/`, `results.tsv`, `run_benchmark.sh`.
|
| 130 |
+
`models/common/lightweightmodule.py` is a schema-required filler from tt-metal.
|
| 131 |
|
| 132 |
+
### Licensing
|
| 133 |
+
|
| 134 |
+
The upstream **weights** (`magic-leap-community/superpoint`) carry the Magic Leap
|
| 135 |
+
SuperPoint licence: *academic or non-profit organisation noncommercial research use
|
| 136 |
+
only* -- see https://huggingface.co/magic-leap-community/superpoint. The port code
|
| 137 |
+
(Apache-2.0 headers, by Hyunggi Chang) is published under the same terms, since a port
|
| 138 |
+
cannot grant more than its upstream does. Weights are not redistributed here; they are
|
| 139 |
+
fetched from the upstream repo at the pinned revision.
|
| 140 |
|
| 141 |
+
## Provenance
|
| 142 |
|
| 143 |
+
The exact sources the image was built from — `code/` in this repo is byte-identical to the model code inside the image:
|
| 144 |
|
| 145 |
+
| component | built from |
|
| 146 |
+
| --- | --- |
|
| 147 |
+
| tt-metal | [`8b98410e730bb504fea43a88609756e34821d91d`](https://github.com/tenstorrent/tt-metal/commit/8b98410e730bb504fea43a88609756e34821d91d) |
|
| 148 |
+
| `code/` digest | `416a56f5b5475d4c` (sha256, first 16 hex digits) |
|
| 149 |
+
| built | 2026-09-12T04:46:07+00:00 by tt-model 0.1.0 |
|
| 150 |
|
|
|
image/blobs/sha256/05377a9e9bca6629850adb9f83b736bed1a337417a42f4fbc7939cb070e4103c
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"abde68188775eea758bedd339372fbb5829d7240e4e205f088291f59310c44d6","parent":"3b3b160d15f8be2befad1aa18496ff8e14ef0ffad2b5b53bd6b24b1d30349d3f","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/09a2b4b5da7d9c4dc9fcecdf9587d215738b5a001cc1f544754aa2471f17ccf4
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"b554b4bedaae729f02e1ce175da8bc9aff4a203a1438e1f5c6a69cf92557a21c","parent":"6d0be462b2b91580512733b8522fb79e4d5966d535413781402a2c65452a1ddd","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/0b00322e10db8938039548659894c55192e2ed4bbc1305c1bb9db98646afb9ce
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"6a1ce844cd7f893452eea91eaa578b38bd7ee8e32133946fe9c8de6cc2a44eab","parent":"6eaca327d917fc860897422b86092500f7c33034027fd336a321170854797e19","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/1045a45a3f55e192bbc825ed2ad291fa1c548e767860db71be78502aabb6971e
ADDED
|
Binary file (39.9 kB). View file
|
|
|
image/blobs/sha256/1992bd3360f71a1c0e629ec18d01db28cacf924d57da902ee8d53a87c4fdf077
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"2c74bb161e53d200ca35b25dc08ffaa65d3df8ca0250fd4f61f1dda9c9dafc83","parent":"b2323fd31f5630dcf950c3f9be6d3cc58b3592d0fa6559eee27f5b9896532516","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/1a032fb77dbde7874914c0efd0a0560300938f33c3de47c86acc09a382af5ba1
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"3b3b160d15f8be2befad1aa18496ff8e14ef0ffad2b5b53bd6b24b1d30349d3f","parent":"2c74bb161e53d200ca35b25dc08ffaa65d3df8ca0250fd4f61f1dda9c9dafc83","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/20fc3f63a37e2e97136281a7bea918f951867dcda5d6a8220cbb8c451842e2c6
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"fd698fc0ee060bdb1b97148554553dab869f4540ca68750e920f7e8a61220ff4","parent":"95f34142d5d03fc24e6d4e7018e92daacbcd0f0106a7d458d1bd16e8c427af70","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/2913e7d4aae3b053b2337c0f74236067652783d528ac5e6d56a85f13b8e2be28
ADDED
|
Binary file (2.05 kB). View file
|
|
|
image/blobs/sha256/297cc480b713b9d9e67d9705f6fb5083b1d0a71c3e00adb6d2fb544fd181bc90
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"801989d24ed51c518861bbeee5b5cabb58085d3f4083925d37e753b786a01a94","parent":"abde68188775eea758bedd339372fbb5829d7240e4e205f088291f59310c44d6","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/35c97e50ac6404ce6bb0bc653d1d7b75da4c727139f6ad4c2fb4349ab36ddf74
ADDED
|
Binary file (4.61 kB). View file
|
|
|
image/blobs/sha256/473ec4813d862cfcaafff1d3b604c787be8aba9130a29d77aa6260545e33a204
ADDED
|
Binary file (4.61 kB). View file
|
|
|
image/blobs/sha256/4846ed2c3340e69f871c5bb70dffde2e47cf3e2e29799264f1c6e5e3f487a655
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"b2323fd31f5630dcf950c3f9be6d3cc58b3592d0fa6559eee27f5b9896532516","parent":"e618d643825753f4550a54eacfd500e6e7652078cf4168c9ef3f869701db7fc5","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/51bace3613cab52c178386031b223837c9eced816f3b74c2016f9355c343c3c7
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"e54f1b59aa3ac4bbcc95ee295f98920ffc80c979ae845879da712814098dc9b5","parent":"801989d24ed51c518861bbeee5b5cabb58085d3f4083925d37e753b786a01a94","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/5628e13ce208b83d793af15fa41c28d1702e7a43e27c8c72944442d01e959a71
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"e618d643825753f4550a54eacfd500e6e7652078cf4168c9ef3f869701db7fc5","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/5c5e6730f02ae4b11cd2835d46daea29c72eb09a77567aaf944d2d50288f2467
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"7a5fb434279d3e82e002b9a9c662b4b8896666eabc499b5986c6af329dc20cb6","parent":"ae8fd9e43cdbf67c9e6a5fc09d1881c6fb95b6503feed80cf2b4eb6fa46c87fc","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/5cf1af4a91c109c471f328139d54b01ecb2fc30e1d719163250fdc106e1bae19
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"b58659e821d9d65dd71843b48ffec1f5c33a3419fb17d5847a8f460ad64a6ddb","parent":"e54f1b59aa3ac4bbcc95ee295f98920ffc80c979ae845879da712814098dc9b5","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef
ADDED
|
Binary file (1.02 kB). View file
|
|
|
image/blobs/sha256/783bf7cca84ebcb9f4871153860aac9bf83c54d246bbdba3468c4ad19cc64814
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"6eaca327d917fc860897422b86092500f7c33034027fd336a321170854797e19","parent":"7a5fb434279d3e82e002b9a9c662b4b8896666eabc499b5986c6af329dc20cb6","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/7f5224b468f7a4cf2e976cc3a9667b07c57b434f0d2949c376e5266dd636d8ba
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"08bc59792250e4adc6c0b63882b3518d03ad51b206aed76fd229ff080a7fd698","parent":"17f47c44560478460f3531a92457382d16b86cd815a90caa0439296b6b8a2c33","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/82d59d07267825fcd4ef561fb9947c582b27c60dcd5422a27900b2087ba56e89
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"ced0935674ff862d765305d2d11aab0c87c58d079cb822defef9c2c0d0f3646d","parent":"08bc59792250e4adc6c0b63882b3518d03ad51b206aed76fd229ff080a7fd698","created":"2026-09-12T13:48:32.384416842+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"config":{"Hostname":"","Domainname":"","User":"tt","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/opt/tt-venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","VENV=/opt/tt-venv","VIRTUAL_ENV=/opt/tt-venv","TT_METAL_RUNTIME_ROOT=/opt/tt-metal","TT_METAL_HOME=/opt/tt-metal","PYTHONPATH=/opt/tt-metal","LD_LIBRARY_PATH=/opt/tt-metal/build/lib:/opt/openmpi-v5.0.7-ulfm/lib","EXTRA_MODELS_DIR=","TT_VLLM_BUILTIN_MODELS=","TT_MODEL_KIND=tt-dit-server","HF_HOME=/hf","TT_METAL_CACHE=/cache","HOME=/home/tt","USER=tt","LOGNAME=tt"],"Cmd":["/usr/local/bin/serve-default.sh"],"ArgsEscaped":true,"Image":"","Volumes":null,"WorkingDir":"/home/tt/work","Entrypoint":["/usr/local/bin/entrypoint.sh"],"OnBuild":null,"Labels":{"org.opencontainers.image.revision":"8b98410e730bb504fea43a88609756e34821d91d","org.opencontainers.image.version":"22.04","org.tenstorrent.tt-model":"superpoint-blackhole","org.tenstorrent.tt-model.arch":"blackhole","org.tenstorrent.tt-model.kind":"tt-dit-server","org.tenstorrent.tt-model.plugin":"","org.tenstorrent.tt-model.profiles":"default","org.tenstorrent.tt-model.repo":"changh95/superpoint-blackhole","org.tenstorrent.tt-model.tt-metal":"v0.78.0-dev20260820-25-g8b98410e73","org.tenstorrent.tt-model.weights":"magic-leap-community/superpoint"}},"architecture":"amd64","os":"linux"}
|
image/blobs/sha256/8c27526b713a72bd442a649055f125a7642d8a9d81bec1aaeafd010d5e75f09b
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"543cb6ba046da30ee5435cb2bc79b73555e14984133a8f411292e9fb4f60307e","parent":"3ab2222c0aaad50b807944c7d4d5356f548bad9b68ebbaf40ad31c715be20260","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/90e294f7896d636a22eb471381c0541ec2583d6e4d87a3330ee603c712058373
ADDED
|
Binary file (3.58 kB). View file
|
|
|
image/blobs/sha256/a3929a30463ca9f7e79676224374be8724d0e0b5971b6366028dad8abdd119b4
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"3ab2222c0aaad50b807944c7d4d5356f548bad9b68ebbaf40ad31c715be20260","parent":"b58659e821d9d65dd71843b48ffec1f5c33a3419fb17d5847a8f460ad64a6ddb","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/b1e032b4456fa68570df12ada4bae732152fe690d883e20315312e9311e8aefb
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"17f47c44560478460f3531a92457382d16b86cd815a90caa0439296b6b8a2c33","parent":"6a1ce844cd7f893452eea91eaa578b38bd7ee8e32133946fe9c8de6cc2a44eab","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/b619284fc58a2511f0e2cf87c6407029e1912483daf54d9081ec13201367482b
ADDED
|
Binary file (23 kB). View file
|
|
|
image/blobs/sha256/bad2ac50381c951e4a06263ad41715f3eff03ac32a5c02b31546928a1b435ca8
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"6d0be462b2b91580512733b8522fb79e4d5966d535413781402a2c65452a1ddd","parent":"543cb6ba046da30ee5435cb2bc79b73555e14984133a8f411292e9fb4f60307e","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/d289e67a5acf53049af3e14fd2a36d1afbfcafa54dc20de726fb06bb13ce2d23
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"95f34142d5d03fc24e6d4e7018e92daacbcd0f0106a7d458d1bd16e8c427af70","parent":"b554b4bedaae729f02e1ce175da8bc9aff4a203a1438e1f5c6a69cf92557a21c","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/dcc7c4d7314823f2580f5dd1001063cd7574a7b6f1fdb1a7393b1b1578f93b89
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"ae8fd9e43cdbf67c9e6a5fc09d1881c6fb95b6503feed80cf2b4eb6fa46c87fc","parent":"0426d842d0357450080930684cb42d7dad8602535c207490818f4d3566645497","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/e4a3caad98453047bb9214acfacdd96b2e2a9f7f6848c3a9b996517022f57223
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"architecture":"amd64","config":{"User":"tt","Env":["PATH=/opt/tt-venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","VENV=/opt/tt-venv","VIRTUAL_ENV=/opt/tt-venv","TT_METAL_RUNTIME_ROOT=/opt/tt-metal","TT_METAL_HOME=/opt/tt-metal","PYTHONPATH=/opt/tt-metal","LD_LIBRARY_PATH=/opt/tt-metal/build/lib:/opt/openmpi-v5.0.7-ulfm/lib","EXTRA_MODELS_DIR=","TT_VLLM_BUILTIN_MODELS=","TT_MODEL_KIND=tt-dit-server","HF_HOME=/hf","TT_METAL_CACHE=/cache","HOME=/home/tt","USER=tt","LOGNAME=tt"],"Entrypoint":["/usr/local/bin/entrypoint.sh"],"Cmd":["/usr/local/bin/serve-default.sh"],"WorkingDir":"/home/tt/work","Labels":{"org.opencontainers.image.revision":"8b98410e730bb504fea43a88609756e34821d91d","org.opencontainers.image.version":"22.04","org.tenstorrent.tt-model":"superpoint-blackhole","org.tenstorrent.tt-model.arch":"blackhole","org.tenstorrent.tt-model.kind":"tt-dit-server","org.tenstorrent.tt-model.plugin":"","org.tenstorrent.tt-model.profiles":"default","org.tenstorrent.tt-model.repo":"changh95/superpoint-blackhole","org.tenstorrent.tt-model.tt-metal":"v0.78.0-dev20260820-25-g8b98410e73","org.tenstorrent.tt-model.weights":"magic-leap-community/superpoint"},"ArgsEscaped":true},"created":"2026-09-12T13:48:32.384416842+09:00","history":[{"created":"2026-09-03T12:14:51.139348462Z","created_by":"/bin/sh -c #(nop) ARG RELEASE","empty_layer":true},{"created":"2026-09-03T12:14:51.170427469Z","created_by":"/bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH","empty_layer":true},{"created":"2026-09-03T12:14:51.200307479Z","created_by":"/bin/sh -c #(nop) LABEL org.opencontainers.image.version=22.04","empty_layer":true},{"created":"2026-09-03T12:14:53.528689977Z","created_by":"/bin/sh -c #(nop) ADD file:81c01921c5f642ac2fcbfae682e489e8e64b347467d9fa1587707e310e64d790 in / "},{"created":"2026-09-03T12:14:54.045714841Z","created_by":"/bin/sh -c #(nop) CMD [\"/bin/bash\"]","empty_layer":true},{"created":"2026-09-12T13:46:30.808941093+09:00","created_by":"ARG OMPI_DIR=/opt/openmpi-v5.0.7-ulfm","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:46:30.808941093+09:00","created_by":"ARG EXTRA_MODELS_DIR=","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:46:30.808941093+09:00","created_by":"ARG TT_MODEL_KIND","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:46:30.808941093+09:00","created_by":"ARG MODEL_NAME","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:46:30.808941093+09:00","created_by":"ARG MODEL_REPO","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:46:30.808941093+09:00","created_by":"ARG MODEL_WEIGHTS","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:46:30.808941093+09:00","created_by":"ARG MODEL_ARCH","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:46:30.808941093+09:00","created_by":"ARG MODEL_PROFILES","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:46:30.808941093+09:00","created_by":"ARG MODEL_TT_METAL_SHA","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:46:30.808941093+09:00","created_by":"ARG MODEL_TT_METAL_DESCRIBE","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:46:30.808941093+09:00","created_by":"ARG MODEL_PLUGIN_SHA","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:46:30.808941093+09:00","created_by":"RUN |11 OMPI_DIR=/opt/openmpi-v5.0.7-ulfm EXTRA_MODELS_DIR= TT_MODEL_KIND=tt-dit-server MODEL_NAME=superpoint-blackhole MODEL_REPO=changh95/superpoint-blackhole MODEL_WEIGHTS=magic-leap-community/superpoint MODEL_ARCH=blackhole MODEL_PROFILES=default MODEL_TT_METAL_SHA=8b98410e730bb504fea43a88609756e34821d91d MODEL_TT_METAL_DESCRIBE=v0.78.0-dev20260820-25-g8b98410e73 MODEL_PLUGIN_SHA= /bin/sh -c apt-get update \u0026\u0026 apt-get install -y --no-install-recommends libhwloc15 libnuma1 libatomic1 libudev1 libcap2 zlib1g libmpc3 libmpfr6 libgmp10 libzstd1 libevent-core-2.1-7 libevent-pthreads-2.1-7 libgl1 libsndfile1 ca-certificates \u0026\u0026 apt-get clean \u0026\u0026 rm -rf /var/lib/apt/lists/* # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:46:31.121663516+09:00","created_by":"RUN |11 OMPI_DIR=/opt/openmpi-v5.0.7-ulfm EXTRA_MODELS_DIR= TT_MODEL_KIND=tt-dit-server MODEL_NAME=superpoint-blackhole MODEL_REPO=changh95/superpoint-blackhole MODEL_WEIGHTS=magic-leap-community/superpoint MODEL_ARCH=blackhole MODEL_PROFILES=default MODEL_TT_METAL_SHA=8b98410e730bb504fea43a88609756e34821d91d MODEL_TT_METAL_DESCRIBE=v0.78.0-dev20260820-25-g8b98410e73 MODEL_PLUGIN_SHA= /bin/sh -c existing=\"$(getent passwd 1000 | cut -d: -f1)\" \u0026\u0026 if [ -n \"$existing\" ]; then userdel -r \"$existing\" 2\u003e/dev/null || userdel \"$existing\"; fi \u0026\u0026 useradd --uid 1000 --create-home --home-dir /home/tt --shell /bin/bash tt \u0026\u0026 mkdir -p /home/tt/work/logs /cache /opt/tt-metal \u0026\u0026 chown -R tt:tt /home/tt /cache /opt/tt-metal \u0026\u0026 chmod 1777 /home/tt /home/tt/work /home/tt/work/logs /cache # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:10.11533099+09:00","created_by":"COPY /opt/openmpi-v5.0.7-ulfm /opt/openmpi-v5.0.7-ulfm # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:10.625100076+09:00","created_by":"COPY /opt/tenstorrent /opt/tenstorrent # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:11.416325027+09:00","created_by":"COPY /usr/local/share/uv /usr/local/share/uv # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:14.083325918+09:00","created_by":"COPY /opt/tt-venv /opt/tt-venv # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:14.178404441+09:00","created_by":"COPY /opt/vllm /opt/vllm # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:14.690918141+09:00","created_by":"COPY --chown=tt:tt /opt/tt-metal/runtime /opt/tt-metal/runtime # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:14.905981794+09:00","created_by":"COPY --chown=tt:tt /opt/tt-metal/build_Release /opt/tt-metal/build_Release # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:15.117241116+09:00","created_by":"COPY --chown=tt:tt /opt/tt-metal/build /opt/tt-metal/build # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:15.7341048+09:00","created_by":"COPY --chown=tt:tt /opt/tt-metal/tt_metal /opt/tt-metal/tt_metal # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:16.272801879+09:00","created_by":"COPY --chown=tt:tt /opt/tt-metal/ttnn /opt/tt-metal/ttnn # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:16.395101374+09:00","created_by":"COPY --chown=tt:tt /opt/tt-metal/tools /opt/tt-metal/tools # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:16.497667049+09:00","created_by":"COPY --chown=tt:tt /opt/tt-metal/setup.py /opt/tt-metal/pyproject.toml /opt/tt-metal/ # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:16.59428549+09:00","created_by":"COPY --chown=tt:tt code/ /opt/tt-metal/ # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:16.676694979+09:00","created_by":"COPY entrypoint.sh /usr/local/bin/entrypoint.sh # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"COPY --chmod=0755 serve-default.sh /usr/local/bin/serve-default.sh # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV VENV=/opt/tt-venv","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV VIRTUAL_ENV=/opt/tt-venv","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV PATH=/opt/tt-venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV TT_METAL_RUNTIME_ROOT=/opt/tt-metal","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV TT_METAL_HOME=/opt/tt-metal","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV PYTHONPATH=/opt/tt-metal","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV LD_LIBRARY_PATH=/opt/tt-metal/build/lib:/opt/openmpi-v5.0.7-ulfm/lib","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV EXTRA_MODELS_DIR=","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ARG TT_VLLM_BUILTIN_MODELS=","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV TT_VLLM_BUILTIN_MODELS=","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV TT_MODEL_KIND=tt-dit-server","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV HF_HOME=/hf","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV TT_METAL_CACHE=/cache","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV HOME=/home/tt","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV USER=tt","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"ENV LOGNAME=tt","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.760865964+09:00","created_by":"USER tt","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:16.854552347+09:00","created_by":"WORKDIR /home/tt/work","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:16.937835561+09:00","created_by":"COPY verify.sh /ctx/verify.sh # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:32.16099536+09:00","created_by":"RUN |12 OMPI_DIR=/opt/openmpi-v5.0.7-ulfm EXTRA_MODELS_DIR= TT_MODEL_KIND=tt-dit-server MODEL_NAME=superpoint-blackhole MODEL_REPO=changh95/superpoint-blackhole MODEL_WEIGHTS=magic-leap-community/superpoint MODEL_ARCH=blackhole MODEL_PROFILES=default MODEL_TT_METAL_SHA=8b98410e730bb504fea43a88609756e34821d91d MODEL_TT_METAL_DESCRIBE=v0.78.0-dev20260820-25-g8b98410e73 MODEL_PLUGIN_SHA= TT_VLLM_BUILTIN_MODELS= /bin/sh -c bash /ctx/verify.sh # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:32.16099536+09:00","created_by":"USER root","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:32.384416842+09:00","created_by":"RUN |12 OMPI_DIR=/opt/openmpi-v5.0.7-ulfm EXTRA_MODELS_DIR= TT_MODEL_KIND=tt-dit-server MODEL_NAME=superpoint-blackhole MODEL_REPO=changh95/superpoint-blackhole MODEL_WEIGHTS=magic-leap-community/superpoint MODEL_ARCH=blackhole MODEL_PROFILES=default MODEL_TT_METAL_SHA=8b98410e730bb504fea43a88609756e34821d91d MODEL_TT_METAL_DESCRIBE=v0.78.0-dev20260820-25-g8b98410e73 MODEL_PLUGIN_SHA= TT_VLLM_BUILTIN_MODELS= /bin/sh -c chmod -R a+rwX /home/tt # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2026-09-12T13:48:32.384416842+09:00","created_by":"USER tt","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:32.384416842+09:00","created_by":"LABEL org.tenstorrent.tt-model=superpoint-blackhole org.tenstorrent.tt-model.repo=changh95/superpoint-blackhole org.tenstorrent.tt-model.weights=magic-leap-community/superpoint org.tenstorrent.tt-model.arch=blackhole org.tenstorrent.tt-model.kind=tt-dit-server org.tenstorrent.tt-model.profiles=default org.opencontainers.image.revision=8b98410e730bb504fea43a88609756e34821d91d org.tenstorrent.tt-model.tt-metal=v0.78.0-dev20260820-25-g8b98410e73 org.tenstorrent.tt-model.plugin=","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:32.384416842+09:00","created_by":"ENTRYPOINT [\"/usr/local/bin/entrypoint.sh\"]","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2026-09-12T13:48:32.384416842+09:00","created_by":"CMD [\"/usr/local/bin/serve-default.sh\"]","comment":"buildkit.dockerfile.v0","empty_layer":true}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:ea16cace89338c84eb6bcb91a7efdfcae6838fff359efe951858227436486c34","sha256:6c408d42e47696ba1e15286920342148bc1abe126e0f99360e4c326353902e1e","sha256:736ec30ae64bb61262359a95a91043c01e7d0758a49009446d1215db5543c242","sha256:51ef7c71a2866da3f5d6688562490a79f40394816b667620c43cb3872171d0fb","sha256:94ad5f8b1ea8e4688c7c8a400fde84d9e20b2b767b0310c63bd811e790969c6d","sha256:23880bbd4b23fd061f5a477fc7146557d6930ebe5c4d4fa77397bc4db408ebed","sha256:424a2d1656007a555e088bc76aa22c344f96d50f99de20375a122f02f4f09615","sha256:2913e7d4aae3b053b2337c0f74236067652783d528ac5e6d56a85f13b8e2be28","sha256:a14941fe4a862fbf3aa39678a3135484e668589914f29b93cc7a7c6ca24b75fe","sha256:6808c251a29fd58130fb52a75a2f26e7a1798f95e2d6e95ae4980d08b302f329","sha256:a86a2eee05f32c5e45e23503e2f4682c1a5c7abd5764ce0706e2d8f7638d2f20","sha256:e92e614de15e5ce50ba21380c2740a1c9f0bd7a1291cce0be238c21f6ec36581","sha256:44f1dfd79fe45a08396131615fbdc4f0c7a09fd5b3988fe9dbc33ea7613ae80e","sha256:b4de8174cd132e6b54956ea091d24c6cf6a15179cb5f634d8aafc41dd5a5a79d","sha256:b619284fc58a2511f0e2cf87c6407029e1912483daf54d9081ec13201367482b","sha256:2977e66e9f580875472b63878f7926b448957c7ff312984cfa6fde4e09a830ae","sha256:35c97e50ac6404ce6bb0bc653d1d7b75da4c727139f6ad4c2fb4349ab36ddf74","sha256:473ec4813d862cfcaafff1d3b604c787be8aba9130a29d77aa6260545e33a204","sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef","sha256:90e294f7896d636a22eb471381c0541ec2583d6e4d87a3330ee603c712058373","sha256:ecd2c5179680324160b0205b222cb6bcf971272540e9ca6b0c7899473946b168","sha256:1045a45a3f55e192bbc825ed2ad291fa1c548e767860db71be78502aabb6971e"]}}
|
image/blobs/sha256/eb5b37a32a219394704bc5e4f333758d38742ca4e247bcd28b5a44b42b97a327
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"id":"0426d842d0357450080930684cb42d7dad8602535c207490818f4d3566645497","parent":"fd698fc0ee060bdb1b97148554553dab869f4540ca68750e920f7e8a61220ff4","created":"1970-01-01T09:00:00+09:00","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":null,"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"os":"linux"}
|
image/blobs/sha256/f22d2a87583a45d1c172ba963719a2ee0f27530e83acef41dc1680e6770e308a
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"schemaVersion":2,"mediaType":"application/vnd.oci.image.manifest.v1+json","config":{"mediaType":"application/vnd.oci.image.config.v1+json","digest":"sha256:e4a3caad98453047bb9214acfacdd96b2e2a9f7f6848c3a9b996517022f57223","size":14536},"layers":[{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:ea16cace89338c84eb6bcb91a7efdfcae6838fff359efe951858227436486c34","size":80641024},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:6c408d42e47696ba1e15286920342148bc1abe126e0f99360e4c326353902e1e","size":204086784},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:736ec30ae64bb61262359a95a91043c01e7d0758a49009446d1215db5543c242","size":352256},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:51ef7c71a2866da3f5d6688562490a79f40394816b667620c43cb3872171d0fb","size":33464832},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:94ad5f8b1ea8e4688c7c8a400fde84d9e20b2b767b0310c63bd811e790969c6d","size":454126592},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:23880bbd4b23fd061f5a477fc7146557d6930ebe5c4d4fa77397bc4db408ebed","size":187652608},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:424a2d1656007a555e088bc76aa22c344f96d50f99de20375a122f02f4f09615","size":1103582720},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:2913e7d4aae3b053b2337c0f74236067652783d528ac5e6d56a85f13b8e2be28","size":2048},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:a14941fe4a862fbf3aa39678a3135484e668589914f29b93cc7a7c6ca24b75fe","size":454599168},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:6808c251a29fd58130fb52a75a2f26e7a1798f95e2d6e95ae4980d08b302f329","size":130853888},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:a86a2eee05f32c5e45e23503e2f4682c1a5c7abd5764ce0706e2d8f7638d2f20","size":130853888},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:e92e614de15e5ce50ba21380c2740a1c9f0bd7a1291cce0be238c21f6ec36581","size":191707136},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:44f1dfd79fe45a08396131615fbdc4f0c7a09fd5b3988fe9dbc33ea7613ae80e","size":65318400},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:b4de8174cd132e6b54956ea091d24c6cf6a15179cb5f634d8aafc41dd5a5a79d","size":4678144},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:b619284fc58a2511f0e2cf87c6407029e1912483daf54d9081ec13201367482b","size":23040},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:2977e66e9f580875472b63878f7926b448957c7ff312984cfa6fde4e09a830ae","size":432640},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:35c97e50ac6404ce6bb0bc653d1d7b75da4c727139f6ad4c2fb4349ab36ddf74","size":4608},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:473ec4813d862cfcaafff1d3b604c787be8aba9130a29d77aa6260545e33a204","size":4608},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef","size":1024},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:90e294f7896d636a22eb471381c0541ec2583d6e4d87a3330ee603c712058373","size":3584},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:ecd2c5179680324160b0205b222cb6bcf971272540e9ca6b0c7899473946b168","size":102400},{"mediaType":"application/vnd.oci.image.layer.v1.tar","digest":"sha256:1045a45a3f55e192bbc825ed2ad291fa1c548e767860db71be78502aabb6971e","size":39936}]}
|
image/index.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"schemaVersion":2,"mediaType":"application/vnd.oci.image.index.v1+json","manifests":[{"mediaType":"application/vnd.oci.image.manifest.v1+json","digest":"sha256:f22d2a87583a45d1c172ba963719a2ee0f27530e83acef41dc1680e6770e308a","size":3613,"annotations":{"io.containerd.image.name":"docker.io/tt-model/superpoint-blackhole:e4a3caad9845","org.opencontainers.image.ref.name":"e4a3caad9845"}}]}
|
image/manifest.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[{"Config":"blobs/sha256/e4a3caad98453047bb9214acfacdd96b2e2a9f7f6848c3a9b996517022f57223","RepoTags":["tt-model/superpoint-blackhole:e4a3caad9845"],"Layers":["blobs/sha256/ea16cace89338c84eb6bcb91a7efdfcae6838fff359efe951858227436486c34","blobs/sha256/6c408d42e47696ba1e15286920342148bc1abe126e0f99360e4c326353902e1e","blobs/sha256/736ec30ae64bb61262359a95a91043c01e7d0758a49009446d1215db5543c242","blobs/sha256/51ef7c71a2866da3f5d6688562490a79f40394816b667620c43cb3872171d0fb","blobs/sha256/94ad5f8b1ea8e4688c7c8a400fde84d9e20b2b767b0310c63bd811e790969c6d","blobs/sha256/23880bbd4b23fd061f5a477fc7146557d6930ebe5c4d4fa77397bc4db408ebed","blobs/sha256/424a2d1656007a555e088bc76aa22c344f96d50f99de20375a122f02f4f09615","blobs/sha256/2913e7d4aae3b053b2337c0f74236067652783d528ac5e6d56a85f13b8e2be28","blobs/sha256/a14941fe4a862fbf3aa39678a3135484e668589914f29b93cc7a7c6ca24b75fe","blobs/sha256/6808c251a29fd58130fb52a75a2f26e7a1798f95e2d6e95ae4980d08b302f329","blobs/sha256/a86a2eee05f32c5e45e23503e2f4682c1a5c7abd5764ce0706e2d8f7638d2f20","blobs/sha256/e92e614de15e5ce50ba21380c2740a1c9f0bd7a1291cce0be238c21f6ec36581","blobs/sha256/44f1dfd79fe45a08396131615fbdc4f0c7a09fd5b3988fe9dbc33ea7613ae80e","blobs/sha256/b4de8174cd132e6b54956ea091d24c6cf6a15179cb5f634d8aafc41dd5a5a79d","blobs/sha256/b619284fc58a2511f0e2cf87c6407029e1912483daf54d9081ec13201367482b","blobs/sha256/2977e66e9f580875472b63878f7926b448957c7ff312984cfa6fde4e09a830ae","blobs/sha256/35c97e50ac6404ce6bb0bc653d1d7b75da4c727139f6ad4c2fb4349ab36ddf74","blobs/sha256/473ec4813d862cfcaafff1d3b604c787be8aba9130a29d77aa6260545e33a204","blobs/sha256/5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef","blobs/sha256/90e294f7896d636a22eb471381c0541ec2583d6e4d87a3330ee603c712058373","blobs/sha256/ecd2c5179680324160b0205b222cb6bcf971272540e9ca6b0c7899473946b168","blobs/sha256/1045a45a3f55e192bbc825ed2ad291fa1c548e767860db71be78502aabb6971e"],"LayerSources":{"sha256:1045a45a3f55e192bbc825ed2ad291fa1c548e767860db71be78502aabb6971e":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":39936,"digest":"sha256:1045a45a3f55e192bbc825ed2ad291fa1c548e767860db71be78502aabb6971e"},"sha256:23880bbd4b23fd061f5a477fc7146557d6930ebe5c4d4fa77397bc4db408ebed":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":187652608,"digest":"sha256:23880bbd4b23fd061f5a477fc7146557d6930ebe5c4d4fa77397bc4db408ebed"},"sha256:2913e7d4aae3b053b2337c0f74236067652783d528ac5e6d56a85f13b8e2be28":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":2048,"digest":"sha256:2913e7d4aae3b053b2337c0f74236067652783d528ac5e6d56a85f13b8e2be28"},"sha256:2977e66e9f580875472b63878f7926b448957c7ff312984cfa6fde4e09a830ae":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":432640,"digest":"sha256:2977e66e9f580875472b63878f7926b448957c7ff312984cfa6fde4e09a830ae"},"sha256:35c97e50ac6404ce6bb0bc653d1d7b75da4c727139f6ad4c2fb4349ab36ddf74":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":4608,"digest":"sha256:35c97e50ac6404ce6bb0bc653d1d7b75da4c727139f6ad4c2fb4349ab36ddf74"},"sha256:424a2d1656007a555e088bc76aa22c344f96d50f99de20375a122f02f4f09615":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":1103582720,"digest":"sha256:424a2d1656007a555e088bc76aa22c344f96d50f99de20375a122f02f4f09615"},"sha256:44f1dfd79fe45a08396131615fbdc4f0c7a09fd5b3988fe9dbc33ea7613ae80e":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":65318400,"digest":"sha256:44f1dfd79fe45a08396131615fbdc4f0c7a09fd5b3988fe9dbc33ea7613ae80e"},"sha256:473ec4813d862cfcaafff1d3b604c787be8aba9130a29d77aa6260545e33a204":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":4608,"digest":"sha256:473ec4813d862cfcaafff1d3b604c787be8aba9130a29d77aa6260545e33a204"},"sha256:51ef7c71a2866da3f5d6688562490a79f40394816b667620c43cb3872171d0fb":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":33464832,"digest":"sha256:51ef7c71a2866da3f5d6688562490a79f40394816b667620c43cb3872171d0fb"},"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":1024,"digest":"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"},"sha256:6808c251a29fd58130fb52a75a2f26e7a1798f95e2d6e95ae4980d08b302f329":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":130853888,"digest":"sha256:6808c251a29fd58130fb52a75a2f26e7a1798f95e2d6e95ae4980d08b302f329"},"sha256:6c408d42e47696ba1e15286920342148bc1abe126e0f99360e4c326353902e1e":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":204086784,"digest":"sha256:6c408d42e47696ba1e15286920342148bc1abe126e0f99360e4c326353902e1e"},"sha256:736ec30ae64bb61262359a95a91043c01e7d0758a49009446d1215db5543c242":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":352256,"digest":"sha256:736ec30ae64bb61262359a95a91043c01e7d0758a49009446d1215db5543c242"},"sha256:90e294f7896d636a22eb471381c0541ec2583d6e4d87a3330ee603c712058373":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":3584,"digest":"sha256:90e294f7896d636a22eb471381c0541ec2583d6e4d87a3330ee603c712058373"},"sha256:94ad5f8b1ea8e4688c7c8a400fde84d9e20b2b767b0310c63bd811e790969c6d":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":454126592,"digest":"sha256:94ad5f8b1ea8e4688c7c8a400fde84d9e20b2b767b0310c63bd811e790969c6d"},"sha256:a14941fe4a862fbf3aa39678a3135484e668589914f29b93cc7a7c6ca24b75fe":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":454599168,"digest":"sha256:a14941fe4a862fbf3aa39678a3135484e668589914f29b93cc7a7c6ca24b75fe"},"sha256:a86a2eee05f32c5e45e23503e2f4682c1a5c7abd5764ce0706e2d8f7638d2f20":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":130853888,"digest":"sha256:a86a2eee05f32c5e45e23503e2f4682c1a5c7abd5764ce0706e2d8f7638d2f20"},"sha256:b4de8174cd132e6b54956ea091d24c6cf6a15179cb5f634d8aafc41dd5a5a79d":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":4678144,"digest":"sha256:b4de8174cd132e6b54956ea091d24c6cf6a15179cb5f634d8aafc41dd5a5a79d"},"sha256:b619284fc58a2511f0e2cf87c6407029e1912483daf54d9081ec13201367482b":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":23040,"digest":"sha256:b619284fc58a2511f0e2cf87c6407029e1912483daf54d9081ec13201367482b"},"sha256:e92e614de15e5ce50ba21380c2740a1c9f0bd7a1291cce0be238c21f6ec36581":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":191707136,"digest":"sha256:e92e614de15e5ce50ba21380c2740a1c9f0bd7a1291cce0be238c21f6ec36581"},"sha256:ea16cace89338c84eb6bcb91a7efdfcae6838fff359efe951858227436486c34":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":80641024,"digest":"sha256:ea16cace89338c84eb6bcb91a7efdfcae6838fff359efe951858227436486c34"},"sha256:ecd2c5179680324160b0205b222cb6bcf971272540e9ca6b0c7899473946b168":{"mediaType":"application/vnd.oci.image.layer.v1.tar","size":102400,"digest":"sha256:ecd2c5179680324160b0205b222cb6bcf971272540e9ca6b0c7899473946b168"}}}]
|
image/oci-layout
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"imageLayoutVersion": "1.0.0"}
|
image/repositories
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"tt-model/superpoint-blackhole":{"e4a3caad9845":"1045a45a3f55e192bbc825ed2ad291fa1c548e767860db71be78502aabb6971e"}}
|
requirements.lock
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
annotated-doc==0.0.5
|
| 2 |
+
annotated-types==0.8.0
|
| 3 |
+
anyio==4.15.1
|
| 4 |
+
certifi==2026.7.22
|
| 5 |
+
cfgv==3.5.0
|
| 6 |
+
charset-normalizer==3.5.1
|
| 7 |
+
click==8.5.0
|
| 8 |
+
contourpy==1.3.3
|
| 9 |
+
cycler==0.12.1
|
| 10 |
+
distlib==0.4.3
|
| 11 |
+
distro==1.9.0
|
| 12 |
+
elastic-transport==9.4.2
|
| 13 |
+
elasticsearch==9.5.1
|
| 14 |
+
fastapi==0.141.1
|
| 15 |
+
filelock==3.32.6
|
| 16 |
+
fonttools==4.65.0
|
| 17 |
+
fsspec==2026.7.0
|
| 18 |
+
graphviz==0.21
|
| 19 |
+
h11==0.16.0
|
| 20 |
+
hf-xet==1.6.0
|
| 21 |
+
httpcore==1.0.9
|
| 22 |
+
httpx==0.28.1
|
| 23 |
+
huggingface_hub==1.31.0
|
| 24 |
+
identify==2.6.19
|
| 25 |
+
idna==3.19
|
| 26 |
+
Jinja2==3.1.6
|
| 27 |
+
kiwisolver==1.5.1
|
| 28 |
+
linkify-it-py==2.2.0
|
| 29 |
+
loguru==0.7.3
|
| 30 |
+
markdown-it-py==4.2.0
|
| 31 |
+
MarkupSafe==3.0.3
|
| 32 |
+
matplotlib==3.11.2
|
| 33 |
+
mdit-py-plugins==0.6.1
|
| 34 |
+
mdurl==0.1.2
|
| 35 |
+
ml_dtypes==0.5.4
|
| 36 |
+
mpmath==1.3.0
|
| 37 |
+
networkx==3.6.1
|
| 38 |
+
nodeenv==1.10.0
|
| 39 |
+
numpy==1.26.4
|
| 40 |
+
packaging==26.3
|
| 41 |
+
pandas==3.0.5
|
| 42 |
+
pillow==12.3.0
|
| 43 |
+
platformdirs==4.11.8
|
| 44 |
+
pre_commit==4.6.2
|
| 45 |
+
psutil==7.2.2
|
| 46 |
+
pydantic==2.13.5
|
| 47 |
+
pydantic_core==2.46.5
|
| 48 |
+
Pygments==2.21.0
|
| 49 |
+
pyluwen==0.9.0
|
| 50 |
+
pyparsing==3.3.2
|
| 51 |
+
python-dateutil==2.9.0.post0
|
| 52 |
+
python-discovery==1.6.0
|
| 53 |
+
PyYAML==6.0.3
|
| 54 |
+
regex==2026.9.10
|
| 55 |
+
requests==2.34.2
|
| 56 |
+
rich==15.0.0
|
| 57 |
+
safetensors==0.8.0
|
| 58 |
+
seaborn==0.13.2
|
| 59 |
+
setuptools==80.10.2
|
| 60 |
+
setuptools-scm==8.1.0
|
| 61 |
+
shellingham==1.5.4
|
| 62 |
+
six==1.17.0
|
| 63 |
+
sniffio==1.3.1
|
| 64 |
+
starlette==1.6.0
|
| 65 |
+
sympy==1.14.0
|
| 66 |
+
textual==8.2.8
|
| 67 |
+
tokenizers==0.23.2
|
| 68 |
+
tomli==2.4.1
|
| 69 |
+
torch==2.11.0+cpu
|
| 70 |
+
tqdm==4.70.1
|
| 71 |
+
transformers==5.17.0
|
| 72 |
+
tt-smi==6.5.0
|
| 73 |
+
tt-tools-common==1.6.0
|
| 74 |
+
tt-umd==0.9.10
|
| 75 |
+
ttnn==0.65.2.dev9100
|
| 76 |
+
ttnn==0.75.0rc10.dev657+g8b98410e730
|
| 77 |
+
typer==0.27.2
|
| 78 |
+
typing-inspection==0.4.4
|
| 79 |
+
typing_extensions==4.16.0
|
| 80 |
+
urllib3==2.7.0
|
| 81 |
+
uvicorn==0.52.4
|
| 82 |
+
virtualenv==21.7.9
|
| 83 |
+
wheel==0.48.0
|
tt_kernel_manifest.json
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": "5.1",
|
| 3 |
+
"name": "superpoint-blackhole",
|
| 4 |
+
"tt_metal_version": "0.65.2.dev9100",
|
| 5 |
+
"arch": "blackhole",
|
| 6 |
+
"device_count": 1,
|
| 7 |
+
"producer": {
|
| 8 |
+
"tt_kernel_version": "0.1.0",
|
| 9 |
+
"created_at": "2026-09-12T04:48:43.859389+00:00",
|
| 10 |
+
"hostname": "deepgadget"
|
| 11 |
+
},
|
| 12 |
+
"weights": {
|
| 13 |
+
"repo_id": "magic-leap-community/superpoint",
|
| 14 |
+
"revision": "734450e9ffe229074f5998494ddc615475cdb20a",
|
| 15 |
+
"allow_patterns": [
|
| 16 |
+
"config.json",
|
| 17 |
+
"model.safetensors",
|
| 18 |
+
"preprocessor_config.json"
|
| 19 |
+
],
|
| 20 |
+
"ignore_patterns": null,
|
| 21 |
+
"repo_type": "model"
|
| 22 |
+
},
|
| 23 |
+
"mesh": null,
|
| 24 |
+
"entrypoint": null,
|
| 25 |
+
"resources": null,
|
| 26 |
+
"capabilities": null,
|
| 27 |
+
"env": {},
|
| 28 |
+
"bundled": null,
|
| 29 |
+
"deps": null,
|
| 30 |
+
"container": {
|
| 31 |
+
"image": {
|
| 32 |
+
"registry": "hf",
|
| 33 |
+
"repository": "superpoint-blackhole",
|
| 34 |
+
"tag": "tt-model/superpoint-blackhole:e4a3caad9845",
|
| 35 |
+
"digest": "sha256:e4a3caad98453047bb9214acfacdd96b2e2a9f7f6848c3a9b996517022f57223"
|
| 36 |
+
},
|
| 37 |
+
"kind": "tt-dit-server",
|
| 38 |
+
"runtime": {
|
| 39 |
+
"app": "models.server.app:app",
|
| 40 |
+
"mesh_shape_env": "TT_MESH_SHAPE",
|
| 41 |
+
"packages": [
|
| 42 |
+
"numpy>=1.24.4,<2",
|
| 43 |
+
"transformers>=4.53,<6",
|
| 44 |
+
"huggingface_hub",
|
| 45 |
+
"safetensors"
|
| 46 |
+
],
|
| 47 |
+
"lock": "requirements.lock"
|
| 48 |
+
},
|
| 49 |
+
"serve": {
|
| 50 |
+
"hardware": "p150",
|
| 51 |
+
"mesh_device": "P150",
|
| 52 |
+
"port": 20000,
|
| 53 |
+
"max_model_len": null,
|
| 54 |
+
"max_num_seqs": null,
|
| 55 |
+
"block_size": null,
|
| 56 |
+
"server_timeout": null,
|
| 57 |
+
"capabilities": null,
|
| 58 |
+
"additional_config": {},
|
| 59 |
+
"args": [],
|
| 60 |
+
"env": {
|
| 61 |
+
"TT_WEIGHTS_REVISION": "734450e9ffe229074f5998494ddc615475cdb20a",
|
| 62 |
+
"TT_METAL_VISIBLE_DEVICES": "0"
|
| 63 |
+
}
|
| 64 |
+
},
|
| 65 |
+
"serve_profiles": [
|
| 66 |
+
{
|
| 67 |
+
"hardware": null,
|
| 68 |
+
"mesh_device": null,
|
| 69 |
+
"port": null,
|
| 70 |
+
"max_model_len": null,
|
| 71 |
+
"max_num_seqs": null,
|
| 72 |
+
"block_size": null,
|
| 73 |
+
"server_timeout": null,
|
| 74 |
+
"capabilities": null,
|
| 75 |
+
"additional_config": {},
|
| 76 |
+
"args": [],
|
| 77 |
+
"env": {},
|
| 78 |
+
"name": "default",
|
| 79 |
+
"description": null
|
| 80 |
+
}
|
| 81 |
+
],
|
| 82 |
+
"default_profile": null,
|
| 83 |
+
"code_dir": "code",
|
| 84 |
+
"verify": [
|
| 85 |
+
"import models.server.app as a; assert a.app",
|
| 86 |
+
"from models.tt.superpoint_ttnn import TtSuperPoint, device_outputs_to_host; assert TtSuperPoint",
|
| 87 |
+
"from models.tt.postprocess import postprocess_keypoints; assert postprocess_keypoints",
|
| 88 |
+
"import transformers, huggingface_hub, safetensors; from transformers import SuperPointForKeypointDetection; assert SuperPointForKeypointDetection",
|
| 89 |
+
"import numpy; assert numpy.__version__.startswith('1.'), numpy.__version__",
|
| 90 |
+
"from pathlib import Path; assert Path('/opt/tt-metal/sample_data/house_in_field_1080p.jpg').is_file()"
|
| 91 |
+
],
|
| 92 |
+
"built": {
|
| 93 |
+
"image": "tt-model/superpoint-blackhole:e4a3caad9845",
|
| 94 |
+
"repo": "changh95/superpoint-blackhole",
|
| 95 |
+
"tt_model_version": "0.1.0",
|
| 96 |
+
"created_at": "2026-09-12T04:46:07+00:00",
|
| 97 |
+
"tt_metal": {
|
| 98 |
+
"sha": "8b98410e730bb504fea43a88609756e34821d91d",
|
| 99 |
+
"describe": "v0.78.0-dev20260820-25-g8b98410e73",
|
| 100 |
+
"dirty": false,
|
| 101 |
+
"scm_version": "0.65.2.dev9100",
|
| 102 |
+
"mode": "local",
|
| 103 |
+
"remote": "https://github.com/tenstorrent/tt-metal.git",
|
| 104 |
+
"branch": "main",
|
| 105 |
+
"pushed": true
|
| 106 |
+
},
|
| 107 |
+
"code_sha256": "416a56f5b5475d4c66a44e99b56c32ae74bb417e65771f21b436d10481c01fe9",
|
| 108 |
+
"image_digest": "sha256:e4a3caad98453047bb9214acfacdd96b2e2a9f7f6848c3a9b996517022f57223"
|
| 109 |
+
}
|
| 110 |
+
}
|
| 111 |
+
}
|