Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 33 additions & 1 deletion studio/install_llama_prebuilt.py
Original file line number Diff line number Diff line change
Expand Up @@ -1285,9 +1285,39 @@ def pinned_published_release_bundle(

def resolve_requested_llama_tag(
requested_tag: str | None,
published_repo: str = "",
) -> str:
"""Resolve a llama.cpp tag for source-build fallback.

Resolution order:
1. Concrete tag (e.g. "b8508") -- returned as-is.
2. "latest" with published_repo -- query the Unsloth release repo
(e.g. unslothai/llama.cpp) for its latest release tag. This is the
tested/approved version that matches the prebuilt binaries.
3. "latest" without published_repo or if (2) fails -- query the upstream
ggml-org/llama.cpp repo. This may return a newer, untested tag.

The Unsloth repo is preferred because its releases are pinned to specific
upstream tags that have been validated with Unsloth Studio. Using the
upstream bleeding-edge tag risks API/ABI incompatibilities.
"""
if requested_tag and requested_tag != "latest":
return requested_tag
# Prefer the Unsloth release repo tag (tested/approved) over bleeding-edge
# upstream. For example, unslothai/llama.cpp may publish b8508 while
# ggml-org/llama.cpp latest is b8514. The source-build fallback should
# compile the same version the prebuilt path would have installed.
if published_repo:
try:
payload = fetch_json(
f"https://api.github.com/repos/{published_repo}/releases/latest"
)
tag = payload.get("tag_name")
if isinstance(tag, str) and tag:
return tag
Comment on lines +1315 to +1317

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Map published latest release to upstream llama tag

When published_repo is set, this path returns the release tag_name directly, but the setup fallback uses that value as a ref in ggml-org/llama.cpp source builds. For repositories whose release tags differ from their manifest upstream_tag (a supported shape in this codebase via PublishedReleaseBundle.release_tag vs upstream_tag), source fallback will now try to clone/checkout a non-existent ggml ref and fail instead of building a valid upstream tag. The resolver should read the published manifest (or checksum metadata) and return upstream_tag, then fall back to upstream latest if metadata is unavailable.

Useful? React with 👍 / 👎.

except Exception:
pass
# Fall back to upstream ggml-org latest release tag
return latest_upstream_release_tag()


Expand Down Expand Up @@ -3360,7 +3390,9 @@ def parse_args() -> argparse.Namespace:
def main() -> int:
args = parse_args()
if args.resolve_llama_tag is not None:
print(resolve_requested_llama_tag(args.resolve_llama_tag))
# Pass published_repo so the resolver prefers the Unsloth release tag
# (tested/approved) over the upstream ggml-org bleeding-edge tag.
print(resolve_requested_llama_tag(args.resolve_llama_tag, args.published_repo))
return EXIT_SUCCESS

if args.resolve_install_tag is not None:
Expand Down
5 changes: 4 additions & 1 deletion studio/setup.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -1314,7 +1314,10 @@ if ($resolveExit -ne 0 -or [string]::IsNullOrWhiteSpace($ResolvedLlamaTag)) {
if ($resolveOutput) {
$resolveOutput | ForEach-Object { Write-Host $_ }
}
$fallbackOutput = & python "$PSScriptRoot\install_llama_prebuilt.py" --resolve-llama-tag $RequestedLlamaTag 2>$null
# Resolve the llama.cpp tag for source-build fallback. Pass --published-repo
# so the resolver prefers Unsloth's tested tag (e.g. b8508) over the upstream
# bleeding-edge tag (e.g. b8514) from ggml-org/llama.cpp.
$fallbackOutput = & python "$PSScriptRoot\install_llama_prebuilt.py" --resolve-llama-tag $RequestedLlamaTag --published-repo $HelperReleaseRepo 2>$null
$fallbackExit = $LASTEXITCODE
$ResolvedLlamaTag = if ($fallbackExit -eq 0 -and $fallbackOutput) {
($fallbackOutput | Select-Object -Last 1).ToString().Trim()
Expand Down
5 changes: 4 additions & 1 deletion studio/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,10 @@ if [ -z "$_RESOLVED_LLAMA_TAG" ]; then
echo "⚠️ Failed to resolve an installable prebuilt llama.cpp tag via $_HELPER_RELEASE_REPO"
cat "$_RESOLVE_LLAMA_LOG" >&2 || true
set +e
_RESOLVED_LLAMA_TAG="$(python "$SCRIPT_DIR/install_llama_prebuilt.py" --resolve-llama-tag "$_REQUESTED_LLAMA_TAG" 2>/dev/null)"
# Resolve the llama.cpp tag for source-build fallback. Pass --published-repo
# so the resolver prefers Unsloth's tested tag (e.g. b8508) over the upstream
# bleeding-edge tag (e.g. b8514) from ggml-org/llama.cpp.
_RESOLVED_LLAMA_TAG="$(python "$SCRIPT_DIR/install_llama_prebuilt.py" --resolve-llama-tag "$_REQUESTED_LLAMA_TAG" --published-repo "$_HELPER_RELEASE_REPO" 2>/dev/null)"
_RESOLVE_UPSTREAM_STATUS=$?
set -e
if [ "$_RESOLVE_UPSTREAM_STATUS" -ne 0 ] || [ -z "$_RESOLVED_LLAMA_TAG" ]; then
Expand Down
Loading