fix(install,studio): address Codex round-4 review (6 of 7 comments real)
- install.sh: gate the new aarch64 bitsandbytes block on SKIP_TORCH=false -- with --no-torch/UNSLOTH_NO_TORCH (GGUF-only install) it would have pulled torch back into the venv through bitsandbytes' dependencies. - studio worker: in the new Spark OOM-guard section, decide PYTORCH_CUDA_ALLOC_CONF (expandable_segments) BEFORE the guard's first CUDA touch -- get_device_properties initializes the CUDA allocator, after which the env var is ignored, and the later `import unsloth` (patch_dgx_spark_memory_config) is too late for the worker process. Uses the same CUDA-free nvidia-smi name sniff, append-don't-override, and UNSLOTH_NO_EXPANDABLE_SEGMENTS opt-out as the library patch. Live-verified on the N1X: env set while torch.cuda.is_initialized() is still False. - uninstall.ps1: only run `fuser -k 8888/tcp` in a probed WSL distro when an Unsloth install actually exists there (checked BEFORE the rm deletes the marker) -- an unrelated listener on 8888 (e.g. Jupyter) in a clean distro must survive a Windows-side uninstall. The Unsloth-specific pkills stay unconditional. - install.ps1 + uninstall.ps1: persist the chosen WSL distro to %LOCALAPPDATA%\Unsloth\wsl-distro.txt at install; uninstall reads it (before removing the directory) and prepends it to the cleanup candidates, so a custom UNSLOTH_WSL_DISTRO install is cleaned without the env var being set again at uninstall time. - provision_llama_cuda.sh: honor UNSLOTH_LLAMA_PR (numeric-validated, best-effort fetch of pull/N/head after clone) so a provisioned tree matches a PR pin the way setup.sh does; and require only llama-server in the main cmake build (mirroring setup.sh), building the helper targets (llama-cli/quantize/mtmd-cli/gguf-split) best-effort afterwards -- an older UNSLOTH_LLAMA_TAG pin lacking a newer helper target no longer fails the whole provision. Not changed: the "--tauri rejection doesn't restore the venv rollback" comment is incorrect -- the rejection returns through Exit-InstallFailure, which itself calls Restore-StudioVenvRollback. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
ca8c1b434d
commit
c31a6e876d
5 changed files with 79 additions and 4 deletions
|
|
@ -143,6 +143,20 @@ if [ ! -d "$LLAMA_DIR/.git" ]; then
|
|||
_restore_prev
|
||||
exit 0
|
||||
fi
|
||||
# Honor a llama.cpp PR pin (UNSLOTH_LLAMA_PR, the same var setup.sh supports)
|
||||
# so a provisioned tree matches the user's request instead of silently building
|
||||
# the default branch. Best-effort: a failed fetch keeps the default branch.
|
||||
case "${UNSLOTH_LLAMA_PR:-}" in
|
||||
''|*[!0-9]*) ;;
|
||||
*)
|
||||
if git -C "$LLAMA_DIR" fetch --depth 1 origin "pull/${UNSLOTH_LLAMA_PR}/head:_unsloth_pr_${UNSLOTH_LLAMA_PR}" >/dev/null 2>&1 \
|
||||
&& git -C "$LLAMA_DIR" checkout "_unsloth_pr_${UNSLOTH_LLAMA_PR}" >/dev/null 2>&1; then
|
||||
log "checked out llama.cpp PR #${UNSLOTH_LLAMA_PR} (UNSLOTH_LLAMA_PR)"
|
||||
else
|
||||
log "could not fetch llama.cpp PR #${UNSLOTH_LLAMA_PR}; building the default branch"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
cd "$LLAMA_DIR" || { _restore_prev; exit 0; }
|
||||
|
||||
|
|
@ -190,8 +204,16 @@ _NICE=""
|
|||
command -v nice >/dev/null 2>&1 && _NICE="nice -n 19"
|
||||
command -v ionice >/dev/null 2>&1 && _NICE="$_NICE ionice -c 3"
|
||||
_cmake_build() {
|
||||
$_NICE cmake --build build -j"$JOBS" --target \
|
||||
llama-server llama-cli llama-quantize llama-mtmd-cli llama-gguf-split >/dev/null 2>&1
|
||||
# Only llama-server is REQUIRED (mirrors setup.sh's source path): an older
|
||||
# UNSLOTH_LLAMA_TAG pin may predate newer helper targets (llama-mtmd-cli,
|
||||
# llama-gguf-split), and those missing must not fail the whole provision.
|
||||
$_NICE cmake --build build -j"$JOBS" --target llama-server >/dev/null 2>&1
|
||||
}
|
||||
_cmake_build_extras() {
|
||||
# Helper targets unsloth-zoo's GGUF exporter also uses -- best-effort each.
|
||||
for _t in llama-cli llama-quantize llama-mtmd-cli llama-gguf-split; do
|
||||
$_NICE cmake --build build -j"$JOBS" --target "$_t" >/dev/null 2>&1 || true
|
||||
done
|
||||
}
|
||||
if ! _cmake_build; then
|
||||
# An interrupted build (e.g. a thermal/power shutdown mid-compile, which this
|
||||
|
|
@ -203,6 +225,7 @@ if ! _cmake_build; then
|
|||
_cmake_configure || { log "cmake configure failed"; cd /; _restore_prev; exit 0; }
|
||||
_cmake_build || { log "cmake build failed"; cd /; _restore_prev; exit 0; }
|
||||
fi
|
||||
_cmake_build_extras
|
||||
|
||||
if is_cuda_server "$SERVER"; then
|
||||
log "CUDA llama-server ready: $SERVER"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue