Pull to refresh
11
0
Send message

Главные отличия PCA от UMAP и t-SNE

Level of difficultyMedium
Reading time10 min
Views4.5K

Здесь будет рассказано о главных отличиях самого старого и базового алгоритма снижения размерности - PCA от его популярных современных коллег - UMAP и t-SNE. Предполагается, что читатель уже предварительно что-то слышал про эти алгоритмы, поэтому подробного объяснения каждого из них в отдельности приведено не будет. Вместо этого будут объяснены самые важные для практики свойства этих алгоритмов и то, на какие связанные с ними подводные камни можно налететь при неосторожности. Все особенности будут описаны на примерах, с минимумом теории; те пытливые умы, что почувствуют в процессе чтения жажду математической строгости, смогут удовлетворить её в литературе, ссылки на которую будут даны по ходу дела и в конце статьи.

Читать далее
Total votes 37: ↑37 and ↓0+43
Comments12

Разворачиваем веб-приложение в Kubernetes с нуля

Level of difficultyEasy
Reading time31 min
Views35K

Современные веб-приложения, даже простые на вид, часто подразумевают нетривиальную архитектуру, состоящую из многих компонент. В статье «Делаем современное веб-приложение с нуля» я рассказал, как она может выглядеть, и собрал для демонстрации простейшую реализацию на стеке из нескольких популярных технологий. В неё вошёл бэкенд, фронтенд, воркер для асинхронных задач и аж два хранилища данных — MongoDB как основная база и Redis как очередь задач. В «Делаем поиск в веб-приложении с нуля» я показал, как можно добавить полнотекстовый поиск, и подключил третье хранилище — Elasticsearch.

Всё это время для простоты разработки и отладки компоненты приложения запускались локально через Docker Compose. Но как развернуть такое приложение в настоящем продакшн-окружении? Как обеспечить горизонтальное масштабирование? Как раскатывать новые релизы без простоя? 

В этой статье мы разберёмся, как разворачивать многокомпонентное веб-приложение в кластере Kubernetes на примере его локальной реализации — minikube. Мы поднимем виртуальный кластер прямо на рабочем ноутбуке, разберёмся с основными сущностями Kubernetes, запустим и соединим между собой компоненты демо-приложения и обсудим, какие ещё возможности Kubernetes пригодятся нам в суровом энтерпрайзе. Если вы занимаетесь разработкой и слышали о Kubernetes, но ещё не имели возможности пощупать его руками — добро пожаловать под кат!

Скорее к YAML-инженерии
Total votes 38: ↑38 and ↓0+38
Comments10

Запуск проекта в Kubernetes за 60 минут: инструменты, GitLab, Terraform

Reading time14 min
Views14K


Привет, Хабр! Меня зовут Илья Нырков, я архитектор в VK Cloud. В своей работе встречаюсь с желанием партнеров (это и крупный энтерпрайз, и различные стартапы) использовать Kubernetes, но их останавливает сложность поднятия, конфигурирования кластера, деплоя в нём приложений и построения CI/CD-процессов вокруг него. Я постараюсь показать на практическом примере, который вы можете повторить сами, как развернуть за сравнительно небольшое время полноценный CI/CD с рабочим приложением, доступным для внешних пользователей.
Читать дальше →
Total votes 30: ↑29 and ↓1+36
Comments0

Rust — это не «memory safe C»

Level of difficultyMedium
Reading time27 min
Views47K

TL;DR:
— в Rust намного больше достоинств, чем просто скорость и безопасность
— в Rust по умолчанию CDD (compiler-driven development, разработка через компилирование). Это как TDD, только CDD
— Rust — не сложный язык, особенно если не гнаться за максимальной производительностью

В этой статье я бы хотел рассказать:
— почему взгляд на Rust как на "memory safe C" очень сильно сужает область его возможного применения
— почему я смотрю на Rust как на очень удобный в разработке язык высокого уровня, которому просто случайно повезло оказаться невероятно быстрым
— почему разработка на Rust быстрее, чем многие думают
— почему Rust — это один из лучших языков общего назначения

Читать далее
Total votes 155: ↑149 and ↓6+168
Comments555

Как мы прогнозируем объемы грузоперевозок на основе машинного обучения, используя MLflow

Level of difficultyEasy
Reading time3 min
Views2.2K
Привет, коллеги! Меня зовут Александр Кузьмичев, и я ведущий специалист по анализу данных в Первой грузовой компании. Мы с коллегами разработали «Прогнозатор» — инструмент для оценки объемов грузоперевозок между ж/д станциями. В основе лежит открытая платформа MLflow, и сегодня я расскажу, чем она нам помогает.


Фотография Ainur Khakimov / Unsplash
Читать дальше →
Total votes 6: ↑4 and ↓2+5
Comments2

