7.7 KiB
История команд: Установка и настройка LLM-системы с Docker и Qwen3
Данный документ представляет собой структурированный и человекочитаемый отчёт на основе выполненных в терминале команд. Он описывает процесс установки Docker, NVIDIA-инструментов, загрузки модели Qwen3 и развёртывания LLM-приложения с использованием Docker Compose.
1. Установка базовых компонентов
Редактирование и запуск скрипта установки
Добавляем следующий код:
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
nano install.sh
bash install.sh
Установка Docker и его компонентов
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2. Настройка поддержки NVIDIA GPU
Добавление репозитория NVIDIA Container Toolkit
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg && \
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
Обновление пакетов и установка NVIDIA Container Toolkit
apt-get update
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
apt-get install -y \
nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
Проверка работы GPU в Docker
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
✅ Успешный запуск контейнера с
nvidia-smiподтверждает корректную настройку GPU.
3. Установка системных зависимостей
Установка заголовков ядра Linux
apt install linux-headers-$(uname -r)
Проверка видеодрайверов
lspci -k | grep -EA2 'VGA|3D'
nvidia-smi
4. Настройка Docker для работы с GPU
Конфигурация демона Docker
nano /etc/docker/daemon.json
Добавляем в ранее открытый файл следующие данные:
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia"
}
Файл был отредактирован для добавления поддержки
nvidiaв качестве рантайма.
Установка nvidia-container-runtime и перезапуск Docker
apt-get install -y nvidia-container-runtime
systemctl restart docker
5. Подготовка рабочей директории и загрузка модели Qwen3
Создание директории для LLM
mkdir /opt/llm
cd /opt/llm/
Клонирование модели Qwen3-8B с Hugging Face
✅ Установка необходимых инструментов:
apt install git
apt install git-lfs
git lfs install
✅ Успешное клонирование:
git clone https://huggingface.co/Qwen/Qwen3-8B
cd Qwen3-8B/
6. Развёртывание приложения с Docker Compose
Сборка и запуск контейнера
docker compose build
docker compose up -d
Настройка прав на исполняемый файл
chmod +x entrypoint.sh
После исправления прав — повторная пересборка:
docker compose up -d
7. Работа с контейнером
Проверка состояния контейнеров и логов
docker ps
docker logs llm-chat
Вход в контейнер
docker exec -it llm-chat bash
8. Управление версиями и пересборка
Многократные циклы остановки, пересборки и запуска
docker compose down
docker compose build
docker compose up -d --build
Выполнялось многократно (команды 67–141) для отладки и пересборки образа.
9. Работа с дополнительным хранилищем
Создание резервной директории llm2
mkdir llm2
cp -r llm/models/ llm2/
Удаление ненужной модели (освобождение места)
rm -rf Qwen3-4B/
Проверка свободного места:
df -h
10. Загрузка дополнительной модели
Клонирование базовой версии Qwen3-4B
git clone https://huggingface.co/Qwen/Qwen3-4B-Base
11. Подготовка образа для офлайн-использования
Сохранение Docker-образа в архив
docker save llm-chat -o llm-chat-offline.tar
Исправление опечатки (
-0→-o) в команде 148.
Уточнение имени образа:
docker images | grep llm-chat
docker save llm2-llm-chat -o llm-chat-offline.tar
12. Финальные действия
Проверка структуры и сохранение истории
ls -lah
df -h
history > history.md
✅ История команд сохранена в формате Markdown для документации.
Выводы
Был успешно выполнен полный цикл:
- Установка Docker и поддержки GPU
- Настройка NVIDIA Container Toolkit
- Загрузка моделей Qwen3-8B и Qwen3-4B-Base
- Развёртывание LLM-приложения через Docker Compose
- Отладка и пересборка контейнера
- Подготовка офлайн-образа для переноса
Рекомендации
- Убедитесь, что
llm-chat-offline.tarсодержит актуальную версию образа. - При переносе на другую систему используйте
docker load -i llm-chat-offline.tar. - Для экономии места рассмотрите использование только одной версии модели (8B или 4B).
✅ Проект готов к использованию в офлайн-режиме.