Download tt_kernel_manifest.json from changh95/GR00T-N1.7-3B-p150: direct link, hf CLI and curl.
- Browser
- Download file 11 kB
-
https://huggingface.co/changh95/GR00T-N1.7-3B-p150/resolve/main/tt_kernel_manifest.json
- Command line
-
hf download hf://changh95/GR00T-N1.7-3B-p150/tt_kernel_manifest.json
-
curl -L -o tt_kernel_manifest.json https://huggingface.co/changh95/GR00T-N1.7-3B-p150/resolve/main/tt_kernel_manifest.json
11 kB
| { | |
| "schema_version": "5.1", | |
| "name": "gr00t-n1.7-3b-p150", | |
| "tt_metal_version": "0.65.2.dev10011", | |
| "arch": "blackhole", | |
| "device_count": 1, | |
| "producer": { | |
| "tt_kernel_version": "0.1.0", | |
| "created_at": "2026-09-17T20:47:58.559611+00:00", | |
| "hostname": "deepgadget" | |
| }, | |
| "weights": { | |
| "repo_id": "nvidia/GR00T-N1.7-3B", | |
| "revision": "2fc962b973bccdd5d8ce4f67cc63b264d6886495", | |
| "allow_patterns": [ | |
| "model-*.safetensors", | |
| "model.safetensors.index.json", | |
| "config.json", | |
| "processor_config.json", | |
| "statistics.json", | |
| "embodiment_id.json", | |
| "LICENSE" | |
| ], | |
| "ignore_patterns": null, | |
| "repo_type": "model" | |
| }, | |
| "mesh": null, | |
| "entrypoint": null, | |
| "resources": null, | |
| "capabilities": null, | |
| "env": {}, | |
| "bundled": null, | |
| "deps": null, | |
| "container": { | |
| "image": { | |
| "registry": "hf", | |
| "repository": "gr00t-n1.7-3b-p150", | |
| "tag": "tt-model/gr00t-n1.7-3b-p150:4cfc5e1ffe29", | |
| "digest": "sha256:4cfc5e1ffe299b02f05d09f2ac79a840690a135ec81ffa9da79cf99be87f6636" | |
| }, | |
| "kind": "tt-dit-server", | |
| "runtime": { | |
| "app": "gr00t_p150.server.app:app", | |
| "mesh_shape_env": "TT_MESH_SHAPE", | |
| "packages": [ | |
| "numpy>=1.24.4,<2", | |
| "safetensors", | |
| "huggingface_hub", | |
| "transformers==5.12.1", | |
| "opencv-python-headless==4.8.1.78", | |
| "torchvision==0.26.0", | |
| "loguru" | |
| ], | |
| "lock": "requirements.lock" | |
| }, | |
| "serve": { | |
| "hardware": "p150", | |
| "mesh_device": "P150", | |
| "port": 20000, | |
| "max_model_len": null, | |
| "max_num_seqs": null, | |
| "block_size": null, | |
| "server_timeout": null, | |
| "capabilities": null, | |
| "additional_config": {}, | |
| "args": [], | |
| "env": { | |
| "TT_WEIGHTS_REVISION": "2fc962b973bccdd5d8ce4f67cc63b264d6886495", | |
| "TT_METAL_VISIBLE_DEVICES": "0", | |
| "TT_DEVICE_ID": "0", | |
| "GR00T_VERSION": "n17", | |
| "GR00T_EMBODIMENT": "oxe_droid_relative_eef_relative_joint", | |
| "GR00T_LAYOUT": "droid", | |
| "GR00T_POLICY": "mixed_dit", | |
| "GR00T_TRACE_LAYOUT": "per_stage", | |
| "GR00T_DIT_BACKEND": "megakernel", | |
| "GR00T_MK_ARENA_DTYPE": "auto", | |
| "GR00T_NUM_CQS": "2", | |
| "GR00T_VIT_FORK": "1", | |
| "GR00T_TOKENIZER_DIR": "/opt/tt-metal/gr00t_p150/assets/tokenizer/n17", | |
| "GR00T_PROJECT_ROOT": "/nonexistent", | |
| "GR00T_GOLDEN_ROOT": "/nonexistent", | |
| "GR00T_TT_CACHE": "/weight-cache/gr00t-tt", | |
| "GR00T_WARMUP_RUNS": "5", | |
| "GR00T_WARMUP_PCC_MIN": "0.999" | |
| } | |
| }, | |
| "serve_profiles": [ | |
| { | |
| "hardware": null, | |
| "mesh_device": null, | |
| "port": null, | |
| "max_model_len": null, | |
| "max_num_seqs": null, | |
| "block_size": null, | |
| "server_timeout": null, | |
| "capabilities": null, | |
| "additional_config": {}, | |
| "args": [], | |
| "env": {}, | |
| "name": "default", | |
| "description": null | |
| } | |
| ], | |
| "default_profile": null, | |
| "code_dir": "code", | |
| "verify": [ | |
| "import gr00t_p150.server.app as a; assert a.app", | |
| "import sys, gr00t_p150.server.app; assert 'ttnn' not in sys.modules and not any(m.startswith('models.experimental.gr00t') for m in sys.modules), 'the server module must import without side effects'", | |
| "import models.experimental.gr00t.tt.model as m; assert m.Gr00tTT", | |
| "from models.experimental.gr00t.common import configs, preprocessing, normalization, prompts, checkpoint, weights; assert configs.HF_SNAPSHOT_SHAS['n17'] == '2fc962b973bccdd5d8ce4f67cc63b264d6886495' and configs.HF_REPOS['n17'] == 'nvidia/GR00T-N1.7-3B'", | |
| "from models.experimental.gr00t.common.configs import get_config; c = get_config('n17'); l = c.canonical_layout; assert (l.name, c.canonical_embodiment, l.embodiment_id, l.n_cameras, l.n_images, l.grid_thw, l.tokens_per_image, l.l_max, l.s_pad_llm, l.noise_shape, l.valid_slice) == ('droid', 'oxe_droid_relative_eef_relative_joint', 24, 2, 4, (1, 16, 28), 112, 51, 512, (1, 40, 132), (40, 17)), l", | |
| "from models.experimental.gr00t.tt.qwen3vl_vision import build_vision_tower, resolve_vit_fork, TunedVisionConfig; from models.experimental.gr00t.tt.policy import TTPolicy; assert TTPolicy().vit_fork is True and resolve_vit_fork(TTPolicy(), None, 'qwen3vl') is True", | |
| "from models.experimental.gr00t.tt.policy import TTPolicy, DEFAULT_DIT_BACKEND, MK_ARENA_DTYPE_DEFAULT; p = TTPolicy(); assert DEFAULT_DIT_BACKEND == 'megakernel' and p.dit_backend == 'megakernel' and p.mk_arena_dtype == 'auto' and p.mk_arena_dtype_for('n17') == 'bfp8_b' == MK_ARENA_DTYPE_DEFAULT['n17'], p.to_dict()", | |
| "from models.experimental.gr00t.tt.policy import TTPolicy; assert TTPolicy().with_env_overrides({'GR00T_DIT_BACKEND': 'ttnn'}).dit_backend == 'ttnn' and TTPolicy().with_env_overrides({'GR00T_MK_ARENA_DTYPE': 'bf16'}).mk_arena_dtype == 'bf16'", | |
| "import models.experimental.gr00t.tt.megakernel.dit_program as dp; from models.experimental.gr00t.tt.megakernel import arena, core_map, descriptors; assert dp.DiTMegakernel and descriptors.L1_USABLE_BYTES == 1461248 and core_map.N_COMPUTE_DEFAULT == 96", | |
| "from models.experimental.gr00t.tt.model import open_model_device, worker_l1_size_for, MK_L1_CUT_BYTES_DEFAULT, ADAPTER_MEM_BY_BACKEND; from models.experimental.gr00t.tt.policy import TTPolicy; assert MK_L1_CUT_BYTES_DEFAULT == 65536 and worker_l1_size_for(TTPolicy()) == 1395712 and worker_l1_size_for(TTPolicy(dit_backend='ttnn')) is None and ADAPTER_MEM_BY_BACKEND == {'ttnn': 'L1', 'megakernel': 'DRAM'}", | |
| "import hashlib; from pathlib import Path; d = Path('/opt/tt-metal/models/experimental/gr00t'); rows = [l.split() for l in (d / 'tests/tt/results/mk_tree_20260918-041439.sha256').read_text().splitlines() if l.strip()]; assert len(rows) == 16 and all(hashlib.sha256((d / p).read_bytes()).hexdigest() == h for h, p in rows), 'tt/megakernel tree != the K4b checkpoint 7df61c35e9dc7857'", | |
| "import os, re; from pathlib import Path; k = Path('/opt/tt-metal/models/experimental/gr00t/tt/megakernel/kernels/dit_kernel.cpp'); incs = re.findall(r'#include \"(\\.\\./[^\"]+)\"', k.read_text()); assert len(incs) == 4 and all(Path(os.path.normpath(k.parent / i)).is_file() for i in incs), incs", | |
| "import inspect, gr00t_p150.server.app as a; src = inspect.getsource(a); assert a.STAGE_SERVED == {'megakernel': 'stage2-megakernel', 'ttnn': 'stage1-ttnn-traces'} and a.DEFAULT_NUM_CQS == 2 and 'device = open_model_device(' in src and 'GR00T_DIT_BACKEND' in src and 'GR00T_NUM_CQS' in src", | |
| "import os; os.environ.update({'GR00T_VERSION': 'n17', 'TT_WEIGHTS_REVISION': '2fc962b973bccdd5d8ce4f67cc63b264d6886495', 'GR00T_DIT_BACKEND': 'megakernel', 'GR00T_MK_ARENA_DTYPE': 'auto', 'GR00T_NUM_CQS': '2', 'GR00T_VIT_FORK': '1'}); from gr00t_p150.server.app import load_config; c = load_config(); assert (c.version, c.dit_backend, c.mk_arena_dtype, c.num_cqs, c.vit_fork) == ('n17', 'megakernel', 'auto', 2, True), c", | |
| "import models.tt_dit.utils.matmul as mm; assert mm.get_matmul_config", | |
| "from models.tt_dit.encoders.qwen3vl.vision_qwen3vl import Qwen3VlVisionModel; assert Qwen3VlVisionModel", | |
| "import models.demos.deepseek_v3_b1.unified_kernel_descriptor as u; assert u.UnifiedKernelDescriptor", | |
| "import safetensors, huggingface_hub, cv2, numpy, PIL, loguru; assert int(numpy.__version__.split('.')[0]) < 2, numpy.__version__; assert cv2.__version__ == '4.8.1', cv2.__version__", | |
| "import transformers; assert transformers.__version__ == '5.12.1', transformers.__version__", | |
| "import torchvision; assert torchvision.__version__.startswith('0.26.0'), torchvision.__version__", | |
| "from pathlib import Path; d = Path('/opt/tt-metal/gr00t_p150/assets/tokenizer/n17'); assert all((d / f).is_file() for f in ('vocab.json', 'merges.txt', 'tokenizer_config.json', 'preprocessor_config.json', 'PROVENANCE.md')), sorted(p.name for p in d.iterdir())", | |
| "import os; os.environ['GR00T_TOKENIZER_DIR_N17'] = '/opt/tt-metal/gr00t_p150/assets/tokenizer/n17'; from models.experimental.gr00t.common.prompts import get_tokenizer; t = get_tokenizer('n17'); assert t.convert_tokens_to_ids('<|image_pad|>') == 151655 and t.convert_tokens_to_ids('<|vision_start|>') == 151652 and t.convert_tokens_to_ids('<|vision_end|>') == 151653", | |
| "import os; os.environ['GR00T_TOKENIZER_DIR_N17'] = '/opt/tt-metal/gr00t_p150/assets/tokenizer/n17'; from models.experimental.gr00t.common.preprocessing import get_qwen2vl_image_processor, qwen2vl_smart_resize; ip = get_qwen2vl_image_processor(); assert ip.patch_size == 16 and ip.merge_size == 2 and ip.temporal_patch_size == 2; assert qwen2vl_smart_resize(256, 455, 32, 65536, 16777216) == (256, 448)", | |
| "from pathlib import Path; d = Path('/opt/tt-metal/gr00t_p150/demo/n17'); assert all((d / f).is_file() for f in ('observation.json', 'noise.json', 'expected.json', 'frames/exterior_image_1_left_tm15.png', 'frames/exterior_image_1_left_t0.png', 'frames/wrist_image_left_tm15.png', 'frames/wrist_image_left_t0.png')), sorted(str(p) for p in d.rglob('*'))", | |
| "from gr00t_p150.server.app import load_demo_request; import numpy as np; r = load_demo_request('n17'); assert set(r['images']) == {'exterior_image_1_left', 'wrist_image_left'} and all(len(v) == 2 for v in r['images'].values()) and np.asarray(r['noise']).squeeze().shape == (40, 132)", | |
| "from pathlib import Path; assert Path('/opt/tt-metal/models/experimental/gr00t/common/golden_tap_map.json').is_file() and Path('/opt/tt-metal/models/experimental/gr00t/tests/tt/gates/gates_multi.json').is_file()", | |
| "from pathlib import Path; assert Path('/opt/tt-metal/gr00t_p150/server/smoke_test.py').is_file() and Path('/opt/tt-metal/scripts/bench_http.py').is_file() and Path('/opt/tt-metal/scripts/download_weights.sh').is_file()", | |
| "import ttnn; assert all(hasattr(ttnn, a) for a in ('begin_trace_capture', 'end_trace_capture', 'execute_trace', 'release_trace', 'copy_host_to_device_tensor', 'MinimalMatmulConfig', 'embedding', 'generic_op', 'allocate_tensor_on_device'))", | |
| "from gr00t_p150.server.app import parse_mesh_shape as p; assert p('1x1') == p('(1, 1)') == p('1,1') == (1, 1)" | |
| ], | |
| "built": { | |
| "image": "tt-model/gr00t-n1.7-3b-p150:4cfc5e1ffe29", | |
| "repo": "changh95/GR00T-N1.7-3B-p150", | |
| "tt_model_version": "0.1.0", | |
| "created_at": "2026-09-17T20:42:14+00:00", | |
| "tt_metal": { | |
| "sha": "668c290757550588d0ce46b180c344a462a2aaf5", | |
| "describe": "v0.79.0-dev20260914-1-g668c290757", | |
| "dirty": false, | |
| "scm_version": "0.65.2.dev10011", | |
| "mode": "local", | |
| "remote": "https://github.com/tenstorrent/tt-metal.git", | |
| "branch": "HEAD", | |
| "pushed": true | |
| }, | |
| "code_sha256": "9efa5512d0634561c9d0469c7fada22f3da23a6ef08cdbeb08f8c0b6769673df", | |
| "image_digest": "sha256:4cfc5e1ffe299b02f05d09f2ac79a840690a135ec81ffa9da79cf99be87f6636" | |
| } | |
| } | |
| } |