Repository navigation
fix(installer): install the llama.cpp engine in a bare interpreter and stop reporting false success - #134
Merged
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что и почему
python install.pyсистемным интерпретатором (C:\Python314\python.exe, без зависимостей проекта) не устанавливал движок llama.cpp — и рапортовал успех. Живой прогон вскрыл три слоя одной проблемы: «шаг установщика зависит от того, чего в этом интерпретаторе нет», а итог не отражает реальность.Слой 1 — импорт падал (
No module named 'httpx')install.py:669(step_llama) импортируетsrc.providers.reranker.llama_runner, а тот делал top-levelimport httpx. Шагу нужны толькоdownload_llama_binary/is_installed(stdlib, urllib). Зависимости проекта ставятся в venv расширения (шаг 6), аinstall.pyработает интерпретатором пользователя — это штатный путь поdocs/en/INSTALL.md.Там же:
llama_install.py:233на импорте вызывалwmic cpu/wmic memorychip(на Windows 11 24H2wmicудалён) → трейсбек в консоль установки и деградация RAM/CPU до8/unknown.Слой 2 —
--with-modelsпадал так жеdownload_gguf_modelделал безусловныйfrom huggingface_hub import hf_hub_downloadвнеtry, хотяstep_gguf(шаг 7) идёт доstep_models(шаг 8). Комментарий «…или urllib» обещал fallback, которого не существовало. Плюсvulkaninfoспавнился на импорте на любой машине сvulkan-1.dllи печатал предупреждение в консоль установки.Слой 3 — движок не ставился, но шаг был «✓»
Живой прогон после фикса импорта показал:
SHA256 не совпадает! Ожидался d5d7…, получен a23e…→🚫 Отказ от установки— и одновременно✓ Step 7/12и итог12 ok, 0 skipped, 0 failed.LLAMA_BIN_SHA256["win-cpu-x64"]неверен с первого коммита. Архив при этом правильный: GitHub API для ассета отдаётdigest=sha256:a23e548c…, совпадающий с фактическим;win-vulkan-x64тоже неверен.step_llamaна провале добавлял жёлтую строку и возвращался нормально →_stepсчитал шагok;main()не возвращал код ошибки (exit 0 всегда).Что изменено
src/providers/reranker/llama_runner.py— ленивый_httpx()(6 мест), top-levelimport httpxубран.src/providers/reranker/llama_install.py:GlobalMemoryStatusEx(ctypes), CPU черезProcessorNameStringиз реестра — без процессов, с прежним дефолтом;_detect_vulkan(has_binary): без Vulkan-сборки не запускается, сбой —debug;except ImportError+ рабочий urllib-fallback (sha256,.part→ atomic replace);digest; проверка: пин → (если устарел) GitHub digest → иначе fail closed; уборка через_discard(занятый на Windows файл больше не даётPermissionError).install.py:step_llama/step_ggufбросаютRuntimeErrorвместо зелёной строки;main() -> int,sys.exit(main()),return 1 if has_err else 0.Доказательства
Живой прогон шага 7 в изолированный каталог (реальная сеть):
Реальный ассет: 19 441 535 байт,
sha256 = a23e…= пин,_verify_archive_sha256 -> True.Тот самый интерпретатор: до —
ModuleNotFoundError(llama_runner.py:53), после —import ok; installed=False version=b11476, rc=0.Тесты (3 файла, 28 штук):
Красные на старом коде (
origin/main, те же тесты):5 failed + 2 errors— импорт,5 failed + 2 errors— офлайн-пути.Мутации (каждая краснеет):
Полный suite:
2543 passed, 11 skipped, rc=0.ruff check src/ tests/— чисто.Независимое ревью
--with-models(huggingface_hub), Vulkan-проба на импорте, guard только поsrc.*— все закрыты.part.unlinkмог выброситьPermissionError— закрыт (_discard); nit'ы: guard мог молча опустеть (добавлен assert состава), CPU-тесты зависели от железа (ослаблены до контракта), hub-путь не сверяет sha256 (не регресс — отражено здесь), проба при наличии сборки не покрыта тестом (осознанно).Не проверено / ограничения
get_system_summary()(экспорт без вызывающих) всё ещё зовётwmic os get caption; ошибка ловитсяOSError, трейсбека нет — неточность отчёта, не падение. Отдельной задачей.huggingface_hub(hub скачивает сам) офлайн не проверялся: проверен fallback и short-circuit на существующий файл.digest; в этом случае проверка идёт в GitHub и пишет warning с новым значением — таблицу надо обновить.