Обновить

Технотекст

Яндекс выпускает Yatagan — опенсорс-фреймворк для внедрения зависимостей, позволяющий ускорить сборку

Время на прочтение29 мин
Охват и читатели25K


Меня зовут Фёдор Игнаткевич, я делаю приложение Яндекс и мобильный Яндекс Браузер для Android. Примерно год назад я предложил команде идею фреймворка для внедрения зависимостей, который более чем вдвое ускорил сборку обоих проектов и который мы сегодня выложили на Гитхаб — чтобы разработчики других приложений тоже могли улучшить скорость сборки. Я с нуля реализовал фреймворк, а затем мы вместе с командой интегрировали его в проекты и сейчас активно используем.

Как раз про свой опыт разработки я и хочу рассказать. Давайте попробуем разобраться, какие есть факторы замедления сборки, как Yatagan, совместимый с Dagger по API, с ними справляется и какие ещё задачи могут стоять перед DI-фреймворком — например, в части зависимостей под рантайм-условиями. Кстати, нативная поддержка этих зависимостей в Yatagan избавила нас от ручной обработки состояний A/B-экспериментов в DI.

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

Открываем шлагбаум кнопкой на руле автомобиля

Время на прочтение3 мин
Охват и читатели19K

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

Я живу в Москве и у меня во дворе, как и у многих, установлен шлагбаум. Некоторое время назад я задался вопросом, как мне упростить процесс его открытия? Хотелось, чтобы можно было добавлять это действие в сценарии умного дома, открывать по кнопке в авто, давать друзьям возможность открывать его самостоятельно и т.д. Частично я решил проблему еще в прошлом году, но недавно всё "допилил" и решил поделиться.

Читать далее

Яндекс выпускает DivKit — фреймворк для server-driven UI с открытым кодом

Время на прочтение12 мин
Охват и читатели65K
Привет! Сегодня Яндекс выкладывает в опенсорс DivKit — фреймворк для отрисовки интерфейсов из ответа сервера. Серверная вёрстка поможет ускорить разработку: наладить отправку апдейтов от сервера разным версиям приложения, создать прототип или просто написать интерфейс один раз для нескольких платформ.


Фреймворк включает в себя несколько библиотек: клиентскую часть по отрисовке интерфейсов для Android, iOS и веба, а также DSL для формирования ответа сервера на Kotlin, TypeScript и Python. Исходный код опубликован на Гитхабе под лицензией Apache 2.0.

Сейчас DivKit используется в приложении Яндекс, Алисе, Едадиле, Маркете, ТВ и других приложениях. В этом посте я постараюсь вспомнить историю фреймворка, затем мы напишем с его помощью небольшой просмотрщик ленты Хабра, а в конце я покажу ещё несколько простых примеров интеграции.
Читать дальше →

Яндекс выложил YaLM 100B — сейчас это крупнейшая GPT-подобная нейросеть в свободном доступе. Вот как удалось её обучить

Время на прочтение10 мин
Охват и читатели129K

Больше примеров — в конце поста

В последние годы большие языковые модели на архитектуре трансформеров стали вершиной развития нейросетей в задачах NLP. С каждым месяцем они становятся всё больше и сложнее. Чтобы обучить подобные модели, уже сейчас требуются миллионы долларов, лучшие специалисты и годы разработки. В результате доступ к современным технологиям остался лишь у крупнейших IT-компаний. При этом у исследователей и разработчиков со всего мира есть потребность в доступе к таким решениям. Без новых исследований развитие технологий неизбежно снизит темпы. Единственный способ избежать этого — делиться с сообществом своими наработками.

Год назад мы впервые рассказали Хабру о семействе языковых моделей YaLM и их применении в Алисе и Поиске. Сегодня мы выложили в свободный доступ нашу самую большую модель YaLM на 100 млрд параметров. Она обучалась 65 дней на 1,7 ТБ текстов из интернета, книг и множества других источников с помощью 800 видеокарт A100. Модель и дополнительные материалы опубликованы на Гитхабе под лицензией Apache 2.0, которая допускает применение как в исследовательских, так и в коммерческих проектах. Сейчас это самая большая в мире GPT-подобная нейросеть в свободном доступе как для английского, так и для русского языков.

