Pull to refresh

Technotext

Как в Яндексе 16 человек управляют 1800 переговорками по всему миру

Reading time10 min
Views8.6K

Привет! Меня зовут Данила Елагин. Я — технический менеджер проектов и продуктов во внутреннем подразделении ИТ Яндекса. Мы занимаемся не только техподдержкой сотрудников, но и вместе со смежными подразделениями выстраиваем и обслуживаем ИТ‑инфраструктуру.

Некоторое время назад я перешёл в отдел продуктового развития и получил в качестве подшефного продукта внутренний сервис — Паспорт переговорных. Его основная задача — позволить нашей компактной команде ВКС легко и эффективно управлять огромным парком переговорных: от больших залов до кабин, рассчитанных на пару человек. Кстати, помимо переговорок в Room Passport «живут» кабинеты массажистов и врачей, коворкинговые столы и даже спортзалы. Всего получается 1800 помещений в 125 офисах в 12 странах.

Как мы управляемся с таким количеством переговорок? Все ответы под катом.

Читать далее

Размер имеет значение. Как Ozon автоматизировал измерение товаров на складах

Reading time16 min
Views11K

Сотрудники каждого склада, которые хотят выстроить логистические процессы оптимальным образом, должны знать фактические габариты и вес товаров, которые хранятся на его площадях. Совокупность габаритов и веса товара в Ozon называют объёмно-весовыми характеристиками (ОВХ). 

Мы разработали, собрали и интегрировали в операционные процессы складов Ozon устройства для измерения габаритов и веса товаров. Об этом мы писали ранее. Но к идее создания своего решения пришли не сразу.

Читать далее

VLM в Нейро: как мы создавали мультимодальную нейросеть для поиска по картинкам

Reading time11 min
Views16K

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

Меня зовут Роман Исаченко, я работаю в команде компьютерного зрения Яндекса. В этой статье я расскажу, что такое визуально‑текстовые мультимодальные модели (Visual Language Models или VLM), как у нас в Яндексе организован процесс их обучения и какая у них архитектура. Вы узнаете, как Нейро работал с картинками и текстами раньше, и что изменилось с появлением VLM.

Читать далее

Внутренняя кухня UEFI: что это такое и как мы готовим его в YADRO

Level of difficultyMedium
Reading time18 min
Views28K

Привет, Хабр. На связи Сергей Пушкарёв, я руковожу отделом разработки BIOS в YADRO. Расскажу об устройстве UEFI и его применении в компании. Мы разрабатываем и выпускаем разные аппаратные платформы: серверы, системы хранения данных, клиентское и телеком-оборудование. 

Один из «кирпичиков», который обеспечивает инициализацию и функционирование оборудования, — это BIOS (но правильнее говорить UEFI 🙂). В статье кратко разберем историю этой системы и ее современную реализацию — UEFI. Также поговорим о подходе к разработке и отладке этого ПО в YADRO.

Вы узнаете, зачем нам нужна «синяя коробка» Intel, как мы прошиваем BIOS и проводим диагностику «в полях».

Читать далее

2G и 4G с нами надолго: обзор основных архитектур сетей операторов связи

Level of difficultyMedium
Reading time9 min
Views17K

Привет, Хабр! На связи Михаил Бухтеев, ведущий технический менеджер продукта в YADRO. Я отвечаю за планирование функционала базовой станции LTE. В статье я расскажу об устройстве сетей сотовых операторов в России, которые обеспечивают работу более 260 млн активных SIM-карт. 

Мобильные сети — это не просто «связь», а сложная экосистема, которая помогает десяткам миллионов людей быть онлайн. 2G, 3G, 4G, а скоро и 5G — каждое поколение выполняет свою задачу. Давайте разберемся, как операторы управляют этим технологическим коктейлем, узнаем, почему 3G уходит в прошлое, а 2G остается с нами надолго. Также поговорим о преимуществах сетей пятого поколения. 

Читать далее

Как «обмануть» драйвер Linux в QEMU: создаем виртуального двойника Intel NTB Gen3

Level of difficultyHard
Reading time23 min
Views4.3K

Наша команда системного программирования YADRO продолжает работать с open-source эмулятором QEMU.  В этой статье я расскажу, как и зачем мы создали виртуального двойника Intel NTB Gen3.

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

Читать далее

Из студентов в инженеры: как перестать бояться и полюбить системную верификацию

Level of difficultyEasy
Reading time15 min
Views2.8K

Привет, Хабр! На связи Михаил Степанов, инженер в группе функциональной верификации YADRO. Еще в прошлом году мы с моим коллегой Романом Казаченко участвовали в хакатоне по разработке микропроцессоров как студенты, а сейчас — помогаем с задачами для SoC Design Challenge как сотрудники компании-организатора. В статье расскажем, что ждет участников трека «Системная верификация СнК» в этом году и как подготовиться к этому испытанию.

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

