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 раза).
Для тех, кто хочет повторить мой путь, вот краткий ликбез по параметрам, которые мы крутили, и на что они влияют:
- Epochs (Эпохи) = 3.
- Что это: Сколько раз нейросеть полностью прочитала весь мой учебник (датасет).Почему так: Если поставить 1 — она ничего не запомнит. Если поставить 6 (как я сделал в первой попытке) — она начнет "зубрить" примеры наизусть и разучится думать (Overfitting). 3 эпохи — золотая середина для инженерных задач. - Loss (Функция потерь).
- Что это: "Оценка за контрольную". Чем ниже, тем меньше ошибок делает модель.Мой опыт: В первой неудачной попытке Loss упал до 0.02 — модель просто заучила текст. В рабочей версии Loss около 0.2 — это значит, что она понимает правила, но оставляет место для вариативности. - Max Seq Length (Длина контекста) = 4096.
- Что это: "Оперативная память" модели в рамках одного разговора. 4096 токенов хватает на большой скрипт с комментариями.Проблема: Это жрет память. На 14B модели с такой длиной я ловил Out of Memory. Пришлось брать модель поменьше. - 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-а — присоединяйтесь к тесту сейчас. Ваш опыт и баг-репорты — это лучший вклад.
Инструкция по установке и ссылки:
Давайте попробуем автоматизировать нашу рутину вместе! Жду ваши "сломанные" скрипты.