Pull to refresh
10
2.4
Send message

Основы и продвинутые техники RAG

Level of difficultyMedium
Reading time9 min
Views8.2K

В этом посте мы поговорим подробно про RAG на каждом его этапе, его модификации и его перспективные направления развития на момент написания статьи.

Читать далее

Python REST API: Flask, Connexion и SQLAlchemy (часть 3)

Level of difficultyMedium
Reading time28 min
Views2.7K

Это перевод статьи от Philipp Acsany

В этой третьей части серии вы узнаете, как:

Работать с несколькими таблицами с взаимосвязанной информацией в базе данных
Создавать связи «один ко многим» в базе данных
Управлять связями с помощью SQLAlchemy
Сериализовать сложные схемы данных со связями с помощью Marshmallow
Отображать связанные объекты в клиентском интерфейсе

Читать далее

Неувядающая классика или «чёрный ящик»: кто кого в битве за прогноз. Глава первая

Reading time16 min
Views1.3K

После перерыва продолжаю цикл статей про одно из самых интересных направлений в статистике и науке о данных — прогнозировании временных рядов (или рядов динамики, как их первоначально называли в учебниках по эконометрике). Эта работа будет не в стиле перевода с моими комментариями, а полноценное исследование на тему эффективности прогнозных моделей: мы с вами разработаем и сравним две модели прогнозирования временных рядов — традиционную статистическую модель — реализацию модели ARIMA с сезонной компонентой и экзогенными переменными под названием SARIMAX и рекуррентную модель глубокого обучения на основе слоя LSTM. Выясним, какая их них наиболее эффективно справится с климатическими данными, которые подготовил для своей книги Франсуа Шолле «Глубокое обучение с Keras», второе издание которой вышло в 2023 году. Второе издание значительно переработано в ногу со временем, и я настоятельно рекомендую изучить эту книгу как начинающим аналитикам данных, так и бывалым представителям науки о данных с багажом знаний о временных рядах.

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

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

Читать далее

Нейронные оптимизаторы запросов в реляционных БД (Часть 1)

Level of difficultyMedium
Reading time15 min
Views8K

В 1970-х годах известный программист Эдгар Кодд разработал математически выверенную теорию организации данных в виде таблиц (реляций). С тех пор утекло немало воды — появилось большое количество различных коммерческих и open-source реляционных систем управления базами данных (РСУБД). Скоро стало понятно, что эффективное получение данных из базы — задача далеко не тривиальная. Если говорить прямо, она нелинейная и в общем случае NP-сложная.

Когда SQL-запрос становится немного сложнее: SELECT * FROM table, у нас появляется огромная вариативность его исполнения внутри системы — и не всегда понятно, какой из возможных вариантов эффективнее как по памяти, так и по скорости. Чтобы сократить огромное количество вариантов до приемлемого, обычно используются так называемые эвристики — эмпирические правила, которые придуманы человеком для сокращения пространства поиска на несколько порядков. Понятное дело, эти правила могут отсечь и сам оптимальный план выполнения запроса, но позволяют получить хоть что-то приемлемое за адекватное время.

В последние годы в связи с активным развитием ML начали развиваться и нейронные оптимизаторы запросов —особенность которых в том, что они самостоятельно, без участия человека, находят необходимые закономерности в выполнении сложных планов исходя из обучения на огромном количестве данных. Тенденция началась приблизительно в 2017 году и продолжается до сих пор. Давайте посмотрим, что уже появилось в этой области в хронологическом порядке и какие перспективы нас ждут.

Читать далее

Нейросети для генерации изображений: обзор популярных сервисов

Reading time8 min
Views12K

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

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

