Pull to refresh
28
Дмитрий Пашуткин@dm_p2016

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

4
Subscribers
Send message

Маленький LLM-чат на Python с Ollama и LiteLLM. Часть 3: добавляем историю сообщений и контекст

Level of difficultyEasy
Reading time5 min
Reach and readers12K

Во второй части мы сделали консольный чат с циклом и system prompt. Но у него был пробел: каждый запрос шёл к модели независимо, без контекста предыдущих реплик. В третьей части добавляем историю сообщений — и чат наконец начинает помнить разговор.

Читать далее

Мой первый RAG без LangChain

Level of difficultyMedium
Reading time9 min
Reach and readers92K

В наши дни все, кому было интересно, уже попробовали RAG, я в том числе. И стандартная схема тривиальна: цепляем LangChain, три импорта, .from_documents() — и бот с базой знаний готов. Мой первый опыт был такой же, и это даже заработало за один вечер.

Но как это поддерживать? А что случится, если всё полетит?

Пять слоёв абстракции, и я без понятия, что происходит на любом из них. Поэтому я решил повторить свой эксперимент с контейнерами: отбросил все слои и переписал вручную на Python.

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

Читать далее

Как я запустил локальную LLM на Raspberry Pi 5

Reading time14 min
Reach and readers20K

Последние пару лет я много экспериментировал с LLM на разных железках от GPU-кластеров в облаке до маленьких Raspberry Pi. И вот одна из любимых задачек-провокаций: «А можно ли запустить модель на Pi 4, 5?» Если коротко: можно попробовать, но физика тут сильнее хайпа. У платы есть 8-16 ГБ памяти, у модели десятки гигабайт даже в самых «жестких» квантовках. В лоб это не работает, но зато эксперимент дает интересный результат: мы понимаем, где проходят границы устройства и какие архитектурные схемы реально полезны.

На мой взгляд, будущее не за гигантскими fine-tuned моделями, а за умными комбинациями из «малых» моделей, RAG и грамотной оркестрации. Fine-tuning остается инструментом для узкоспециализированных задач. В большинстве случаев куда выгоднее гибридная схема: данные хранятся и обрабатываются локально (например, на Raspberry Pi), а ресурсоемкая генерация передается в облако. Реализовал такой подход на инфраструктуре Cloud.ru Evolution: там живут большие LLM, а локальный Raspberry Pi выступает в роли приватного узла для индексации и предобработки данных. Этот гайд посвящен именно локальной части — превращению «малинки» в автономного AI-ассистента.

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

Превращаем приёмник RTL-SDR в сервер

Level of difficultyMedium
Reading time19 min
Reach and readers28K

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

В любом из этих случаев может возникнуть проблема — антенна будет находиться слишком далеко от приёмника. Для приёмника RTL-SDR сразу напрашивается два решения — использовать длинный фидер в виде коаксиального кабеля между антенной и приёмником или включить удлинитель USB между приёмником и компьютером.

К сожалению, длинный коаксиальный кабель вносит заметное затухание, ослабляя сигнал на входе приёмника. А максимальная длина обычного удлинителя USB составляет всего лишь 5 м. Длина оптоволоконных удлинителей USB может достигать 100 м, однако их стоимость довольно высока.

Между тем есть ещё одно решение — разместить приёмник RTL-SDR рядом с антенной и подключить к микрокомпьютеру, такому как Raspberry Pi, расположенному недалеко от антенны. Микрокомпьютер, в свою очередь, подключается к домашней локальной сети с помощью кабеля Ethernet или через Wi-Fi. При этом он будет шлюзом между приёмником RTL-SDR и локальной сетью.

Читать далее

Самодельное электронное шумоподавление для квартиры

Reading time9 min
Reach and readers93K
Картинка kickstarter

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

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

Когда одной ARIMA мало. Прогнозирование временных рядов нейросетями

