Как стать автором
Обновить
54.71
Рейтинг
Wunder Fund
Мы занимаемся высокочастотной торговлей на бирже
Сначала показывать

Обучение с подкреплением: математический аппарат

Блог компании Wunder Fund Программирование *Алгоритмы *Машинное обучение *
Перевод

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

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 2.3K
Комментарии 0

Ищем аномалии: доход, отношения и 10х-программисты

Блог компании Wunder Fund Программирование *Алгоритмы *Статистика в IT
Перевод

Вскоре после того как я, в сентябре 2013, начал вести блог (мне, студенту, тогда больше нечем было заняться), я поставил перед собой цель — писать по статье в неделю. В результате — со дня рождения моего блога и до того момента, когда я начал работать в Wave (тогда мне уже было чем заняться, в результате посты я выкладывал гораздо реже), я опубликовал примерно 150 материалов.

Результаты публикации этих 150 статей оказались очень и очень разными:

— Два поста оказались крайне успешными, добрались до главной страницы Hacker News (первый — о том, что произошло со всеми непрограммистами, второй — о читабельности, хакабельности и абстрагировании кода).

Дэн Луу, после того, как увидел второй из вышеупомянутых постов, подписался на мой блог и начал слать на Hacker News многие мои материалы. В результате ещё штук 5 статей стали довольно-таки популярными. Это привело к приходу в мой блог первой волны подписчиков, с которыми я не знаком лично. Плюс — это дало мне серьёзную мотивацию писать дальше. Я и Дэн, в итоге, стали хорошими друзьями.

— Примерно 95% оставшихся постов получились совершенно непримечательными.

Это — очень типичный разброс результатов публикаций, на который могут рассчитывать блогеры: несколько «хитов» и куча «хлама». Через восемь лет я развил достаточно хорошее чутьё на то, какой пост найдёт отклик у читателей. В результате я смог почти полностью уйти от написания совершенного «хлама». Но, даже учитывая это, несколько моих лучших недавних постов (этот и этот) оказались гораздо успешнее других. Речь идёт о том, что многие делились с другими ссылками на них, и о комментариях к ним, вроде «то, что я узнал, сильно на меня повлияло».

Читать далее
Всего голосов 27: ↑25 и ↓2 +23
Просмотры 5.8K
Комментарии 1

Обучение с подкреплением: неформальное знакомство

Блог компании Wunder Fund Программирование *Алгоритмы *Машинное обучение *Искусственный интеллект
Перевод

Обучение с подкреплением (Reinforcement learning, RL) сыграло ключевую роль в стремительном развитии технологий искусственного интеллекта, которое можно было наблюдать в последнее десятилетие. В этом материале мы простыми словами расскажем о том, что такое обучение с подкреплением, поговорим о том, почему оно важно не только как объект исследований, но и как инструмент, который находит множество самых разных вариантов практического применения.

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Просмотры 2.6K
Комментарии 0

Распределённая настройка гиперпараметров с помощью Ray Tune

Блог компании Wunder Fund Python *Программирование *Машинное обучение *
Перевод

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

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 818
Комментарии 0

Развёртывание XGBoost-моделей с помощью Ray Serve

Блог компании Wunder Fund Python *Программирование *Машинное обучение *
Перевод

XGBoost — это оптимизированная библиотека, реализующая алгоритм градиентного бустинга. Эта библиотека спроектирована с прицелом на высокую продуктивность и гибкость, в ней используется параллельная работа с древовидными структурами, что позволяет быстро и эффективно решать различные задачи из сфер Data Science и Machine Learning. В предыдущем материале мы исследовали три подхода к ускорению обучения XGBoost-моделей.

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 810
Комментарии 0

Три подхода к ускорению обучения XGBoost-моделей

Блог компании Wunder Fund Python *Программирование *Машинное обучение *
Перевод

Фреймворк XGBoost (Extreme Gradient Boosting, экстремальный градиентный бустинг) — это эффективная опенсорсная реализация алгоритма градиентного бустинга. Этот фреймворк отличается высокой скоростью работы, а модели, построенные на его основе, обладают хорошей производительностью. Поэтому он пользуется популярностью при решении задач классификации и регрессии с использованием табличных наборов данных. Но процесс обучения XGBoost-моделей может занять много времени.

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 1.4K
Комментарии 1

Распределённое глубокое обучение: параллелизм моделей и данных в TensorFlow

Блог компании Wunder Fund Python *Машинное обучение *TensorFlow *
Перевод

