76 lines
1.9 KiB
PowerShell
76 lines
1.9 KiB
PowerShell
param(
|
|
[string]$DockerHost = "ssh://docker-gpu",
|
|
[string]$Image = "python:3.11-slim",
|
|
[string]$HostModelsDir = "Z:/LLM/models",
|
|
[string]$HostToolsDir = "Z:/LLM/tools",
|
|
[string]$AdapterDir = "/models/adapters/1c/qwen3-coder-30b-a3b-1c-lora-v1",
|
|
[string]$BaseModelDir = "/models/base/qwen3-coder-30b-a3b-instruct",
|
|
[string]$OutputFile = "/models/adapters/1c/qwen3-coder-30b-a3b-1c-lora-v1.gguf",
|
|
[ValidateSet("f16", "bf16")]
|
|
[string]$OutType = "f16",
|
|
[switch]$SkipClone,
|
|
[switch]$Detached,
|
|
[string]$ContainerName = "llm-convert-1c-lora-gguf"
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
$script = @'
|
|
set -euo pipefail
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
if [ ! -d /models ]; then
|
|
echo "/models mount is missing" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p /tools
|
|
|
|
if [ "${SKIP_CLONE:-0}" != "1" ]; then
|
|
if [ ! -d /tools/llama.cpp/.git ]; then
|
|
rm -rf /tools/llama.cpp
|
|
git clone --depth 1 https://github.com/ggml-org/llama.cpp.git /tools/llama.cpp
|
|
else
|
|
git -C /tools/llama.cpp pull --ff-only
|
|
fi
|
|
fi
|
|
|
|
python -m pip install --no-cache-dir --upgrade pip
|
|
python -m pip install --no-cache-dir -r /tools/llama.cpp/requirements.txt
|
|
|
|
python /tools/llama.cpp/convert_lora_to_gguf.py \
|
|
--base "$BASE_MODEL_DIR" \
|
|
--outfile "$OUTPUT_FILE" \
|
|
--outtype "$OUTTYPE" \
|
|
"$ADAPTER_DIR"
|
|
'@
|
|
|
|
$dockerArgs = @(
|
|
"--host", $DockerHost,
|
|
"run"
|
|
)
|
|
|
|
if ($Detached) {
|
|
$dockerArgs += @("-d", "--name", $ContainerName)
|
|
} else {
|
|
$dockerArgs += "--rm"
|
|
}
|
|
|
|
$dockerArgs += @(
|
|
"--init",
|
|
"-v", "${HostModelsDir}:/models",
|
|
"-v", "${HostToolsDir}:/tools",
|
|
"-e", "ADAPTER_DIR=$AdapterDir",
|
|
"-e", "BASE_MODEL_DIR=$BaseModelDir",
|
|
"-e", "OUTPUT_FILE=$OutputFile",
|
|
"-e", "OUTTYPE=$OutType",
|
|
"-e", ("SKIP_CLONE=" + ($(if ($SkipClone) { "1" } else { "0" }))),
|
|
"--entrypoint", "bash",
|
|
$Image,
|
|
"-lc",
|
|
"apt-get update && apt-get install -y --no-install-recommends git build-essential && " + $script
|
|
)
|
|
|
|
docker @dockerArgs
|