Files
llm/scripts/check_runtime_preflight.ps1

72 lines
2.2 KiB
PowerShell

param(
[string]$UiBaseUrl = "http://192.168.220.91:8765",
[string]$ModelId = "qwen3-coder-30b-a3b-instruct-q6_k",
[string]$Plugin = "1c",
[string[]]$Profiles = @("gpu-fast", "cpu-test"),
[string]$Report = "reports/benchmarks/runtime-preflight-latest.json",
[int]$TimeoutSec = 60
)
$ErrorActionPreference = "Stop"
$root = Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Path)
$reportPath = Join-Path $root $Report
$url = "$($UiBaseUrl.TrimEnd('/'))/api/benchmark/preflight"
$payload = @{
model_id = $ModelId
plugin = $Plugin
profiles = $Profiles
} | ConvertTo-Json -Depth 8
Write-Host "Runtime benchmark preflight"
Write-Host "URL: $url"
Write-Host "Model: $ModelId"
Write-Host "Plugin: $Plugin"
Write-Host "Profiles: $($Profiles -join ', ')"
Write-Host ""
try {
$result = Invoke-RestMethod -Uri $url -Method Post -ContentType "application/json" -Body $payload -TimeoutSec $TimeoutSec
} catch {
$response = $_.Exception.Response
if ($response) {
try {
$stream = $response.GetResponseStream()
$reader = [System.IO.StreamReader]::new($stream)
$body = $reader.ReadToEnd()
if ($body) {
$result = $body | ConvertFrom-Json
} else {
throw
}
} catch {
throw $_.Exception
}
} else {
throw
}
}
New-Item -ItemType Directory -Force (Split-Path -Parent $reportPath) | Out-Null
$result | ConvertTo-Json -Depth 10 | Set-Content -LiteralPath $reportPath -Encoding UTF8
foreach ($check in @($result.checks)) {
$target = $check.target
$served = if ($target) { $target.served_model_name } else { "-" }
$endpoint = if ($target) { $target.base_url } else { "-" }
$latency = if ($check.latency_ms -ne $null) { "$($check.latency_ms)ms" } else { "-" }
$status = if ($check.available) { "ready" } else { $check.status }
Write-Host ("{0,-12} {1,-14} {2,6} {3} {4}" -f $check.profile_id, $status, $latency, $endpoint, $served)
if (-not $check.available -and $check.error) {
Write-Host " error: $($check.error)"
}
}
Write-Host ""
Write-Host "Status: $($result.status)"
Write-Host "Report: $reportPath"
if (-not $result.ready) {
exit 1
}