В этой статье мы поделимся не только моделью, но и нашим опытом её обучения. Может показаться, что если у вас уже есть суперкомпьютер, то с обучением больших моделей никаких проблем не возникнет. К сожалению, это заблуждение. Под катом мы расскажем о том, как смогли обучить языковую модель такого размера. Вы узнаете, как удалось добиться стабильности обучения и при этом ускорить его в два раза. Кстати, многое из того, что будет описано ниже, может быть полезно при обучении нейросетей любого размера.
Читать дальше →

Станция 2. Истории разработки одного из самых сложных устройств Яндекса

Время на прочтение14 мин
Охват и читатели61K


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

Я хочу поделиться нашей внутренней кухней в формате, который уже стал традиционным для хабрастатей о новых Станциях. Это снова будут несколько историй про разные аспекты hardware-разработки: поговорим об исследованиях формы комнаты микрофонами, распространении света в прозрачном материале, а ещё о генеративных анимациях и неожиданной пользе от ПЛИС.
Читать дальше →

Как мудрый царь электронные подписи вводил

Время на прочтение3 мин
Охват и читатели4.9K

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

Итак...

В двоичном царстве, в восьмибитном государстве жил-был мудрый царь Айтидон.

Читать сказку

Обучаем SVTR-Tiny для распознавания текста сцены

Время на прочтение7 мин
Охват и читатели7.3K

Сегодня мы расскажем вам, как дообучить новую state-of-the-art модель SVTR-Tiny для распознавания текста сцены (текста в реальных уличных условиях) на собственноручно сгенерированных изображениях с помощью API библиотеки PaddleOCR.

Читать далее

Как мы обучали категоризатор фискальных чеков DataCheckEngine

Время на прочтение6 мин
Охват и читатели2.6K

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

Читать далее

Трекинг множества объектов без разметки или как следить за пузырьками во время пенной флотации

Время на прочтение10 мин
Охват и читатели19K


Привет, Хабр! Меня зовут Клоков Алексей, сегодня поговорим об алгоритмах компьютерного зрения, обработке видеопотока и методах трекинга множества объектов без разметки (unsupervised multiple object tracking) на примере пузырьков. Методичка будет полезна как опытным специалистам, перед которыми стоит похожая задача, так и начинающим энтузиастам. На основе черновика этого текста и экспериментов получилось опубликовать научную статью в Journal of Mineral and Material Science.


В тексте вы найдете:
— описание домена данных и технологического процесса флотации;
— подход к cегментации множества подобных объектов;
— существующие методы трекинга без разметки;
— подход к одновременному сопровождению множества подобных объектов;
— сравнение качества работы алгоритмов и много демонстраций

Читать дальше →

Ускорение инференса модели BERT с помощью ONNX и ONNX Runtime на примере решения задачи классификации текста

Время на прочтение12 мин
Охват и читатели13K

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

Сделан обзор на актуальные подходы для ускорения работы нейронных сетей, представлены библиотеки ONNX и ONNX Runtime.

Проведены тесты с использованием фреймоворков ONNX и ONNX Runtime, используемых для ускорения работы моделей перед выводом их в продуктовую среду.

Представлены графические зависимости и блоки кода.

Читать далее

Граф знаний LinkedIn’s Economic Graph и его Star2Vec-эмбеддинги

Время на прочтение5 мин
Охват и читатели3.1K

В этой публикации я представляю поверхностный обзор статьи от исследователей LinkedIn «Representation Learning in Heterogeneous Professional Social Networks with Ambiguous Social Connections». В указанной статье частично представлена структура графа знаний LinkedIn’s Economic Graph и относительно подробно описан метод обучения эмбеддингов Star2Vec. Я попытаюсь объяснить основные этапы построения векторных представлений, что называется "на пальцах".

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

1. Skip-gram и его адаптация под графы (word2veс, LINE, DeepWalk);

2. общие понятия о графах знаний.

Поехали!

Архитектура и решения безопасности в облаке часть 2

Время на прочтение5 мин
Охват и читатели2.6K

В первой части статьи мы обсудили стоп-факторы, которые блокировали возможность встраивания методологии CI/CD в процесс облачной разработки, а также способы, которыми они были устранены. Возможность безопасного и прозрачного управления Группами Безопасности командами разработки и используемые решения для осуществления контролей ИБ из библиотеки безопасности.

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

Читать далее

Парсинг дат в JS — добавляем русский язык в библиотеку Chrono

