Архив рубрики ~Обо всем~

Почему устаревшие, но существующие на протяжении десятилетий соединения по-прежнему лежат в основе всего искусственного интеллекта (и почему это проблема)

Почему устаревшие, но существующие на протяжении десятилетий соединения по-прежнему лежат в основе всего искусственного интеллекта (и почему это проблема)
Почему устаревшие, но существующие на протяжении десятилетий соединения по-прежнему лежат в основе всего искусственного интеллекта (и почему это проблема)

Почти десять лет эта часть нейронных сетей практически не менялась. Компания DeepSeek пытается переосмыслить её.

Делиться

(Источник: Изображение создано автором с помощью Gemini)

1. Введение

За последнее десятилетие область глубокого обучения значительно развилась, будь то благодаря вычислительным мощностям оборудования или изобретательности архитектур, использующих это оборудование. Но если задуматься, базовая архитектура осталась неизменной в нескольких ключевых областях. Мы наблюдаем масштабный переход от сверточных сетей к новым архитектурам Transformer, которые лежат в основе современных больших языковых моделей, но способ передачи информации от одного слоя к другому в этих сетях изменился не так уж сильно.

Недавно исследователи из DeepSeek-AI опубликовали статью под названием «mHC: Manifold-Constrained Hyper-Connections» (Xie et al., 2025b)1, в которой предлагается совершенно новая разработка этой системы маршрутизации. Чтобы по-настоящему оценить предложенное ими решение, давайте посмотрим, как развивалось распространение сигналов за последние несколько поколений моделей и почему существующие методы упираются в стену.

2. Основа: Стандартные остаточные соединения

Во-первых, чтобы понять конкретную проблему, которую пытаются решить авторы, нам нужно поговорить о том, с чего все началось — со стандартного остаточного соединения (He et al., 2015)² . Представленное еще в 2015 году в ResNets, остаточное соединение, пожалуй, является одним из наиболее важных архитектурных решений, используемых в каждой существующей модели ИИ.

16821e9a49ddb98c1d93b4ac4c93e00e
(Источник: Автор)
Визуальное отображение остаточного соединения

Математически это выглядит так:

16f8eac4c3b6bc6e95625c82087f7359
(Источник: Автор)
XL+1: Окончательная активация выходного сигнала слоя
XL: Входные активации для слоя
F(.): Преобразования, применяемые слоем.

Это просто означает, что конечный выход слоя — это сумма его выхода и первоначального входного сигнала. Ключевым компонентом здесь является тот самый член XL в остаточном потоке, который мы называем отображением тождественности. Он важен, потому что действует как непрерывный путь для прохождения градиентного сигнала через всю сеть от начала до конца. Именно это свойство предотвращает исчезновение или взрыв градиентов во время обучения и позволяет нам успешно обучать модели с сотнями слоев, обеспечивая при этом эффективное обучение и обновление каждого слоя.

2.1 Проблема стандартных остаточных соединений

Но по мере того, как модели становились все более масштабными, мы начали сталкиваться с ограничениями этого прямолинейного подхода.

В стандартной модели трансформера остаточный поток можно представить как имеющий фиксированную ширину, которую мы можем обозначить как измерение C. Каждый фрагмент контекста, памяти и представления признаков должен быть умещен в этот единственный C-мерный вектор по мере его продвижения вверх по сети. Со временем, по мере того как слои модели делают информацию более абстрактной и выразительной, член xl из остаточного потока становится информационным узким местом.

Как правило, для увеличения репрезентативной способности модели необходимо увеличить размер вычислительных слоев или добавить больше слоев. Но при этом значительно возрастают и вычислительные требования для работы самой модели.

2.2 Улучшение: гиперсоединения (HC)

Из-за вышеуказанного ограничения исследователи из ByteDance предложили альтернативу обычному остаточному потоку, известную как гиперсоединения (Zhu et al., 2024)3.

2d62a76d48c2f494d96ef3f96cc67404
(Источник: Автор)
Визуальная диаграмма потока информации в неконтролируемых гиперсвязях.

