Pull to refresh
2
0
Садовников Антон Петрович @Siddthartha

Developer

Send message

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

Level of difficultyEasy
Reading time18 min
Views8.7K

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

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

Читать далее

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

Reading time5 min
Views55K

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

Читать далее

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

Level of difficultyMedium
Reading time13 min
Views11K

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

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

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

Level of difficultyMedium
Reading time10 min
Views2.3K

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

Читать далее

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

Reading time14 min
Views8.3K

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

Читать далее

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

Reading time5 min
Views4.1K

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

Читать далее

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

Level of difficultyHard
Reading time21 min
Views21K

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

Читать далее

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

Reading time5 min
Views17K

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

Читать далее

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

Level of difficultyHard
Reading time12 min
Views2.3K

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

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

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

Читать далее

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

Reading time5 min
Views11K


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


TLDR:


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

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

Reading time10 min
Views12K

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

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

Читать далее

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

Reading time13 min
Views4.5K

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

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

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

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

Читать далее

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

Reading time12 min
Views5.3K

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

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

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

Level of difficultyEasy
Reading time13 min
Views11K

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

Читать далее

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

Level of difficultyMedium
Reading time30 min
Views3.9K



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






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


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





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


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

Клевые числа




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

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

Level of difficultyMedium
Reading time4 min
Views9K

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

Начнем

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

Level of difficultyEasy
Reading time6 min
Views4.8K

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time7 min
Views6.1K

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

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

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

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

Читать далее

Пайплайны в GitLab для микросервисов

Reading time10 min
Views19K

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

Начнем с основ на примере монолитного приложения, а потом усложним их микросервисами и постараемся избавиться от однотипного кода. А еще…
Читать дальше →

Нейросеть для генерации текста

Level of difficultyMedium
Reading time4 min
Views7K

Как я и ChatGPT писали текстовый генератор. Есть несколько изюминок

Модель нейросети больше, чем предложил чат-бот и она обучается нестандартным способом.

Читать далее

Information

Rating
Does not participate
Location
Луганск, Луганская обл., Украина
Date of birth
Registered
Activity

Specialization

Specialist
Lead
From 10,800 $
PHP
OOP
Docker
Rust
Linux
Asynchronous programming
MQTT
Geoinformation systems
Machine learning
Computer Science