Initial SQL-only 1C adapter baseline

This commit is contained in:
2026-07-22 03:03:47 +03:00
commit e2503b77e7
545 changed files with 184711 additions and 0 deletions
+158
View File
@@ -0,0 +1,158 @@
# Windows Docker GPU Host
Целевой хост: `docker-gpu.cin.su` / `192.168.220.91`.
Назначение: Windows-машина с NVIDIA GPU, Docker Desktop/Engine и контейнерами/моделями на диске `Z:`.
## Что сейчас видно с рабочей машины
- DNS `docker-gpu.cin.su` указывает на `192.168.220.91`.
- Открыты SSH `22` и RDP `3389`.
- Docker API `2375/2376`, WinRM `5985/5986`, Portainer `9000`, inference `8000/8080` снаружи не открыты.
- SSH под `test@docker-gpu.cin.su` ключ не принимает: нужен правильный пользователь или добавление публичного ключа.
## Доступ
Предпочтительный вариант - SSH-ключ, без хранения паролей в репозитории.
Публичный ключ пользователя, который нужно добавить на Windows-хост:
```text
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGS167Ors2oDzveI1iNlRiuGSqdR90x0O05JrcoQ4UBL llm-docker-gpu
```
Для обычного Windows-пользователя ключ добавляется в:
```powershell
C:\Users\<USER>\.ssh\authorized_keys
```
Для пользователей из группы Administrators OpenSSH Server обычно читает:
```powershell
C:\ProgramData\ssh\administrators_authorized_keys
```
После добавления ключа права на файл администраторского ключа должны быть строгими:
```powershell
icacls C:\ProgramData\ssh\administrators_authorized_keys /inheritance:r
icacls C:\ProgramData\ssh\administrators_authorized_keys /grant "Administrators:F" /grant "SYSTEM:F"
```
Проверка:
```powershell
ssh <USER>@docker-gpu.cin.su "whoami; hostname"
```
Для Codex настроен локальный SSH alias:
```powershell
ssh docker-gpu "whoami & hostname"
docker -H ssh://docker-gpu info
```
## Проверка Windows GPU/Docker
На самом Windows-хосте:
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/check_windows_gpu_host.ps1
```
Через SSH, когда ключ уже добавлен:
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/check_windows_gpu_host.ps1 -SshTarget <USER>@docker-gpu.cin.su
```
Скрипт проверяет:
- `nvidia-smi`;
- Docker Engine;
- Docker Compose;
- наличие/создание `Z:\LLM\models`;
- запуск CUDA-контейнера с `--gpus all`.
## Docker Desktop в SSH-сессии
На Windows-хосте Docker Desktop должен быть запущен в интерактивной пользовательской сессии. Если `docker version` показывает клиент, но не может открыть pipe `dockerDesktopLinuxEngine`, запустите Docker Desktop в активной RDP/console-сессии пользователя.
Проверка через Docker-over-SSH:
```powershell
docker -H ssh://docker-gpu version
docker -H ssh://docker-gpu run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
```
Если `ssh docker-gpu "docker pull ..."` падает с ошибкой `A specified logon session does not exist`, причиной может быть `credsStore: desktop` в `%USERPROFILE%\.docker\config.json`. Для деплоя предпочтительно тянуть образы локальным Docker CLI через `docker -H ssh://docker-gpu ...`; такой режим не требует удаленного desktop credential helper.
## Автозапуск Docker Desktop
На `M7` настроена задача Windows Task Scheduler:
```text
LLM-DockerDesktop-Autostart
```
Задача запускает:
```text
C:\ProgramData\LLM\Ensure-DockerDesktop.ps1
```
Режим:
- при старте Windows с задержкой 2 минуты;
- watchdog каждые 5 минут;
- запуск от пользователя `m7\m` с повышенными правами;
- пароль хранится в Windows Task Scheduler, не в репозитории и не в скрипте.
Лог:
```text
C:\ProgramData\LLM\logs\docker-desktop-autostart.log
```
Проверка задачи:
```powershell
ssh docker-gpu "schtasks /Query /TN LLM-DockerDesktop-Autostart /V /FO LIST"
ssh docker-gpu "cmd /c type C:\ProgramData\LLM\logs\docker-desktop-autostart.log"
```
После проверочной перезагрузки `2026-06-19` задача подняла Docker Desktop автоматически, а GPU smoke test прошел через `docker -H ssh://docker-gpu`.
## Env-файлы под Z:
Для Windows-хоста подготовлены отдельные примеры:
```text
core/deploy/docker-gpu/vllm/.env.windows-z.example
core/deploy/docker-gpu/llama-cpp/.env.windows-z.example
```
В них используются bind mount пути вида:
```text
HOST_MODELS_DIR=Z:/LLM/models
HOST_HF_CACHE_DIR=Z:/LLM/models/cache/huggingface
```
Внутри контейнеров модели видны как `/models`.
## Следующий запуск
После появления SSH-доступа и подтверждения GPU:
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/deploy_gpu_stack.ps1 `
-SshTarget <USER>@docker-gpu.cin.su `
-DockerHost ssh://<USER>@docker-gpu.cin.su `
-VllmEnvFile core/deploy/docker-gpu/vllm/.env.windows-z.example `
-LlamaEnvFile core/deploy/docker-gpu/llama-cpp/.env.windows-z.example `
-Pull
```
Если Docker Desktop на Windows не принимает remote Docker over SSH напрямую, запуск compose нужно выполнить интерактивно на самом хосте через RDP/SSH PowerShell, используя те же `.env.windows-z.example`.