Search
Write a publication
Pull to refresh
2
Octocat Internetov @eltardowutread⁠-⁠only

Python, backend, DS, ML

Send message

Метод Монте-Карло в алгоритме обратного распространения ошибок с параллельными вычислениями

Level of difficultyMedium
Reading time5 min
Views7.6K

Был проведён эксперимент для проверки, можно ли существенно уменьшить объём вычислений в алгоритме обратного распространения ошибок с параллельными вычислениями за счёт использования на каждом шаге обучения только части обучающих образцов, выбранных случайным образом, а также определение того, какой выигрыш по времени даст использование языка Ассемблера в самых внутренних циклах (в программе, написанной на языке C++).

За основу был взят классический персептрон и алгоритм обратного распространения ошибок, основанный на методе градиента, который объяснялся на курсе Mashine Learning Стэнфордского университета. Он был доработан, чтобы можно было использовать параллельные вычисления. Была написана программа на языке C++ для Linux, её функции (создание, обучение нейронной сети, распознавание данных, закачка больших файлов на сервер и т. п.) вызываются из программ, написанных на любых языках программирования, по протоколу Socket.

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

Читать далее

Оцениваем RAG-пайплайны

Reading time4 min
Views10K

RAG (Retrieval Augmented Generation) - это популярный подход, объединяющий извлечение данных из баз и генерацию текста, позволяя моделям AI давать ответы на вопросы, основанные на информации, которую они не видели в процессе обучения. Важным этапом в развитии RAG является его эффективная оценка, и именно здесь на сцену выходит RAGAS (Retrieval Augmented Generation Automated Scoring) - метод автоматизированной оценки, который позволяет не только оценить качество ответов, но и анализировать процесс генерации в деталях.

Читать далее

LangChain для бывалых: память и агенты. часть 1

Level of difficultyMedium
Reading time5 min
Views17K

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

Читать далее

LangChain для бывалых — память и агенты. часть 2

Level of difficultyMedium
Reading time9 min
Views9.9K

Добро пожаловать во вторую часть статьи о фреймворке LangChain.

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

Читать далее

LangChain для бывалых: создаем свои инструменты

Level of difficultyMedium
Reading time5 min
Views11K

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

Читать далее

Пишем FastAPI с нуля на python

Reading time19 min
Views114K

FastAPI — это современная, быстрая (высокопроизводительная) веб-инфраструктура для создания API-интерфейсов с Python 3.7+ на основе стандартных подсказок типов Python.

В этой статье мы рассмотрим как написать его с нуля.

Читать далее

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

Level of difficultyMedium
Reading time14 min
Views34K

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

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

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

Читать далее

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

Level of difficultyMedium
Reading time46 min
Views358K

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

Вы, наверняка, помните отличный цикл статей на Хабре в прошлом году от пользователя MiraclePtr, который рассказывал о разных методах блокировок, о разных методах обхода блокировок, о разных клиентах и серверах для обходов блокировок, и о разных способах их настройки (раз, два, три, четыре, пять, шесть, семь, восемь, десять, десять, и вроде были еще другие), и можете спросить, а зачем еще одна? Есть две основные причины для этого.

Читать далее

Кластеризация в ML: от теоретических основ популярных алгоритмов к их реализации с нуля на Python

Level of difficultyHard
Reading time34 min
Views55K

Кластеризация — это набор методов без учителя для группировки данных по определённым критериям в так называемые кластеры, что позволяет выявлять сходства и различия между объектами, а также упрощать их анализ и визуализацию. Из-за частичного сходства в постановке задач с классификацией кластеризацию ещё называют unsupervised classification.

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

Читать далее

Python Multiprocessing. Обмен данными между процессами. Передача объектов пользовательских классов

Level of difficultyHard
Reading time15 min
Views36K

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

Модуль Multiprocessing позволяет использовать так называемый истинный параллелизм, то есть создавать процессы, которые выполняются полностью независимо друг от друга.

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

О том, как с этим обходиться, я и расскажу в этой статье.

Читать далее

Идемпотентность: больше, чем кажется

Level of difficultyEasy
Reading time10 min
Views80K

image


Друзья, всем привет! Идемпотентность в проектировании API — не просто формальность. Это свойство, часто рассматриваемое как способ получения одинакового ответа на повторяющийся запрос, на самом деле означает гораздо больше...

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

Визуальное RPG с долговременной памятью, генерируемое из 3 нейросетей и LLamы

Level of difficultyEasy
Reading time17 min
Views19K

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

Важно только понимать, что движущей силой сюжета в их сессиях является лишь один из игроков, называемый Dungeon Master. Когда только начали появляться первые GPT-модели, одной из первых хотелок гиков оказалось желание сварить из нейросетей автоматического Dungeon Masterа.

Так и появился AIDungeon — уникальная для своего времени (2019 год) вещь, которая не сильно потеряла в популярности и по сей день. Однако, если вы любите смотреть глубже, то играть в него вам быстро надоест. Я же в своей серии из нескольких статей (посвящённых GPT) стараюсь показать простому обывателю механизм безболезненного использования нейросетевых моделей в простых проектах при помощи Python и Hugging Face Transformers.
Приступим

Моделирование биологических явлений с помощью Python

Level of difficultyMedium
Reading time15 min
Views9.4K


Автор статьи: Артем Михайлов

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

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

Как определить размер выборки для бутстрэпа старым дедовским способом

Reading time13 min
Views16K

Всем привет! Меня зовут Рома Смирнов. Я работаю продуктовым аналитиком в Lamoda. Как и во многих других продуктовых компаниях, решения о том, раскатывать ли новую фичу, принимаются в Lamoda на основе данных, в частности на основе результатов A/B-тестирования.

Бутстрэп — один из популярных методов обработки результатов тестов. В этой статье я расскажу о том, каким образом можно определить размер выборки при расчете результатов A/B-теста с помощью бутстрэпа.

Читать далее

Запуск аналогов ChatGPT на домашнем ПК в пару кликов и с интерфейсом

Level of difficultyEasy
Reading time6 min
Views243K

--- Обновление статьи 9 Августа 2023 ---

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

Основная проблема в том, что всё это требует глубоких технических знаний.

Но в этой статье я расскажу, как запустить добротную нейросеть на домашнем ПК с 16ГБ ОЗУ в несколько кликов. Буквально в несколько кликов - копаться в консоли не придётся.

Читать далее

Information

Rating
Does not participate
Registered
Activity