Level of difficultyMedium
Reading time12 min
Reach and readers17K

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

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

Читать далее

Асинхронный python без головной боли (часть 1)

Reading time14 min
Reach and readers491K

Почему так сложно понять asyncio?

Асинхронное программирование традиционно относят к темам для "продвинутых". Действительно, у новичков часто возникают сложности с практическим освоением асинхронности.

Но будь я автором самого толстого в мире учебника по python, я бы рассказывал читателям про асинхронное программирование уже с первых страниц. Вот только написали "Hello, world!" и тут же приступили к созданию "Hello, asynchronous world!". А уже потом циклы, условия и все такое.

Съешь красную таблетку

Материалы для подготовки к собеседованию на позицию Data Scientist. Часть 1: Live Coding

Level of difficultyMedium
Reading time14 min
Reach and readers46K

Привет! Меня зовут Артем. Я работаю Data Scientist'ом в компании МегаФон (платформа для безопасной монетизации данных OneFactor).

В данной статье разберемся что такое live coding интервью и как к нему готовиться.

Материал в первую очередь будет полезен Data Scientist'ам и ML инженерам, при этом некоторые разделы, например, Алгоритмы и структуры данных подойдут всем IT специалистам, которым предстоит пройти секцию live coding.

Читать далее

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

Reading time9 min
Reach and readers123K

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

(1) Школа. (2) Матанализ. (3) Аналитическая геометрия. (4) Линейная алгебра.

Все плейлисты, материалы, курсы в открытом доступе и бесплатны.

Читать далее

R — значит регрессия

Reading time8 min
Reach and readers93K

Статистика в последнее время получила мощную PR поддержку со стороны более новых и шумных дисциплин — Машинного Обучения и Больших Данных. Тем, кто стремится оседлать эту волну необходимо подружится с уравнениями регрессии. Желательно при этом не только усвоить 2-3 приемчика и сдать экзамен, а уметь решать проблемы из повседневной жизни: найти зависимость между переменными, а в идеале — уметь отличить сигнал от шума.


Регрессия


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

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

Оценка результатов линейной регрессии

Reading time6 min
Reach and readers112K

Введение


Сегодня уже все, кто хоть немного интересуется дата майнингом, наверняка слышали про простую линейную регрессию. Про нее уже писали на хабре, а также подробно рассказывал Эндрю Нг в своем известном курсе машинного обучения. Линейная регрессия является одним из базовых и самых простых методов машинного обучения, однако очень редко упоминаются методы оценки качества построенной модели. В этой статье я постараюсь немного исправить это досадное упущение на примере разбора результатов функции summary.lm() в языке R. При этом я постараюсь предоставить необходимые формулы, таким образом все вычисления можно легко запрограммировать на любом другом языке. Эта статья предназначена для тех, кто слышал о том, что можно строить линейную регрессию, но не сталкивался со статистическими процедурами для оценки ее качества.
Читать дальше →

Домашка на лето: что почитать разработчику

Reading time7 min
Reach and readers19K

У нашего разработчика Михаила Ефремова есть хобби — читать книги и делать подборки особенно полезных. В этой статье он расскажет, как собрал книжную полку с лучшими, на его взгляд, книгами для разработчиков и поделится мнением о них. Миша подобрал книги по алгоритмам, архитектуре, базам данных, Linux/UNIX, Golang, Python.

Читать далее

Метаклассы в Python

Reading time10 min
Reach and readers219K
Как сказал один из пользователей StackOverflow, «using SO is like doing lookups with a hashtable instead of a linked list». Мы снова обращаемся к этому замечательному ресурсу, на котором попадаются чрезвычайно подробные и понятные ответы на самые различные вопросы.

В этот раз мы обсудим, что такое метаклассы, как, где и зачем их использовать, а также почему обычно этого делать не стоит.

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

Как сравнивать распределения. От визуализации до статистических тестов

Reading time15 min
Reach and readers76K

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

