Запускаем клиент DeepSeek под DOS

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, Хабр! Это Сергей, я пишу для команды спецпроектов МТС Диджитал. Мне нравится, когда старые технологии могут хоть как-нибудь взаимодействовать с новыми. Помните фильм «Морской бой» 2012 года? Там инопланетяне смогли вывести из строя все современные суда, но в итоге проиграли сражение линкору «Миссури» — музейному экспонату. Каждый раз, когда мне удается заставить какую-нибудь раритетную железку действовать в современных условиях, возникает то самое чувство, как при просмотре этого фильма.

Я проверил, насколько реально через MS-DOS получить доступ к нейронным сетям вроде нашумевшего DeepSeek и будет ли это работать. О результатах эксперимента и расскажу в этом посте.

Локальный DeepSeek

Не секрет, что облачная версия DeepSeek частенько недоступна из-за наплыва желающих ею воспользоваться. Да и не хотелось мне отдавать свои диалоги с нейросетью кому-либо на сторону. Поэтому я взял отдельный SSD и временно превратил свой домашний компьютер в сервер под управлением Ubuntu 22.04.

Мой ПК не слишком мощный по современным меркам. Процессор i5-10400F, 64 GB DDR4 и видеокарта Nvidia RTX 2070 SUPER 8 GB. Такая конфигурация вполне способна справиться с инференсом «рассуждающей» модели DeepSeek-R1 с 14,8 млрд параметров (архитектура qwen2, квантизация Q4_K_M, длина контекста 128k токенов). Чтобы было комфортнее работать, я установил на сервер Ollama. Но перед этим обновил системные пакеты и драйверы Nvidia:

$ sudo apt update && sudo apt -y upgrade && sudo ubuntu-drivers autoinstall && sudo reboot

После перезагрузки проверил, что все поставилось корректно:

$ nvidia-smi

И поставил Ollama с помощью скрипта:

$ curl -fsSL https://ollama.com/install.sh | sh

Загрузил указанную выше модель DeepSeek. Несмотря на то, что при скачивании она демонстрирует размер 9 GB, реально в видеопамяти она занимает 7,3 Гб. Помещается и ладно:

$ ollama pull deepseek-r1:14b

По умолчанию Ollama открывает только локальный доступ к API, то есть ожидает подключения на localhost:11434. Поскольку я планировал коннектиться извне, внес изменения в конфигурацию демона. Настраивается это через переменную окружения OLLAMA_HOST:

$ sudo systemctl edit ollama.service

Добавил в файл две строчки:

[Service]
Environment="OLLAMA_HOST=192.168.88.32:11434"

Перечитал настройки:

$ sudo systemctl daemon-reload

И перезапустил сервис Ollama:

$ sudo systemctl restart ollama

Для проверки ткнулся curl’ом в API:

$ curl http://192.168.88.32:11434/api/generate -d '{
  "model": "deepseek-r1:14b",
  "prompt": "Что такое Хабр?",
  "stream": false
}'

Спустя несколько секунд получил весьма детальный и обширный ответ на русском языке. Можно считать, что сервис развернут и готов принимать запросы.

Колдую с DOS

Сеть

У меня уже есть чистая виртуальная машина с MS-DOS 6.22, запущенная при помощи Oracle VirtualBox. Для начала скачал такие три файла:

  • Packet driver AMD — драйвер эмулированной сетевой карты PCnet-FAST III (Am79C973);

  • mTCP — стек TCP/IP для MS-DOS;

  • doschgpt — DOS-клиент ChatGPT и прочих LLM.

Все их я выгрузил прямо в корень диска C:. Пару слов о доставке файлов внутрь виртуальной машины. Лично мне всегда было удобно создавать IMA-образы дискет через UltraISO и монтировать их непосредственно к VM. Если вы частенько используете DOS, хорошим решением будет сделать отдельный образ жесткого диска, куда сложить все необходимые приложения и утилиты.

Собирать его можно на любой операционной системе. Потом цеплять к виртуалкам, получая доступ сразу ко всем данным. Туда же можно складывать конфиги, которые выживут даже после удаления ПО или VM. Главное, не забыть вовремя размонтировать образ.

Возвращаемся к насущным делам. При загрузке системы должно происходить два действия: инициализация драйвера PCNTPK.COM и указание значения переменной MTCPCFG, которую считывают все утилиты из комплекта mTCP. Дело в том, что сетевой стек в нем реализуется не глобально, а на уровне отдельного приложения. Каждое из них будет смотреть на MTCPCFG и брать оттуда данные для работы сети. Отредактировал AUTOEXEC.BAT:

C:\> EDIT AUTOEXEC.BAT

PCNTPK INT=0x60
SET MTCPCFG=MTCP.CFG