Значительное количество задач, предусматривающих обучение глубоких нейронных сетей, можно решить на отдельном компьютере, обладающем единственным, сравнительно мощным и быстрым GPU. Но бывает так, что нужно что-то помощнее. Например — данные могут просто не поместиться в память, доступную на отдельной машине. Или окажется, что имеющееся «железо» просто не «потянет» некую задачу. В результате может возникнуть необходимость в горизонтальном масштабировании вычислительных мощностей.

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

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

Эта публикация входит в серию материалов о глубоком обучении. В предыдущих статьях шла речь о создании собственного цикла обучения для задачи по сегментации изображений с помощью U-net. Мы развернули модель в Google Cloud для того чтобы получить возможность удалённого запуска обучения. Здесь я буду использовать тот же код.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 1.8K
Комментарии 1

Автоматическая суммаризация текстов с помощью трансформеров Hugging Face. Часть 2

Блог компании Wunder Fund Python *Машинное обучение *
Перевод

Перед вами вторая часть из серии материалов, состоящей из двух публикаций. Здесь я предлагаю практическое руководство по архитектуре ML-проекта, освоение которого позволит вам оценить качество автоматического реферирования (суммаризации) текстов в той области, в которой вы работаете.

Для того чтобы ознакомиться с начальными сведениями о реферировании текстов, чтобы почитать обзор этого руководства, узнать, из раздела 1, о том, что является точкой отсчёта для оценки эффективности моделей — обратитесь к первому материалу.

Сегодняшняя публикация состоит из трёх частей, представленных, с применением сквозной нумерации, 2, 3 и 4 разделами. Здесь мы, соответственно, поговорим о реферировании без подготовки (с использованием предварительно обученной модели), об обучении предварительно обученной модели на нашем наборе данных, об оценке эффективности обученной модели.

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 1.7K
Комментарии 0

Автоматическая суммаризация текстов с помощью трансформеров Hugging Face. Часть 1

Блог компании Wunder Fund Python *Машинное обучение *
Перевод

В июле 2020 года компания OpenAI выпустила свою модель машинного обучения третьего поколения, GPT-3, ориентированную на генерирование текстов. Тогда я понял, что мир уже не будет прежним. Эта модель задела меня за живое. Те системы такого рода, что выходили раньше, у меня подобных ощущений не вызывали. И вот ещё неожиданность — о новой системе начали говорить мои друзья и коллеги, в принципе интересующиеся технологиями, но не особенно обращающие внимание на последние достижения машинного обучения (Machine Learning, ML) и искусственного интеллекта (Artificial Intelligence, AI). Об этом написала даже газета Guardian. А если точнее — статью написала сама модель, а в Guardian её лишь отредактировали и опубликовали. Совершенно очевидно то, что выход модели GPT-3 стал поворотным моментом в развитии искусственного интеллекта.

Сразу же после выхода модели начали появляться идеи по поводу вариантов её применения. В течение нескольких недель было создано множество впечатляющих демонстрационных проектов, которые можно найти на сайте GPT-3. Моё внимание привлёк один из способов применения GPT-3 — автоматическое реферирование текстов (text summarization): компьютер читает переданный ему текст и выдаёт краткое изложение этого текста. Это — одна из самых сложных задач, с которыми приходится сталкиваться компьютерам. Дело в том, что она совмещает в себе два навыка из сферы обработки естественных языков (Natural Language Processing, NLP). Это — понимание читаемых текстов и возможность писать тексты самостоятельно. Именно поэтому меня так впечатлили примеры использования GPT-3, демонстрирующие возможности системы по генерированию текстов.

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 2.4K
Комментарии 1

Алгоритм FSDP: ускорение обучения ИИ-моделей и сокращение количества GPU

Блог компании Wunder Fund Программирование *Машинное обучение *Искусственный интеллект
Перевод

Прим. Wunder Fund: В статье описан относительно новый подход к ускорению обучения больших моделей. Сами мы его не применяем, но над скоростью обучения моделей работаем постоянно, и если вам интересна эта тема, будем рады с вами пообщаться)

Обучение крупномасштабных ИИ-моделей — это не так уж и просто. Помимо того, что для этого нужны серьёзные вычислительные мощности и ресурсы, задачи обучения очень больших моделей сопряжены с немалыми технологическими сложностями. Мы, в команде Facebook AI Research (FAIR), работаем над созданием инструментов и инфраструктурных решений, нацеленных на упрощение обучения больших моделей. Среди наших недавних проектов в этой области можно отметить модели с внутрислойным параллелизмоммодели с конвейерным параллелизмоммодели с шардингом состояния оптимизатора и данных, относящихся к вычислению градиентаархитектуру «смесь экспертов». Всё это — лишь часть нашей работы, направленной на то, чтобы сделать более эффективным обучение продвинутых ИИ-моделей для любого количества задач.

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 1.5K
Комментарии 0