Читать далее

AWX: упрощаем работу с Ansible

Level of difficultyEasy
Reading time12 min
Views15K

Привет, на связи Ксения Кузьменко, DevOps-инженер департамента по организации выпуска продуктов YADRO. Наша DPS-команда предоставляет платформенные сервисы для 40+ команд и 1000+ пользователей внутри компании. Мы работаем с сотнями виртуальных машин в различных локациях. Каждый день прогоняем более 250 плейбуков, из них часть связаны между собой в сложные последовательности. Конечно, инструмент для упрощения работы с Ansible был в нашей дорожной карте еще на этапе планирования.

Почему мы выбрали AWX, какие задачи решили и приятные «плюшки» получили, я расскажу в статье. О некоторых подводных камнях — тоже. 

Нужен ли AWX в вашей команде? На этот вопрос вы ответите сами, прочитав текст под катом. Я максимально подробно описала наш опыт с Ansible AWX. Если появятся вопросы — пишите в комментариях, отвечу. 

Читать далее

Смарт-функции в Алисе: как LLM помогает понять, чего хочет пользователь

Reading time41 min
Views7.4K

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

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

Например, пользователь может сказать: «Алиса, выключи телевизор, когда закончится этот матч». До появления смарт‑функций Алиса ответила бы, что «этого пока не умеет», так как подобной задаче её не обучали. Теперь нейросеть сама разложит запрос на два действия — посмотрит, сколько осталось до конца, и поставит таймер выключения на это время. Или если в запросе будут разного типа задачи, например одна про контент, а другая — про звук, Алиса тоже разложит их на понятные для нее части и выполнит: «Алиса, включи первый фильм на громкости 20».

Дальше я расскажу, как мы это собираемся делать.

Читать далее

Как мы исследовали энергоэффективность инференса нейросетей на планшете

Reading time25 min
Views2.1K

Современные гаджеты невозможно представить без AI-функций. Но у них есть цена, которую приходится «платить» конечному потребителю, в том числе более быстрая трата батарейки и перегрев устройства. В итоге производители электроники сталкиваются с дилеммой: фичи нужны, их нужно много, но без значительного ущерба для батарейки.

Меня зовут Павел Буровский, я инженер-разработчик ПО искусственного интеллекта. Вместе с Яной Булиной, инженером отдела проектирования новых поколений технологического стека департамента ИИ в YADRO, мы измеряли энергоэффективность выполнения некоторых AI-функций планшета KVADRA. В статье расскажем, как организовали необходимые эксперименты, и покажем много графиков с результатами запусков на CPU, GPU и NPU.

Читать далее

Запускаем Embedded Linux на Hard- и Soft-CPU Xilinx Zynq: загружаем платформу и верифицируем проект

Level of difficultyHard
Reading time26 min
Views3.1K

Здравствуй, Хабр! На связи вновь Павел Панкратов — ведущий инженер-программист дивизиона искусственного интеллекта YADRO. Мы добрались до финала моего повествования о параллельном запуске двух операционных систем на FPGA с процессорной подсистемой.

В этой статье мы запустим подготовленный проект и верифицируем его. А в качестве бонуса посмотрим на один из способов разработки ПО под Soft-CPU, минуя IDE Vitis. Плюс загрузим ОС Soft-CPU с помощью QEMU.

Читать далее

В далекой-далекой Galaxy: как организовать общее пространство для Ansible-контента

Reading time17 min
Views4.8K

Привет! Меня зовут Павел, я DevOps-инженер в YADRO. Где бы я ни работал, я был девопсом и использовал Ansible — где-то активнее, где-то меньше. В YADRO с этим инструментом работают почти все департаменты — от enterprise, где разрабатывают серверы, СХД и другое оборудование, до телекома. 

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

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

Полетели

Математика матричных расширений: как происходит умножение матриц на примере T-Head Matrix Extension

Reading time13 min
Views9.3K

Привет, Хабр! Я Андрей Соколов, инженер-программист в группе разработки математических библиотек. Месяц назад моя коллега Валерия запустила цикл статей про матричные расширения, ускоряющие операции над матрицами. Вы уже смогли узнать, что они делают и какие существуют, какие из них разрабатываются для открытой архитектуры RISC-V.

В заключительной статье цикла разберем пример использования матричного расширения T-Head под RISC-V для реализации алгоритма матричного умножения. Сначала кратко рассмотрим наивную скалярную реализацию и блочный вариант алгоритма. Затем реализуем аналогичный вариант с использованием матричного расширения — как для квадратных матриц, так и матриц произвольного размера. Второй случай интересен тем, что возникает необходимость обработки так называемых «хвостов» — блоков неправильной конфигурации. В заключение немного расскажу, какие идеи можно использовать для дальнейшей оптимизации матричного умножения, и поделюсь полезными ссылками.

