86 lines
2.5 KiB
PowerShell
86 lines
2.5 KiB
PowerShell
param(
|
|
[string]$SshTarget = "",
|
|
[string]$ModelsRoot = "Z:\LLM\models",
|
|
[int]$ConnectTimeoutSeconds = 5
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
function Invoke-LocalCheck {
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$Name,
|
|
[Parameter(Mandatory = $true)]
|
|
[scriptblock]$Block
|
|
)
|
|
|
|
Write-Host ""
|
|
Write-Host "== $Name"
|
|
& $Block
|
|
}
|
|
|
|
function Invoke-RemoteCheck {
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$Name,
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$Command
|
|
)
|
|
|
|
Write-Host ""
|
|
Write-Host "== $Name"
|
|
ssh -o BatchMode=yes -o ConnectTimeout=$ConnectTimeoutSeconds $SshTarget "powershell -NoProfile -Command $Command"
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "Remote check failed on ${SshTarget}: ${Name}"
|
|
}
|
|
}
|
|
|
|
if ($SshTarget) {
|
|
Invoke-RemoteCheck "Host identity" "whoami; hostname; `$PSVersionTable.PSVersion.ToString()"
|
|
Invoke-RemoteCheck "GPU driver" "nvidia-smi --query-gpu=name,memory.total,driver_version --format=csv,noheader"
|
|
Invoke-RemoteCheck "Docker version" "docker version"
|
|
Invoke-RemoteCheck "Docker compose" "docker compose version"
|
|
Invoke-RemoteCheck "Docker info" "docker info --format '{{json .}}'"
|
|
Invoke-RemoteCheck "Models drive" "if (-not (Test-Path '$ModelsRoot')) { New-Item -ItemType Directory -Force '$ModelsRoot' | Out-Null }; Get-Item '$ModelsRoot' | Select-Object FullName,Exists"
|
|
Invoke-RemoteCheck "CUDA container" "docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi --query-gpu=name,memory.total --format=csv,noheader"
|
|
Write-Host ""
|
|
Write-Host "Windows GPU host preflight completed through SSH."
|
|
exit 0
|
|
}
|
|
|
|
Invoke-LocalCheck "Host identity" {
|
|
whoami
|
|
hostname
|
|
$PSVersionTable.PSVersion.ToString()
|
|
}
|
|
|
|
Invoke-LocalCheck "GPU driver" {
|
|
nvidia-smi --query-gpu=name,memory.total,driver_version --format=csv,noheader
|
|
}
|
|
|
|
Invoke-LocalCheck "Docker version" {
|
|
docker version
|
|
}
|
|
|
|
Invoke-LocalCheck "Docker compose" {
|
|
docker compose version
|
|
}
|
|
|
|
Invoke-LocalCheck "Docker info" {
|
|
docker info --format '{{json .}}'
|
|
}
|
|
|
|
Invoke-LocalCheck "Models drive" {
|
|
if (-not (Test-Path $ModelsRoot)) {
|
|
New-Item -ItemType Directory -Force $ModelsRoot | Out-Null
|
|
}
|
|
Get-Item $ModelsRoot | Select-Object FullName,Exists
|
|
}
|
|
|
|
Invoke-LocalCheck "CUDA container" {
|
|
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi --query-gpu=name,memory.total --format=csv,noheader
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "Windows GPU host preflight completed."
|