Предотвращение троттлинга процессора в контейнеризованной среде

Блог компании Wunder Fund Программирование *Процессоры
Перевод

В Uber все рабочие нагрузки, хранящие состояние, запускают на единой контейнеризованной платформе. Аппаратной основой этой платформы является обширный парк серверов. Среди таких рабочих нагрузок можно отметить MySQL, Apache Cassandra, ElasticSearch, Apache Kafka, Apache HDFS, Redis, DocstoreSchemaless. Во многих случаях они совместно работают на одних и тех же физических хостах.

Речь идёт о 65000 таких хостов, о 2,4 миллионах процессорных ядер и о 200000 контейнеров. Мы постоянно боремся за повышение эффективности использования серверов, делая это ради снижения затрат на их поддержку. Это — важная задача, но до недавнего времени её достойному решению мешал троттлинг процессоров. Это явление указывало на то, что нашим программам выделялось недостаточно ресурсов.

Оказалось, что проблема заключалась в том, как именно ядро Linux распределяет процессорное время между процессами. В этом материале мы расскажем о переходе с квот CPU (квот на ресурсы процессора, CPU quotas) на механизм распределения процессов по процессорам и памяти (cpusets; эта технология ещё известна как CPU pinning — закрепление процессора). Такой переход позволил нам значительно снизить задержки в 99 перцентиле (P99) в обмен на небольшой рост задержек в 50 перцентиле (P50). Это, в свою очередь, позволило нам снизить уровень выделения процессорных ядер во всём нашем серверном парке на 11% благодаря уменьшению различий в требованиях к ресурсам.

Читать далее
Всего голосов 24: ↑24 и ↓0 +24
Просмотры 4.4K
Комментарии 9

Путь к пониманию декораторов в Python

Блог компании Wunder Fund Python *
Перевод

Прим. Wunder Fund: В этой статье разбираемся, что такое декораторы в Python, зачем они нужны, и в чем их прикол. Статья будет полезна начинающим разработчикам.

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

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Просмотры 19K
Комментарии 4

Профилирование Python-программ и анализ их производительности

Блог компании Wunder Fund Высокая производительность *Python *Клиентская оптимизация *
Перевод

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

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

Читать далее
Всего голосов 26: ↑25 и ↓1 +24
Просмотры 7.6K
Комментарии 0

Рисуем красивые трейсбеки, перехватывая исключения в Python

Блог компании Wunder Fund Разработка веб-сайтов *Python *
Перевод

Все мы тратим немало времени на отладку, копаясь в логах или читая трейсбеки (traceback, отчёты о трассировке стека). Любое из этих дел может оказаться сложным и длительным. Этот материал посвящён тому, как сделать трассировку стека и работу с исключениями как можно более простыми и эффективными.

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

Читать далее
Всего голосов 27: ↑27 и ↓0 +27
Просмотры 8.3K
Комментарии 1

Оптимизация использования памяти в Python-приложениях

Блог компании Wunder Fund Разработка веб-сайтов *Python *Клиентская оптимизация *
Перевод

Прим. Wunder Fund: мы занимаемся высокочастотной торговлей и это заставляет нас часто думать об оптимизации кода, но в основном, конечно, плюсового. В этой короткой статье описаны несколько подходов к оптимизации Python-программ по памяти. И хотя много проблем можно решить, просто докупив ещё памяти, но не все.

Когда заходит разговор об оптимизации производительности приложений, обычно основное внимание уделяют лишь скорости процессора и уровню его использования. Редко кого заботят соображения, касающиеся потребления памяти. Ну — до тех пор, пока программа не исчерпает доступную ей RAM. Обычно, оптимизируя работу с памятью, программы защищают от сбоев, вызываемых ошибками, связанными с нехваткой памяти. Но существует и множество других причин для того, чтобы попытаться ограничить потребление памяти приложением.

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

Читать далее
Всего голосов 29: ↑26 и ↓3 +23
Просмотры 9.2K
Комментарии 0

DeepETA: как Uber прогнозирует ETA с использованием глубокого обучения

Блог компании Wunder Fund Машинное обучение *
Перевод

Прим. Wunder Fund: В сегодняшней статье рассказываем, как Уберу удается точно предсказывать время прибытия такси или курьера. Мы нашли её очень увлекательной, как и несколько других статьей из технического блога Убера.