Приятного чтения!

Критерий Манна-Уитни — самый главный враг A/B-тестов

Reading time16 min
Reach and readers82K

Всем привет! Меня зовут Дима Лунин, я аналитик в компании Авито. В этой статье я расскажу про критерий Манна-Уитни и проблемы при его использовании.

Если вы анализировали A/B-тест, где вас интересовал прирост или падение какой-то метрики, то наверняка использовали критерий Манна-Уитни. Я хочу рассказать про подводные камни этого критерия, и почему мы в компании его не используем. А в конце вы поймёте, откуда такой холиварный заголовок) 

Читать далее

VNC сервер на Repka Pi — работаем с рабочим столом одноплатника дистанционно (Linux и Windows)

Level of difficultyMedium
Reading time8 min
Reach and readers7.8K

О нашей разработке - одноплатном компьютере Repka Pi - мы на данном ресурсе пишем не в первый раз. Разработка компании НПО “РэйнбовСофт”, где я имею честь работать, активно применяется нашими клиентами, и спрос на нее растет. Как и западная разработка Raspberry Pi, аналогом которого является наша "Репка", наш компьютер может служить веб сервером, маршрутизатором, домашним компьютером, а также использоваться в учебной робототехнике и системах автоматики. В одной из наших более ранних статей мы подробно останавливались на целях и задачах проекта и почему разработка данного продукта стала необходимостью - сегодня же мы хотим остановиться на некоторых аспектах ее применения.

Одноплатный компьютер Repka Pi, родившийся в эпоху тотального импортозамещения как отечественная альтернатива Raspberry Pi, все больше завоевывает рынок. И конечно же, у пользователей неизбежно возникают вопросы по его использованию. Например, один из часто задаваемых вопросов - как установить VNC сервер на Repka Pi, чтобы подключаться к нему удаленно с компьютеров, использующих различные операционные системы. Данная статья призвана детально ответить на данный вопрос.

Читать далее

Ричард Хэмминг: Глава 14. Цифровые фильтры — 1

Reading time16 min
Reach and readers16K
«Цель этого курса — подготовить вас к вашему техническому будущему.»


imageПривет, Хабр. Помните офигенную статью «Вы и ваша работа» (+219, 2372 в закладки, 375k прочтений)?

Так вот у Хэмминга (да, да, самоконтролирующиеся и самокорректирующиеся коды Хэмминга) есть целая книга, написанная по мотивам его лекций. Мы ее переводи, ведь мужик дело говорит.

Это книга не просто про ИТ, это книга про стиль мышления невероятно крутых людей. «Это не просто заряд положительного мышления; в ней описаны условия, которые увеличивают шансы сделать великую работу.»

Мы уже перевели 16 (из 30) глав.

Глава 14. Цифровые фильтры — 1


(За перевод спасибо Максиму Лавриненко и Пахомову Андрею, которые откликнулись на мой призыв в «предыдущей главе».) Кто хочет помочь с переводом — пишите в личку или на почту magisterludi2016@yandex.ru

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

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

Пишем голосового ассистента на Python

Reading time16 min
Reach and readers219K

Введение


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

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

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

Кнопка выключения для Raspberry Pi

Reading time3 min
Reach and readers92K
Порты GPIO являются одними из главных преимуществ Raspberry Pi, недаром в более поздних версиях платы их количество было увеличено с 26 до 40. К сожалению, большинство подключаемых к ним плат (сенсорные экраны, светодиодные матрицы, платы расширения и т.д.), в целях совместимости со всеми моделями «малинки», используют только первые 26 контактов, оставляя остальные 14 «за бортом». Но мы не дадим пропасть добру! В данной статье я расскажу, как сделать кнопку выключения или перезагрузки на двух неиспользуемых портах. На самом деле функциональность кнопки может быть любой, зависит от вашей фантазии и потребностей.



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

Information

Rating
Does not participate
Registered
Activity