gawker

Меню
  • Пример страницы
Меню

Установка llama.cpp на Ubuntu

Опубликовано в 19.11.2025 от yustas

Скрипт автоустановки llama.cpp на ubuntu

<code>

!/usr/bin/env bash

set -euo pipefail

Настройки по умолчанию

INSTALL_DIR=»$HOME/llama.cpp» # Куда клонировать репозиторий
BRANCH=»master» # Ветка репозитория
BACKEND=»cpu» # cpu | cuda

Небольшая модель для теста (быстро докачать и запустить)

HF_MODEL_DEFAULT=»ggml-org/gemma-3-270m-it-GGUF»
HF_MODEL=»$HF_MODEL_DEFAULT»

RUN_TEST=1 # 1 = запускать тест, 0 = нет
TEST_PROMPT=»Ты локальная LLM. Одним коротким предложением расскажи, что ты умеешь.»

#

usage() {
cat <<EOF
Автоустановка llama.cpp на Ubuntu + тестовый запуск модели.

Использование:
$0 [опции]

Опции:
—dir PATH Путь установки (по умолчанию: $HOME/llama.cpp)
—branch BRANCH Ветка git (по умолчанию: master)
—cpu Сборка только для CPU (по умолчанию)
—cuda Сборка с поддержкой CUDA (нужен установленный CUDA Toolkit)
—model REPO Hugging Face repo-id GGUF модели для теста
(по умолчанию: $HF_MODEL_DEFAULT)
пример: ggml-org/gemma-3-1b-it-GGUF
—no-test Не запускать тестовый прогон модели
-h, —help Показать эту справку

Примеры:
$0
$0 —cuda
$0 —model ggml-org/gemma-3-1b-it-GGUF
$0 —dir /opt/llama.cpp —cuda —no-test
EOF
exit 1
}

Парсинг аргументов

while [[ $# -gt 0 ]]; do
case «$1» in
—dir)
INSTALL_DIR=»$2″
shift 2
;;
—branch)
BRANCH=»$2″
shift 2
;;
—cpu)
BACKEND=»cpu»
shift
;;
—cuda)
BACKEND=»cuda»
shift
;;
—model)
HF_MODEL=»$2″
shift 2
;;
—no-test)
RUN_TEST=0
shift
;;
-h|—help)
usage
;;
*)
echo «Неизвестный аргумент: $1»
usage
;;
esac
done

Проверки окружения

if [[ ! -f /etc/os-release ]]; then
echo «Не могу определить дистрибутив (нет /etc/os-release). Продолжаю на свой страх и риск…»
else
. /etc/os-release
if [[ «${ID:-}» != «ubuntu» ]]; then
echo «Внимание: скрипт рассчитан на Ubuntu, а у тебя: ${PRETTY_NAME:-unknown}»
echo «Продолжаю, но что-то может пойти не так.»
fi
fi

if [[ «$EUID» -ne 0 ]] && ! command -v sudo >/dev/null 2>&1; then
echo «Нужен sudo или запуск от root для установки пакетов.»
exit 1
fi

Установка зависимостей

echo «==> Установка зависимостей через apt…»
if [[ «$EUID» -eq 0 ]]; then
APT=»apt-get»
else
APT=»sudo apt-get»
fi

$APT update -y
$APT install -y \
build-essential \
cmake \
git \
python3 \
python3-venv \
python3-pip \
libcurl4-openssl-dev

Обработка бэкенда CUDA

if [[ «$BACKEND» == «cuda» ]]; then
if ! command -v nvcc >/dev/null 2>&1; then
echo «ВНИМАНИЕ: запрошена сборка с CUDA (—cuda), но nvcc не найден.»
echo «Убедись, что установлен CUDA Toolkit и nvcc в PATH.»
echo «Падаю обратно на CPU-only сборку.»
BACKEND=»cpu»
else
echo «==> Найден nvcc, собираем с поддержкой CUDA.»
fi
fi

Клонирование / обновление репозитория

echo «==> Директория установки: $INSTALL_DIR»

if [[ -d «$INSTALL_DIR/.git» ]]; then
echo «==> Репозиторий уже существует, обновляю…»
cd «$INSTALL_DIR»
git fetch —all —prune
git checkout «$BRANCH»
git pull —ff-only origin «$BRANCH»
else
echo «==> Клонирую репозиторий ggml-org/llama.cpp…»
git clone —branch «$BRANCH» https://github.com/ggml-org/llama.cpp.git «$INSTALL_DIR»
cd «$INSTALL_DIR»
fi

Сборка через CMake

echo «==> Конфигурирование сборки…»

CMAKE_ARGS=»-DCMAKE_BUILD_TYPE=Release \
-DLLAMA_BUILD_TESTS=OFF \
-DLLAMA_BUILD_EXAMPLES=ON \
-DLLAMA_BUILD_SERVER=ON»

if [[ «$BACKEND» == «cuda» ]]; then
CMAKE_ARGS=»$CMAKE_ARGS -DGGML_CUDA=ON»
fi

cmake -S . -B build $CMAKE_ARGS

echo «==> Сборка (cmake —build)…»
cmake —build build -j»$(nproc)»

Создание симлинков в ~/.local/bin

echo «==> Создаю симлинки в \$HOME/.local/bin…»

BIN_DIR=»$HOME/.local/bin»
mkdir -p «$BIN_DIR»

for bin in llama-cli llama-server; do
if [[ -f «$INSTALL_DIR/build/bin/$bin» ]]; then
ln -sf «$INSTALL_DIR/build/bin/$bin» «$BIN_DIR/$bin»
echo » -> $BIN_DIR/$bin -> $INSTALL_DIR/build/bin/$bin»
else
echo » [!] Не найден $INSTALL_DIR/build/bin/$bin (возможно, изменилась структура проекта).»
fi
done

Тестовый прогон модели

if [[ «$RUN_TEST» -eq 1 ]]; then
echo
echo «===================================================================»
echo «==> Тестовый запуск модели: $HF_MODEL»
echo «===================================================================»

LLAMA_CLI="$INSTALL_DIR/build/bin/llama-cli"
if [[ ! -x "$LLAMA_CLI" ]] && [[ -x "$HOME/.local/bin/llama-cli" ]]; then
    LLAMA_CLI="$HOME/.local/bin/llama-cli"
fi

if [[ ! -x "$LLAMA_CLI" ]]; then
    echo "[!] Не найден исполняемый файл llama-cli. Пропускаю тестовый запуск."
else
    echo "Команда:"
    echo "  $LLAMA_CLI -hf \"$HF_MODEL\" -p \"$TEST_PROMPT\" -n 64 --temp 0.7"
    echo
    echo "Сейчас будет скачана модель (если её ещё нет) и выполнен короткий прогон."
    echo

    set +e
    "$LLAMA_CLI" -hf "$HF_MODEL" -p "$TEST_PROMPT" -n 64 --temp 0.7
    TEST_EXIT=$?
    set -e

    echo
    echo "-------------------------------------------------------------------"
    if [[ $TEST_EXIT -ne 0 ]]; then
        echo "[!] Тестовый запуск завершился с ошибкой (код $TEST_EXIT)."
        echo "    Проверь сообщение об ошибке выше (часто это сеть или Hugging Face)."
    else
        echo "Тестовый запуск прошёл успешно. Ответ модели показан выше."
    fi
    echo "-------------------------------------------------------------------"
fi

fi

Итоговая информация

echo
echo «===================================================================»
echo «Установка llama.cpp завершена.»
echo
echo «Директория исходников: $INSTALL_DIR»
echo «Бинарники: $INSTALL_DIR/build/bin»
echo «Симлинки: $HOME/.local/bin/llama-cli, llama-server»
echo
echo «Если \$HOME/.local/bin ещё не в PATH, добавь, например, в ~/.bashrc:»
echo ‘ export PATH=»$HOME/.local/bin:$PATH»‘
echo
echo «Примеры запуска:»
echo » llama-cli -h»
echo » llama-server -h»
echo
echo «Для запуска своей модели с Hugging Face:»
echo » llama-cli -hf -p \»Привет\» -n 64″
echo «например:»
echo » llama-cli -hf ggml-org/gemma-3-1b-it-GGUF -p \»Привет\» -n 64″
echo «===================================================================»</code>

Post Views: 13
Рубрика: Отношения

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Свежие записи

  • Установка llama.cpp на Ubuntu
  • Сексуальное влечение
  • Почему неконтакт – единственный реальный способ исцелиться (и да, сначала это тяжело)

Свежие комментарии

Нет комментариев для просмотра.

Архивы

  • Ноябрь 2025
  • Июль 2025
  • Июнь 2025

Рубрики

  • Отношения
© 2025 gawker | На платформе Minimalist Blog Тема WordPress