Не все нейросети доступны в готовом квантованном формате GGUF, поэтому пользователям часто приходится самостоятельно конвертировать исходные веса из формата .safetensors. Для этого процесса разработан скрипт convert_to_gguf.sh, который автоматизирует весь пайплайн: от проверки и установки системных зависимостей до финального создания квантованного файла. Скрипт полностью изолирует Python-среду в venv, используя только CPU-версию библиотеки torch, что исключает необходимость в CUDA-драйверах и дополнительных гигабайтах памяти.
Процесс конвертации состоит из двух обязательных этапов. Сначала веса модели переводятся в промежуточный формат GGUF с точностью F16, размер которого соответствует сумме исходных файлов. Затем этот файл сжимается с потерями до целевого кванта, например Q4_K_M, что уменьшает размер файла в 3–4 раза при минимальном падении качества. Ключевым требованием является наличие промежуточного F16-файла, так как инструмент квантования llama-quantize не умеет работать напрямую с .safetensors.
Скрипт включает в себя несколько механизмов безопасности для предотвращения потери данных. Он проверяет скачанные файлы на наличие LFS-указателей вместо реальных весов и контролирует итоговый размер квантованной модели, отклоняя файлы меньше 100 МБ как явно битые. После успешного завершения всех шагов скрипт автоматически удаляет временные файлы и промежуточный F16, освобождая до 40 ГБ дискового пространства, если исходная модель была большой. В случае сбоя или прерывания процесса очистка гарантируется через механизм trap.
Инструмент поддерживает различные архитектуры моделей, но для некоторых новых или специфических структур, таких как KDA или гибриды Mamba, может потребоваться ожидание обновлений в llama.cpp или использование флага --trust-remote-code. Время выполнения скрипта варьируется от 10 минут для небольших моделей до полутора часов для крупных, при этом скорость работы на HDD может быть в два раза ниже. Базовый запуск осуществляется одной командой с указанием идентификатора модели, а для отладки предусмотрена возможность сохранения промежуточных файлов через флаг KEEP_INTERMEDIATE=1.