72 lines
2.2 KiB
PowerShell
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
|
|
}
|