Волшебный клиентский опыт пользователей Uber зависит от точного прогнозирования ожидаемого времени прибытия (Estimated Time of Arrival, ETA) автомобиля. Мы используем ETA для расчёта тарифов, для оценки времени подачи автомобилей, для стыковки пассажиров и водителей, для планирования доставок и для многого другого. Традиционные системы маршрутизации вычисляют ETA путём разделения дорожной сети на маленькие сегменты, представленные взвешенными рёбрами графа. Эти системы используют алгоритмы поиска кратчайшего пути для нахождения наилучшего пути на графе и складывают веса для получения ETA. Но, как всем известно, карта — это не то же самое, что поверхность Земли: граф дорог — это всего лишь модель, она не способна идеально соответствовать реальности. Более того — мы можем не знать о том, какой именно маршрут к пункту назначения выберет конкретный пассажир или водитель. Обучая ML-модели (Machine Learning, машинное обучение) на базе прогнозов, построенных с применением графов дорог, применяя исторические данные в комбинации с данными, получаемыми в режиме реального времени, мы можем уточнить расчёт ETA, приблизить расчётные показатели к реальным.

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 2.1K
Комментарии 1

Фаззинг сокетов: Apache HTTP Server. Часть 3: результаты

Блог компании Wunder Fund Информационная безопасность *Серверная оптимизация *Серверное администрирование *Apache *
Перевод

Прим. Wunder Fund: наш СТО Эмиль по совместительству является известным white-hat хакером и специалистом по информационной безопасности, и эту статью он предложил как хорошее знакомство с фаззером afl и вообще с фаззингом как таковым.

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

Эта статья, третья и последняя, посвящена результатам моих исследований. Я расскажу тут об обнаруженных мной уязвимостях Apache.

Читать далее
Всего голосов 15: ↑14 и ↓1 +13
Просмотры 1.6K
Комментарии 1

Фаззинг сокетов: Apache HTTP Server. Часть 2: кастомные перехватчики

Блог компании Wunder Fund Информационная безопасность *Серверная оптимизация *Серверное администрирование *Apache *
Перевод

Прим. Wunder Fund: наш СТО Эмиль по совместительству является известным white-hat хакером и специалистом по информационной безопасности, и эту статью он предложил как хорошее знакомство с фаззером afl и вообще с фаззингом как таковым.

В первой статье из этой серии я рассказал о том, с чего стоит начать тому, кто хочет заняться фаззингом Apache HTTP Server. Там мы обсудили разработку кастомных мутаторов в AFL++, поговорили о том, как создать собственный вариант грамматики HTTP.

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

Читать далее
Всего голосов 21: ↑20 и ↓1 +19
Просмотры 1.9K
Комментарии 0

Фаззинг сокетов: Apache HTTP Server. Часть 1: мутации

Блог компании Wunder Fund Информационная безопасность *Серверная оптимизация *Серверное администрирование *Apache *
Перевод

Прим. Wunder Fund: наш СТО Эмиль по совместительству является известным white-hat хакером и специалистом по информационной безопасности, и эту статью он предложил как хорошее знакомство с фаззером afl и вообще с фаззингом как таковым.

Этот материал открывает серию из трёх статей (она продолжает материалы о фаззинге FTP-серверов и FreeRDP), посвящённых фаззинг-тестированию реализации протокола HTTP, представленной в Apache HTTP Server. Это — один из самых популярных веб-серверов и в представлении он не нуждается. Так, Apache HTTP — это один из первых HTTP-серверов, разработка которого началась в 1995 году. По состоянию на январь 2021 года под его управлением работали более чем 300000000 серверов, а значит — он использовался на 26% таких систем и занимал второе место по распространённости, немного уступая лишь Nginx (31%).

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

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 3.1K
Комментарии 1

GTD за 15 минут: прагматическое руководство

Блог компании Wunder Fund Управление проектами *GTD *Управление продуктом *
Перевод

GTD (Getting Things Done, Доведение дел до завершения) — это методика организации и отслеживания задач и проектов. Но эта методика, правда, ориентирована на нечто большее, чем только на «доведение дел до завершения». (Ей стоило бы называться «Доведение дел до завершения гораздо лучшим способом, чем просто позволяя чему-то идти своим чередом, что часто получается не так, чтобы очень уж хорошо»). Цель GTD — сделать так, чтобы человек полностью доверял бы системе сбора задач, идей и проектов. Это относится и к туманным задачам, вроде «сделать самое великое изобретение», и к конкретным делам, вроде «позвонить Аде 25 августа чтобы обсудить программу конференции». Речь идёт абсолютно обо всём!

Читать далее
Всего голосов 29: ↑27 и ↓2 +25
Просмотры 13K
Комментарии 12

Информация

Дата основания
Местоположение
Россия
Сайт
wunderfund.io
Численность
11–30 человек
Дата регистрации
Представитель
xopxe