Обновить
28
Дмитрий Пашуткин@dm_p2016

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

4
Подписчики
Отправить сообщение

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

Последние пару лет я много экспериментировал с 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 в сервер

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

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

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

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

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

Читать далее

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

Время на прочтение9 мин
Охват и читатели93K
Картинка kickstarter

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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


Регрессия


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

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

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

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

Введение


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

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

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

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

Читать далее

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

Время на прочтение10 мин
Охват и читатели219K
Как сказал один из пользователей StackOverflow, «using SO is like doing lookups with a hashtable instead of a linked list». Мы снова обращаемся к этому замечательному ресурсу, на котором попадаются чрезвычайно подробные и понятные ответы на самые различные вопросы.

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

Время на прочтение16 мин
Охват и читатели16K
«Цель этого курса — подготовить вас к вашему техническому будущему.»


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

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

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

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

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


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

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

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

Мнение: DevOps — это раковая опухоль

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

jenkins, terraform, chef, nexus, git, jira, wiki, octopus, ansible, confluence KISS

Читать далее

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

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

Введение


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

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

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

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

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



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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность