Search
Write a publication
Pull to refresh
4
0.1
Send message

Я построил Vision Transformer с нуля — и научил его обращать внимание

Level of difficultyEasy
Reading time6 min
Views5.5K

В этой статье я не просто объясню, что такое ViT — я покажу вам, как создать эту магию своими руками, шаг за шагом, даже если вы никогда раньше не работали с трансформерами для задач с изображениями.

Читать далее

Вайб-кодинг: практика, о которой почему-то не говорят

Reading time10 min
Views52K
В феврале мир разработки перевернулся с выходом Sonnet 3.7. Потому что вдруг внезапно оказалось, что джуны уже не очень-то и нужны. И нейросетка нормально заменяет мидлов тоже.

Я откидываюсь в кресле, беру наушники и смотрю, как работает LLM. Можно сразу несколько, работающих над разными частями проекта:

image

Пример проекта с прикручиванием аналитики к инфраструктуре:

  • Сначала в GPT 4.5 провёл продуктовые исследования и сформулировал требования.
  • Попросил превратить это в архитектурный план.
  • Отревьюил, поправил тупые ошибки.
  • Затем этот план (как метапромпт) скормил Sonnet в VS Code через плагин Cline. Попросил сначала создать общую структуру, шаблонные имплементации, документацию, спецификации API (protobuf для gRPC, REST API).
  • Архитектурно сразу заложил микросервисы. Sonnet для каждого сервиса подобрал и обосновал оптимальную базу данных (где-то Postgres, где-то ClickHouse и т.д.).
  • Сгенерировал SDK для взаимодействия, примеры использования. Сразу заложил observability: централизованные логи, метрики Prometheus, трейсинг Jaeger/Tempo, дашборды для Grafana.
  • Потом итерационно генерировал код: сначала тесты (End-to-end, BDD), потом имплементацию под эти тесты.
  • Написал манифесты для Kubernetes и Docker Compose для локального запуска.
  • Сгенерировал даже скрипты для тестов REST API через curl и gRPC через gRPCurl.

И всё.

А теперь практика — что делать с тем, что современные нейросети учились преимущественно на говнокоде и как быть с джунами.
Читать дальше →

ML-эксперименты проще с ClearML

Level of difficultyMedium
Reading time3 min
Views870

В этой статье поговорим про мощный инструмент для организации ML-экспериментов (и не только) с помощью платформы ClearML. Как с помощью нее проводить исследования «по фэншую». Покажу, что данная платформа может хранить всю необходимую информацию для ведения, визуализации, сравнения и воспроизведения экспериментов.

Хочу узнать больше

Прятки в пикселях: методы встраивания тайных посланий в видеопоток

Reading time10 min
Views6.9K

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

Мы детально рассмотрим технические особенности каждого метода: от классической замены наименее значащего бита до современного алгоритма Куттера-Джордана-Боссена.

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

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

Читать далее

Я больше не вижу багов…

Level of difficultyEasy
Reading time3 min
Views8.9K

Привет! Я — Маша, которая заваривает qaшу (и иногда крепкий кофе, когда глаза уже отказываются фокусироваться на экране).

Сегодня хочу поговорить о проблеме, с которой сталкивался, наверное, каждый тестировщик (и не только). В один "прекрасный" день ты садишься проверять фичу или делать регресс, а баги просто перестают быть видны. Ты кликаешь, прогоняешь сценарии, но будто слепнешь — всё кажется рабочим. А потом оказывается, что пропустил очевидный косяк, и по цепочке начинается: чувство вины → стресс → ещё большая усталость → ещё больше ошибок.

Знакомо? Тогда давайте разберёмся, как выбраться из этой ямы, пока она не превратилась в профессиональное выгорание.

Читать далее

Цифровая карта аварийности: как технологии помогают сделать дороги безопаснее

Level of difficultyMedium
Reading time4 min
Views1.3K

Привет, Хабр! Буквально недавно в ИЦ прошло ежегодное мероприятие «Инновационная столица-2024», где мой коллега, руководитель отдела цифровых сервисов, продемонстрировал обновленный АИС «Мониторинг аварийности».

Цифровая карта ДТП не имеет аналогов в России, поэтому в этой статье я бы хотел рассказать, чем так уникален продукт, и как он помогает снижать количество ДТП в городе.

Читать далее

Кто реально угрожает C++ (нет, Rust, не ты)

Reading time14 min
Views81K

Привет! Меня зовут Александр Каленюк, и я крепко подсел на C++. Пишу на C++ 18 лет кряду, и все эти годы отчаянно пытаюсь избавиться от этой разрушительной зависимости.

Всё началось в конце 2005 года, когда мне довелось писать движок для симуляции 3D-пространства. В этом движке было буквально всё, чем язык C++ мог похвастаться в 2005 году. Трёхзвёздочные указатели, восьмиуровневые зависимости, C-подобные макросы повсюду. Кое-где – вкрапления ассемблера. Итераторы в стиле Степанова и мета-код в стиле Александреску. В общем, всё. Кроме ответа на самый важный вопрос: зачем?

Читать далее

Data Engineering — это не Software Engineering

