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

Developer

Send message

Объясняем простым языком, что такое трансформеры

Level of difficultyEasy
Reading time12 min
Views56K

Облако предлагает много возможностей для развития ИИ. С помощью облачных вычислений проще масштабировать ML-модели, повышать точность обучения и предоставлять данные удаленно пользователям. Однако масштабное развертывание ML-моделей требует понимания архитектуры нейронных сетей. 

Один из важнейших инструментов машинного обучения — трансформеры. Популярность трансформеров взлетела до небес в связи с появлением больших языковых моделей вроде ChatGPT, GPT-4 и LLama. Эти модели созданы на основе трансформерной архитектуры и демонстрируют отличную производительность в понимании и синтезе естественных языков. 

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

Читать далее

Практическое руководство по Rust. 3/4

Level of difficultyMedium
Reading time26 min
Views6.9K



Hello world!


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



Другой формат, который может показаться вам более удобным.


Руководство основано на Comprehensive Rust — руководстве по Rust от команды Android в Google и рассчитано на людей, которые уверенно владеют любым современным языком программирования. Еще раз: это руководство не рассчитано на тех, кто только начинает кодить 😉

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

Как за один pet-проект получить два диплома

Level of difficultyMedium
Reading time12 min
Views24K

Все же знают серию компьютерных футбольных симуляторов FIFA? Раньше я много играл в эту игру. Кто-то скажет, что это бесполезная трата времени, но я с этим не согласен. Эта игра вдохновила меня на разработку pet-проекта, который стал моим бакалаврским дипломом.

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

Читать далее

Оранжевый k8s кластер на ладони

Level of difficultyMedium
Reading time5 min
Views9.7K

Сначала у меня появилась Orange Pi Zero 2 W, на пробу. Под планируемые задачи она не подошла, но 4 ядра и 4G памяти и размеры понравилось. Так же понравился Type-C и WiFi из коробки. Потом я вспомнил что давно хотелось just for fun попробовать собрать кубер на одноплатниках, а такой объём памяти и ядер уже даже позволяет идее иметь некоторый смысл. При этом wifi позволяет сделать кластер максимально без проводным, а размер позволяет соорудить кубический куб на ладони. И сегодня идея материализовалась.

Читать далее

Как работает сеть в контейнерах: Docker Bridge с нуля

Level of difficultyMedium
Reading time21 min
Views62K

В этой статье мы собираемся разобраться со следующими вопросами:

* Как виртуализировать сетевые ресурсы, чтобы контейнеры думали, что у них есть отдельные сетевые среды?

* Как превратить контейнеры в дружелюбных соседей и научить общаться друг с другом?

* Как выйти во внешний мир (например, в Интернет) изнутри контейнера?

* Как связаться с контейнерами, работающими на хосте Linux, из внешнего мира?

* Как реализовать публикацию портов, подобную Docker?

Читать далее

Как выдавать бесплатные SSL сертификаты с помощью certbot, Nginx и Docker

Level of difficultyMedium
Reading time5 min
Views55K

Всем привет! Одна из моих рутинных задач - это подъем новых проектов и микросервисов в облаках. Для этого практически всегда нужны домены и поддомены с наличием SSL сертификата. У меня выработался подход, с помощью которого я автоматизировал процесс выдачи сертификатов с помощью certbot. О чём и хочу рассказать.

Читать далее

Большая шпаргалка по Rust. 2/2

Level of difficultyMedium
Reading time39 min
Views11K



Hello world!


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


Первая часть.


Другой формат, который может показаться вам более удобным.


Обратите внимание: шпаргалка рассчитана на людей, которые хорошо знают любой современный язык программирования, а не на тех, кто только начинает кодить 😉


Также настоятельно рекомендуется хотя бы по диагонали прочитать замечательный Учебник по Rust (на русском языке).

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

Клонирование голоса из музыки, удаление движимого текста из видео и новые фишки во второй части обновления Wunjo AI

Level of difficultyEasy
Reading time5 min
Views8K

