Главное: Известный разработчик в экосистеме Apple Мэтт Галлахер (Matt Gallagher) опубликовал в блоге Cocoa with Love первую часть серии статей о написании собственной библиотеки для обучения языковой модели (LLM) полностью на Swift. В дебютной части он показал, как пошагово оптимизировать матричное умножение — самую ресурсоёмкую операцию в нейросетях — с уровня в несколько Gflop/s до полноценных Tflop/s на стандартном MacBook. Это первая по-настоящему серьёзная попытка перенести фундаментальный стек обучения LLM из мира Python/PyTorch на Swift и Metal. Для пользователей из России и СНГ это важный сигнал: альтернативные платформы под обучение и инференс ИИ становятся реальностью без зависимости от NVIDIA CUDA. Разбираем, что именно произошло, какие цифры были получены и какие выводы можно сделать прямо сейчас.
Что именно опубликовал автор?
Серия статей называется «Training an LLM in Swift» — её цель пройти весь путь от низкоуровневого матричного умножения до полноценного обучения языковой модели на чистом Swift, без обращения к Python-фреймворкам. Первая часть, по словам автора, посвящена «самой скучной, но самой важной операции» — перемножению матриц.
Галлахер начинает с наивного цикла, который перемножает две квадратные матрицы за O(n³), и шаг за шагом доводит производительность до уровня высокопроизводительных численных библиотек. В качестве референса он использует Apple Accelerate (а под капотом — vDSP и BLAS-совместимые вызовы), чтобы было понятно, какой потолок задаёт сам процессор Apple Silicon.
Почему это важно: контекст и предыстория
Все современные LLM — от GPT-5 и Claude 4.5 до DeepSeek V3.1 и Gemini 2.5 — на нижнем уровне сводятся к огромному количеству матричных умножений. На стадии обучения нейросеть ещё и пропускает эти матрицы через градиенты, что превращает каждый forward-pass в десятки независимых GEMM-вызовов. Поэтому скорость одного матричного умножения буквально определяет, сколько времени и денег уйдёт на обучение модели.
Исторически вся эта инфраструктура завязана на CUDA от NVIDIA: PyTorch, TensorFlow, JAX — все они оптимизированы прежде всего под зелёные карты. Но за последние два года появились альтернативы:
- MLX — официальный ML-фреймворк Apple для Apple Silicon, поддерживающий обучение моделей на M-чипах.
- tinygrad и llama.cpp — минималистичные движки, работающие на CPU/GPU без CUDA.
- ROCm от AMD и OneAPI от Intel — попытки повторить успех CUDA на своём железе.
Проект Галлахера встаёт в этот же ряд, но идёт радикально дальше: автор пишет всё с нуля на Swift, без MLX, без BLAS, без сторонних движков. Это эксперимент в духе «понять, как устроена кишка ML-фреймворка», и одновременно демонстрация того, что Swift как язык способен конкурировать по скорости с C++ и Rust на матричных задачах.
Какие цифры получились на практике?
Автор оптимизирует код в семь итераций. Каждая следующая версия — это либо новый трюк (тайлинг, SIMD, разворачивание циклов), либо более глубокое понимание того, как работает кэш и память Apple Silicon.
- Наивная реализация — около единиц Gflop/s, что в тысячи раз медленнее, чем нужно для реального обучения.
- Перестановка циклов для попадания в L1-кэш — десятки Gflop/s.
- Тайлинг (block matrix multiplication) — сотни Gflop/s.
- SIMD на ARM NEON — близко к одному Tflop/s.
- Многопоточность через GCD — несколько Tflop/s.
- Финальная версия с агрессивной упаковкой данных вплотную приближается к показателям Apple Accelerate.
Это значит, что ноутбук с чипом M-серии в 2026 году способен выдавать на матричных операциях производительность, сравнимую с дискретными GPU прошлого поколения. По данным Apple, чип M4 Max в пике даёт около 18 Tflop/s в FP32, и в эту цифру теоретически может упереться и чистый Swift, если правильно использовать AMX-блоки.
Почему именно Swift, а не C++ или Rust?
На первый взгляд выбор Swift для ML-инфраструктуры кажется странным: вся индустрия пишет на Python с C++/CUDA-ядрами, а более модные альтернативы вроде Rust получают всё больше внимания. Тем не менее, у Swift есть три уникальных преимущества.
Первое. Swift на Apple Silicon имеет прямой доступ к AMX-расширениям через Accelerate и встроенный SIMD-тип, что делает низкоуровневую работу с матрицами синтаксически удобной. На C++ для того же придётся писать инлайн-ассемблер или подключать интринсики ARM NEON вручную.
Второе. Swift — родной язык платформы Apple, а значит итоговая модель может быть запущена прямо на iPhone, iPad или Mac без промежуточного слоя ONNX или TorchScript. Для on-device AI это критично.
Третье. Swift предоставляет современную систему типов, безопасность памяти и хорошую интероперабельность с C, оставаясь при этом языком с производительностью «системного» уровня.
Из обсуждения публикации на площадке Lobsters: «Свифт здесь работает как Rust, только без боли с lifetime'ами. Если автор доведёт серию до конца, у нас появится живой пример, как обучать LLM без Python вообще».
Как это повлияет на пользователей из России и СНГ?
Главный практический эффект для русскоязычной аудитории — снижение зависимости от инфраструктуры NVIDIA, которая с 2022 года стала труднодоступной из-за санкций. Карты H100, A100 и даже потребительские RTX 4090 в Россию завозятся параллельным импортом, цены завышены в 2–3 раза по сравнению с европейским ритейлом, а корпоративные облака вроде AWS и GCP официально недоступны.
На этом фоне любые альтернативы NVIDIA становятся интересными:
- MacBook с чипом M4 Pro/Max остаётся легально и относительно дешёво доступным — официальные поставки идут через регион ЕАЭС, серый импорт работает стабильно.
- Локальный инференс LLM на Apple Silicon уже сейчас даёт скорости 30–60 токенов в секунду для моделей класса Llama 3.1 8B.
- Подход Галлахера показывает, что обучение и дообучение (fine-tuning) небольших моделей на ноутбуке — это не теоретическая возможность, а реальная инженерная задача.
Для разработчиков, которые работают над прикладными ИИ-продуктами в России — будь то чат-боты, ассистенты или системы анализа документов — это означает, что можно строить полный pipeline разработки без обращения к зарубежным облакам. А для конечных пользователей, которые хотят протестировать актуальные LLM прямо сейчас, в WebGPT (ask.gptweb.ru) уже доступны все ведущие модели — от GPT-5 и Claude 4.5 до DeepSeek V3.1 и Gemini 2.5 — без VPN и зарубежных карт.
Технические детали: что именно делал автор?
Чтобы было понятно, какие именно оптимизации использовались, разберём ключевые шаги без погружения в исходники.
Тайлинг и работа с кэшем
Наивный алгоритм перемножения матриц промахивается мимо L1-кэша процессора практически на каждой итерации, потому что элементы матрицы B читаются по столбцам, а они в памяти лежат по строкам. Решение — разбить матрицы на блоки размером с кэш-линию (обычно 64 байта на Apple Silicon) и считать произведение поблочно. Это даёт ускорение в десятки раз без изменения сложности алгоритма.
SIMD и векторные регистры
Apple Silicon поддерживает ARM NEON — 128-битные векторные регистры, в которые помещается четыре числа с плавающей запятой одинарной точности (FP32). Swift предоставляет тип SIMD4<Float>, который компилятор разворачивает в нативные инструкции. Один такой регистр обрабатывает четыре умножения параллельно, что сразу даёт четырёхкратный прирост.
AMX и матричные ускорители
Самая интересная часть — это AMX (Apple Matrix Coprocessor), скрытый сопроцессор внутри M-чипов, доступ к которому официально предоставляется только через Accelerate. Галлахер обходит это ограничение и показывает, как можно подойти к производительности AMX, оставаясь на уровне обычного Swift с SIMD-операциями и грамотной упаковкой данных.
Многопоточность через GCD
На последнем шаге автор распараллеливает блочное умножение по ядрам процессора через Grand Central Dispatch. Это даёт ещё 6–8-кратное ускорение на 10-ядерном M-чипе, потому что блоки независимы и могут считаться параллельно без блокировок.
Когда станет доступна полная серия и можно ли использовать код прямо сейчас?
На момент публикации в открытом доступе только первая часть серии — про матричное умножение. Автор обещает в следующих выпусках разобрать:
- Автодифференцирование (autograd) на Swift.
- Имплементацию слоёв трансформера: attention, feed-forward, layer norm.
- Токенизацию и работу с словарём BPE.
- Сам цикл обучения с оптимизатором AdamW.
Код первой части выложен в репозитории на GitHub (ссылка есть в оригинальной статье на блоге Cocoa with Love), его можно клонировать и запустить локально на любом Mac с чипом M-серии. Для воспроизведения результатов нужен Xcode 16+ и базовое понимание Swift.
Что говорят в комьюнити?
Обсуждение публикации в сообществе разработчиков Lobsters — одной из главных площадок для системного и инфраструктурного ПО — собрало десятки комментариев. Основные тезисы участников такие:
- Удивление, что Swift способен на такие скорости без специальных трюков вроде интринсиков.
- Сравнение с MLX от Apple: участники отмечают, что подход Галлахера обучает, а MLX скорее «закрытая коробка».
- Вопросы о портируемости: чистый Swift с SIMD работает и на Linux, но AMX-блоков там нет.
- Запросы на сравнение с llama.cpp, который тоже не использует CUDA и активно оптимизируется под ARM.
«Это лучший туториал по производительности матричного умножения, который я читал за последние пять лет. Особенно ценно, что автор показывает не финальный результат, а путь к нему — с замерами на каждом шаге».
Как это повлияет на разработку LLM в ближайший год?
Прямого влияния на индустрию обучения фронтирных моделей серия Галлахера не окажет — никто не будет тренировать GPT-6 на MacBook. Но есть несколько вторичных эффектов, которые заметны уже сейчас.
Расцвет on-device ИИ. Чем легче и эффективнее писать ML-код на нативном языке платформы, тем быстрее новые модели появляются в iOS-приложениях. По данным редакции Cocoa with Love, разрыв между «обучили в облаке» и «работает на телефоне» сокращается до недель.
Демократизация ML-образования. Когда туториалы по обучению LLM пишутся на одном языке от начала до конца, без переключений между Python, C++ и CUDA, порог входа резко падает. Это особенно важно для студентов и self-taught разработчиков в России, у которых нет доступа к полноценным GPU-кластерам.
Давление на NVIDIA и Python-экосистему. Чем больше появляется работающих альтернатив, тем больше PyTorch вынужден оптимизироваться под Apple Silicon и AMD. Уже сейчас MPS-бэкенд PyTorch догоняет CUDA по скоростям на M-чипах.
Что делать прямо сейчас?
Если вы разработчик и хотите попробовать подход на практике, шаги такие:
- Установите Xcode 16+ на Mac с любым чипом M-серии.
- Прочитайте оригинальную статью Мэтта Галлахера в техническом блоге Cocoa with Love от начала до конца — желательно с открытым редактором.
- Склонируйте репозиторий с примерами и запустите бенчмарки на своей машине.
- Попробуйте написать собственную версию без подглядывания — это лучший способ понять, как работают оптимизации.
- Подпишитесь на блог автора, чтобы не пропустить следующие части серии.
Если же вы не разработчик, но хотите быть в курсе того, как развивается ИИ-инфраструктура, читайте наши обзорные материалы — например, разбор фреймворка Apple MLX или сравнение локальных LLM для запуска на ноутбуке в 2026 году. А чтобы поработать с актуальными моделями прямо сейчас, без настройки окружения и подбора оборудования, попробуйте WebGPT (ask.gptweb.ru) — там доступны все основные модели через единый интерфейс.
Часто задаваемые вопросы
Можно ли уже сегодня обучить LLM полностью на Swift?
Нет, первая часть серии Галлахера покрывает только матричное умножение — это фундамент, но далеко не весь стек обучения. Для полного цикла нужны автодифференцирование, оптимизаторы, токенизаторы и сам цикл обучения. Автор обещает разобрать всё это в следующих частях, но точных дат публикации пока нет.
Сравнима ли производительность Swift с CUDA?
На уровне одного чипа Apple M4 Max производительность сопоставима с дискретными GPU прошлого поколения (RTX 3070/3080) на FP32-операциях. Но для серьёзного обучения нужен кластер GPU, и здесь NVIDIA по-прежнему вне конкуренции из-за NVLink и развитой экосистемы.
Зачем вообще учиться писать ML-код на Swift, если есть PyTorch?
Главные причины две: понимание того, как устроены фреймворки изнутри, и возможность запускать модели на устройствах Apple без промежуточных слоёв. Если вы строите iOS-приложение с ИИ-функциями, нативный Swift даст меньшую задержку и лучший контроль над памятью.
Работает ли этот код на компьютерах с Windows или Linux?
Чистый Swift кросс-платформенный и компилируется под Linux, но AMX-блоки есть только в чипах Apple. На x86 или ARM-Linux те же оптимизации придётся переписывать под AVX-512 или SVE, что существенно меняет код.
Где можно протестировать LLM без покупки MacBook и без VPN?
Самый простой путь — через агрегатор вроде WebGPT (ask.gptweb.ru), где работают ChatGPT, Claude, Gemini и DeepSeek через российский интерфейс с оплатой рублями. Это закрывает 90% задач, для которых обычно нужен локальный инференс.