Level of difficultyMedium
Reading time12 min
Views3.8K

Это мой вольный перевод статьи "Data Engineering is Not Software Engineering", с рядом моих правок, дополнений, а так же сокращений (так как автор склонен повторять одно и то же, но иными словами или излишне "разжевывать" очевидные вещи). Мне кажется, автор действительно поднял очень важную тему, которую я "чувствовал" по своей практике, но не мог сформулировать так точно, как это сделал он.

Мало кто задумывается, что дата-инженерия и разработка ПО имеют значительные различия. Поэтому распространено мнение, что некое отставание дата-инженерии в части внедрения современных методов разработки, таких как Agile, Test Driving Development и т.д. обусловлено лишь отставанием в освоении этих передовых практик.

На самом деле этот взгляд ошибочен. Хотя дата-инженерия и разработка ПО действительно имеют много общего, между ними существуют значительные различия. Игнорирование этих различий и управление командой дата-инженеров по тем же принципам, что и командой разработчиков ПО, является ошибкой. Особенно этим грешат относительно молодые менеджеры, или те, кто никогда не работал с "датой". Собственно, этим зачастую и вызваны ошибки в пименении "в лоб" соврмененых методой разработки. Дата-инженерия — как томат: технически это фрукт, но это не значит, что его стоит добавлять в фруктовый салат.

Читать далее

Как разработчику стать AI-разработчиком в 2025?

Level of difficultyEasy
Reading time6 min
Views11K

Поздравляю, вы уже AI разработчик.

Шутка. Вы только на 80% AI разработчик.

AI – теперь коммодити. Кто угодно может превратить свой древний саас в AI-driven за один HTTP запрос, а большая часть AI разработки с первого взгляда выглядит как

Далее

Взгляд на звук через спектрограмму

Level of difficultyEasy
Reading time6 min
Views14K
Я хочу познакомить вас со взглядом на звук как на спектр и побудить на самостоятельные акустические эксперименты. Вам не потребуется никаких денежных затрат, так как все опыты будем проводить в бесплатной программе Audacity. Представление звука в виде спектрограммы может найти множество применений, например, для диагностики работы механизмов, в анализе тембров инструментов, сэмплов, синтезаторов. Статья рассчитана на новичков.

Спектрограмма звука скрипки. Автор: Omegatron.

Моё увлечение акустикой началось с проекта, когда я хотел сделать анимацию северного сияния, которая бы реагировала на музыку. Я использовал фрагмент классического произведения Баха. Открыл его в программе Audacity в режиме отображения спектрограммы, и внимание сразу привлекли волнообразные штрихи. Так на спектре выглядит исполнительский приём вибрато, смысл которого в переменном изменении тона при игре на музыкальном инструменте.
Смотреть картинку, слушать пластинку

Почему разрабы выгорают не так, как другие и что с этим делать?

Level of difficultyEasy
Reading time7 min
Views2.1K

Хабр, привет!

Давайте разберемся с тем, выгорают ли программисты по другим причинам, чем простые смертные (дисклеймер: да), почему так происходит и что с этим со всем делать. Агрегировала свой айтишный опыт, психотерапевтический и заправила научными статьями.

Читать далее

Оптимизация 3D-текстурирования для мобильных игр при помощи градиентов

Level of difficultyEasy
Reading time8 min
Views3.6K

Градиентное текстурирование — это методика оптимизации 3D-текстурирования, в первую очередь предназначенная для мобильных видеоигр. В ней используются текстурные карты низкого разрешения и градиентные цвета, позволяющие снизить ресурсную нагрузку на игровые без ущерба качеству графики. Благодаря применению градиентов в низкополигональных 3D-моделях симулируются такие эффекты, как освещение, тени и глубина, позволяя избавиться от необходимости в текстурах высокого разрешения, потребляющих больше ресурсов.

Эта методика обеспечивает эффективный баланс между производительностью и визуальным качеством, оптимизирует время загрузки и улучшает игровой процесс. Кроме того, она позволяет гибко менять цветовые палитры и может адаптироваться под разные 3D-модели, снижая размеры файлов и оптимизируя использование памяти.

Читать далее

ИИ на путях: как решить задачу перепланирования расписания движения поездов

Level of difficultyHard
Reading time8 min
Views1.4K

Привет, Хабр. Я Артур Саакян, главный специалист по анализу данных и машинному обучению в ПГК Диджитал. Мы разрабатываем уникальные цифровые продукты для железнодорожных перевозок, такие как оптимизация ЖД перевозок, навигатор, ЖД карты, цифровой вагон и так далее.

В этой статье опишу подход к оптимизации расписания поездов в реальном времени при помощи обучения с подкреплением (RL), который применим и к российским грузовым ж/д перевозкам, но пока не используется. Тезисы статьи:

1. Перепланирование расписания движения поездов (Train Timetable Rescheduling)
2. Коротко об RL и Q-learning
3. Моделирование железнодорожной среды
4. Заключение

Читать далее

Шейдер береговой линии для Unity

Level of difficultyEasy
Reading time9 min
Views3.9K