Quantization Deep Dive, или Введение в современную квантизацию

Level of difficultyMedium
Reading time16 min
Views14K

Привет! Меня зовут Василий Землянов, я занимаюсь разработкой ML-инфраструктуры. Несколько лет я проработал в команде, которая делает споттер — специальную маленькую нейросетевую модельку, которая живёт в умных колонках Яндекса и ждёт от пользователя слова «Алиса». Одной из моих задач в этой команде была квантизация моделей. На пользовательских устройствах мало ресурсов, и мы решили, что за счёт квантизации сможем их сэкономить — так в итоге и вышло.

Потом я перешёл в команду YandexGPT. Вместо маленьких моделей я стал работать с очень крупными. Мне стало интересно, как устроена квантизация больших языковых моделей (LLM). Ещё меня очень впечатляли истории, где люди берут гигантские нейросети, квантизируют в 4 бита и умудряются запускать их на ноутбуках. Я решил разобраться, как это делается, и собрал материал на доклад для коллег и друзей. А потом пришла мысль поделиться знаниями с более широкой аудиторией, оформив их в статью. Так я и оказался на Хабре :)

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

Читать далее
Total votes 66: ↑65 and ↓1+81
Comments13

Как я уронил прод на полтора часа (и при чем тут soft delete и partial index)

Reading time7 min
Views39K

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

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

Читать далее
Total votes 146: ↑142 and ↓4+165
Comments174

Настоящее предназначение OpenAI SORA: как и зачем симулировать «Матрицу» для ChatGPT

Level of difficultyMedium
Reading time41 min
Views95K

Ну что, уже успели прочитать восхищения небывалым качеством видео от нейросетки SORA у всех блогеров и новостных изданий? А теперь мы вам расскажем то, о чем не написал никто: чего на самом деле пытается добиться OpenAI с помощью этой модели, как связана генерация видео с самоездящими машинами и AGI, а также при чем здесь культовая «Матрица».

Войти в симуляцию →
Total votes 248: ↑244 and ↓4+281
Comments120

Иерархия ИИ-потребностей

Reading time6 min
Views2.2K


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

Команда VK Cloud перевела статью о том, как использовать ИИ и машинное обучение, чтобы лучше справляться с тем, что мы делаем.
Читать дальше →
Total votes 20: ↑16 and ↓4+21
Comments0

Магическое ускорение работы моделей с помощью дистилляции

Level of difficultyMedium
Reading time4 min
Views4.8K

Вы когда-нибудь задумывались о том, что у человеческого мозга есть ограниченная емкость и вы можете выучить этот чертов английский просто потому что в детстве запомнили слишком много покемонов? Или почему обучение с учителем гораздо эффективнее, чем самостоятельное?

Эти вопросы вполне применимы и в области машинного обучения. Для обучения модели диффузии требуется много данных и вычислительной мощности, а затем для создания изображений требуется значительное количество вычислений и серьезное оборудование. Исследователи (у которых обычно нет денег и на доширкак) задали очень хороший вопрос - можно ли достичь тех же результатов с меньшими усилиями?

Читать далее
Total votes 24: ↑24 and ↓0+24
Comments10

Data Version Control (DVC): версионирование данных и воспроизводимость экспериментов

Reading time8 min
Views30K
Эта статья — своеобразный мастер-класс «DVC для автоматизации ML экспериментов и версионирования данных», который прошел 18 июня на митапе ML REPA (Machine Learning REPA:
Reproducibility, Experiments and Pipelines Automation) на площадке нашего банка.

Тут я расскажу об особенностях внутренней работы DVC и способах применения его в проектах.

Примеры кода, используемые в статье доступны здесь. Код тестировался на MacOS и Linux (Ubuntu).

Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments1

[ТОП-28] Нейросети, боты и сайты, которые помогут раздеть девушку по фото

Reading time13 min
Views140K

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

Читать далее
Total votes 8: ↑6 and ↓2+4
Comments0

Использование Jupyter Notebook для разведочного анализа данных ⬝ Методические рекомендации

Level of difficultyEasy
Reading time19 min
Views11K

Блокноты Jupyter — это, уже довольно давно, один из самых неоднозначных инструментов в среде дата‑сайентистов. Одни яро критикуют Jupyter, другие горячо поддерживают этот проект. Но, тем не менее, многие согласятся с тем, что блокноты Jupyter, при правильном их использовании, могут быть очень ценным инструментом. Именно этому и посвящена данная статья — вторая в серии моих материалов про науку о данных и машинное обучение. Я поделюсь здесь методическими рекомендациями по использованию Jupyter Notebook для разведочного анализа данных.

