Комментарии 11
Мифический Франкенштейн мог заниматься осмысленной практической деятельностью. Стоит ли ожидать полезных артефактов от подобного подхода, кроме "ну да, и так тоже извратиться можно"?
Вы пишете, что модель выдала «цифровую шизофрению». Но как понять, что это результат несовместимости словарей и проекций, а не того, что в четвёртом слое adapt_weight залил нули из-за промаха с размерностью? Без проверок после каждого слоя (хотя бы assert transplanted_weight.abs().sum() > 0) вы не доказываете, что веса действительно переехали. Концепция становится нефальсифицируемой: успех — «что-то сгенерировалось», провал — «что-то сгенерировалось, но бессвязно». В обоих случаях результат принимается, а значит, эксперимент не доказывает ничего, кроме факта запуска Python.
я не утверждаю, что вы не добились интересного результата. Я говорю, что в текущем виде этот результат не доказывает заявленное — «в машинном обучении нет непробиваемых стен архитектуры». Чтобы доказать, нужно исключить альтернативные объяснения (пустые веса, случайные инициализации, ошибки размерностей). Добавление минимальных самопроверок и устранение хрупкости превратят эксперимент из разового трюка в воспроизводимое доказательство.
Насторожили осторожности, что это не убийца chatGPT, будто статью писал chatGPT.
Как идея с пересадками, взять слои с большой модели и воткнуть в более мелкую (по глубине).
Затем заморозить все кроме этого слоя и учить определённой задаче, затем разморозить всё и дать согласоваться слоям. А лучше размораживать сначала окружающие слои.
Мне кажется такой фигнёй занимается 90% huggingface`а
Каждая вторая модель типа "Qwen3.5-4B-Claude4.6-IQ4_K_M" генерирует очень похожий бред (не помню точно, но мне это вроде иногда удавалось решить. То ли отключением Vision, то ли сменой девайса запуска с NPU/GPU на CPU)
Я не очень понял.
У этих моделей был разный токенизатор? Если разные, то на выходе может быть бред, ведь вклад токенов другой.
У этих моделей были разные эмбеддинги? Если разные, то это значит, что информационные связи нарушаются. В одном случае связь король + мужчина может сместиться в огурец + вино.
С переносном FFN в MoE как раз меньше всего проблем. Классические Трансформеры FFN и MoE не особо сильно отличаются. То что так любят называть экспертами, по сути это разрезание глобального FFN на несколько частей, каждая из которых более качественно аппроксимирует и выделяет часть глобального FFN. То есть глобальный FFN теряет точность, из за ограничения размеров. Поэтому мы можем по сути взять его участки и расширить их размерность. Это можно представить через аналогию с функцией описывающей N колебаний. Чтобы апроксимировать все N колебаний, нам нужна FFN с большой размерностью, но мы можем разложить ее на N частей, где каждый FFN будет описывать свое колебание с более высокой точностью (функция больше не пытается апроксимировать все N). Так как на практике в статической модели, только некоторые колебания имеют наибольшую ценность, то остальные можно ~ игнорировать (поэтому говорят про активные веса в MoE) и MoE выбирает одну из FFN (эксперта). Само разбиение в MoE как раз и происходит по интервалам после голов. Это как разбить линейку на участки. Если участок 1 сильнее остальных, значит аппроксимируем на основе него.
Я ускорял обучение MoE за счёт того, что сначала обучал модель с одним FFN, затем копировал его значение во всех экспертов (несколько FFN) и затем дообучал. Таким образом при дообучении, модель детализирована каждый из своих участков. Это давала ещё один плюс. Например, для какого-то эксперта не хватает данных при обучении. Если вдруг модель выберет его, результат будет не очень, а так они уже содержать глобальную информацию и даже если для данного эксперта не хватило данных при обучении, модель не начнет нести полный бред.
Второй подход, который ускорял обучение заключался в том, что сначала мы обучаем K блоков. Затем добавляем ещё один блок и копируем в FFN K+1 веса предыдущего K. Дальше модель детализирует его. Это ускоряет обучение, так как чем меньше блоков, тем быстрее обучение. По сути на каждой итерации мы дообучаем новый блок и согласовываем связи.

Франкенштейн на 30 ГБ RAM: Как мы пересадили мозг Gemma в скелет DeepSeek и сломали Transformers