h3-blackwell-runtime/tools/Inspect-H3Nvfp4Checkpoint.ps1
2026-08-12 14:12:42 +07:00

27 lines
1.9 KiB
PowerShell

$ErrorActionPreference = 'Stop'
$envPath = Join-Path $PSScriptRoot '..\..\..\.env'
Get-Content -LiteralPath $envPath | ForEach-Object {
if ($_ -match '^\s*([^#=\s]+)\s*=\s*(.*)\s*$') {
[Environment]::SetEnvironmentVariable($matches[1], $matches[2].Trim('"').Trim("'"), 'Process')
}
}
if (-not $env:RUNPOD_API_KEY) { throw 'RUNPOD_API_KEY is not set in .env.' }
$checkpoint = '/runpod-volume/ComfyUI/models/diffusion_models/minimax_h3_ref2va_pruned_nvfp4.safetensors'
$output = '/runpod-volume/h3-blackwell-runtime/artifacts/checkpoints/minimax_h3_ref2va_pruned_nvfp4.header.json'
$probe = "import collections,json,os,struct; p='$checkpoint'; o='$output'; f=open(p,'rb'); n=struct.unpack('<Q',f.read(8))[0]; h=json.loads(f.read(n)); t={k:v for k,v in h.items() if k!='__metadata__'}; r={'checkpoint':p,'metadata':h.get('__metadata__',{}),'tensor_count':len(t),'dtypes':dict(sorted(collections.Counter(v['dtype'] for v in t.values()).items())),'tensors':t}; os.makedirs(os.path.dirname(o),exist_ok=True); open(o,'w').write(json.dumps(r,indent=2,sort_keys=True)); print(json.dumps({'output':o,'header_bytes':n,'tensor_count':len(t),'dtypes':r['dtypes'],'metadata':r['metadata']},sort_keys=True))"
$encodedProbe = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($probe))
$payload = @{
name = 'h3-nvfp4-checkpoint-inspect'
image = 'runpod/pytorch:1.1.0-rc.154-cu1300-torch291-ubuntu2404'
cloud = 'SECURE'
gpu = @{ id = 'NVIDIA RTX PRO 6000 Blackwell Server Edition'; count = 1 }
disk = 20
dataCenterIds = @('EUR-IS-1')
mounts = @{ network = @(@{ volumeId = 'g8r2uqufz5'; path = '/runpod-volume' }) }
args = 'bash -lc ''set -eu; python -c "import base64;exec(base64.b64decode(\"' + $encodedProbe + '\"))"'''
}
$headers = @{ Authorization = "Bearer $env:RUNPOD_API_KEY" }
Invoke-RestMethod -Method Post -Uri 'https://api.runpod.io/v2/pods' -Headers $headers -ContentType 'application/json' -Body ($payload | ConvertTo-Json -Depth 8)