Обновить
2
0
Садовников Антон Петрович @Siddthartha

Developer

Отправить сообщение

GEOINT: местонахождение главаря банды, разыскиваемого ФБР

Время на прочтение4 мин
Количество просмотров9.9K

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

На минуточку, за «голову» этого чувака была объявлена награда 2 млн долларов. Но вот как попался наш герой и причём тут геопространственная разведка, читайте под катом.

Читать далее

Портируем ML модели на Java с помощью ONNX

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.8K

Всем привет, меня зовут Евгений Мунин. Я Senior ML Engineer в Ad Tech, а точнее в программатик платформе по доставке Web рекламы.

Сегодня речь пойдет про то, как сделать ML модели, совместимыми с бэк э

Читать далее

Сборка Min.io dev кластера в контейнерах

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров11K

Сборка Min.io dev кластера в контейнерах с tls, site replication, nginx и мониторингом.

Статья представляет собой пошаговое руководство для разворачивания кластерного minio в контейнерах от bitnami. Доступ в кластер будет организован через nginx. Также рядом развернем однонодный minio. Объединим эти 2 minio с помощью site-replication. Создадим тестового пользователя, тестовую политику, тестовый бакет и попробуем с ним работать. Закончим настройкой мониторинга: дефолтные prometheus для сборки метрик и grafana для отрисовки дашбордов.

Читать далее

5 книг, которые стоит почитать начинающему ИТ-архитектору

Время на прочтение5 мин
Количество просмотров58K

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

Читать далее

Настраиваем approve rules для merge request в бесплатной версии GitLab CE

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров14K

Однажды к нам пришёл клиент с просьбой настроить approve rules для merge request в бесплатной версии GitLab CE. В статье я подробно расскажу, как мы подошли к решению этой задачи, какие проблемы нам пришлось преодолеть и каким образом мы смогли обеспечить соблюдение всех необходимых процессов проверки и апрувов без перехода на платную версию GitLab.

Давайте настраивать

Берём под контроль TODO-шки в коде php

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров2.6K

Проблема со сложностью управления TODO/FIXME комментариями в коде очень стара. Ей больше 50 лет. Дошло до того, что в некоторых проектах начали запрещать их со словами: “или исправь сразу или не создавай мусор”. Вот о том как можно автоматизировать управление ими и превратить из мусора в полезный инструмент мы и поговорим.

Читать далее

Вызов функций с помощью LLM

Время на прочтение14 мин
Количество просмотров10K

Всем привет, меня зовут Алан, я разработчик-исследователь из команды фундаментальных исследований MTS AI. Мы изучаем возможности генеративного ИИ, и видим, что большие языковые модели отлично справляются с различными текстовыми задачами, но мы можем расширить их функционал. Например, пока что LLM не может правильно посчитать логарифм, узнать погоду или какую-то другую информацию. Как решить эту задачу? Нужно научить модель пользоваться внешними инструментами/функциями. В этой статье мы поговорим о вызове функций с помощью больших языковых моделей, рассмотрим некоторые проприетарные и открытые модели, связанные исследования, а затем проведем небольшой эксперимент с отправкой электронной почты при помощи LLM.

Читать далее

Как настроить CI в мобильных приложениях

Время на прочтение5 мин
Количество просмотров4.2K

Приветствую! Меня зовут Алексей Денискин, я тимлид мобильной команды СберМаркета. В этой статье я на примере покажу, как организовать CI для мобильных приложений на Android и iOS. Я буду использовать GitLab CI, но описанный подход применим к большинству стандартных стеков.

Читать далее

Ещё раз про алгоритм сжатия Хаффмана

Уровень сложностиСложный
Время на прочтение21 мин
Количество просмотров22K

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

Читать далее

Работа с Kubernetes: поднимаем локальный кластер и деплоим в него приложения

Время на прочтение5 мин
Количество просмотров17K

Павел Агалецкий, ведущий разработчик юнита Platform as a Service Авито, написал, как поднять кластер Kubernetes на локальном компьютере Mac с помощью подручных инструментов, а потом задеплоить в него простейшие приложения.

Читать далее

Без компромиссов. Как добиться одновременно высокого качества в редактировании и инверсии изображений с помощью StyleGAN

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров2.4K

Всем привет! Меня зовут Денис Бобков, я сейчас обучаюсь на совместной магистерской программе ВШЭ и ШАД под названием «Современные компьютерные науки», а также работаю исследователем в AIRI в команде Controllable Generative AI лаборатории FusionBrain. Область моих исследований касается методов редактирования изображений.

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

Совсем недавно нашу статью приняли на одну из топ‑конференций по компьютерному зрению CVPR 2024 (эта конференция недавно стала самой цитируемой!). Наша статья про то, как можно редактировать лица в высоком качестве с помощью генеративной модели StyleGAN. Почитать её целиком можно на архиве, а здесь же я хотел кратко рассказать о том, что именно мы сделали.

Читать далее

Пишем поиск семантически похожих текстов (или товаров) за полчаса на Go и Postgres (pgVector)

Время на прочтение5 мин
Количество просмотров12K


Казалось бы, в посгресе и так есть неплохой полнотекстовый поиск (tsvector/tsquery), и вы из коробки можете проиндексировать ваши тексты, а потом поискать по ним. Но на самом деле это не совсем то, что нужно — такой поиск работает лишь по чётким совпадениям слов. Т.е. postgres не догадается, что "кошка гонится за мышью" — это довольно близко к "котёнок охотится на грызуна". Как же победить такую проблему?