Но для начала нам надо ответить на вопрос о том, почему блокноты Jupyter обосновались именно в научном сообществе. Когда тема Data Science была у всех на слуху, блокноты Jupyter ещё ничего из себя не представляли. До них у нас был IPython, интерактивная оболочка для Python, которую встраивали в различные IDE, вроде Spyder. Эти IDE пытались подражать работе RStudio или Matlab. Подобные инструменты получили широкое распространение среди исследователей.

В 2014 году из среды IPython вырос проект Jupyter. Масштабы его использования очень быстро стали просто огромными, чему, в основном, способствовали исследователи, которые перенесли в бизнес‑среду то, чем пользовались, занимаясь наукой. Но те подходы к использованию блокнотов, которые хороши для научных учреждений, не всегда нормально переносятся на анализ данных, проводимый в обычных организациях. Часто бывает так, что дата‑сайентистам, взятым на работу сразу после университета, очень сложно выдать то, что от них ожидают в бизнесе. Речь идёт о структуре аналитических разработок и об оформлении их результатов.

Читать далее
Total votes 12: ↑11 and ↓1+21
Comments0

Ускоряем анализ данных в 170 000 раз с помощью Python

Level of difficultyMedium
Reading time15 min
Views18K

В статье «Ускоряем анализ данных в 180 000 раз с помощью Rust» показано, как неоптимизированный код на Python, после переписывания и оптимизации на Rust, ускоряется в 180 000 раз. Автор отмечает: «есть множество способов сделать код на Python быстрее, но смысл этого поста не в том, чтобы сравнить высокооптимизированный Python с высокооптимизированным Rust. Смысл в том, чтобы сравнить "стандартный-Jupyter-notebook" Python с высокооптимизированным Rust».

Возникает вопрос: какого ускорения мы могли бы достичь, если бы остановились на Python?

Под катом разработчик Сидни Рэдклифф* проходит путь профилирования и итеративного ускорения кода на Python, чтобы выяснить это.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Total votes 51: ↑50 and ↓1+56
Comments3

О методах позиционного кодирования в Transformer

Level of difficultyHard
Reading time10 min
Views7.4K

Обзор методов кодирования позиций токенов в нейросетевых моделях Transformer с упором на обработку длинных текстов. Для тех, кто учит и использует LLM, и для всех интересующихся.

Читать далее
Total votes 24: ↑24 and ↓0+24
Comments11

«Божественная комедия», или Девять кругов прогнозирования промоспроса в «Магните»

Reading time27 min
Views8.6K

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

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

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments5

OpenConnect: недетектируемый VPN, который вам понравится

Level of difficultyMedium
Reading time15 min
Views229K

Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но мне нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.

Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но...

Читать далее
Total votes 273: ↑272 and ↓1+323
Comments342

Вкатываемся в Machine Learning с нуля за ноль рублей: что, где, в какой последовательности изучить

Level of difficultyEasy
Reading time26 min
Views174K

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

Читать далее
Total votes 129: ↑127 and ↓2+155
Comments49

50 оттенков Celery

Reading time18 min
Views57K
Вам сюда, если хотите знать, как приручить широкоизвестный в кругах Python-разработчиков фреймворк под названием Сelery. И даже, если в вашем проекте Celery уверенно выполняет базовые команды, то финтех опыт может открыть вам неизведанные стороны. Потому что финтех — это всегда Big Data, а с ней и необходимость фоновых задач, пакетной обработки, асинхронного API и т.д.


Прелесть рассказа Олега Чуркина про Celery на Moscow Python Conf ++ помимо подробных инструкций, как настроить Celery под нагрузку и как его мониторить, в том, что можно позаимствовать полезные наработки.


О спикере и проекте: Олег Чуркин (Bahusss) 8 лет разрабатывает Python-проекты разной сложности, работал в многих известных компаниях: Яндексе, Рамблере, РБК, Лаборатории Касперского. Сейчас техлид в финтех-старапе StatusMoney.
Total votes 36: ↑35 and ↓1+34
Comments7

Это база: нюансы работы с Redis. Часть 1

Level of difficultyMedium
Reading time15 min
Views35K

Привет! Меня зовут Петр и мы в компании Nixys очень любим Redis. Эта база используется, если не на каждом нашем проекте, то на подавляющем большинстве. Мы работали как с разными инсталляциями Redis, так и с разными версиями, вплоть до самых дремучих, вроде 2.2. Несмотря на то, что в Интернете очень много статей и докладов по этой БД, мы в своей практике достаточно часто встречаемся с непониманием некоторых основных концепций Redis и со стороны разработчиков, и со стороны системных администраторов.

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

Читать далее
Total votes 79: ↑79 and ↓0+79
Comments5
1
23 ...

Information

Rating
Does not participate
Registered
Activity

Specialization

ML Engineer