Статья не показывает пошаговую оптимизацию умножения матриц для достижения максимума FLOPS и не учит, как писать вычислительные ядра на ассемблере. Она демонстрирует использование матричного расширения и основные идеи оптимизации матричного умножения. Постарался описать все простыми словами, с иллюстрациями и небольшими вставками кода.

Читать далее

Опыт автоматизации управления FPGA-стендами для распределенной команды: отказ от готового решения и работа над ошибками

Level of difficultyEasy
Reading time14 min
Views3K

В software-разработке с автоматизацией обычно все неплохо: более-менее понятно, как настроить CI и автоматизировать отдельные этапы CI-конвейера. Есть множество готовых решений и практик. Но, когда речь заходит об автоматизации тестирования на «железе», появляется множество нюансов. Например, не всегда понятно как автоматизировать процессы, которые обычно делают люди, — банальную перезагрузку устройства в другом городе. Или другая особенность — целевые аппаратные ресурсы масштабируются не так хорошо, как софт, поэтому приходится придумывать свои подходы к распределению времени доступа к стенду для СI-конвейеров и инженеров.

Меня зовут Игорь Большевиков, я инженер по системному программированию систем на кристалле в YADRO В статье я расскажу о нашем опыте автоматизации процессов, связанных с разработкой на FPGA-стенде: удаленной загрузке плат, бронировании аппаратных ресурсов и решении вопросов по координации для распределенной команды. Я опишу ключевые этапы задачи без лишних технических деталей. Возможно, статья будет полезна тем, кто занимается или кому предстоит заняться автоматизацией работ с FPGA.

Читать далее

Ищем проблему с доставкой картинок с котиками на разных уровнях L3-коммутатора: от CLI до SDK

Level of difficultyHard
Reading time14 min
Views5.7K

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

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

Читать далее

Запускаем 8B LLM в браузере: AQLM.rs

Reading time4 min
Views16K

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

В этом посте я расскажу о своём пет‑проекте AQLM.rs. Я написал инференс модели Llama 3.1 8B, работающий в браузере на WebAssembly без использования GPU, с помощью алгоритма сжатия, разработанного нашей лабораторией.

Попробовать можно на сайте проекта, подробности под катом.

Читать далее

Знакомьтесь, «Незнакомое». Как мы сделали новый режим для Моей волны

Reading time8 min
Views8.5K

Привет! Меня зовут Савва Степурин, я старший разработчик в группе рекомендательных продуктов в Фантехе Яндекса. Сегодня расскажу вам про то, как мы сделали «Незнакомое» для Моей волны — специальный режим для активного поиска музыкальных открытий.

«Незнакомое» позволяет вам получать от Моей волны те треки, которые вы ещё не слушали (возможно, даже не знаете про их существование), но которые с большой долей вероятности могут попасть в ваши музыкальные предпочтения. Если Моя волна в чистом виде — это идеальный баланс между любимыми композициями и чем-то новым, то «Незнакомое» помогает выйти из музыкального информационного пузыря и послушать новые треки. 

Под катом — техническая эволюция «Незнакомого» от фильтра до отдельного продукта, описание новой модели ранжирования и многое другое.

Читать далее

Яндекс разработал и выложил в опенсорс YaFSDP — инструмент для ускорения обучения LLM и сокращения расходов на GPU

Reading time12 min
Views25K

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

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

Читать далее

Улучшение навигации и рост производительности: что изменилось в системе управления тестированием TestY 2.0

Reading time8 min
Views3.2K

Привет, Хабр! Меня зовут Александр Зырянов, я проектный менеджер TestY — тест-менеджмент системы с открытым исходным кодом, которую разрабатывают и поддерживают инженеры YADRO. Мы третий год работаем над системой и недавно выпустили в open source большое обновление TMS — Тesty 2.0

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

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

Читать далее

Три способа оптимизировать работу с памятью на Go с помощью memory pools

Reading time10 min
Views9.3K

Привет, Хабр! Меня зовут Александр Иванов, я разрабатываю средства управления сетевыми элементами сотовой связи и пишу на языке Go в YADRO. Однажды я работал над приложением, которое испытывало пиковые нагрузки каждые 10 минут, но выполнить обработку памяти быстро мешал Garbage Collector. Чтобы решить эту проблему, я изучил несколько способов реализации memory pool и провел испытания скорости работы. 

В этой статье расскажу, как уменьшить влияние GC на выполнение программы и покажу бенчмарки для разных memory pools. Объясню, какая из реализаций подойдет вашему проекту, а когда лучше не использовать memory pools и полагаться на встроенные механизмы рантайм-окружения Go.

Читать далее