Современный мир Open-Source AI несправедлив.

Когда ZhipuAI выкатили свою новую архитектуру GLM-5.1, в её паспорте значилась цифра, от которой у владельцев домашних ПК темнеет в глазах — 744 миллиарда параметров. Чтобы просто поднять эту MoE-махину (Mixture of Experts) в оперативную память, нужна ферма топовых ускорителей за миллионы рублей.

У нас не было фермы. У нас была бесплатная виртуальная машина на Kaggle с одной старушкой NVIDIA T4 на 16 ГБ VRAM. И у нас была концепция экстремального MLOps под кодовым названием «Russian Winter 26».

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

Шаг 1. Концепция Micro-Ghetto: отрезаем лишнее

Сразу оговорюсь: наша цель была не обучить модель или получить от неё осмысленные стихи. Наша цель — ML-хакинг. Мы хотели доказать, что любую, даже самую монструозную архитектуру можно динамически сжать до состояния «калькулятора», сохранив при этом внутреннюю логику графа вычислений.

Мы создали пустой репозиторий на Hugging Face и начали препарировать config.json оригинальной модели.

Первый этап лоботомии был тривиальным:

  • Срезаем количество слоев (num_hidden_layers) с десятков до 2.

  • Срезаем количество экспертов маршрутизации (num_experts) до 2.

  • Сжимаем ширину костей: hidden_size делаем равным 512 (вместо безумных десятков тысяч).

Казалось бы, профит? Скелет должен весить меньше гигабайта. Мы скачиваем последнюю ночную сборку библиотеки transformers (потому что в релизной версии поддержки GLM-5.1 еще нет) и пытаемся сгенерировать веса "на лету" через from_config().

И тут Питон делает нам больно.

Шаг 2. Атака фантомных тензоров

При попытке прогнать промпт через нашу микро-модель, PyTorch выплевывает фатальную ошибку:

Python

RuntimeError: The size of tensor a (8) must match the size of tensor b (32) at non-singleton dimension 1

Что произошло?

Мы столкнулись со скрытой анатомией ZhipuAI. GLM-5.1 использует продвинутое асимметричное внимание — Grouped Query Attention (GQA). Разработчики зашили в ядро архитектуры жесткую привязку к 32 группам ключей/значений (multi_query_group_num = 32).

Когда мы урезали общую ширину модели, движок выделил нам 8 голов для запросов (queries). Но старая «мышечная память» архитектуры попыталась скрестить их с 32 головами ключей (keys). Матрицы в модуле scaled_dot_product_attention столкнулись лбами, и граф вычислений рухнул.

Шаг 3. Идеальная симметрия 8:8 (Решение)

Играть с текстовыми конфигами было бесполезно — внутренний код transformers всё равно пытался подтянуть дефолтные 32 головы. Поэтому мы применили «кувалду»: перехватили объект конфигурации прямо в оперативной памяти и кустарно выровняли математику до абсолютной симметрии, полностью убив GQA.

Вот код, который спас проект:

Python

import torch
from transformers import AutoConfig, AutoModelForCausalLM
from huggingface_hub import login

# 1. Перехватываем конфиг на лету
config = AutoConfig.from_pretrained("livadies/GLM-5.1-Ghetto-MoE-2-Experts", force_download=True)

# 2. УБИВАЕМ АСИММЕТРИЮ (Фикс ошибки 8 vs 32)
config.num_attention_heads = 8
config.num_key_value_heads = 8         # Строго равно num_attention_heads
config.multi_query_group_num = 8       # Перебиваем хардкод GLM
config.multi_query_attention = False   # Отключаем GQA
config.kv_channels = 64                # hidden_size (512) / 8 = 64
config.head_dim = 64

# 3. Синтезируем веса с идеальной математикой
model = AutoModelForCausalLM.from_config(config, torch_dtype=torch.float16)

# 4. Жестко переводим все матрицы в fp16, чтобы не было конфликтов dtype
model = model.half().to("cuda")

Шаг 4. Первый вдох Левиафана

Мы залили получившиеся safetensors (скромные 388 МБ чистого хаоса) на Hugging Face и запустили инференс.

На вход подали: "Привет! Как тебя зовут?"

На выходе мы получили это:

们都skeresindx scooter perspective/legal很少... Generating是他Сегодня нест disgr.initState...

Абсолютная цифровая шизофазия. Китайские иероглифы вперемешку с кусками Python-кода и случайными слогами.

И это был абсолютный триумф. Почему? Потому что этот бред доказал главное: граф вычислений замкнулся. Матрицы внимания (8х8) перемножились без ошибок, эксперты успешно перекинули тензоры друг другу, а 16 ГБ видеопамяти хватило за глаза. Мы создали рабочий математический макет самой тяжелой архитектуры 2026 года.