TLDR:


  1. Преобразовываем наши тексты в наборы чисел (векторы) при помощи API openAI.
  2. Сохраняем векторы в базе с помощью pgvector.
  3. Легко ищем близкие друг к другу векторы или ищем их по вектору-запросу.
  4. Ускоряем индексами.
Читать дальше →

GPU-ускорение FFmpeg. Видите прибавку в скорости? И я нет. А она должна быть…

Время на прочтение10 мин
Количество просмотров13K

Привет, Хабр! С вами Матвей Мочалов, и сегодня у нас небольшая лабораторная работа. Вспомним, что GPU нужны не только для нейронок и AI — еще они могут ускорять много других полезных задач. А конкретно мы сравним разницу в скорости между работой FFmpeg на процессоре и на видеокарте Nvidia.

В ролях у нас гибридный ноутбук под Linux с мобильной видеокартой RTX 3050Ti и процессором Ryzen 5 5600H. Также в массовке участвует удалённый тестовый сервер с Xeon и заглушкой в PCI слот, которую дядя Дженсен Хуанг решил по доброте сердечной добавить в линейку Quadro.

Читать далее

Жизнь – боль: как одновременно поддерживать в Rust синхронный и асинхронный код

Время на прочтение13 мин
Количество просмотров4.6K

Присаживайтесь поудобнее и послушайте стариковскую байку: что случилось, когда я попросил у Rust слишком многого.

Допустим, вы хотите написать на Rust новую библиотеку. Всё, что для этого требуется — обернуть её в публичный API, через который будет предоставляться доступ к какому-то другому продукту, например, в Spotify API или, может быть, в API базы данных, скажем, ArangoDB. Не так это и тяжело: в конце концов, вы не изобретаете ничего нового, вам не приходится иметь дело со сложными алгоритмами. Поэтому вы полагаете, что задача решается относительно прямолинейно.  

Вы решаете реализовать библиотеку с применением async. Работа, которая будет выполняться с помощью вашей библиотеки, заключается в основном в выполнении HTTP-запросов, обслуживающих ввод/вывод, поэтому применять здесь async действительно целесообразно (кстати, это одна из тех фишек, благодаря которым сегодня так востребован Rust). Вы садитесь писать код — и вот, через несколько дней у вас готова версия v0.1.0. «Приятно», — думаете вы, как только cargo publish заканчивается успешно и загружает вашу работу на crates.io.

Проходит несколько дней, и вам прилетает новое уведомление с GitHub. Оказывается, кто-то открыл тему:

Читать далее

Непреодолимая легкость повышения утилизации GPU

Время на прочтение12 мин
Количество просмотров5.5K

Привет, Хабр! Я Антон, DevOps-инженер в Selectel. В апреле у нас проходил ML-митап, где я и мой коллега, ML-Ops инженер Ефим Головин, рассказали, как подбираем конфигурацию ML-инфраструктуры и повышаем утилизацию GPU. Запись нашего выступления можно посмотреть на YouTube. Материал вышел интересным, поэтому мы решили оформить пересказ в текстовый формат.

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

Что находится внутри образов distroless-контейнеров

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров12K

Базовые distroless-образы GoogleContainerTools часто упоминаются как один из способов создания (более) маленьких, (более) быстрых и (более) безопасных контейнеров. Но что на самом деле они собой представляют? Зачем они нужны? В чем разница между контейнером, созданным на distroless-базе, и контейнером, созданным с нуля? Давайте разберёмся.

Читать далее

Учимся летать: симуляция эволюции на Rust. 4/5

Уровень сложностиСредний
Время на прочтение30 мин
Количество просмотров4K



Это предпоследняя часть серии статей по разработке симуляции эволюции с помощью нейронной сети и генетического алгоритма.






В сегодняшнем выпуске:


Сексуальные многоугольники





Сертифицированные ISO диаграммы ASCII


------------
| \...%....|
|   \......|
|    @>....|
|      \...|
|        \.|
------------

Клевые числа




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

Собираем docker и деплоим из GitHub Actions

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров11K

Я приведу краткую инструкцию, как быстро собирать проект и деплоить docker. Флоу будет очень простым: одним job мы собираем образ (с указанием тэга или ветки) и кладем в приватный репозиторий образов GitHub, а другим - job деплоим оттуда. Это удобно, когда есть несколько сред и мы один раз собираем и контейнер запускаем из него с разными переменными среды.

Начнем

Lock-free структуры данных в Rust

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров5K

Сегодня поговорим о lock-free (или же без использования блокировок) структурах данных и атомарных операциях в Rust.

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

lock-free структуры данных позволяют нескольким потокам одновременно читать и изменять данные без блокировок.

Читать далее

Создание парсеров на Rust

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров6.2K

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

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

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

А именно - о двух библиотеках, которые позволяют это сделать. Начнем с первой под названием nom.

Читать далее

Информация

В рейтинге
Не участвует
Откуда
Луганск, Луганская обл., Украина
Дата рождения
Зарегистрирован
Активность

Специализация

Специалист
Ведущий
От 10 800 $
PHP
ООП
Docker
Rust
Linux
Асинхронное программирование
MQTT
Геоинформационные системы
Машинное обучение
Computer Science