Обновить
4K+
6

Пользователь

3
Рейтинг
6
Подписчики
Отправить сообщение

Умная колонка своими руками

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

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

1) На микроконтроллере esp32s3, используя XiaoZhi

2) На Raspberry Pi автономную голосовую колонку с камерой, которая будет работать и распознавать всё, что не только слышит, но и видит перед собой, даже при отсутствии Интернета! С локально запущенными моделями ИИ, связка Ollama+Gemma3:1b+Moondream+OpenWakeWord+Whisper.cpp+Silero TTS

А также расскажу, как подключить обе эти колонки к Home Assistant для управления устройствами умного дома.

Читать далее

Трансформер своими руками: с нуля до Numpy реализации и обучения

Уровень сложностиСредний
Время на прочтение51 мин
Охват и читатели16K

В этой статье пойдет речь об одной из самых сложных и интересных архитектур — трансформере, лежащей в основе современных моделей от OpenAI и Google DeepMind. И это не научпоп для обывателя с наивным уровнем объяснения, а полноценный учебный материал, который поможет вам понять работу трансформера на фундаментальном уровне без черных ящиков типа TensorFlow и Pytorch.

А для того чтобы лучше вникнуть, давайте напишем настоящий мини-трансформер на процедурном Python и обучим его!

Данный материал можно изучать в разных режимах:

* Как объяснение архитектуры для общего представления;

* Как полноценный гайд с чтением кода и самостоятельной практикой;

* Как основу для собственных экспериментов.

Вы сами можете выбрать тот режим, который нужен для ваших целей на данный момент.

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

Для закрепления материала, выполните Домашнее задание, которое ждет вас в конце статьи.

Напишем трансформер!

Что делает ChatGPT… и почему это работает?

Уровень сложностиСредний
Время на прочтение75 мин
Охват и читатели190K

То, что ChatGPT может автоматически генерировать что-то, что хотя бы на первый взгляд похоже на написанный человеком текст, удивительно и неожиданно. Но как он это делает? И почему это работает? Цель этой статьи - дать приблизительное описание того, что происходит внутри ChatGPT, а затем исследовать, почему он может так хорошо справляться с созданием более-менее осмысленного текста. С самого начала я должен сказать, что собираюсь сосредоточиться на общей картине происходящего, и хотя я упомяну некоторые инженерные детали, но не буду глубоко в них вникать. (Примеры в статье применимы как к другим современным "большим языковым моделям" (LLM), так и к ChatGPT).

Читать далее

Как на самом деле работают LLM

Уровень сложностиСредний
Время на прочтение22 мин
Охват и читатели35K

В статье подробно рассматриваются принципы работы больших языковых моделей (large language model, LLM). Поскольку в основе большинства современных LLM лежит архитектура трансформера (transformer), ее понимание дает представление о ключевых механизмах, обеспечивающих работу таких моделей.

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

Читать далее

Глубокие агенты (Deep Agents) — всё собрал? Но какой ценой?

Уровень сложностиСредний
Время на прочтение36 мин
Охват и читатели6.5K

Современные AI-агенты строятся достаточно разнообразно. Где-то берут готовые приложения, которые выросли в полноценные фреймворки с преднастроенными агентами. Где-то провайдеры предлагают настройку из готовых блоков через UI на веб-портале. Где-то хочется написать своё: дешевле, в своём контуре или просто иначе. Один из популярных фреймворков для этого - LangChain / LangGraph: удобные обёртки, пайплайны, графы, интеграции под типичные куски агента.

В большинстве случаев агенты строятся вокруг базового цикла ReAct (Reasoning + Acting - рассуждение и действие): модель рассуждает, при необходимости вызывает инструмент (tool), смотрит результат и снова думает - пока не отдаст ответ. На короткой задаче этого хватает. На длинной - агент сам накапливает контекст: историю, результаты инструментов, планы, файлы. Вопрос смещается от «как написать промпт» к «как управлять всей этой средой». Этим занимается контекст-инжиниринг (context engineering). Глубокие агенты (Deep Agents) - готовая реализация этой идеи в экосистеме LangChain: не новый тип модели, а заранее собранная рабочая среда вокруг обычного агента (в API - create_deep_agent поверх create_agent).

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

Читать далее

KV-Cache в LLM: разбираем инференс через 9 ключевых вопросов

Уровень сложностиСложный
Время на прочтение18 мин
Охват и читатели7.5K

Почему Cache Read и Cache Write стоят денег и как работает Prompt Caching? Разбираем KV-Cache через 9 ключевых вопросов.

Разобраться

Docker Swarm для самых маленьких

Время на прочтение13 мин
Охват и читатели246K

Данная статья посвящена настройке и работе с Docker Swarm.

Swarm это стандартный оркестратор для docker контейнеров, доступный из «коробки», если у вас установлен сам docker.

Что нам потребуется для освоения:

Читать далее

Векторный поиск в PostgreSQL: PGVector, SQLAlchemy и FastAPI

Уровень сложностиПростой
Время на прочтение23 мин
Охват и читатели6.8K

Реализуем сервис семантического поиска на базе PostgreSQL с расширением PGVector. В статье: настройка БД через Docker, миграции Alembic, асинхронный слой на SQLAlchemy и API на FastAPI. Иллюстрация на обложке - нейрослоп для привлечения внимания

Читать далее

Использование диаграммы вариантов использования UML при проектировании программного обеспечения

Время на прочтение10 мин
Охват и читатели660K

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

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

Читать далее

Готовим иерархическую кластеризацию или как я выявлял специализации у резюме

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

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

Устройство поисковых систем: базовый поиск и инвертированный индекс

Время на прочтение24 мин
Охват и читатели38K

Под капотом почти каждой поисковой строки бьется одно и то же пламенное сердце — инвертированный индекс. Именно инвертированный индекс принимает текстовые запросы и возвращает пользователю список документов, а пользователь смотрит на всё это дело и радуется котиками, ответам с StackOverflow и страничкам на вики.

В статье описано устройство поиска, инвертированного индекса и его оптимизаций с отсылками к теории. В качестве подопытного кролика взят Tantivy — реализация архитектуры Lucene на Rust. Статья получилась концентрированной, математикосодержащей и несовместимой с расслабленным чтением хабра за чашкой кофе, осторожно!
Читать дальше →

Информация

В рейтинге
1 227-й
Зарегистрирован
Активность

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

Ученый по данным, ML разработчик
Младший
Git
Python
Linux
Docker
ООП
PostgreSQL
Bash
Ubuntu