Итоги и артефакты

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

? Репозиторий проекта: livadies/GLM-5.1-Ghetto-MoE-2-Experts

? Promo Directive: Russian Winter 26

Этот MLOps-хакинг был проведен в атмосфере цифрового гетто под саундтреки виртуального артиста livadies. Пока компилируются ваши тензоры, слушайте музыку будущего:

? Spotify | ? YouTube Music | ? Yandex Музыка

Главный трек кванта: «RUSSIAN WINTER 26»

Пишите в комментариях, какие еще архитектуры стоит «вскрыть» и сжать до размеров калькулятора. Увидимся в терминале!

Комментарии (19)


  1. jarkevithwlad
    13.04.2026 07:47

    такое громкое название, а по факту:

    Абсолютная цифровая шизофазия...


    1. Livadies Автор
      13.04.2026 07:47

      В этом и суть кейса) Цель была не стихи генерировать, а заставить ядро корпоративного монстра, под которого нужны серверные фермы, инициализироваться и замкнуть граф вычислений на карточке 2016 года (T4).

      Эта «шизофазия» — техническое доказательство того, что мы победили конфликты размерностей тензоров, обошли хардкод GQA и заставили математику матриц сойтись без переполнения памяти (OOM). Это эксперимент про хардкорный MLOps и взлом архитектуры, а не про NLP-осмысленность.


  1. Bardakan
    13.04.2026 07:47

    Абсолютная цифровая шизофазия. Китайские иероглифы вперемешку с кусками Python-кода и случайными слогами.

    И это был абсолютный триумф. Почему? Потому что этот бред доказал главное: граф вычислений замкнулся. Матрицы внимания (8х8) перемножились без ошибок, эксперты успешно перекинули тензоры друг другу, а 16 ГБ видеопамяти хватило за глаза. Мы создали рабочий математический макет самой тяжелой архитектуры 2026 года.

    я правильно понимаю, что вы взяли большую модель и обрезали/сжали ее так, что получилось нерабочее нечто - хуже по качеству по сравнению с моделями, которые изначально влезали в 16гб? А какой смысл в этом?


    1. janvarev
      13.04.2026 07:47

      Как я понял - да. Непонятно, почему операция обрезки называется "сжатием" - так вообще можно 1 нейрон оставить, и через него активацию провести, смысл только...


      1. Livadies Автор
        13.04.2026 07:47

        Справедливое замечание про термины. Технически это экстремальный структурный прунинг (лоботомия), а не классическое сжатие вроде квантования. Но ваш аргумент про «1 нейрон» здесь совершенно не работает.

        Если вы оставите 1 нейрон, вы не протестируете сложную кастомную архитектуру. Смысл нашего скелета именно в сохранении топологии:

        1. Мы оставили 2 эксперта (MoE), чтобы протестировать логику роутинга токенов (как движок раскидывает вычисления).

        2. Мы сохранили Attention-блоки, чтобы поймать и исправить зашитый в ядро конфликт GQA (когда ключей 32, а голов 8). 1 нейрон вам эту ошибку не выдаст.

        В чем практический смысл? Это классический подход Zero-Cost MLOps. Представьте, что вам нужно написать свой кастомный инференс-сервер или отладить скрипт распределенного обучения для этой архитектуры. Зачем арендовать кластер H100 за тысячи долларов просто для дебага кода? Вы берете этот рабочий микро-скелет, запускаете на локальном ноутбуке, отлаживаете весь пайплайн (потому что графы вычислений идентичны), а уже потом деплоите реальные 744B веса на проде.

        Это инструмент для инженеров-архитекторов, а не готовый бот для болтовни.


        1. janvarev
          13.04.2026 07:47

          Представьте, что вам нужно написать свой кастомный инференс-сервер или отладить скрипт распределенного обучения для этой архитектуры. Зачем арендовать кластер H100 за тысячи долларов просто для дебага кода?

          А, теперь кейс понятен - да, здесь, возможно, имеет смысл. Фактически для "поиграться с архитектурой конкретной модели дев-инженеру без H100".

          Я бы, конечно, все-таки сказал, что имеет смысл сделать модель с такой же архитектурой, но под 16 Гб и там уже все тестировать - потому что не факт, что выводы ML инженера для лоботомированной модели также подойдут для полноценной (скорость обучения, инференса и прочего может сильно разнится) - но подход теоретически имеет смысл.

          UPD: Хотя для желающих с этим "играться" я бы все-таки взял полноценную H100 в аренду. Если компания хочет использовать подобные штуки сама, то аренда по-любому не должна сжирать много денег по ее меркам, а результаты будут точнее.


          1. Livadies Автор
            13.04.2026 07:47

            Так мы буквально это и сделали) Наш билд — это и есть та самая оригинальная архитектура glm_moe_dsa со всей её специфической логикой роутинга, просто смасштабированная (downscale) по ширине матриц под 16 ГБ.

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


    1. Livadies Автор
      13.04.2026 07:47

      Почти, но вы упускаете саму суть эксперимента. Вы сравниваете наш билд с моделями, которые изначально проектировались под 16 ГБ VRAM.

      А мы взяли архитектуру, оригинальный чекпоинт которой требует около 1.5 терабайт видеопамяти и кластер из H100 в дата-центре просто для того, чтобы загрузиться.

      Моя цель была не сделать «умного чат-бота», а провести стресс-тест самого движка. Заставить сложнейший граф вычислений корпоративного MoE-монстра (с его специфическим Grouped Query Attention) проинициализироваться, обойти зашитые в код конфликты размерностей тензоров и отработать без OOM на слабой карточке 2016 года.

      Это хардкорный MLOps-инжиниринг и проверка гибкости фреймворка, а не соревнование по качеству генерации текста. Шизофазия на выходе — это лишь индикатор (print statement), подтверждающий, что математика перемножения урезанных матриц сошлась без ошибок ядра.


  1. kuza2000
    13.04.2026 07:47

    Эм... даже не знаю, что тут сказать... А нафига?))


    1. Livadies Автор
      13.04.2026 07:47

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


  1. NTDim1973
    13.04.2026 07:47

    Как в известном меме - "Можно, а зачем ?"


  1. gliderman
    13.04.2026 07:47

    Ожидал увидеть в статье рецепт как загрузить плотную Gemma4 на 8-16 гигов видеопамяти. типа из этих https://huggingface.co/unsloth/gemma-4-31B-it-GGUF - без потери качества или минимально. Ну как если бы размер был как у 2бит, а качество как у 16бит.


    1. Livadies Автор
      13.04.2026 07:47

      Тензоры размаж между видеокартой, vram cpu и диском ...на Т4 я так запускаю модели под 64-80 гб веса


      1. vpman
        13.04.2026 07:47

        Запустить то с офолоадом можно, но, например плотная гемма4 31б на 4090_48Gb выдает не больше 30t/s. А при офлоаде даже 1 слоя тензоров на ЦПУ скорость падает почти на треть, и с каждым слоем все сильнее. При соотношении VRAM-RAM 50 на 5, скорость с 12 потоками CPU - 3-4 t/s.
        Перспективно выглядят попытки сделать REAP версии больших моделей МОЕ, где вырезаются "лишние" эксперты, которые могут не использоваться в прикладных задачах.
        Надеюсь сделают обрезание для Minimax 2.7, чтобы не Q2 загружать, а Q4_M, хотя бы. Хотя и Q2 работает на удивление неплохо.


        1. Livadies Автор
          13.04.2026 07:47

          https://huggingface.co/livadies/MiniMax-M2.7-Ghetto-MoE-8-Experts вот я оставил всего 8 экспертов Minimax 2.7 на 15 гб карты т4 2016 года запускается только в путь


          1. Lissodelphis
            13.04.2026 07:47

            Интересно. А как вырезать ненужных экспертов из моделей? Есть где мануал? Тогда просто можно нарезать ту же гемма4-мое на несколько моделей-с пометкой - какая тема у эксперта. Да и более крупные модели тогда можно резать.


            1. vpman
              13.04.2026 07:47

              На сколько мне известно, прогоняются целевые запросы (например по кодингу) через модель, и на ее роутере считается активация каждого эксперта. Те, которые наберут меньше активаций в последствии вырезаются. Проблема в том, что эксперты могут равномерно распределять веса, и их удаление может сильно ухудшить качество.

              Гемму4 уже рипнули https://huggingface.co/mradermacher/gemma-4-21b-a4b-it-REAP-heretic-GGUF и еще много других на HF


              1. Livadies Автор
                13.04.2026 07:47

                есть выход мы зацикливаем слои сами на себя вместо прогона через доп слои я в следущей статье выложу роезультаты но качество улучшается значительно по опыту с GLM-5.1


            1. Livadies Автор
              13.04.2026 07:47

              есть мануал он на три этапа делится: Прежде чем резать, нужно понять, кто в модели «балласт», а кто — «мозг». ФИЗИЧЕСКАЯ ЭКСТРАКЦИЯ и ПАТЧ РОУТЕРА в следующих статьях буду более подробно раскрывать суть метода на примерах кастрации разных моделей