В своей работе я больше склоняюсь к стилизованной картинке, однако полученный в статье результат можно будет адаптировать и для реалистичного стиля/PBR. В этом посте мы поговорим о шейдере воды, относящемся к береговой линии, не касаясь материала песка и других деталей воды, например, преломления и каустики (о них можно прочитать в Water Shader Breakdown или по другим ссылкам в разделе Water на странице Resources). Впрочем, шейдер выполняет и смешение прозрачности/альфы, чтобы затенить материал под ним для симуляции мокрого песка.

Мы поговорим о двух способах наложения волн в сцене: при помощи текстуры глубин и ручных UV. Ниже я перечислю замечания, плюсы и минусы каждого способа. В последующих разделах мы поработаем над ними по очереди.

Читать далее

Почему важно оптимизировать формат данных

Level of difficultyMedium
Reading time21 min
Views18K
image

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

Алгоритмы — важнейшая часть программы: замена «горячего» алгоритма O(n) менее сложным, например, O(log n), обеспечивает практически произвольное увеличение производительности. Однако существенно влияет на производительность и структурированность данных: программы выполняются на физических машинах с физическими свойствами, например, разными задержками чтения/записи данных в кэши, на диски или в ОЗУ. После оптимизации алгоритмов стоит изучить эти свойства, чтобы достичь наибольшей производительности. Оптимизированный формат данных учитывает используемые алгоритмы и паттерны доступа при выборе того, как сохранять структуру данных на физическом носителе. Благодаря этому можно увеличить скорость алгоритмов в несколько раз. В этом посте мы покажем пример, в котором нам удалось достичь четырёхкратного повышения скорости чтения простым изменением формата данных в соответствии с паттерном доступа.

Сравнение хранилищ данных AoS и SoA


Современное оборудование, и, в частности CPU, спроектировано так, чтобы обрабатывать данные определённым образом. Расположение данных в памяти влияет на то, насколько эффективно программа сможет использовать кэш CPU, как часто она сталкивается с промахами кэша и насколько оптимально она сможет задействовать векторные команды (SIMD). Даже при использовании оптимальных алгоритмов выбор неподходящего формата данных может приводить к частым перезагрузкам кэша, простаивающим конвейерам и чрезвычайно большому объёму передач содержимого памяти; всё это снижает производительность.
Читать дальше →

Как у нейросетей работает внимание? Статья про self-attention и cross-attention

Level of difficultyMedium
Reading time5 min
Views4.9K

Удивительно, как нейросети похожи на нас. У них тоже есть внимание, и на примере коня на ракете я расскажу, как оно работает!

Читать далее

Как выигрывать Kaggle соревнования: LLM-анализ выигрышных решений

Reading time5 min
Views4.7K

Примерно год назад энтузиаст с Kaggle по имени Дарек Клечек провел интересный эксперимент: он собрал все доступные описания (writeups) побеждавших на Kaggle за последние годы решений, пропустил их через LLM и свел по ним общую статистику о том, какие механики и алгоритмы оказываются "наиболее победными". Отчет у парня получился достаточно объемный, интересный, а местами и непредсказуемый. Эта статья – свободный авторский пересказ его эссе. И пусть прологом к ней послужит цитата Дарека:

Читать далее

Как устранить первопричину уязвимостей безопасности памяти

Level of difficultyMedium
Reading time9 min
Views3.1K

Уязвимости безопасности памяти остаются серьёзной угрозой для защиты ПО. Мы, работники Google, считаем, что путь к крупномасштабному устранению этого класса уязвимостей и к защищённому ПО заключается в Safe Coding — подходе secure-by-design, отдающем приоритет переходу на безопасные по памяти языки.

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

Также мы приведём обновлённую статистику того, как благодаря переходу на безопасные по памяти языки, процент уязвимостей безопасности памяти в Android упал за шесть лет с 76% до 24%.
Читать дальше →

Простая красота XOR-сжатия чисел с плавающей запятой

Level of difficultyMedium
Reading time59 min
Views9.5K

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

Алгоритм


Алгоритм* прост. Сначала мы записываем первое число с плавающей запятой полностью; для всех последующих чисел выполняется XOR с предыдущим числом, а затем результат кодируется одним из трёх способов.

[*Конкретно эта версия сжатия чисел с плавающей запятой при помощи XOR была впервые описана в «Gorilla: A Fast, Scalable, In-Memory Time Series Database» и часто называется «Gorilla-сжатием».]
Читать дальше →

CSS-классы вредны

Level of difficultyMedium
Reading time13 min
Views22K

Если вы когда-нибудь заглядывали за кулисы пользовательских веб-интерфейсов, то знаете для чего нужно свойство class. Оно ведь нужно для связи HTML с CSS, правда? Сейчас я расскажу о том, почему настало время отказаться от него. Имена классов — это архаичная система, используемая как неудачный посредник для примитивов UI; ещё хуже то, что они создают ужасные сочетания, приводящие к комбинаторному взрыву странных пограничных случаев. Давайте изучим этот вопрос, начав со скучного урока истории, который вы уже слышали миллион раз.
Читать дальше →
1
23 ...

Information

Rating
4,950-th
Registered
Activity