Привет, Хабр! Наконец, после множества бессонных ночей, я завершил работу над второй частью обновления open-source проекта Wunjo AI и воплотил своё видение приложения. В этом обновлении основное внимание уделено звуку: улучшено клонирование голоса, извлечение вокала или мелодии из песен и повышение качества речи. Но это не все, также появились новые функции для работы с видео и создания дипфейков. Давайте рассмотрим все по порядку: начнем с звука и перейдем к видео и дипфейкам. В конце статьи вы найдете ролик, в котором объясняется работа с видео в приложении и функционирование нейронных сетей для создания дипфейков и не только.

Если вам интересно, вы можете прочитать предыдущие статьи на Хабре о создании дипфейков в Wunjo AI и функциях работы с дипфейками и изменениями видео с помощью текста.

Давайте начнем с звука. Одной из основных задач во второй части обновления была работа над звуком. Изначально в Wunjo AI использовалась адаптированная версия Real Time Voice Cloning, но подход был полностью переработан, что привело к улучшенной версии клонирования голоса. Теперь я использую кодировщик, обученный на аудиоматериале через Real Time Voice Cloning, в сочетании с HuBERT Soft. Этот метод позволяет точнее копировать скорость и тембр речи на этапе синтеза звука и перед работой вокодера. Кроме того, на основе исходного аудио, очищенного от шумов, определяется пол голоса (мужской или женский), а затем настройки вокодера подбираются в соответствии с типом голоса.

Однако эта статья сконцентрирована на более простых аспектах без технических деталей. Давайте взглянем на процесс клонирования голоса в Wunjo AI.

Посмотрим, что там внутри!

О точности вычислений: как не потерять данные в цифровом шуме

Reading time7 min
Views4K

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

Читать далее

Нейронные сети для планирования движения беспилотных автомобилей

Reading time16 min
Views19K

Планировщик движения беспилотного автомобиля — это алгоритм-помощник, который общается с другими участниками движения посредством манёвров. То есть он действует так, чтобы другим было понятно, куда поедет беспилотник, и сам по действиям других пытается определить, кто куда будет двигаться и почему.

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

Под катом — детальный разбор логики движения беспилотника, примеры свёрточных и трансформерных архитектур моделей для предсказания движения и много формул для расчёта вероятных траекторий других машин и пешеходов. А ещё я расскажу, в чём преимущества машинного обучения перед эвристиками и чем может помочь Reinforcement Learning.

Читать далее

Детекция дефектов дорожного покрытия без размеченных данных: Хакатон, LiDAR, RANSAC, ICP и 44 бесcонных часов

Level of difficultyMedium
Reading time14 min
Views6K

Здравствуйте, читатели Хабра! Решил активнее вкатываться в DS (хотя уже больше года в "теме" и даже нет ни одной публикации, ужас) и написать первую статью на Хабре.

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

Читать далее

Трансформером по A*, или как уменьшить число итераций самого известного алгоритма поиска пути

Level of difficultyMedium
Reading time24 min
Views8.4K

Привет! Меня зовут Константин Яковлев, я научный работник и вот уже более 15 лет я занимаюсь методами планирования траектории. Часто эта задача сводится к поиску пути на графе, для чего обычно используется алгоритм эвристического поиска A*. Этот алгоритм был предложен в 60-х годах XX века и с тех пор используется повсеместно. Скорее всего, юнит вашей любимой RTS бежит по карте с помощью той или иной вариации A*. Точно так же, под капотом беспилотного авто вы, наверняка, найдёте A*, хотя там, конечно, не только он.

A* — это хороший алгоритм, но его вычислительная эффективность сильно зависит от эвристической функции, которую должен задать разработчик. Основная проблема стандартных эвристик заключается в том, что они не учитывают расположение препятствий на карте и ведут поиск буквально напролом, тратя на это ресурсы (итерации поиска). Почему бы нам не воспользоваться современными нейросетями для решения этой проблемы, а именно попросить нейросеть посмотреть на карту и подсказать поиску как лучше обходить препятствия, чтобы быстрее (за меньшее число итераций) найти нужный путь?

Этот текст посвящен как самому алгоритму A*, так и попыткам повысить его эффективность с помощью методов искусственного интеллекта. Заодно я расскажу о том, какие новшества в этом направлении придумали мы с коллегами: научная статья на эту тему опубликована в сборнике конференции AAAI 2023.