Затем создал файл MTCP.CFG с настройками:

C:\> EDIT MTCP.CFG

PACKETINT 0x60
IPADDR 192.168.88.36
NETMASK 255.255.255.0
GATEWAY 192.168.88.1
NAMESERVER 8.8.8.8
LEASE_TIME 14400

Перезагрузил виртуальную машину и увидел, что драйвер успешно подцепился:

Попробовал пропинговать Хабр. Пакетики долетели:

Клиент

Настал черед тестирования проекта уважаемого Yeo Kheng Meng и подключиться к серверу с помощью его приложения.

C:\> EDIT OLLAMA.INI

- dummy line for unneeded API key-
deepseek-r1:14b
0.9
192.168.88.32
11434
10000
30000
3000
40000

Первая строчка предназначена для API-ключа (ChatGPT или HuggingFace). Поскольку в Ollama я ключ не использую, воспользовался заглушкой. Дальше прописал имя модели, «температуру», IP-адрес и порт для подключения. Остальные параметры оставил по-умолчанию и запустил клиент с указанием типа бэкенда (-ol) и конфиг (-c):

C:\> DOSCHGPT -ol -collama.ini

Эта штука реально работает. Забавно то, что автор добавил в клиент синтезатор речи, который заводится со стандартными звуковыми картами, вроде эмулируемого на VirtualBox Sound Blaster 16. На виртуальной машине это работает скверно, однако на реальном железе будет вполне прилично.

C:\> EDIT AUTOEXEC.BAT

Добавил строку переменной BLASTER:

SET BLASTER=A220 I5 D1 T4

Для проверки голосового движка использовал аргумент -sbtts:

C:\> DOSCHGPT -ol -collama.ini -sbtts

На русском языке он разговаривать не умеет, но на английском вполне разборчиво. Понятное дело, что современные голосовые ассистенты звучат в миллион раз лучше. Но не забываем — это работает из DOS, где совсем ничтожное количество оперативной памяти. Да и создан он более 35 лет назад, что как бы весьма почтенный возраст для приложения.

Облака

С Ollama все просто — обычное HTTP-соединение. Реализовать в DOS безопасный протокол HTTPS наверное возможно, но потребует большого количества усилий. Так что самым простым решением будет использование посредника в виде виртуальной машины под управлением любой современной ОС. На ней можно развернуть прокси-сервер HTTP-to-HTTPS, который будет транслировать HTTP-запросы в HTTPS и обратно. Безопасным такой способ назвать сложно, но он точно незаменим для систем без поддержки HTTPS.

Запуск приложения ничем не отличается, разве что потребуется указать другой конфигурационный файл: doschgpt.ini для ChatGPT или hf.ini для Hugging Face. Оба этих сервиса потребуют ввод API-ключа, который нужно прописать в первой строчке. Вместо IP-эндпойнта указывается IP-адрес прокси-сервера.

Ну что, время подводить итоги. Вероятно, первым комментарием к этому посту будет прекрасное изображение из мема с буханкой хлеба. Действительно, а какой практический смысл несет в себе этот эксперимент? В повседневной жизни, разумеется, никакого. Но мой эксперимент не бесполезен — клиент под DOS вполне может вдохнуть в какую-нибудь редкую железку жизнь и привлечь внимание посетителей.

Существование такого ПО — живое свидетельство, что основы компьютерных приложений, заложенные десятки лет назад, продолжают оставаться актуальными и ныне. Сейчас, в эпоху нейронных сетей, полезно оглядываться и видеть, насколько большой путь был пройден.

Как вам приложение? Ждем вас в комментариях.

Источник: https://habr.com/ru/companies/ru_mts/articles/888756/


Интересные статьи

Интересные статьи

Сложно ли потянуть коробку? В этой статье расскажу, в каких случаях пользователям облачного Битрикс24 стоит переезжать в коробочную версию и к чему надо быть готовым.Приветствую всех, это Сергей Михно...
Компания “Волжское пароходство” —  это больше 3 тысяч сотрудников, часть из которых используют Битрикс24 во время перевозок. По пути следования судна интернет не везде стабильный, поэтому нужен б...
В предыдущей статье (Синаптические веса в нейронных сетях – просто и доступно https://habr.com/ru/post/589893/) рассказывалось о смысле синаптических весов на примере модели определения цифры для 13-т...
Приветствую всех. Спасибо, что пригласили меня. Позади меня вы видите кабину самолета Douglas DC-3. Итак, этот самолет был построен в 1935 году; обратите внимание на то, что ка...
Тема статьи навеяна результатами наблюдений за методикой создания шаблонов различными разработчиками, чьи проекты попадали мне на поддержку. Порой разобраться в, казалось бы, такой простой сущности ка...