Если обычные остаточные потоки слишком «тонкие», HC расширяет их. Вместо того чтобы полагаться на один поток шириной C , идея состоит в том, чтобы увеличить ширину остаточного потока на определенный коэффициент, скажем, n . В результате вы получаете более широкий вектор, состоящий из n параллельных потоков, что приводит к общей ширине n×C .

Но поскольку фактические вычислительные слои модели, такие как блоки Attention и MLP, по-прежнему ожидают стандартный входной сигнал только с C измерениями, HC вводит набор обучаемых весов для преобразования вектора между широким и узким потоком:

  • Матрица предварительного отображения: она считывает данные из широкого потока и сжимает его до размера C
  • Матрица постобработки: она берет узкий выходной сигнал слоя и расширяет его обратно в широкий поток.
  • Матрица остаточного отображения: она располагается непосредственно на пути остаточного сигнала, и ее цель — смешивать информацию между n параллельными потоками по мере продвижения сигнала.

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

2.3 Недостатки гиперсоединений

Однако в реальности ситуация такова, что, хотя HC выглядит великолепно на бумаге, при попытке масштабировать его до размеров наших нынешних программ LLM возникают несколько фатальных недостатков:

  • Математическая нестабильность: Матрица остаточного отображения, хотя и выразительна, разрушает важнейшее свойство тождественного отображения. Поскольку она может обучаться на любом значении, она больше не идеально сохраняет исходный сигнал. Небольшое увеличение размера признака в одном слое экспоненциально возрастает при умножении на пятьдесят слоев. DeepSeek обнаружил, что сигнал может быть усилен в поразительные 3000 раз, что приводит к крайне нестабильным градиентам и огромным скачкам в функции потерь при обучении.
  • Аппаратное узкое место: расширение потока в n раз заставляет аппаратное обеспечение памяти считывать и записывать значительно больше данных на каждом шаге. Поскольку доступ к памяти, а не сами вычисления, часто является самым большим узким местом в современном обучении ИИ, эти дополнительные накладные расходы снижают пропускную способность обучения и существенно увеличивают объем памяти, используемой графическим процессором.

Таким образом, перед исследователями DeepSeek встала весьма специфическая проблема: как сохранить выразительные, широкие потоки парадигмы HC, не нарушая математическую устойчивость сети и не перегружая память и операции ввода-вывода графического процессора?

Давайте посмотрим, как они решили эту проблему.

3. Решение: Гиперсвязи с ограничениями на многообразии (mHC)

Для решения этих двух серьезных проблем, распространенных в гиперсвязях, команда DeepSeek предложила модифицированную структуру, которую они называют гиперсвязями с ограничениями на многообразие (Manifold-Constrained Hyper-Connections , или mHC) .

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

3.1 Исправление математических основ: многогранник Биркхофа

Гениальное математическое открытие заключалось в том, чтобы взять эту проблемную, ничем не ограниченную матрицу остаточного отображения и математически заставить её вести себя ограниченным образом. Для этого они спроецировали матрицу на определённое математическое пространство, известное как многогранник Биркхофа.

Проще говоря, они ограничили матрицу таким образом, чтобы она стала дважды стохастической матрицей .

Если вам незнаком этот термин, то дважды стохастическая матрица — это матрица, в которой все числа неотрицательны, сумма чисел в каждой строке равна 1, и сумма чисел в каждом столбце также равна 1.

ee3c0dc1bc7915a77e3aa7da7369ce65
(Источник: Автор)
Иллюстрация дважды стохастической матрицы

Приведя матрицу остатков к этому конкретному формату, авторы обеспечили ряд весьма полезных математических свойств:

  • Сохранение нормы (отсутствие взрывов): Математически спектральная норма дважды стохастической матрицы ограничена значением 1, ни больше, ни меньше. Это означает, что независимо от того, чему учится матрица, она физически не может расширять или уменьшать градиент. Это нейтрализует проблему взрыва/исчезания сигнала.
  • Композиционное замыкание (глубокая стабильность): если умножить дважды стохастическую матрицу на другую дважды стохастическую матрицу, результат все равно будет дважды стохастической матрицей. Это гарантирует, что сигнал останется идеально стабильным даже при объединении этих матриц на пятидесяти или ста слоях.
  • Идеальное смешивание: с геометрической точки зрения, такая матрица представляет собой комбинацию множества различных способов смешивания информации. Это означает, что она может смешивать информацию в этих n параллельных потоках без искусственного усиления общей «энергии» сигнала.

