User
Attention is Not All You Need: как менялась архитектура трансформера
С момента выхода оригинальной статьи про трансформер прошло уже больше 7 лет, и эта архитектура перевернула весь DL: начав с NLP архитектура теперь применяется везде, включая генерацию картинок. Но та ли это архитектура или уже нет? В этой статье я хотел сделать краткий обзор основных изменений, которые используются в текущих версиях моделей Mistral, Llama и им подобным.
Преобразование Уолша-Адамара
На сайте hackerrank.com есть отличная задача. По заданному массиву short[] A;
найти максимальное количество его подмассивов, xor
элементов которых будет одинаковым. Сам этот xor
тоже нужно найти.
Максимальная длина массива равна 105, так что квадратичный алгоритм не укладывается в лимит по времени исполнения. Я в своё время с этой задачей не справился и сдался, решив подсмотреть авторское решение. И в этот момент я понял почему не справился — автор предлагал решать задачу через дискретное преобразование Фурье.
Quantization Deep Dive, или Введение в современную квантизацию
Привет! Меня зовут Василий Землянов, я занимаюсь разработкой ML-инфраструктуры. Несколько лет я проработал в команде, которая делает споттер — специальную маленькую нейросетевую модельку, которая живёт в умных колонках Яндекса и ждёт от пользователя слова «Алиса». Одной из моих задач в этой команде была квантизация моделей. На пользовательских устройствах мало ресурсов, и мы решили, что за счёт квантизации сможем их сэкономить — так в итоге и вышло.
Потом я перешёл в команду YandexGPT. Вместо маленьких моделей я стал работать с очень крупными. Мне стало интересно, как устроена квантизация больших языковых моделей (LLM). Ещё меня очень впечатляли истории, где люди берут гигантские нейросети, квантизируют в 4 бита и умудряются запускать их на ноутбуках. Я решил разобраться, как это делается, и собрал материал на доклад для коллег и друзей. А потом пришла мысль поделиться знаниями с более широкой аудиторией, оформив их в статью. Так я и оказался на Хабре :)
Надеюсь, погружение в тему квантизации будет интересно как специалистам, так и энтузиастам в сфере обучения нейросетей. Я постарался написать статью, которую хотел бы прочитать сам, когда только начинал изучать, как заставить модели работать эффективнее. В ней мы подробно разберём, зачем нужна квантизация и в какой момент лучше всего квантизовать модель, а ещё рассмотрим разные типы данных и современные методы квантизации.
Трансформеры, группы преобразований и self-attention
В подвижном мире развивающихся нейросетевых архитектур главную роль играет эффективность работы моделей. Тонкая настройка сетей под конкретные задачи предусматривает интеграцию в них априорных знаний. Делается это посредством стратегических корректировок архитектур сетей. Это — процедура, выходящая за рамки подстройки параметров. Речь идёт о внедрении в нейросеть информации, которая позволит сети понять то, что нужно её создателю. Один из способов это сделать заключается в использовании априорных знаний геометрического характера. Именно этому и посвящена данная статья.
Книги, о которых редко говорят
Дал ему подборку книг, он приходит месяца через два, и с порога такой сразу:
— Я с друзьями не могу разговаривать.
— Ну да есть такой, недостаточек.
интервью Жака Фреско
Разработка тензорного компилятора под RISC-V CPU с помощью OpenVINO и MLIR
Привет, Хабр! Меня зовут Владислав Виноградов, я инженер группы исследований и разработки ПО глубокого обучения в YADRO. Моя команда создает и оптимизирует связанное с искусственным интеллектом программное обеспечение. Сегодня я расскажу, как можно разработать тензорный компилятор для процессора на базе открытой архитектуры RISC-V.
Подход сочетает в себе автоматическую кодогенерацию и использование ручных оптимизаций. Это позволяет существенно экономить ресурсы команды для работы над наиболее вычислительно трудоемкими операциями, которые реализуются средствами внешних библиотек. Статья будет полезна, если вы ищете инструменты реализации оптимизирующих компиляторов для эффективного исполнения моделей глубокого обучения или вам интересно посмотреть на пример использования MLIR.
Функциональное программирование в Python: ежедневные рецепты
В своей команде — команде разработки инструментов для разработчиков под KasperskyOS — мы создаем разные интересные консольные утилиты, эмулятор, обеспечиваем интеграцию с IDE и так далее. И для этого мы используем разные языки — C++, C, TypeScript; но больше всего пишем на Python.
В этой статье, которая написана по следам моего выступления на конференции PiterPy, я обращаюсь к практикующим разработчикам — расскажу о том, какие функциональные приемы можно использовать в этом языке. Сконцентрируюсь на практике — на тех примерах, которые можно использовать уже буквально сейчас, не переписывая свой проект.
Футбольная аналитика: что поменялось за 2 года
Принцип такой:
- Берём кадр видео и Ёлу, она размечает все объекты (игроков, зрителей, мяч, ворота и так далее), затем мы отсеиваем птичек, зрителей и судей и оставляем только значимые объекты.
- Делаем так для каждого кадра видео.
- Затем привязываем координаты игроков к плоскости поля и получаем положение каждого объекта с точностью до 0,5 метра.
- Пытаемся связать игрока из первого кадра с максимально близким (или похожим) объектом во втором кадре и так далее, то есть оттрекать каждого конкретного человека, чтобы можно было видеть их движение по полю весь матч.
- Пытаемся понять, что с мячом: кто-то им владеет, он летит и где он вообще.
То есть сначала у нас есть группа разрозненных объектов, потом каждый из них приобретает траекторию, потом, когда есть траектории, на них появляются события вроде «получил мяч», «отдал пас» и так далее.
Чтобы вы понимали глубину проблемы, покажу вот этого архангела:
Вокруг него не святая аура, а футболист другой команды. И нужно как-то это понять.
Давайте сначала перечислю проблемы, а потом расскажу, что мы с этим делали (или не делали).
Теория типов
Мы так привыкли к типам, что редко задаёмся вопросом, что же они такое на самом деле? А главное - почему возникла необходимость в их использовании? Этот поверхностный обзор сделан для того, чтобы продемонстрировать, как типы и другие связанные абстракции являются следствием из обобщения условий различных задач.
Python декораторы на максималках. Универсальный рецепт по написанию и аннотированию от мала до велика
Декорирование функций - это, наверное, самая сложная среди базовых и самая простая среди продвинутых фич языка Python. С декораторами, наверное, знакомы все джуны (хотя бы в рамках подготовки к собеседованиям). Однако, крайне мало разработчиков пишут их правильно. Особенно принимая во внимания тенденции последних нескольких лет к аннотированию всего и вся. Даже популярные open-source проекты (если основная часть их кода была написана до 2018 года) вряд ли дадут вам примеры декораторов, отвечающих всем современным требованиям к коду.
Так давайте разбираться!
Материал полностью написан на основе моего опыта по работе над OSS проектами, поэтому в нем вы найдете примеры достаточно сложных кейсов, которые никогда не рассматриваются в других подобных гайдах. В то же время я постарался подвести к ним максимально "мягко", чтобы было понятно даже начинающим питонистам.
В рамках статьи мы разберемся с декорированием функций в Python от простого к самому сложному. Рассмотрим, как их правильно писать и аннотировать, чтобы другие потребители вашего кода не страдали от близкого знакомства с ним. Уверен, что даже если вы чрезвычайно опытный разработчик, вы найдете для себя полезные советы (хотя и можете пропустить солидную часть материала).
Свободный интернет, или как мы реализовали бесплатный VPN в России
В современном мире интернет стал неотъемлемой частью нашей жизни. Многие люди используют сеть для поиска информации, общения, онлайн-покупок и многого другого. Однако, в некоторых странах доступ к определенным сайтам и сервисам может быть ограничен правительством. В России также существуют ряд ограничений в сети. Эти ограничения могут ограничивать свободу выражения, а также ограничивать доступ к информации, которая может быть важной для многих людей.
В связи с этим, VPN (виртуальная частная сеть) становится все более популярным инструментом, который позволяет обходить ограничения в интернете и обеспечивать безопасность в сети. Однако, многие VPN-сервисы могут быть дорогими и не доступны для всех.
В этой статье мы представляем наше открытие бесплатного VPN на основе протокола Wireguard для пользователей в России. Мы рассмотрим причины, почему в России необходим VPN, почему мы решили сделать его бесплатным, а также критерии выбора программного обеспечения, почему мы выбрали именно Wireguard. Мы также представим пример реализации выдачи ключей Wireguard с помощью телеграм бота на PHP.
Мы надеемся, что наше открытие будет полезным для многих людей в России, которые ищут свободный и безопасный доступ к интернету.
Важно отметить, что мы не призываем никого нарушать законодательство России или любой другой страны. Наш бесплатный VPN‑сервис предназначен для того, чтобы обеспечить пользователям безопасное и защищенное подключение к интернету в соответствии с законами и правилами России.
Мы не поддерживаем использование VPN для посещения экстремистских ресурсов или запрещенных в РФ веб-сайтов, и не рекомендуем это. Наш сервис предназначен для тех, кто ищет безопасный и свободный доступ в интернет, соблюдая все законы и правила России.
Содержание статьи:
Всё, что вам нужно — это внимание (часть 1)
Примечание переводчика: Недавно на Хабре мы рассказывали о статьях, которые нужно прочитать, если вы хотите заниматься искусственным интеллектом. Среди них была культовая статья Attention is all you need, выпущенная в 2017 году. С неё началось развитие больших языковых моделей, в том числе всем известного чат-бота ChatGPT. Оказалось, что у такой важной статьи нет перевода на русский язык. Мы решили исправить это. Ниже вы найдёте перевод первой части статьи, вторая часть доступна по ссылке.
Краткое содержание
Наиболее распространённые модели преобразования последовательностей основаны на сложных рекуррентных или свёрточных нейронных сетях, которые включают энкодер и декодер. В самых успешных моделях энкодер и декодер соединяются с помощью механизма внимания. В статье авторы предлагают новую простую архитектуру нейронных сетей — Трансформер. Он основан исключительно на механизмах внимания, без рекуррентности или свёрток. Эксперименты на двух задачах машинного перевода показали лучшее качество, а также больше возможностей к распараллеливанию и меньшие временные затраты на обучение. Модель достигает 28.4 по метрике BLEU на задаче перевода с английского на немецкий на данных WMT 2014, что превосходит предыдущий лучший результат на 2 пункта. На задаче перевода с английского на французский на данных WMT 2014 модель достигла наилучшего результата для решения, основанного на одной модели — 41.8 по метрике BLEU — после всего 3.5 дней обучения на 8 GPU, что составляет совсем небольшую часть тех вычислительных мощностей, которые были затрачены на обучение лучшей модели, известной из имеющихся публикаций. Авторы показывают, что Трансформер может также успешно применяться и в других задачах, таких как, например, синтаксический разбор предложений на английском языке с использованием как больших, так и весьма ограниченных наборов данных для обучения.
Neural Network Optimization: океан в капле
Всех приветствую, меня зовут Антон Рябых, работаю в Doubletapp. Вместе с коллегой Данилом Гальпериным мы написали статью про важный этап в процессе обучения нейронных сетей и получения необходимых нам результатов — оптимизацию модели. Зачем нужно оптимизировать модель, если и так все работает? Но как только вы начнете разворачивать модель на устройстве, которое будет ее обрабатывать, перед вами встанет множество проблем.
Более крупные модели занимают больше места для хранения, что затрудняет их распространение. Более крупные модели требуют больше времени для работы и могут потребовать более дорогого оборудования. Это особенно важно, если вы создаете модель для приложения, работающего в реальном времени.
Оптимизация моделей направлена на уменьшение размера моделей при минимизации потерь в точности и производительности.
Методы оптимизации
• Pruning — устранение части параметров нейронной сети.
• Quantization — уменьшение точности обрабатываемых типов данных.
• Knowledge distillation — обновление топологии исходной модели до более эффективной, с уменьшенным количеством параметров и более быстрым выполнением.
• Weight clustering — сокращение количества уникальных параметров в весах модели.
• OpenVino, TensorRT — фреймворки, с помощью которых можно оптимизировать модели.
5 полезных библиотек Python (с примерами)
Python остается топ 1 среди языков программирования по версии многих журналов и сайтов. Популярность языка и его большое сообщество привело к тому, что сейчас для Python существует огромное число библиотек. К сожалению, большая часть этих библиотек была создана энтузиастами и больше не поддерживается. Давайте посмотрим на 5 хороших развивающихся библиотек, которые могут помочь при решении практических задач.
Неравенство Белла
Меня искренне восхищает то, как Крис Бернхардт рассказывает про квантовые вычисления в своей книге. На мой дилетантантский взгляд, объяснение неравенства Белла в его исполнении – лучшее, что можно найти сейчас в интернете без доступа к телу кафедры квантовой физики. Я бы хотел пересказать его изложение, так что если вы уже читаете книгу – смело пропускайте эту статью.
Крипота: как истории ужаса стали частью интернет-культуры
Слендермен, Вайомингский инцидент, подвал мистера Медведя, русский эксперимент со сном, убийца Джефф, спелеолог Тед — тысячи их. Для интернет-культуры конца нулевых и начала десятых годов эти сюжеты и персонажи были так же важны, как рассказы про гроб на колёсиках, чёрную машину, китайский ковёр с мёртвым Мао Цзедуном и жвачки с лезвиями были значимы для советского городского фольклора. Да и сейчас у этих образов и историй хватает ценителей. Ну а количество фанарта и даже самодельных игр по мотивам сопоставимо с крупными популярными фандомами.
Почему страшные истории так «выстрелили» во времена бурного роста аудитории Интернета и «золотой век» становления интернет-культуры? И почему со временем классические форматы «крипоты» почти сошли на нет, уступив место фанарту, пародиям и мемам?
6 Python декораторов, которые значительно упростят ваш код
"Простое лучше сложного".
Лучшая функция Python, которая применяет эту философию из "дзен Python", - это декоратор.
Декораторы могут помочь вам писать меньше кода для реализации сложной логики и повторно использовать его повсюду.
Более того, существует множество замечательных встроенных декораторов Python, которые значительно облегчают нам жизнь, поскольку мы можем просто использовать одну строчку кода для добавления сложных функций к существующим функциям или классам.
Болтать не буду. Давайте посмотрим на отобранные мной 6 декораторов, которые покажут вам, насколько элегантен Python.
Графы в Python: введение и знакомство с лучшими библиотеками
Граф – это математическая структура данных, представляющая собой множество связанных элементов. Поскольку графы, по своей сути, являются очень гибкими и позволяют сохранять информацию в знакомой и удобной для восприятия форме, они всегда активно использовались в компьютерной науке и сфере технологий. С появлением же машинного и глубокого обучения, графы обрели ещё бо́льшую популярность, создав новое направление — машинное обучение на графах.
В этой статье я расскажу вам о наиболее полезных библиотеках Python, которые использовал для сетевого/графового анализа, визуализации и машинного обучения. Если говорить конкретнее, то это будут:
Трекинг множества объектов без разметки или как следить за пузырьками во время пенной флотации
Привет, Хабр! Меня зовут Клоков Алексей, сегодня поговорим об алгоритмах компьютерного зрения, обработке видеопотока и методах трекинга множества объектов без разметки (unsupervised multiple object tracking) на примере пузырьков. Методичка будет полезна как опытным специалистам, перед которыми стоит похожая задача, так и начинающим энтузиастам. На основе черновика этого текста и экспериментов получилось опубликовать научную статью в Journal of Mineral and Material Science.
В тексте вы найдете:
— описание домена данных и технологического процесса флотации;
— подход к cегментации множества подобных объектов;
— существующие методы трекинга без разметки;
— подход к одновременному сопровождению множества подобных объектов;
— сравнение качества работы алгоритмов и много демонстраций
Information
- Rating
- 3,129-th
- Registered
- Activity