DeepSeek, Qwen и 24 ГБ видеопамяти: Как инженер-конструктор создавал свой Copilot для расчетов

Вступление: Инженеры тоже хотят автоматизации

Доброго времени суток всем читателям. Я - инженер-конструктор, занимаюсь расчетами зданий и сооружений в программном комплексе SOFiSTiK. Это мощный немецкий софт, в котором дополнительную гибкость дает встроенный язык программирования - CADINP. Язык этот крутой, но сложный: нужно помнить сотни команд, держать в голове связь между модулями (AQUA, SOFIMSHC, ASE) и не ошибаться в синтаксисе. В общем, порог входа тут выше чем в доте (хотя куда еще-то...)

Обычные LLM (ChatGPT, Gemini, DeepSeek) знают CADINP «по верхам». Они путают модули, выдумывают команды и забывают закрывать блоки.

Полистав мануалы по SOFiSTiK и поняв, что мне хотелось бы иметь немного свободного времени в сутках, я решил: «У меня есть RTX 3090 с 24 ГБ памяти. Почему бы не дообучить свою собственную нейросеть, которая станет идеальным ассистентом?»

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

Шаг 1: Датасет — учим физику, а не просто текст

Обучение модели — это не магия, а качественные данные. Я собрал базу из 3500+ инструкций. Главная фишка — формат Chain of Thought (CoT). Я заставил модель сначала "думать" перед тем, как писать код.

Зачем это нужно? В SOFiSTiK важна физика. Например, если вы задаете балку в 3D, нужно закрепить её от кручения (MX), иначе расчет упадет. Обычная модель просто пишет FIX PP. Моя модель сначала "думает" в блоке : "Так, это 3D балка, нужно добавить MX в фиксацию" — и пишет FIX PPMX.

Вот так выглядит датасет. Страшно? Немного
Вот так выглядит датасет. Страшно? Немного

Чтобы привести свои разрозненные заметки в этот формат jsonl, я использовал скрипт на Python.

И тут важный момент: я не программист.

Весь код (чистка данных, форматирование, исправление битых JSON-ов) мне написал Google Gemini и DeepSeek. Мы работали в тандеме: я давал инженерную логику, AI писал код для обработки данных. Естественно, всё на английском языке.

Шаг 2: Железо и "Настройки под капотом"

Самое интересное для технарей. Как запихнуть обучение в 24 ГБ видеопамяти и не сжечь карту? Мы с Gemini использовали библиотеку Unsloth (ускоряет обучение в 2 раза).

Для тех, кто хочет повторить мой путь, вот краткий ликбез по параметрам, которые мы крутили, и на что они влияют:

  1. Epochs (Эпохи) = 3.
    - Что это: Сколько раз нейросеть полностью прочитала весь мой учебник (датасет).Почему так: Если поставить 1 — она ничего не запомнит. Если поставить 6 (как я сделал в первой попытке) — она начнет "зубрить" примеры наизусть и разучится думать (Overfitting). 3 эпохи — золотая середина для инженерных задач.
  2. Loss (Функция потерь).
    - Что это: "Оценка за контрольную". Чем ниже, тем меньше ошибок делает модель.Мой опыт: В первой неудачной попытке Loss упал до 0.02 — модель просто заучила текст. В рабочей версии Loss около 0.2 — это значит, что она понимает правила, но оставляет место для вариативности.
  3. Max Seq Length (Длина контекста) = 4096.
    - Что это: "Оперативная память" модели в рамках одного разговора. 4096 токенов хватает на большой скрипт с комментариями.Проблема: Это жрет память. На 14B модели с такой длиной я ловил Out of Memory. Пришлось брать модель поменьше.
  4. Gradient Accumulation (Накопление градиента) = 8.
    - Что это: Видеокарта не может переварить сразу 16 примеров (Batch Size). Поэтому мы кормим ей по 2 примера, она копит результаты 8 раз, и только потом обновляет свои "мозги". Это делает обучение стабильным, даже если у вас мало памяти.

Итоговая модель: Qwen 3 (8B), дистиллированная на логике DeepSeek v3.2. Она маленькая, быстрая и влезает в домашний ПК.

А вот и первый нормальный аутпут
А вот и первый нормальный аутпут

Увидев в нейронном ответе более-менее правильную структуру и испытав нейронный код в софистике у меня даже посчитался один модуль (AQUA).

Шалость удалась.

Шаг 3: "Бета" версия и боль тестировщика

Итак, модель готова. Я загрузил её в LM Studio, поставил температуру 0.2 (чтобы не фантазировала) и... она работает!

Она пишет структуры +PROG, объявляет материалы, строит геометрию. НО! Это всё еще Beta. Она как способный студент-стажер:

  • Может забыть объявить сечение в AQUA.
  • Может перепутать сочетания нагрузок.
  • Иногда выдает идеальный код, а иногда — бред.
  • И т.д и т.п.

Важный нюанс. Я делал (и делаю) эту нейросеть один, а вариантов задач в SOFiSTiK — тысячи. Я физически не могу проверить все сценарии, поэтому...

🔴 МНЕ НУЖНА ВАША ПОМОЩЬ (Call to Action)

Чтобы эта нейросеть превратилась из "игрушки" в мощный инструмент для нас всех, мне нужно, чтобы вы её сломали.

Я ищу тестировщиков-энтузиастов. Модель выложена открыто и бесплатно. Скачайте, запустите и попробуйте дать ей ваши рабочие задачи.

Что мне нужно от вас: Фидбек в формате "Ожидание / Реальность".

  • Ваш Промпт: "Сделай мост пролетом 12м..."
  • Ответ нейросети: (Особенно интересно, что она написала в блоке <think>, там видна логика ошибки).
  • Ошибка в SOFiSTiK: Скопируйте код в SSD и скажите, какая ошибка вылезла (номер ошибки, описание и report browser).

Если вдруг случится чудо, и она с первого раза напишет рабочий код сложной задачи — пришлите это тоже, я распечатаю и повешу в рамку.

Вся обратная связь пойдет на создание Датасета v2. Чем больше дыр мы найдем сейчас, тем умнее будет следующая версия.

Пару слов о будущем проекта

Тренировка нейросетей — занятие выматывающее (и для меня, и для моей "бедной" RTX 3090, которая сутками работает на 100% загрузке).

Сейчас модель доступна всем. Но Версию 2.0 я планирую развивать на основе фидбека. Активные тестировщики получат ранний доступ ко всем обновлениям. Проект держится на энтузиазме, поэтому буду благодарен за любую поддержку на Boosty для оплаты электричества и амортизации GPU. Если хотите в будущем иметь под рукой бесплатного и умного Copilot-а — присоединяйтесь к тесту сейчас. Ваш опыт и баг-репорты — это лучший вклад.

Инструкция по установке и ссылки:

  1. 🔗 Скачать модель (Hugging Face): ссылочка
  2. 📖 Инструкция по запуску (LM Studio): Там же в README.
  3. 💬 Скидывать баги и общаться: ссылочка
  4. ☕ Поддержать апгрейд железа: ссылочка

Давайте попробуем автоматизировать нашу рутину вместе! Жду ваши "сломанные" скрипты.

Начать дискуссию