Для преобразования обычной матрицы в дважды стохастическую во время обучения исследователи использовали так называемый алгоритм Синкхорна-Кноппа (Sinkhorn & Knopp, 1967)⁵ . Во время прямого прохода алгоритм сначала делает все числа в матрице положительными, а затем итеративно масштабирует строки и столбцы до тех пор, пока их сумма не станет равна 1.

3.2 Ремонт оборудования: Глубокое системное проектирование

Решать математические задачи на бумаге — это здорово, но выполнение всех этих широких потоков и итеративных вычислений Синкхорна-Кноппа кажется настоящим кошмаром для памяти графического процессора. Чтобы обойти эту проблему, команда DeepSeek внедрила ряд радикальных оптимизаций инфраструктуры:

  • Объединение ядер: Вместо выполнения математических операций по одной (что требует постоянного чтения и записи в память графического процессора), они использовали фреймворк TileLang (Wang et al., 2025)6 для написания пользовательских, унифицированных ядер для графического процессора. Это позволило им объединить умножение матриц, нормализацию и итерации Синкхорна-Кноппа в одну операцию, минуя накладные расходы на память.
  • Селективное перерасчет: Расширение остаточного потока обычно означает, что во время обучения приходится сохранять огромное количество промежуточных данных для обратного прохода. На практике это мгновенно приводит к нехватке памяти на графических процессорах. Чтобы решить эту проблему, промежуточные данные отбрасываются после прямого прохода. Сохраняется только минимально необходимый объем входных данных, а затем во время обратного прохода происходит быстрый перерасчет легковесного mHC с использованием унифицированных ядер.
  • Перекрывающаяся связь: В распределенной системе обучения (с использованием нескольких графических процессоров), поскольку более широкие потоки вызывают задержки при передаче данных между графическими процессорами, разработчикам пришлось изменить систему планирования. Путем ее доработки они скрыли задержки связи широких потоков, запустив их одновременно с ресурсоемкими вычислениями слоев внимания, так что ни одна часть mHC не является лимитирующим этапом во время обучения.

В конечном итоге, результаты всех этих инженерных разработок окупаются. Несмотря на добавление математических вычислений и расширение потоков данных, модель mHC добавляет лишь ничтожно малые 6,7% временных затрат во время обучения по сравнению со стандартной базовой моделью.

4. Результаты: Действительно ли это сработало?

Чтобы проверить, действительно ли все математические расчеты и системная инженерия оправдали себя, команда DeepSeek протестировала mHC. Они обучили несколько языковых моделей на основе архитектуры DeepSeek-V3 (DeepSeek-Ai et al., 2024)4 , масштабируя их вплоть до модели с 27 миллиардами параметров. Они сравнили свою новую структуру mHC напрямую со стандартной остаточной базовой моделью и неограниченной, нестабильной парадигмой HC. Давайте посмотрим, как проходили эксперименты.

4.1 Восстановление стабильности тренировок

Основная мотивация создания mHC заключалась в смягчении нестабильного поведения при обучении, наблюдаемого в HC из-за неконтролируемых матриц отображения. Как показано ниже, норма градиента стандартной модели HC (график b) начинает дестабилизироваться с резкими колебаниями примерно на 12 000 шагах, что как раз совпадает с моментом, когда графики потерь HC и mHC расходятся (график a). Благодаря более плавным и стабильным нормам градиента в mHC, модель в конечном итоге достигает меньшей итоговой ошибки обучения по сравнению с обычной моделью HC.

00a7dcde7b3904e83eca7659011f7272
(Источник: Адаптировано из работы Xie et al., 2025, Рисунок 5)
График a: Зависимость потерь при обучении от количества шагов обучения для трех различных вариантов одной и той же модели. Он демонстрирует, что модель с поддержкой mHC достигла наименьших потерь при обучении.
График b: График зависимости нормы градиента от количества шагов обучения. Он показывает крайне нестабильные нормы градиента, которые мы получаем от стандартного HC, по сравнению с плавными и предсказуемыми нормами, которые мы получаем от модифицированного HC.

