CI / docs-check (push) Canceled after 0s
CI / backend-test (push) Canceled after 0s
CI / service-test (push) Canceled after 0s
CI / frontend-test (push) Canceled after 0s
CI / rust-core (push) Canceled after 0s
CI / docs-check (pull_request) Canceled after 0s
CI / backend-test (pull_request) Canceled after 0s
CI / service-test (pull_request) Canceled after 0s
CI / frontend-test (pull_request) Canceled after 0s
CI / rust-core (pull_request) Canceled after 0s
28 lines
1.6 KiB
PowerShell
28 lines
1.6 KiB
PowerShell
param(
|
|
[ValidateSet('cpu', 'cuda')][string]$Device = 'cpu',
|
|
[string]$RuntimeDirectory = '',
|
|
[switch]$QuietProgress
|
|
)
|
|
$ErrorActionPreference = 'Stop'
|
|
$uvOptions = if ($QuietProgress) { @('--quiet') } else { @() }
|
|
$backendRoot = Split-Path $PSScriptRoot -Parent
|
|
$runtimeRoot = if ($RuntimeDirectory) { [IO.Path]::GetFullPath($RuntimeDirectory) } else { Join-Path $backendRoot '.venv-models' }
|
|
$runtimePython = Join-Path $runtimeRoot 'Scripts/python.exe'
|
|
if (!(Test-Path -LiteralPath $runtimePython)) {
|
|
& uv venv --python 3.12 $runtimeRoot
|
|
if ($LASTEXITCODE -ne 0) { throw '无法创建模型运行环境' }
|
|
}
|
|
# CPU 是默认值。 CUDA 轮子包括运行时,而不是 NVIDIA 驱动程序。
|
|
$torchIndex = if ($Device -eq 'cuda') { 'https://download.pytorch.org/whl/cu128' } else { 'https://download.pytorch.org/whl/cpu' }
|
|
$wheelVariant = if ($Device -eq 'cuda') { 'cu128' } else { 'cpu' }
|
|
# 也固定本地版本:==2.9.1 单独也接受已安装的 CPU 轮。
|
|
Write-Output 'COMPONENT:torch'
|
|
& uv @uvOptions pip install --python $runtimePython --index-url $torchIndex "torch==2.9.1+$wheelVariant" "torchaudio==2.9.1+$wheelVariant"
|
|
if ($LASTEXITCODE -ne 0) { throw 'PyTorch 安装失败' }
|
|
Write-Output 'COMPONENT:dependencies'
|
|
& uv @uvOptions pip install --python $runtimePython -r (Join-Path $PSScriptRoot 'model-requirements.lock') -c (Join-Path $PSScriptRoot 'model-requirements.txt')
|
|
if ($LASTEXITCODE -ne 0) { throw '模型依赖安装失败' }
|
|
Write-Output 'COMPONENT:verify'
|
|
& $runtimePython -c 'import torch; print({"torch":torch.__version__,"cuda_available":torch.cuda.is_available()})'
|
|
if ($LASTEXITCODE -ne 0) { throw '模型运行环境检查失败' }
|