Читать далее

Введение в трассировку лучей: простой метод создания 3D-изображений. Часть 3 — реализация алгоритма трассировки лучей

Reading time4 min
Views3.9K

Предыдущая глава

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

for (int j = 0; j < imageHeight; ++j) {
for (int i = 0; i < imageWidth; ++i) {
// вычисляем направление основного луча
Ray primRay;

...

Отрендерить статью

Идиоматический код на Rust для тех, кто перешел с других языков программирования

Level of difficultyMedium
Reading time6 min
Views22K

Привет, дорогие читатели! В предыдущей моей статье "Как легко перейти с Java на Rust" я делился с вами советами по переходу на Rust и уменьшению количества "потерянной крови" на этом пути. Но что делать дальше, когда вы уже перешли на Rust, и ваш код хотя бы компилируется и работает? Сегодня я хочу поделиться с вами некоторыми идеями о том, как писать идиоматический код на Rust, особенно если вы привыкли к другим языкам программирования.

Читать далее

Туториал: Todo веб-приложение на Internet Computer используя Rust и Create React App

Level of difficultyMedium
Reading time18 min
Views4.7K

В этом туториале мы подробно разберём, как именно происходит процесс разработки канистеров на Internet Computer. Мы пройдём полный путь от hello-world проекта, сгенерированного dfx автоматически до полноценного Todo-app с бекендом и фронтендом. Разберём какие файлы для чего нужны, какие команды использовать, как тестировать и дебажить приложение. Туториал расчитан на новичков в Internet Computer и блокчейн-сетях в целом, но мы ожидаем, что небольшой опыт Rust и React у читателя уже имеется. Полный код проекта из этого туториала можно найти здесь.

Читать далее

Простая нейронная сеть без библиотек и матриц. Обучение с учителем

Level of difficultyEasy
Reading time9 min
Views19K

Руководство? Гайд? В общем ремейк описания моего опыта создания простой, а главное понятной любому новичку нейросети :)

Дисклеймер: хочу сказать, что смысл этой статьи не в правильном способе создания нейросетей, таких статей сотни, а в способе понять, что такое нейросети и наконец перейти от теории к практике.

Читать далее

Обучение YOLOv8s на Google Colab: детектим дорожные знаки

Level of difficultyEasy
Reading time6 min
Views9.4K

Всем привет! Решила я вернуться на Хабр с новым мини-проектом. Сегодня попробуем детектить дорожные знаки используя YOLOv8 на Google colab. Что ж, приступим!

Поехали!

Кто такие шизоиды, где они обитают, и почему вам может быть полезно о них узнать

Reading time35 min
Views169K

Основные стереотипы о шизоидах в одной картинке

Synopsis: шизоид — не диагноз, это тип характера. Существуют шизоиды, имеющие психические заболевания (как существуют истероиды, эпилептоиды, сварщики, мужчины и женщины, дети и бухгалтеры, имеющие диагнозы из области психиатрии), но далеко не каждый шизоид (мужчина, бухгалтер, сварщик и т.д.) — болен.

Сам этот характер довольно тяжело описать одновременно коротко и корректно. Некоторые называют их «гиками», «интровертами», «чудаками», «ботаниками», «хикканами», «эксцентричными», «нердами», «компьютерными гениями»[1, стр. 231], и все эти характеристики в той или иной мере имеют отношение к, собственно, шизоидам, но ни одна из них не является определяющей.

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

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

Функторы, аппликативные функторы и монады в картинках

Reading time5 min
Views195K
Вот некое простое значение:


И мы знаем, как к нему можно применить функцию:


Элементарно. Так что теперь усложним задание — пусть наше значение имеет контекст. Пока что вы можете думать о контексте просто как о ящике, куда можно положить значение:


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


data Maybe a = Nothing | Just a

Позже мы увидим разницу в поведении функции для Just a против Nothing. Но сначала поговорим о функторах!
Читать дальше →

И снова про монады в PHP

Reading time3 min
Views15K


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

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