4.2 Повышение производительности нисходящего потока

Стабильная модель полезна только в том случае, если она действительно умнее. Чтобы доказать это, авторы оценили вариант 27B на нескольких последующих тестовых задачах, включая MATH, MMLU и задачи логического мышления, такие как BBH и DROP. Как и ожидалось, модель с поддержкой mHC показала стабильное повышение производительности по всем параметрам и особенно превзошла модель HC без ограничений в большинстве тестовых задач. В тестах на логическое мышление наблюдался особенно хороший прирост производительности, что указывает на то, что более широкие остаточные потоки активно способствуют созданию более выразительной модели.

4ac9f3672caac1e17eadabe96a5dea83
(Источник: Адаптировано из работы Xie et al., 2025, Таблица 4)
mHC превосходит базовый уровень (нормальные остаточные связи) и не ограниченный HC по всем показателям, кроме MATH.

4.3 Предсказуемое и надежное масштабирование

Важным критерием проверки любой новой архитектурной парадигмы глубокого обучения является соответствие установленным законам масштабирования. Некоторые проектные решения, работающие для модели с 3 миллиардами параметров, могут оказаться неэффективными или привести к обратному результату для модели с 27 миллиардами параметров. Для подтверждения этого авторы построили кривые масштабирования вычислений для моделей с 3 миллиардами, 9 миллиардами и 24 миллиардами параметров. Приведенные ниже графики наглядно демонстрируют, что относительное улучшение функции потерь сохраняется на всех масштабах, подтверждая, что mHC является масштабируемым архитектурным обновлением.

7b669ff0e750f1bee67fdfe59b26047a
(Источник: Адаптировано из работы Xie et al., 2025, Рисунок 6 (a))
Слева: График абсолютной разницы потерь между mHC и базовым уровнем в зависимости от размера модели (в FLOPs).
Справа: График относительной разницы потерь между mHC и базовым уровнем в зависимости от размера модели (в FLOPs).

4.4 Укрощение взрыва сигналов

В качестве заключительной проверки авторы также напрямую проверили одно из своих утверждений: сигнал не должен произвольно взрываться при наложении на несколько слоев. Для стандартного не ограниченного HC мы увидели, как сигнал может быть усилен в 3000 раз, что полностью нарушило градиенты во время обучения. Чтобы проверить, решает ли mHC эту проблему напрямую, DeepSeek отслеживал динамику распространения сигнала слой за слоем в модели, и результаты оказались ожидаемыми. Благодаря дважды стохастическим матрицам отображения, усиление сигнала было ограничено примерно 1,6 на протяжении всей модели, что доказывает, что сигнал оставался стабильным даже после наложения на несколько слоев.

96a603ee4fa9636a16912beb8f11196b
(Источник: Адаптировано из работы Xie et al., 2025, Рисунок 7)
График a: Зависимость коэффициента усиления сигнала от слоя (по индексу). График показывает практически нулевое усиление на нескольких разных слоях, что свидетельствует об успешном смягчении взрыва сигнала с помощью двойных стохастических матриц.
График b: Зависимость коэффициента усиления сигнала от слоя (по индексу, суммарный). График показывает, что при суммировании сигнал усиливается примерно в 1,6 раза на 20-м слое, что по-прежнему обеспечивает стабильное и ограниченное усиление для обучения.