Приятного прочтения (:

Читать далее

Как развивалась технология экстремального сжатия LLM: от QuIP до AQLM с PV-tuning

Reading time4 min
Views10K

Мы живём в эпоху LLM — компании применяют на практике всё более крупные модели с миллиардами параметров. Это здорово, потом что большие модели открывают пользователям сервисов новые возможности, но не всё так просто. Размер накладывает ограничения — запускать такие модели очень дорого, а на пользовательских компьютерах — ещё дороже и сложнее. Поэтому часто исследователи и инженеры сначала обучают большую модель, а потом придумывают, как сжать её с минимальными потерями качества, чтобы сделать доступнее. 

Модели выкладываются в формате float16, где на один вес выделяется 16 бит. Два года назад человечество научилось хорошо сжимать нейросети до 4 бит с помощью таких методов, как GPTQ. Но на этом исследователи не остановились, и сейчас актуальная задача — сжатие моделей до 2 бит, то есть в 8 раз. 

Недавно исследователи Yandex Research совместно с коллегами из IST Austria и KAUST предложили новый способ сжатия моделей в 8 раз с помощью комбинации методов AQLM и PV-tuning, который уже доступен разработчикам и исследователям по всему миру — код опубликован в репозитории GitHub. Специалисты также могут скачать сжатые с помощью наших методов популярные опенсорс-модели. Кроме того, мы выложили обучающие материалы, которые помогут разработчикам дообучить уменьшенные нейросети под свои сценарии.

О том, как исследователи пришли к сегодняшним результатам, мы расскажем на примере двух «конкурирующих» команд и их state-of-the-art алгоритмов сжатия — QuIP и AQLM. Это короткая, но увлекательная история «противостояния» исследователей, в которой каждые пару месяцев случаются новые повороты, появляются оптимизации и оригинальные подходы к решению проблем.

Читать далее

17 продвинутых RAG-техник: как превратить прототип LLM-приложения в готовое решение

Reading time18 min
Views11K

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

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

Как метко подметил Мэтт Тёрк: если в 2023 году мы боялись, что GenAI нас погубит, то в 2024-м мечтаем хоть как-то приручить его и запустить в "мелкосерийное производство".

Если вы уже успели создать свои первые LLM-приложения и готовы вывести их на новый уровень, эта статья для вас. Мы рассмотрим 17 продвинутых RAG-техник, которые помогут избежать типичных ошибок и превратить ваш прототип в мощное и стабильное решение.

Пристегните ремни, мы отправляемся в увлекательное путешествие по миру AGI! Вместе мы:

Поймем, как система отличает ценную информацию от информационного шума;

Разберемся, как правильно подготовить данные для LLM;

Выясним, можно ли строить цепочки из нескольких LLM;

Поймем, как направлять запросы через разные компоненты системы.

Приятного прочтения(:

Читать далее

Подборка ресурсов для начинающих дизайнеров интерфейсов

Level of difficultyEasy
Reading time3 min
Views5K

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

Я — Анна, продуктовый дизайнер в компании Ozon, занимаюсь проектированием интерфейсов сайта и приложения компании, также являюсь ревьюером курсов «Дизайнер интерфейсов» и «Веб-дизайнер». Когда я начинаю работать над продуктом, я обращаюсь к разным ресурсам, ссылками на которые поделюсь в этой статье.

Читать далее

Архитектура RAG: полный гайд

Level of difficultyHard
Reading time13 min
Views34K

Если, открывая холодильник вы еще не слышали из него про RAG, то наверняка скоро услышите. Однако, в сети на удивление мало полных гайдов, учитывающих все тонкости (оценка релевантности, борьба с галлюцинациями и т.д.) а не обрывочных кусков. Базируясь на опыте нашей работы, я составил гайд который покрывает эту тему наиболее полно.

Итак зачем нужен RAG?

Читать далее

За границей Hello World: полный гайд по разработке Telegram ботов с помощью Python и Aiogram 3. Часть 1

Level of difficultyEasy
Reading time7 min
Views238K

Нетипичный туториал по разработке Telegram-бота на Python и Aiogram 3. В отличие от большинства гайдов и туториалов про разработку ботов «для новичков», здесь будут рассмотрены все аспекты создания бота, от установки редактора кода до подключения оплаты и развёртывания на сервере. В первой части мы рассмотрим подготовку окружения, файловую структуру бота и напишем первый рабочий код бота.

Читать далее

Он победил LLM RAG: реализуем BM25+ с самых азов

Level of difficultyEasy
Reading time18 min
Views16K

Привет, меня зовут Борис. Я автор телеграм канала Борис опять. Периодически мне на глаза попадается что-то интересное и я глубоко в этом закапываюсь. В данном случае это алгоритм поиска BM25+, который победил продвинутые методы векторного поиска на LLM.

Разберемся, что это за зверь и почему он так хорошо работает. В этой статье мы реализуем его на Python с нуля. Начнем с самого простого поиска, перейдем к TF-IDF, а затем выведем из него BM25+.

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

Код доступен в Google Collab.

Читать далее

Что такое векторизация текста в NLP и какая она бывает: One-hot encoding, Bag of words, TF-IDF, Word2Vec, BERT и другие

Level of difficultyMedium
Reading time7 min
Views5.9K

Привет, Хабр! Меня зовут Александр Троицкий, я автор канала AI для чайников, и в этой статье я расскажу про разные способы векторизации текстов.

Всем привет! Вдохновившись прикольной и понятной статьей на английском языке, и не найдя сходу чего-то похожего в русскоязычном сегменте интернета, решил написать о том, как обрабатывается текст перед тем, как на нем начинают применять разные модели ИИ. Эту статью я напишу нетехническим языком, потому что сам не технарь и не математик. Надеюсь, что она поможет узнать о NLP тем, кто не сталкивается с AI в продуктах на ежедневной основе.

О чем эта статья:

Читать далее

Справочник по применению GPU в машинном обучении

Level of difficultyMedium
Reading time35 min
Views9.9K

Это перевод популярного лонгрида Тима Детмерса "Выбор графического процессора для глубокого обучения: мой опыт и советы".

Глубокое обучение (Deep learning, DL) - область с высокими вычислительными требованиями, и выбор графического процессора будет в корне определять ваши возможности в этой сфере. Какие характеристики важны при выборе нового GPU? Оперативная память GPU, ядра, тензорные ядра, кэш? Как сделать экономически эффективный выбор? Мы рассмотрим эти вопросы, заодно разберемся с распространенными заблуждениями, разберемся в характеристиках GPU, дадим советы, которые помогут вам сделать правильный выбор.

Читать далее

Что такое дрифт ML-моделей и как его мониторить?

Reading time8 min
Views4K

Даже при наличии качественных входных данных качество предсказаний ML-модели со временем ухудшается. Под катом рассмотрим, как команда Neoflex с помощью мониторинга обнаруживает изменения вовремя и поделимся подборкой open source-библиотек для определения дрифта данных.

Теперь клиенты Selectel могут оптимизировать управление DS/ML-моделями с помощью MLOps-платформы Neoflex Dognauts. Она обеспечивает автоматизацию полного цикла разработки и эксплуатации моделей машинного обучения.
Читать дальше →

Мега-Учебник Flask, Часть XVII: Развертывание под Linux

Reading time18 min
Views57K

(издание 2018)


Miguel Grinberg




Туда Сюда


Это семнадцатая часть серии Мега-учебников Flask, в которой я собираюсь развернуть микроблог на сервере Linux.

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

Азы больших языковых моделей и трансформеров: декодер

Level of difficultyHard
Reading time14 min
Views8.7K

В этом материале мы поговорим об устройстве компонента‑декодера в системах машинного обучения, построенных по архитектуре «трансформер», уделив особое внимание отличию декодера от энкодера. Уникальной особенностью декодеров является то, что они похожи на циклы. Они, по своей природе, итеративны, что контрастирует с линейными принципами обработки данных, на которых основаны энкодеры. В центре декодера находятся две модифицированные формы механизма внимания: механизм множественного внимания с маскировкой (masked multi‑head attention) и механизм множественного внимания энкодера‑декодера (encoder‑decoder multi‑head attention).

Слой множественного внимания с маскировкой в декодере обеспечивает последовательную обработку токенов. Благодаря такому подходу предотвращается воздействие последующих токенов на сгенерированные токены. Маскировка важна для поддержки порядка следования и согласованности сгенерированных данных. Взаимодействие между выходом декодера (из слоя множественного внимания с маскировкой) и выходом энкодера организовано с помощью механизма множественного внимания энкодера‑декодера. Этот последний шаг даёт декодеру доступ к входным данным.

Мы, кроме того, продемонстрируем реализацию этих концепций с использованием Python и NumPy. Мы создали простой пример перевода предложения с английского языка на португальский. Практическая демонстрация обсуждаемых здесь идей поможет проиллюстрировать работу внутренних механизмов декодера в трансформерах и позволит лучше понять роль декодеров в больших языковых моделях (Large Language Model, LLM).

Читать далее

Руководство по веб-скрейпингу на Python

Level of difficultyMedium
Reading time17 min
Views38K

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

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

Как писать более чистый CSS: дюжина советов от банальных до неочевидных

Level of difficultyEasy
Reading time9 min
Views17K

Если CSS для вас все еще боль и страдания, добро пожаловать под кат. Мы наткнулись на интересную подборку советов по CSS на английском языке и решили перевести ее, дополнив собственными примерами с кодом.

CSS как технология действительно немного раздут, но не так хаотичен и сложен, как его иногда описывают. Просто нужно стремиться к лаконичности - в том числе, с помощью описанных подходов.

Читать далее

Начало работы с Axum — самым популярным веб-фреймворком Rust

Level of difficultyMedium
Reading time11 min
Views16K


Когда дело доходит до выбора серверного веб-фреймворка в экосистеме Rust, можно запутаться из-за большого количества вариантов. В прошлом, лидером по популярности был Rocket, но сейчас за первенство сражаются Axum и actix-web, и Axum все больше набирает обороты. В этой статье мы немного погрузимся в Axum — веб-фреймворк для создания REST API на Rust, разрабатываемый командой Tokio. Он прост в использовании и хорошо совместим с Tower — надежной библиотекой для создания модульных компонентов сетевых приложений.


В этой статье мы подробно рассмотрим, как использовать Axum для создания веб-сервиса. Кроме того, мы рассмотрим изменения, которые произошли в версии 0.7.

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

Двуязычный словарь от ChatGPT за 7 (нет) простых шагов

Level of difficultyMedium
Reading time29 min
Views5.1K

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

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

Information

Rating
1,100-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity