The state of SIMD in Rust in 2025
В 2025 году SIMD в Rust продолжает развиваться, предлагая значительный прирост производительности до 64x для операций с u8 на современных процессорах. Основная проблема - фрагментация наборов инструкций: ARM использует обязательный NEON (128 бит), WebAssembly - 128-bit packed SIMD, а x86 имеет сложную иерархию от SSE2 до AVX-512 (512 бит). Для x86 разработчики выбирают между указанием target-cpu (например, x86-64-v3) и использованием function multiversioning для поддержки различных процессоров.
В Rust существует четыре подхода к SIMD: автоматическая векторизация (самый простой), продвинутые итераторы, портируемые абстракции и сырые интринсики. В то время как ARM стандартизировал NEON, а WebAssembly требует компиляции двух бинарных файлов, x86 остается самой сложной платформой из-за множества расширений и необходимости обеспечения обратной совместимости.
Комментарии (128)
- Обсуждение показало, что Rust пока не может предложить стабильный и удобный способ работы с SIMD, в отличие от C# и C++.
- Основная причина —
std::simdвсё ещё в nightly, а стабильная альтернатива отсутствует. - Участники также отметили, что даже в ночной ветке API нестабилен и может измениться, что делает его использование в production-окружениях проблематичным.
- Некоторые участники выразили обеспокоенность тем, что отсутствие стабильной SIMD-поддержки может отпугнуть потенциальных пользователей Rust, особенно в областях, где эффективное использование SIMD критично.
- В то же время, другие участники подчеркнули, что Rust всё ещё молодой язык и что сообщество может в конце концов решить эту проблему, как это было с другими функциями в прошлом.
Backpropagation is a leaky abstraction (2016) 🔥 Горячее
Карпати утверждает, что понимание обратного распространения ошибки (backprop) критически важно, несмотря на автоматизацию в фреймворках вроде TensorFlow. Он называет backprop "утечкой абстракции" — опасно верить, что просто соединяя слои, можно "магически" обучить сеть. Студенты курса CS231n жаловались на ручную реализацию backprop в numpy, но Карпати настаивает: без понимания математики невозможно диагностировать проблемы обучения.
Яркий пример — сигмоидные функции. При плохой инициализации весов сигмоиды "насыщаются" (выходы близки к 0 или 1), делая локальный градиент z*(1-z) равным нулю. Это полностью останавливает обучение. Даже при нормальных условиях градиент сигмоиды не превышает 0.25 (при z=0.5), что означает его 4-кратное ослабление при каждом проходе. Для сетей с сигмоидами нижние слои учатся значительно медленнее верхних.
Комментарии (131)
- Обсуждение вращается вокруг статьи Карпати "Yes, you should understand backprop" и его тезиса о том, что понимание backprop важно, даже если вы никогда не будете писать его вручную.
- Участники спора сомневаются в ценности этого подхода, указывая на то, что современные фреймворки и высокоуровневые абстракции делают знание деталей неактуальным.
- Некоторые участники подчеркивают, что даже если вы не будете реализовывать backprop вручную, понимание принципов работы оптимизаторов и функций активации важно для отладки и проектирования моделей.
- Обсуждение также затрагивает вопрос о том, насколько важно понимать детали, когда вы пользуетесь высокоуровневыми инструментами, и какие уровни абстракции считаются приемлемыми.
- В конце концов, спор сводится к тому, что хотя фундаментальное понимание важно, но не стоит забывать, что большинство практических задач будут решаться с помощью высокоуровневых инструментов и фреймворков.
Комментарии (28)
- @mrasong отметил, что несмотря на отсутствие опыта работы с ассемблером, получил много полезной информации из статьи.
- @jmspring поделился опытом работы с ассемблером в прошлом (включая inline-оптимизации для криптоопераций), но сейчас предпочитает использовать ИИ для решения задач.
- @indyjo привел примеры необычных современных применений ассемблера: программирование для Atari ST в 2025 году и обучение роботов игре в DOOM.
A years-long Turkish alphabet bug in the Kotlin compiler
В Kotlin-компиляторе скрыта ошибка, срабатывающая при сборке проекта в турецкой локали. Из-за неё при попытке скомпилировать код в турецкой локали возникает ошибка парсинга XML от компилятора: строчка var category: CompilerMessageSeverity? = CATEGORIES[qName.toLowerCase()] в функции CompilerOutputParser некорректно обрабатывает турецкий символ I (U+0049), который при приведении к нижнему регистру становится не i (U+0069), а ı (U+0131) — точкой надстрочного i без точки. Из-за этого ключ i не находится в словаре CATEGORIES, и код ошибочно считает, что это неизвестный тег, и выдаёт сообщение об ошибке.
Ошибка скрывалась в коде с 2016 по 2021 год, пока не была обнаружена и исправлена. Теперь код корректно использует локально-независимый toLowerCase(Locale.ROOT), и проблема решена. Это яркий пример того, как тонкости локализации могут вызывать ошибки в интернационализированном ПО, особенно при обработке текста.
Комментарии (145)
- Проблема "турецкое I" встречается везде, где не указывается локаль при работе со строками, и это приводит к багам, когда вместо "I" в турецкой локали превращается в "ı" (без точки) и наоборот.
- Современные языки и фреймворки должны предоставлять единообразные и предсказуемые API, но вместо этого они вынуждают разработчиков указывать локаль каждый раз, что приводит к ошибкам.
- Пользователи с турецкой локалью страдают от багов, которые не могут быть обнаружены автоматически, потому что большинство разработчиков тестируют только на английской локали.
- Это также является примером более широкой проблемы: API-функции, которые не принимают
Localeпараметр, вместо этого полагаясь на дефолтной локали, что может привести к ошибкам.
Meta-analysis of 2.2M people: Loneliness increases mortality risk by 32% 🔥 Горячее
Хроническое одиночество повышает риск смертности на 32% и деменции на 31%, что сопоставимо с курением или ожирением. Исследования с участием 2,2 млн человек показывают, что оно запускает биологические механизмы — хроническое воспаление, дисфункцию иммунной системы и эпигенетические изменения, — которые физически разрушают организм.
Эффективные решения существуют: комбинация когнитивно-поведенческой терапии, осознанности и общественных программ сокращает одиночество на 48% всего за полгода. Структурные программы осознанности снижают ежедневное чувство изоляции на 22%, а социальные инициативы вроде британского социального назначения уже охватили 9,4 млн визитов к врачам. Каждый вложенный фунт приносит £3,42 экономии на здравоохранении, доказывая, что эпидемия одиночества не только изучена, но и излечима.
Комментарии (147)
- Участники обсуждают корреляцию между одиночеством и повышенным риском смертности, указывая на возможную обратную причинно-следственную связь (плохое здоровье ведет к изоляции).
- Поднимаются практические аспекты одиночества: отсутствие помощи при чрезвычайной ситуации, самоизоляция из-за болезней и негативного опыта общения.
- Предлагаются решения: создание межпоколенческих сообществ, волонтерские программы (например, Cycling Without Age) и необходимость структурных изменений в обществе.
- Высказывается скептицизм относительно некоторых предлагаемых решений (например, осознанность) и качества исследований, упомянутых в исходной статье.
- Обсуждается разница между социальной изоляцией (объективное отсутствие контактов) и чувством одиночества (субъективное переживание).
I built Foyer: a Rust hybrid cache that slashes S3 latency
Объектные хранилища вроде Amazon S3 стали основой для современных систем данных благодаря почти неограниченной ёмкости, низкой стоимости и высокой долговечности. Однако их высокая задержка и стоимость каждого запроса создают серьёзные проблемы для приложений, требующих низкой задержки, таких как потоковые системы вроде RisingWave. Задержки в сотни миллисекунд накапливаются при частых чтениях, делая систему медленной и дорогой.
Для решения этой проблемы разработан гибридный кеш Foyer на Rust, объединяющий память и локальный диск. Он снижает количество обращений к S3, ускоряя доступ к горячим данным в памяти и тёплым — на диске, что сокращает задержки и затраты. Архитектура Foyer включает шардированный кеш в памяти для высокого параллелизма и дисковый кеш с эффективным управлением данными, координируемые единым компонентом. Это позволяет достичь баланса между скоростью и ёмкостью, критически важного для реального времени.
Комментарии (54)
- Обсуждение библиотеки Foyer для гибридного кеширования (память + диск) и сравнение с альтернативами (CacheLib, rclone, S3 Mountpoint, AWS Storage Gateway).
- Вопросы о производительности S3 и целесообразности кеширования из-за задержек и стоимости запросов.
- Технические детали реализации: инвалидация кеша, запись в S3, поведение в гибридном и in-memory режимах.
- Проблемы с работой сайта Medium (модальные окна, блокировка прокрутки) в Firefox.
- Критика формата комментариев и призыв к содержательным обсуждениям.
Weaponizing Ads: How Google and Facebook Ads Are Used to Wage Propaganda Wars
Государства превратили Google и Facebook в оружие пропаганды.
В конце 2024 г. глава агентства ООН по помощи Газе обнаружил: поиск «UNRWA» в Google выдаёт на первом месте платное объявление Израиля, копирующее сайт ООН, но ведущее на правительственную страницу с обвинениями в поддержке терроризма. Комиссар Филипп Лазарини назвал это «информационным оружием» и потребовал регулирования.
Как работает схема
- Рекламные кабинеты Google и Meta позволяют точно таргетировать аудиторию по ключевым словам, геолокации, интересам и демографии.
- В отличие от обычных постов, реклама гарантированно показывается миллионам, если кто-то платит.
- Платформы запрещают дезинформацию и «опасный контент», но правила обходятся: ключи пишутся с ошибками, лендинги маскируются под СМИ, а «политическим» считается только объявление, поданное внутри страны.
Кейсы
- Израиль – Газа 2024: десятки поисковых объявлений дискредитируют UNRWA, Human Rights Watch и Bellingcat; CTR до 18 %, бюджеты – сотни тысяч долларов.
- Россия – 2016 и далее: фабрика троллей покупает рекламу на Facebook, YouTube и Google, раскалывая американских избирателей по расовым и оружейным темам.
- Филиппины – 2022: дезинформация против журналистов Рапплер финансировалась государственным фондом; объявления показывались только жителям Манилы.
- США – 2020: кампания Трампа и республиканцев запускает «Stop the Steal»-рекламу до и после выборов, обходя собственные же запреты Facebook на «преждевременные итоги».
Почему пропускают
- Деньги: политика и кризисы – высокооплачиваемые темы.
- Масштаб: 8 млн активных рекламодателей в Google, 10 млн в Meta; модерация – автоматическая + аутсорс.
- Юрисдикция: законы о «политической» рекламе действуют внутри стран, а кампании часто запускаются из-за рубежа.
- Прозрачность: библиотеки объявлений не показывают таргетинг и бюджеты в реальном времени.
Последствия
- Подрыв доверия к независимым организациям и СМИ.
- Рост насилия и поляризации на местах.
- Искажение исторической памяти: поиск «Холокост» уже выдаёт рекламу отрицающих.
Что делать
- Платформы: расширить категорию «политика» до любого государственного заказчика; показывать полный таргет и бюджет; вводить «кулдаун» перед публикацией спорных объявлений.
- Регуляторы: требовать предварительного уведомления о крупных кампаниях (>50 тыс. долл.), как это сделано для ТВ.
- Пользователи: ставить блокировщики рекламы, проверять лендинги через WHOIS, жаловаться на заведомо ложные объявления.
Итог
Пока рекламные алгоритмы остаются прибыльной «серой зоной», поиск и соцсети будут продолжать превращаться в поле боя, где побеждает тот, кто заплатит больше.
Комментарии (111)
- Участники обсуждают, как Google и Meta становятся каналами для государственной пропаганды, включая Израиль и Венгрию, и почему это опасно.
- Одни считают, что реклама = пропаганда, платформы не несут ответственности, а значит — блокируй всё.
- Другие предлагают регулировать платформы, но опасаются, что следующий авторитарный лидер возьмёт рычаги в свои руки.
- Третьи напоминают: корпорации просто идут туда, где деньги и власть, независимо от «прогрессивных» лозунгов.
From multi-head to latent attention: The evolution of attention mechanisms
Внимание в авто-регрессивных моделях позволяет фокусироваться на релевантных токенах контекста. Например, в «The animal didn’t cross the street because it was too tired» механизм связывает «it» с «animal», а не «street».
Как работает внимание
- Query (Q) – вектор текущего токена.
- Key (K) – векторы контекста для сравнения.
- Value (V) – фактические данные контекста.
- Attention scores – веса важности, полученные из Q и K.
- KV-кэш – повторное использование уже вычисленных K и V для ускорения декодирования.
Multi-Head Attention (MHA)
Идея: h параллельных «голов» учат разные аспекты зависимостей.
Плюсы: высокая точность.
Минусы: O(h·d²) параметров и вычислений; рост KV-кэша.
Multi-Query Attention (MQA)
Идея: одна K и V на все головы.
Плюсы: в 8–16× меньше KV-памяти, быстрее.
Минусы: качество падает.
Grouped Query Attention (GQA)
Компромисс: g групп K/V (1 ≤ g ≤ h).
Плюсы: баланс между MHA и MQA.
Минусы: всё ещё линейный рост памяти при больших g.
Multi-Latent Attention (MLA)
Идея: сжимаем K и V в небольшой латентный вектор c (dim ≪ d), из которого потом «разворачиваем» нужные K, V.
Плюсы:
- KV-память не зависит от h и d;
- качество как у MHA;
- применяется в DeepSeek-V2.
Минусы: дополнительные матрицы проекции, но выгода при больших моделях перевешивает.
Сводная таблица
| Механизм | Параметры KV | Память KV | Качество | Примечание |
|---|---|---|---|---|
| MHA | h·d·d | O(hd) | высокое | baseline |
| MQA | d·d | O(d) | ↓ | быстрый |
| GQA | g·d·d | O(gd) | ≈ MHA | компромисс |
| MLA | d_lat·d | O(d_lat) | ≈ MHA | state-of-art |
Вывод
Эволюция от MHA к MLA – путь к снижению памяти и вычислений без потери качества. MLA через латентные представления достигает эффективности MQA и точности MHA, задавая новый стандарт для больших языковых моделей.
Комментарии (38)
- Название «Attention Is All You Need» выглядело лёгким и цепляющим, но авторы не предвидели гипер-масштабного влияния; целью было лишь улучшить машинный перевод без рекуррентных блоков.
- Некоторые считают, что броское имя помогло вирусному распространению работы, а в DL-сообществе меметические названия вообще норма (YOLO, ViT и др.).
- Участники спорят, используют ли «фронтирные» модели описанные в статье приёмы: открытые варианты вроде Grok-2 всё ещё опираются на стандартные MHA + MoE, а основной прогресс идёт за счёт методов обучения, а не архитектуры.
- Для чтения платных статей без регистрации советуют freedium.cfd, отключение JS или закрытие баннера-крестиком.
Do things that don't scale, and then don't scale 🔥 Горячее 💬 Длинная дискуссия
- Старая мантра: «Делай то, что не масштабируется». Раньше это был первый шаг к будущему росту.
- Новая реальность: с GPT и Cursor вы просто останавливаетесь на первом шаге. Проект, который раньше занимал выходные, теперь собирается за вечер. Если он решает задачу для меня и пары друзей — уже успех.
Маленький Slack
Сто человек, 15–20 активных в неделю. Все знают друг друга в лицо, делятся тем, что не выложишь в паблик. Добавить ещё 900 — и интимность исчезнет. Рост ухудшит продукт.
PostcardMailer
Первый вариант: пост в Instagram → автопочтовая открытка маме. API убили, сделал загрузку вручную. Появились спам и Tor — закрыл регистрацию. Heroku устарел — переписал на e-mail:
фото → mom@postcardmailer.us, подпись в теме. Никаких сайтов, паролей, публичного доступа.
Landline-напоминалка
Мама без смартфона, только стационарный. Скрипт на Twilio звонит трижды в день: «Время таблеток», через 10 минут — «Точно приняли?». Стоит копейки, написано за вечер. Масштабировать — значит влезать в чужие семьи и суды. Версия «только для мамы» — идеальна.
Формула
- Заметить свою боль.
- Собрать минимальное решение.
- Оставить его маленьким.
Комментарии (185)
- Участники обсуждают, что делать «вещи, которые не масштабируются», стало проще и приятнее благодаря ИИ-ассистентам: они ускоряют прототипирование и снижают порог входа.
- Однако многие отмечают: такие pet-проекты существовали и до LLM; настоящая ценность ИИ — в преодолении «белого листа» и экономии времени, а не в изобретении самого подхода.
- Тезис «не обязано масштабироваться» применим не только к хобби, но и к компаниям: можно быть прибыльным «Small Giant» вместо гонки за «хоккейной клюшкой».
- Массовый рост часто убивает атмосферу и узнаваемость сообщества, поэтому «остаться малым» — осознанный выбор.
- Итог: ИИ дал миллионам возможность быстро готовить «home-cooked apps» для себя и узкого круга, не ставя задачи покорить рынок.
LLMs tell bad jokes because they avoid surprises
- Шутка — это неожиданный, но в ретроспективе очевидный поворот.
- Универсально смешного не существует: дети не хватает контекста, профи всё предугадывают.
- LLM обучены минимизировать сюрприз, предсказывая «среднее» мнение; смешного не выходит.
- Больше GPU не помогут: архитектура противоречит юмору.
- То же касается историй: если события предсказуемы — скучно; если не вытекают друг из друга — неправдоподобно.
Комментарии (114)
- Автор статьи утверждает, что LLM плохи в шутках, потому что обучены минимизировать сюрприз; участники спорят, путая ли он «сюрприз» с «невероятностью».
- Некоторые считают, что дело не в модели, а в пост-обработке (safety, RLHF), которая гасит остроумие.
- Другие добавляют: юмор — это ещё доставка, контекст и ошибки мышления, а не просто текст.
- Примеры показывают, что более крупные модели (Gemini 2.5, GPT-4.5) уже умеют быть смешными, если их хорошо спросить.
- Вывод: проблема не в «запрете на сюрприз», а в сложности самого юмора и в текущих ограничениях систем.
MCP overlooks hard-won lessons from distributed systems 🔥 Горячее 💬 Длинная дискуссия
MCP игнорирует 40 лет опыта RPC и обрекает компании на сбои
Проблема
Model Context Protocol (MCP) позиционируется как «USB-C для ИИ», но жертвует надежностью ради простоты. Компании внедряют его в продакшен, не осознавая, что в основе лежит архитектура без базовых механизмов, которые считаются обязательными в RPC-системах с 1982 г.
4 пропущенных урока
-
Типы данных
UNIX RPC (1982) ввёл XDR и IDL, чтобы 32-битное целое не превратилось в мусор на другой архитектуре. MCP использует схематичный JSON: проверка типов происходит в рантайме, если вообще происходит. В результате ИИ-трейдер может ошибиться в десятичном разряде, а медицинский ассистент — перепутать дозировку. -
Кросс-языковая совместимость
CORBA (1991) генерировала привязки под C++, Java, Python и т. д., гарантируя, что исключение на сервере корректно обработается клиентом. MCP оставляет реализацию на усмотрение каждого языка: Python и JavaScript по-разному кодируют Unicode и float, что ведёт к тихим ошибкам интеграции. -
Безопасность и версионирование
gRPC и SOAP научились:- TLS/mTLS по умолчанию
- строгая обратная совместимость через IDL
- единое управление ошибками и таймаутами
MCP не требует шифрования, не описывает, как менять контракт, и не стандартизирует retry-логику. Каждый инструмент решает сам, как сообщать об ошибке.
-
Масштабирование и наблюдаемость
Современные RPC-фреймворки включают распределённый трейсинг, rate-limiting, circuit breaker. MCP не предоставляет ни метрик, ни механизмов отказоустойчивости. При миллионах вызовов в день компании получают «чёрный ящик», который нельзя отладить и который падает при первой же нагрузке.
Итог
Простота MCP полезна для прототипов, но в продакшене превращается в долговременный техдолг. Пока MCP не добавит IDL, строгие типы, безопасность и наблюдаемость, внедрять его в критичных системах — значит повторять ошибки, которые отрасль исправляла последние 40 лет.
Комментарии (186)
- Критики считают MCP «USB-C для ИИ»: универсальным, но с расплывчатыми стандартами и слабой типизацией.
- Сторонники отвечают: именно минимализм JSON-over-HTTP обеспечил быструю массовую adoption, в отличие от громоздких SOAP/CORBA.
- Спор о схемах: MCP поддерживает JSON Schema, но валидация не обязательна, поэтому ошибки типов всплывают только в рантайме.
- Поднимаются темы безопасности и трейсинга: нет встроенного аудита вызовов и расходов, что критично для enterprise.
- Общий вывод: MCP сейчас «хорошо достаточно» для веба, но для регулируемых или высоконагруженных сред потребуется или доработка, или новая спецификация.