Files
llm/README.md
2025-08-02 17:44:40 +00:00

264 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# История команд: Установка и настройка LLM-системы с Docker и Qwen3
Данный документ представляет собой структурированный и человекочитаемый отчёт на основе выполненных в терминале команд. Он описывает процесс установки Docker, NVIDIA-инструментов, загрузки модели Qwen3 и развёртывания LLM-приложения с использованием Docker Compose.
---
## 1. Установка базовых компонентов
### Редактирование и запуск скрипта установки
Добавляем следующий код:
```bash
# 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
```
```bash
nano install.sh
bash install.sh
```
### Установка Docker и его компонентов
```bash
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
---
## 2. Настройка поддержки NVIDIA GPU
### Добавление репозитория NVIDIA Container Toolkit
```bash
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
```bash
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
```bash
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
```
> ✅ Успешный запуск контейнера с `nvidia-smi` подтверждает корректную настройку GPU.
---
## 3. Установка системных зависимостей
### Установка заголовков ядра Linux
```bash
apt install linux-headers-$(uname -r)
```
### Проверка видеодрайверов
```bash
lspci -k | grep -EA2 'VGA|3D'
nvidia-smi
```
---
## 4. Настройка Docker для работы с GPU
### Конфигурация демона Docker
```bash
nano /etc/docker/daemon.json
```
Добавляем в ранее открытый файл следующие данные:
```bash
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia"
}
```
> Файл был отредактирован для добавления поддержки `nvidia` в качестве рантайма.
### Установка `nvidia-container-runtime` и перезапуск Docker
```bash
apt-get install -y nvidia-container-runtime
systemctl restart docker
```
---
## 5. Подготовка рабочей директории и загрузка модели Qwen3
### Создание директории для LLM
```bash
mkdir /opt/llm
cd /opt/llm/
```
### Клонирование модели Qwen3-8B с Hugging Face
> ✅ Установка необходимых инструментов:
```bash
apt install git
apt install git-lfs
git lfs install
```
> ✅ Успешное клонирование:
```bash
git clone https://huggingface.co/Qwen/Qwen3-8B
cd Qwen3-8B/
```
---
## 6. Развёртывание приложения с Docker Compose
### Сборка и запуск контейнера
```bash
docker compose build
docker compose up -d
```
### Настройка прав на исполняемый файл
```bash
chmod +x entrypoint.sh
```
> После исправления прав — повторная пересборка:
```bash
docker compose up -d
```
---
## 7. Работа с контейнером
### Проверка состояния контейнеров и логов
```bash
docker ps
docker logs llm-chat
```
### Вход в контейнер
```bash
docker exec -it llm-chat bash
```
---
## 8. Управление версиями и пересборка
### Многократные циклы остановки, пересборки и запуска
```bash
docker compose down
docker compose build
docker compose up -d --build
```
> Выполнялось многократно (команды 67141) для отладки и пересборки образа.
---
## 9. Работа с дополнительным хранилищем
### Создание резервной директории `llm2`
```bash
mkdir llm2
cp -r llm/models/ llm2/
```
### Удаление ненужной модели (освобождение места)
```bash
rm -rf Qwen3-4B/
```
> Проверка свободного места:
```bash
df -h
```
---
## 10. Загрузка дополнительной модели
### Клонирование базовой версии Qwen3-4B
```bash
git clone https://huggingface.co/Qwen/Qwen3-4B-Base
```
---
## 11. Подготовка образа для офлайн-использования
### Сохранение Docker-образа в архив
```bash
docker save llm-chat -o llm-chat-offline.tar
```
> Исправление опечатки (`-0` → `-o`) в команде 148.
> Уточнение имени образа:
```bash
docker images | grep llm-chat
docker save llm2-llm-chat -o llm-chat-offline.tar
```
---
## 12. Финальные действия
### Проверка структуры и сохранение истории
```bash
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).
---
> ✅ Проект готов к использованию в офлайн-режиме.