5. Контрфактические рассуждения: «подводные камни» и компромиссы.

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

  • Увеличение времени обучения на 6,7%: DeepSeek с гордостью (и совершенно справедливо) отмечает, что оптимизация инфраструктуры позволила снизить накладные расходы на время обучения всего до 6,7% по сравнению с базовой моделью. Хотя это звучит невероятно мало, в масштабе обучения огромной модели LLM (сотни миллиардов параметров), где затраты на вычисления на графических процессорах исчисляются десятками миллионов долларов, увеличение времени обучения на 6,7% приводит к очень реальным и очень большим финансовым затратам. За эту дополнительную вычислительную мощность вам придется платить больше.
  • Огромная инженерная сложность: вы не можете просто открыть стандартный скрипт PyTorch, ввести реализацию напрямую с помощью нескольких строк кода и ожидать таких эффективных результатов. Чтобы сделать mHC жизнеспособным, команде DeepSeek пришлось написать собственные низкоуровневые ядра для интегрированных графических процессоров с использованием TileLang, вручную управлять памятью и модифицировать планирование конвейера. Это значительно повышает порог входа. Для небольших команд или исследователей без выделенных инженеров по инфраструктуре эффективная реализация mHC будет сопряжена с огромными затратами.
  • Математика представляет собой приближение: на бумаге алгоритм Синкхорна-Кноппа преобразует матрицу отображения остатков в идеальную дважды стохастическую матрицу. Однако для получения идеального результата алгоритму технически необходимо бесконечное количество итераций. Чтобы обеспечить высокую скорость, исследователи ограничивают количество итераций 20. Из-за этого приближения матрица на практике не является математически идеальной. Если бы она была идеальной, мы бы наблюдали идеальное усиление сигнала в 1,0, но этого не происходит. Усиление сигнала постепенно увеличивается до максимума примерно в 1,6 по слоям. Это абсолютно ограниченное и безопасное значение для данного масштаба, но для еще больших моделей (современные LLM содержат более 500 миллиардов параметров) это приближение может еще больше отклониться от идеала.

6. Заключение: Итоговые мысли и целесообразность применения

В конечном итоге, статья «mHC: Manifold-Constrained Hyper-Connections» — это весьма значимый результат исследований DeepSeek. Она прекрасно демонстрирует, что необходимо для реального расширения границ фундаментальных моделей сегодня: требуется глубокое понимание чистой математики для выявления теоретических недостатков, и необходимы серьезные навыки системной инженерии, чтобы реализовать решение на физическом кремнии и сделать его практически жизнеспособным.

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

Что касается внедрения, увидим ли мы быстрое принятие и реализацию mHC? Вероятно, нет. Из-за сильной зависимости от пользовательских ядер GPU и сложной системы планирования конвейера, она имеет довольно высокий барьер, и, вероятно, потребуется некоторое время, чтобы её абстрагировали в простой в использовании модуль, готовый к работе, для более широкого сообщества. Однако DeepSeek уже доказала свою эффективность в масштабе в рамках своего высококонкурентного набора моделей.

Учитывая очевидные улучшения в тестах на логическое мышление и стабильности обучения, я вполне ожидаю, что хорошо обеспеченные ресурсами лаборатории ИИ начнут внедрять и экспериментировать с mHC в своих архитектурах следующего поколения. Это большой шаг вперед, и он доказывает, что еще есть много возможностей для инноваций в самых фундаментальных строительных блоках нейронных сетей.

7. Список литературы

  1. Се, З., Вэй, Ю., Цао, Х. и др. (2025). mHC: Гиперсвязи с ограничениями на уровне многообразий. DeepSeek-AI. Препринт arXiv:2512.24880.
  2. Хэ, К., Чжан, С., Рен, С., и Сунь, Дж. (2016). Глубокое остаточное обучение для распознавания изображений. В сборнике трудов конференции IEEE по компьютерному зрению и распознаванию образов (стр. 770-778).
  3. Чжу, Д., Хуан, Х., Хуан, З. и др. (2024). Гиперсвязи. Препринт arXiv:2409.19606. (Оригинальная статья ByteDance, предлагающая неограниченные гиперсвязи).
  4. Лю А., Фэн Б., Сюэ Б. и др. (2024). Технический отчет DeepSeek-V3. Препринт arXiv arXiv:2412.19437.
  5. Синкхорн, Р., и Кнопп, П. (1967). О неотрицательных матрицах и дважды стохастических матрицах. Pacific Journal of Mathematics, 21(2), 343-348. (Основополагающая математика проекции матриц).
  6. Ван, Л., Чэн, Ю., Ши, Ю. и др. (2025). TileLang: Композитная модель тайлового программирования для систем ИИ. Препринт arXiv:2504.17577. (Структура, используемая для пользовательского слияния ядер GPU в mHC).

