sinhala-tts / scripts /win_pull_and_run_next_batch.ps1
outlawmold's picture
Add auto next-batch launchers for Mac/Windows and cache-safe Mac training defaults
075e81a
param(
[switch]$DryRun,
[int]$Epochs = 20,
[int]$BatchSizePerGpu = 600,
[string]$HfCacheMode = "auto",
[string]$HfCacheDir = ".hf_cache",
[string]$MachineTag = "win"
)
$ErrorActionPreference = "Stop"
$repoRoot = Resolve-Path (Join-Path $PSScriptRoot "..")
Set-Location $repoRoot
git pull --ff-only origin main
$prepared = Get-ChildItem -Path "data" -Directory -ErrorAction SilentlyContinue |
Where-Object { $_.Name -match '^sinhala_tts_batch(\d+)_custom$' } |
Where-Object { Test-Path (Join-Path $_.FullName "raw.arrow") } |
ForEach-Object {
[PSCustomObject]@{
Number = [int]([regex]::Match($_.Name, '^sinhala_tts_batch(\d+)_custom$').Groups[1].Value)
DatasetName = "sinhala_tts_batch$([regex]::Match($_.Name, '^sinhala_tts_batch(\d+)_custom$').Groups[1].Value)"
}
} |
Sort-Object Number
if (-not $prepared) {
throw "No prepared batches found under data\\sinhala_tts_batch*_custom"
}
$lockFile = Join-Path $repoRoot "ACTIVE_RUNS.md"
$lockContent = if (Test-Path $lockFile) { Get-Content $lockFile -Raw } else { "" }
$selected = $null
foreach ($p in $prepared) {
if ($lockContent -match [regex]::Escape($p.DatasetName)) {
continue
}
$selected = $p
break
}
if (-not $selected) {
throw "All available prepared batches appear claimed in ACTIVE_RUNS.md"
}
$datasetName = $selected.DatasetName
$expName = "F5TTS_v1_Base_${MachineTag}_batch$($selected.Number)"
$startedUtc = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
if (-not (Test-Path $lockFile)) {
@(
"# ACTIVE RUNS",
"# machine | dataset_name | exp_name | started_utc"
) | Set-Content -LiteralPath $lockFile -Encoding UTF8
}
Add-Content -LiteralPath $lockFile -Value ("| {0} | {1} | {2} | {3} |" -f $MachineTag, $datasetName, $expName, $startedUtc)
$cmd = @(
".\scripts\run_finetune_safe.ps1",
"-DatasetName", $datasetName,
"-ExpName", $expName,
"-Epochs", "$Epochs",
"-BatchSizePerGpu", "$BatchSizePerGpu",
"-HfCacheMode", $HfCacheMode,
"-HfCacheDir", $HfCacheDir
)
Write-Output ("Selected batch: {0}" -f $datasetName)
Write-Output ("Command: {0}" -f ($cmd -join " "))
if ($DryRun) {
Write-Output "Dry run only; not launching."
exit 0
}
& .\scripts\run_finetune_safe.ps1 `
-DatasetName $datasetName `
-ExpName $expName `
-Epochs $Epochs `
-BatchSizePerGpu $BatchSizePerGpu `
-HfCacheMode $HfCacheMode `
-HfCacheDir $HfCacheDir