mirror of
https://github.com/unslothai/unsloth.git
synced 2026-07-23 22:53:47 +00:00
* MLX CI: find llama-cli where save_pretrained_gguf actually installs it
The GGUF reload step hardcoded the CWD-relative paths llama.cpp/llama-cli and
llama.cpp/build/bin/llama-cli, but save_pretrained_gguf builds and installs llama.cpp
under unsloth_zoo's LLAMA_CPP_DEFAULT_DIR ($UNSLOTH_LLAMA_CPP_PATH, else
~/.unsloth/llama.cpp), so the reload could not find the binary and failed the Mac M1
job with "llama-cli not found". _find_llama_cli now searches that install directory
(and honors the env override) before falling back to the old CWD layout, with a
recursive glob as a last resort. The search is a strict superset of the previous
paths, so it cannot regress a layout that already worked.
* MLX CI: return an absolute llama-cli path from the locator
Resolve the located binary to an absolute path. If UNSLOTH_LLAMA_CPP_PATH is a
relative directory (e.g. "."), Path(".") / "llama-cli" normalizes to the bare name
"llama-cli", and subprocess.run treats a separator-less argument as a PATH lookup
rather than a file to execute, raising FileNotFoundError. resolve() makes the returned
path absolute so it always runs the intended binary.
* MLX CI: give llama-cli EOF on stdin so GGUF reload cannot hang
With the binary now found, the GGUF reload actually invokes llama-cli and it timed
out after 300s generating 24 tokens on a 270m model, which is a stdin block rather
than slow generation: subprocess.run captured stdout/stderr but left stdin inherited,
so -no-cnv still left llama-cli waiting for interactive input. Pass
stdin=subprocess.DEVNULL so it receives an immediate EOF and runs the single prompt to
completion.
---------
Co-authored-by: danielhanchen <michaelhan2050@gmail.com>
|
||
|---|---|---|
| .. | ||
| install | ||
| load_freeze | ||
| _playwright_robust.py | ||
| playwright_chat_ime_i18n.py | ||
| playwright_chat_ui.py | ||
| playwright_extra_ui.py | ||
| run_real_mlx_smoke.py | ||
| studio_api_smoke.py | ||
| test_auth_form_input_count.py | ||
| test_cancel_atomicity.py | ||
| test_cancel_id_wiring.py | ||
| test_chat_preset_builtin_invariants.py | ||
| test_chat_prompt_variables.py | ||
| test_chat_title_generation.py | ||
| test_cli_repo_variant.py | ||
| test_cli_run_alias.py | ||
| test_cli_studio_defaults.py | ||
| test_cli_studio_stop_windows.py | ||
| test_composer_rtl_bidi_attribute.py | ||
| test_export_output_path_contract.py | ||
| test_frontend_dep_removal.py | ||
| test_hardware_dispatch_matrix.py | ||
| test_is_mlx_dispatch_gate.py | ||
| test_llama_cpp_wall_clock_cap.py | ||
| test_mlx_training_worker_behaviors.py | ||
| test_node_decision.ps1 | ||
| test_node_probe_guard.ps1 | ||
| test_resolve_cuda_toolkit.ps1 | ||
| test_stream_cancel_registration_timing.py | ||
| test_studio_gguf_export_script_pin.py | ||
| test_studio_text_descender_clipping.py | ||
| test_sync_allow_scripts_pins.py | ||
| test_torch_flavor.ps1 | ||
| test_uninstall_dual_install_icon.ps1 | ||