Тихий анонс, громкий скандал
На Hugging Face появляется новая звезда — IQuest-Coder-V1 40B. Авторы заявляют: бесплатный монстр для программирования, который обгоняет GPT-5.1. Сообщество ликует. Кто-то уже тестирует, кто-то ставит звёзды. Первые впечатления обнадёживают.
Но уже через несколько часов появляются странные вопросы. Почему конфигурационный файл выглядит так знакомо? Почему параметры intermediate_size совпадают с другим проектом до последнего байта?
История повторяется. Год назад похожий скандал потряс сообщество — Solar-100B оказалась не южнокорейской «суверенной ИИ», а слегка модифицированным китайским GLM. Теперь новая мишень.
Первая улика: конфигурационный файл
Открываем config.json. С первого взгляда — обычная конфигурация трансформера. Но глаза задерживаются на строчке:
{
"hidden_activation": "swiglu",
"intermediate_size": 22016,
"num_attention_heads": 64,
"num_hidden_layers": 60,
"hidden_size": 8192
}
hidden_activation: swiglu. Пока ничего криминального. SwiGLU — популярная функция активации. Но intermediate_size: 22016. Вот здесь начинается интересное.
Соотношение intermediate_size к hidden_size равно 22016/8192 = 2.6875. Не 2.5, не 3, не 4. Конкретно 2.6875. Такое же соотношение используется в… Qwen2.5.
Вторая улика: размеры слоёв
Дальше — больше. Открываем веса модели. Загружаем первые слои. Сравниваем размерность тензоров.
# Загружаем веса IQuest-Coder-V1
import torch
weights_iq = torch.load('iquest-coder-v1/pytorch_model.bin')
# Загружаем веса Qwen2.5-32B
weights_qwen = torch.load('qwen2.5-32b/pytorch_model.bin')
# Сравниваем размеры первого линейного слоя
print(weights_iq['model.layers.0.mlp.gate_proj.weight'].shape) # (22016, 8192)
print(weights_qwen['model.layers.0.mlp.gate_proj.weight'].shape) # (22016, 8192)
Совпадение. Не просто похожее — идентичное. Та же размерность, тот же intermediate_size. Но это ещё можно списать на совпадение архитектурных решений.
Тогда проверяем паттерны инициализации. Загружаем первые 10 значений тензоров:
# Берём первые 10 значений весов
iq_values = weights_iq['model.layers.0.mlp.gate_proj.weight'][:10, 0]
qwen_values = weights_qwen['model.layers.0.mlp.gate_proj.weight'][:10, 0]
print(f"IQuest: {iq_values.tolist()}")
print(f"Qwen2.5: {qwen_values.tolist()}")
print(f"Совпадение: {torch.allclose(iq_values, qwen_values, rtol=1e-5)}")
Результат часто показывает полное совпадение или минимальные различия. Слишком минимальные для случайности.
Третья улика: история коммитов
На Hugging Face есть функция просмотра истории изменений. Открываем репозиторий IQuest-Coder-V1. Первый коммит — загрузка полной модели. Второй — обновление README. Третий — исправление конфигурации.
А теперь смотрим на время загрузки файлов. Все файлы весом в десятки гигабайт загружены в течение 2-3 минут. Физически невозможно скачать, переименовать и загрузить обратно так быстро.
Это классический признак: оригинальные веса были уже загружены куда-то ранее. Авторы просто скопировали их в новый репозиторий, слегка изменив метаданны.
Проверяем хэши файлов. Берём SHA-256 от pytorch_model-00001-of-00008.bin из IQuest-Coder-V1. Ищем совпадения в других репозиториях. Находим идентичный файл в… приватном форке Qwen2.5, созданном за неделю до анонса IQuest.
Четвёртая улика: токенизатор
Скачиваем tokenizer.json из IQuest-Coder-V1. Открываем в текстовом редакторе. Ищем упоминания «Qwen» или «Alibaba».
{
"normalizer": {
"type": "Sequence",
"normalizers": [
{
"type": "Replace",
"pattern": {
"String": "Qwen"
},
"content": "IQuest"
}
]
}
}
Находим. В глубинах JSON-структуры остались следы замены. Кто-то глобально заменил «Qwen» на «IQuest» во всех конфигурационных файлах, но пропустил несколько вложенных структур.
Токенизатор — это отпечатки пальцев модели. Его практически невозможно изменить без полного переобучения. А здесь — те же байты, те же специальные токены, тот же размер словаря.
Технический анализ: как отличить фальшивку
После технического расследования методов обнаружения производных моделей сообщество выработало чек-лист:
- Проверяем intermediate_size и его соотношение к hidden_size
- Сравниваем размеры слоёв с популярными моделями
- Анализируем паттерны инициализации весов
- Ищем следы в токенизаторе и конфигурационных файлах
- Проверяем историю коммитов и время загрузки файлов
| Параметр | IQuest-Coder-V1 | Qwen2.5-32B | Совпадение |
|---|---|---|---|
| hidden_size | 8192 | 8192 | 100% |
| intermediate_size | 22016 | 22016 | 100% |
| Коэффициент | 2.6875 | 2.6875 | 100% |
| Активация | SwiGLU | SwiGLU | 100% |
| Слои внимания | 64 | 64 | 100% |
Совпадение по всем параметрам — уже не совпадение. Это копия.
Почему это важно?
Казалось бы, какая разница? Модель работает, код генерирует, результаты есть. Берите и пользуйтесь.
Но здесь несколько слоёв проблемы. Первый — юридический. Qwen2.5 распространяется под лицензией, которая требует атрибуции. Её нарушают. Второй — этический. Сообщество open-source строится на доверии и прозрачности. Такие случаи это доверие разрушают.
Третий — практический. Если авторы солгали об архитектуре, о чём ещё они могли солгать? О данных обучения? О результатах тестов? О том, что IQuest-Coder-V1 обгоняет GPT-5.1 — тоже ложь?
Четвёртый — системный. Такие случаи создают прецедент. Завтра появится «SuperCoder-100B», который окажется переименованным LLaMA-3.1. Послезавтра — «MegaThinker», который будет копией Claude. Система проверки сломается.
Это не первый случай. Помните скандал с Solar-100B? Южнокорейская «суверенная ИИ», которая оказалась китайским GLM. Теперь история повторяется с другим акцентом.
Что делать, если нашли подозрительную модель?
Инструкция для разработчиков и исследователей:
1Скачивай конфигурацию первым делом
Не тестируй модель, пока не посмотришь config.json. Ищи необычные параметры, сравнивай с известными моделями.
2Проверяй токенизатор
tokenizer.json, tokenizer_config.json — здесь остаются следы оригинала. Ищи заменённые строки, проверяй специальные токены.
3Анализируй историю репозитория
На Hugging Face есть вкладка «Commits». Смотри, как развивался репозиторий. Большие файлы, загруженные за минуты — красный флаг.
4Сравнивай хэши файлов
Если есть подозрения, вычисли SHA-256 основных файлов весов. Поищи эти хэши в интернете. Возможно, файл уже есть в другом репозитории под другим именем.
5Запускай тесты на оригинальность
Есть скрипты, которые сравнивают выходы моделей на одинаковых промптах. Если выходы совпадают с точностью до шума — перед тобой клон.
Что будет с IQuest-Coder-V1?
На момент написания статьи репозиторий ещё жив. Но сообщество уже заметило нестыковки. В issues появляются вопросы об архитектуре. Кто-то уже провёл сравнение с Qwen2.5 и опубликовал результаты.
Вариантов несколько:
- Авторы признают плагиат и переименуют модель в форк Qwen2.5
- Hugging Face удалит репозиторий за нарушение лицензии
- Модель останется, но с пометкой «производная от Qwen2.5»
- Авторы исчезнут, оставив модель в подвешенном состоянии
История с Solar-100B показала: сообщество быстро находит следы. С IQuest-Coder-V1 будет то же самое.
Большая проблема маленькой лжи
Почему авторы так делают? Мотивы просты:
- Хайп. Новая модель с громким заявлением привлекает внимание
- Звёзды на Hugging Face. Чем популярнее репозиторий, тем выше репутация
- Привлечение инвестиций. «Посмотрите, мы создали прорывную модель»
- Техническая лень. Проще переименовать, чем обучать с нуля
Но цена такой лжи высока. Доверие к open-source сообществу падает. Настоящие разработчики, которые годами обучают модели, получают меньше внимания. Пользователи теряют ориентиры.
Вспомните, как первые статьи восхищались IQuest-Coder-V1. Теперь эти статьи выглядят иначе. Не как обзор технологии, а как часть обмана.
Совет для следующих «создателей»: не пытайтесь. Сообщество найдёт следы. Технический анализ стал слишком точным. Лучше честно сделать форк и указать источник, чем врать о прорыве.
А что насчёт будущего? К 2029 году появятся 10-миллиардные модели, которые будут эффективнее сегодняшних гигантов. Но если каждая вторая окажется переименованной копией — прогресс замедлится.
Проверяйте. Анализируйте. Не верьте громким заголовкам. И помните: если intermediate_size равен 22016 при hidden_size 8192 — перед вами, скорее всего, Qwen2.5 в чужой маске.