Pull to refresh
4K+
6

User

3
Rating
6
Subscribers
Send message

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

Level of difficultyMedium
Reading time13 min
Reach and readers45K

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

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

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

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

Читать далее

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

Level of difficultyMedium
Reading time51 min
Reach and readers16K

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

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

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

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

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

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

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

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

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

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

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

Level of difficultyMedium
Reading time75 min
Reach and readers190K

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

Читать далее

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

Level of difficultyMedium
Reading time22 min
Reach and readers35K

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

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

Читать далее

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

Level of difficultyMedium
Reading time36 min
Reach and readers6.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 ключевых вопросов

Level of difficultyHard
Reading time18 min
Reach and readers7.6K

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

Разобраться

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

Reading time13 min
Reach and readers246K

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time23 min
Reach and readers6.8K

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

Читать далее

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

Reading time10 min
Reach and readers660K

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

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

Читать далее

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

Reading time9 min
Reach and readers34K
Я работаю разработчиком в hh.ru, и мне хочется перейти в датасайнс, но пока не хватает навыков. Поэтому в свободное от работы время я изучаю машинное обучение и стараюсь решать практические задачи из этой области. Недавно мне подкинули задачу по кластеризации наших резюме. Пост будет о том, как я решал её при помощи агломеративной иерархической кластеризации. Если не хочется читать, но интересен результат, то можно посмотреть сразу демо.

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

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

Reading time24 min
Reach and readers38K

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

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

Information

Rating
1,310-th
Registered
Activity

Specialization

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