Время на прочтение3 мин
Охват и читатели6.9K

Crono это парсер дат на естественном языке. Кроме формальных ISO 8601 или dd.MM.yyyy, распознает варианты а-ля «в среду утром‎», «с 10 до 11 вечера», «2 часа 5 минут назад» и т.п. Поддерживает 8 языков, в том числе, теперь, и русский.

Читать далее

Зачем Clojure Flutter

Время на прочтение13 мин
Охват и читатели9.1K

”Если вам нравятся Руби, Свифт, Дарт, Эликсир, Эльм, С++, Питон или даже С, используйте их ради бога. Но выучите Кложур, и выучите его хорошо” — Дядя Боб (твит, а также твиты: 1, 2, 3).

Статей о Clojure написано много, цель этой — дать свое видение некоторых преимуществ языка для кросплатформенной разработки на Flutter. Ориентируюсь в первую очередь на dart-разработчиков, но статья может быть интересна всем, кто работает с Clojure и/или Flutter.

Читать далее

Особенности реализации STL в Clang, GCC и Microsoft С++

Время на прочтение21 мин
Охват и читатели23K

Любая программа состоит из данных и алгоритмов их обработки. Для написания программ на C++ в начале 90-х годов прошлого века Александр Степанов с коллегами разработал библиотеку STL. Я, Михаил Полукаров из команды разработки VK Teams, заглянул под капот этой библиотеки чтобы разобраться, как правильно ей пользоваться, в каких случаях лучше использовать другие библиотеки, а в каких стоит написать что-то своё. 

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

Читать далее

Kotlin Symbol Processing. От теории до практики

Уровень сложностиСредний
Время на прочтение28 мин
Охват и читатели18K

Я расскажу в этой статье о Kotlin Symbol Processing, также известном как KSP.

Сначала обсудим теоретические основы работы KSP, после, конечно же, перейдём к практике. На примере небольшой задачи, подобной той, что мы решаем с помощью KSP в нашей компании, покажу, как анализировать код с помощью KSP, генерировать файлы, соблюдать контракты, описанные разработчиками KSP. 

Читать далее

Цифровой рентген: реверсировал, реверсировал, да и выреверсировал

Время на прочтение4 мин
Охват и читатели10K

Весной 2022 о заморозке своей деятельности на территории РФ заявили основные мировые производители программного обеспечения для компьютерной томографии (КТ). От "хорошей" жизни нам пришлось запустить проект разработки собственного КТ‑реконструктора совместно с командой Unicore Solutions.

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

Читать далее

Величайшие программисты 21 века. Джон-Движок Кармак

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели59K

Джон Кармак вместе с тёзкой Джоном Ромеро стали родоначальниками игрового жанра FPS. На слабеньких 486SX, без видеокарт (!) они выдали настоящий 3D-шутер без лагов с эффектом присутствия, что стало бомбой для 1993 года — в эпоху пошаговых стратегий и отсутствия скроллинга. Казалось, тут вмешалась чёрная магия…

В принципе, примерно так и есть. В разработке Wolfenstein 3D, Doom и движка Quake Джон Кармак действительно использовал кучу нестандартных приёмов вроде конверсии указателей или выхода за границы объектов, чтобы в циклах получать доступ к другому объекту, который гарантированно идёт следом.

Уровень программирования Doom и Quake до сих пор считается непревзойдённым образцом хакерских оптимизаций, а сам Джон Кармак — эталон сверхэффективного разработчика. Благодаря высочайшему качеству программирования Doom стал феноменом, который изменил мир.
Читать дальше →

Как я запустил свою первую мобильную игру и провалился

Время на прочтение19 мин
Охват и читатели70K

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

Читать далее

Как я перешел из нефтянки в IT за 1 год

Время на прочтение19 мин
Охват и читатели50K

Меня зовут Багрянцев Максим, бывший сотрудник компании Роснефть, в настоящее время являюсь frontend developer в компании Mechanica.

Привет, Хабр! Хочу поделиться своим жизненным опытом с теми людьми, кто еще сомневается идти ли в IT или оставить все как есть.

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

Я же когда принимал такое решение, то искал вдохновение и мотивацию в историях реальных людей и мне это очень сильно помогло. Поэтому желаю вам приятного прочтения данной статьи, а самое главное успехов в ваших начинаниях!

Читать далее