Мулик Гупта. Все работы Мулика Гупты.

Источник: towardsdatascience.com

✅ Найденные теги: Десятилетий, новости, Почему, Протяжении, Существующие, Устаревшие
Читайте также
Архив рубрики ~Лента новостей~ Как учить английскую грамматику? А надо ли? Архив рубрики ~Лента новостей~ Анимационный сериал Amazon, созданный искусственным интеллектом, отменен из-за беспощадных насмешек Архив рубрики ~Лента новостей~ Новый промт от Google (#2 выпуск) — возможно, вы искали именно его 🤔 Архив рубрики ~Лента новостей~ Курсы по промптингу? Почитайте детям сказку на ночь Архив рубрики ~Лента новостей~ Чувствительность экспресс-тестов на кишечную угрицу достигла почти 90 процентов. Как и специфичность Архив рубрики ~Лента новостей~ Компания AcuRite признала, что новое приложение не соответствует требованиям, и отложила закрытие старого приложения в мае для устранения неполадок. Архив рубрики ~Лента новостей~ Компания Bluesky запускает групповые чаты, переориентируясь на функции для создания сообществ. Архив рубрики ~Лента новостей~ SK hynix почти готова к массовому производству 375-слойной памяти 3D NAND Архив рубрики ~Лента новостей~ Защищено профессионалами: система охранной сигнализации Dahua AirShield переопределяет интегрированную интеллектуальную безопасность Архив рубрики ~Лента новостей~ В Rust есть жизнь до Main. Архив рубрики ~Лента новостей~ Предупреждения компании Anthropic о безопасности, возможно, обернулись против правительства — оно отключило свой самый мощный ИИ. Архив рубрики ~Лента новостей~ Представляем OpenAI Economic Research Exchange | OpenAI Архив рубрики ~Лента новостей~ AI не убил разработчиков. Он сделал видимость разработки дешёвой Архив рубрики ~Лента новостей~ Как вы хотите жить? И Джеймс Валентайн, и папа римский бросили вызов человечеству, оказавшемуся на перепутье | Питер Льюис Архив рубрики ~Лента новостей~ Как учить английскую грамматику? А надо ли? Архив рубрики ~Лента новостей~ Анимационный сериал Amazon, созданный искусственным интеллектом, отменен из-за беспощадных насмешек Архив рубрики ~Лента новостей~ Новый промт от Google (#2 выпуск) — возможно, вы искали именно его 🤔 Архив рубрики ~Лента новостей~ Курсы по промптингу? Почитайте детям сказку на ночь Архив рубрики ~Лента новостей~ Чувствительность экспресс-тестов на кишечную угрицу достигла почти 90 процентов. Как и специфичность Архив рубрики ~Лента новостей~ Компания AcuRite признала, что новое приложение не соответствует требованиям, и отложила закрытие старого приложения в мае для устранения неполадок. Архив рубрики ~Лента новостей~ Компания Bluesky запускает групповые чаты, переориентируясь на функции для создания сообществ. Архив рубрики ~Лента новостей~ SK hynix почти готова к массовому производству 375-слойной памяти 3D NAND Архив рубрики ~Лента новостей~ Защищено профессионалами: система охранной сигнализации Dahua AirShield переопределяет интегрированную интеллектуальную безопасность Архив рубрики ~Лента новостей~ В Rust есть жизнь до Main. Архив рубрики ~Лента новостей~ Предупреждения компании Anthropic о безопасности, возможно, обернулись против правительства — оно отключило свой самый мощный ИИ. Архив рубрики ~Лента новостей~ Представляем OpenAI Economic Research Exchange | OpenAI Архив рубрики ~Лента новостей~ AI не убил разработчиков. Он сделал видимость разработки дешёвой Архив рубрики ~Лента новостей~ Как вы хотите жить? И Джеймс Валентайн, и папа римский бросили вызов человечеству, оказавшемуся на перепутье | Питер Льюис

Оставить комментарий