TGTGInsighttelegram intelligenceLIVE / telegram public index
Kanallara dön
ML Baldini • Nikita Boyandin avatar

TGINSIGHT CHAT

ML Baldini • Nikita Boyandin

@ml_baldini

Career

Рассказываю о своем опыте, решаем собесы, реализуем крутые проекты Реклама: @sasquato

Aboneler1,670Mevcut kanal aboneleri
Takip edilen gönderiler196İndekslenen gönderi sayısı
Son erişim21,049Son görüntülemelerin toplamı
Son gönderiler

Son gönderiler

5. sayfa / 17 · 196 gönderi

Yayınlandı 4 Eyl

Топ лучших LLM для кода и как их оценивают😁 Какие бенчмарки используют для проверки и что они все таки проверяют Если простым языком, то бенчмарк - экзамен для LLM в разных областях. Существует много разных видов, которые оценивают способность модели к мышлению(GPQA-bench) или к математики, но все-таки для нас более важна оценка в программировании и как ее получили: 1️⃣HumanEval — набор ~160 ручных Python-задач, где оценивают функциональную корректность (генерируемая функция должна проходить тесты),метрика pass@k. 2️⃣APPS — большой набор (~10k задач) разной сложности, включая алгоритмические и конкурсы; проверка — прогон тестов на корректность. Нужен для оценки способности решать «серьёзные» задачи. 3️⃣CodeXGLUE / Code-benchmarks — набор задач разного типа (completion, summarization, clone detection), чтобы оценивать разные сценарии кода, не только решение задачи. 4️⃣SWE-bench — модель не просто генерирует функцию, а получает репозиторий + описание и должна подготовить патч, который исправит проблему и пройдёт тесты в изолированном окружении(агентский бенчмарк). В чем проблема этих бенчмарков 1️⃣ Бенчмарки проверяют отдельные функции, но на моем опыте основная проблема в интеграциях и правильной архитектуре 2️⃣ Некоторые компании сами натаскивают LLM, чтобы на лидерборде она была выше 3️⃣ Зачастую нам не говорят, на какой температуре проверялась LLM, включен ли был reasoning и так далее, хотя это напрямую влияет на качество ответа 4️⃣ Автоматические метрики (BLEU, CodeBLEU и др.) дают число, но оно не всегда отражает читаемость, безопасность, оптимальность или пригодность решения в проекте. Сам топ 1️⃣Anthropic — Claude (Opus 4 / Opus 4.1) — очень сильна в «реальном» кодинге, хороша для больших, долгих сессий и отладочных диалогов; лидирует в ряде современных SWE-bench и задач на инженерию ПО. 2️⃣OpenAI — GPT-5 — топ по общей мощности и часто отлично показывает себя в автоматических бенчмарках по коду; сильна в генерации, пояснениях и отладке. Но уже сейчас отмечают разницу ожиданий и поведения. 3️⃣Google — Gemini (2.x / 2.5 Pro и выше) —хорош в больших контекстах и full-stack задачах; сильна при комбинировании поиска и кода. 4️⃣xAI — Grok (серии 3/4) - для меня все еще лучший бесплатный игрок, может спокойно написать 200-300 строк кода, но при этом сильно проигрывает своим платным конкурентам. Интересные сайты, которые я нашел при подготовке поста Базовая база Оценка именно кодовых ответов LLM Очень красивые графики по разным бенчмаркам + доп информация по стоимости, контекстному окну и выдаче токенов Как вам такой пост?) Обязательно ставьте реакции и пишите комментарии💗

1,790 views

Yayınlandı 1 Eyl

Бигтехные мюсли - грейды😁 Еще в 2010-х годах в FAANG начала активно работать система грейдов, которая помогала более четко понимать уровни знаний и ответственности в командах. Не смотря на то, что система имела свои проблемы(например, прямое сравнение людей по грейду и их ответственность всегда вызывала вопросы), она достаточно сильно прижилась и теперь во всех больших IT компаниях такая система присутствует. В России она также понемногу начинает складываться, но как всегда по-своему. Чаще всего название должности не соответствует реальным задачам человека(иногда называют бенд), при этом существует проблема с грейдами, так как сейчас на одной штатной позиции senior может сидеть несколько junior+/middle специалистов, хотя по документам никогда вопросов не будет. Получается, единственное возможности оценки работника - его зарплата на предыдущем месте работы, но и тут проблема, так как сфера AI/ML сейчас дико развивается и зарплаты явно завышают(тут еще работает экономический пузырь, но об этом как-нибудь в другой раз). Так и получается, что реально сотрудника оценить невероятно сложно, да и кажется, что нанять нового человека всегда круче(хотя это стоит кучи денег и почти всегда скилы оказываются равными). И, пожайлуста, не пишите про опыт работы, так как пока все компании не начнут проверять ТК, многие и дальше будут накручивать. Единственный способ - это собесы, которые будут вести ребята с глубокими знаниями и поиском людей прям под проекты и инициативы Что вы думаете на этот счет? Как у вас оценивается грейд в компании и насколько правильно они работают?

1,690 views

Yayınlandı 27 Ağu

ПапОчка 😃 Сидели мы с Сашей и подумали, почему нам не собрать новую папку каналов, чтобы наша аудитория узнала про новых блогеров и расширила свой кругозор, да и про старичков нашей ds/da движухи не забывали. И могу сказать честно - у нас получился очень крутой сквад энтузиастов, который не только делает крутые вещи, но и делится своим опытом, победами и мыслями. Вот несколько постов, которые меня сильно зацепили: 1️⃣ Мой броуди дает джаззу на ютубе и разваливает собесы 😎 2️⃣Юра про ИИ на АЭС - что-то дико интересное 😱 3️⃣Тема про выгорание от Арины - где мое 3 выгорание грустно плачет в сторонке 😭 4️⃣ У Андрюхивыступление на Data Fest - когда-нибудь и я выстоплю на конференции 👌 5️⃣Декомпозиция задач от Захара - того самого сын маминой подруги, который успел все до 20 😛 6️⃣ Ну и мои любимый Марко РойсДзись слил собесы к нему в команду 😠 7️⃣ Ну и Таня с самым неприятным собесом - базовая база 💁‍♂️ В папке еще много классных ребят, так что обязательно подписываемся🥂

1,880 views

Yayınlandı 25 Ağu

MLSD-RAG 😎 Попросили в комментах сделать MLSD для RAG, поэтому сегодня попробуем разобрать кейс, который я не нашёл в интернете. Не помещалось все в отдельный пост, поэтому держите ссылку на github: https://github.com/KITIN554/MLSD_RAG/blob/main/MLSD%20%D0%B2%20RAG-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0%D1%85.md Ну и обязательно пишите комментарии и ставьте реакции, автору будет приятно💗

1,620 views

Yayınlandı 24 Ağu

Фоточки с summer ds night💗 По старой традиции залутал кучу мерча, в этот раз достался фулл-пак от ВТБ(худи, кепка, носки), за что им огромное спасибо. Очень надеюсь, что в ближайшем времени буду выступать на конференциях уже в качестве спикера, благо идеи для докладов тоже есть 😏

1,520 views

Yayınlandı 21 Ağu

Картинки к посту💗

1,800 views

Yayınlandı 21 Ağu

База собесов про LLM - RAG 😎 Продолжение рубрики с прохождением собесов, на очереди одна из самых частых тем в моей работе - RAG. 1️⃣Как работает RAG? RAG (Retrieval-Augmented Generation) — это метод, позволяющий большим языковым моделям (LLM) улучшать качество ответов за счет использования актуальной информации из внешних источников, таких как базы данных, документы или API. Этот подход снижает вероятность ошибок модели (галлюцинаций) и обеспечивает более точные и контекстуально обоснованные ответы, даже если сама модель обучалась на устаревших данных. Концептуально можно выделить несколько ключевых компонентов и этапов, которые обеспечивают работу RAGа: 1. Ввод пользовательского запроса. 2. Запрос преобразуется в векторное представление (эмбеддинг), которое математически описывает смысл запроса. Обычно используется предобученная модель для генерации эмбеддингов. 3. Далее вектор запроса сравнивается с хранящимися в базе векторами для поиска наиболее релевантных данных. В качестве баз для хранения часто используют Qdrant, Pinecone или Weaviate. 4. Из базы данных извлекаются фрагменты текста или документов, которые лучше всего соответствуют запросу. Эти данные формируют контекст для ответа. 5. LLM получает извлеченный контекст и запрос. Из этих данных она генерирует ответ, который после возвращается пользователю. 2️⃣В чём преимущества использования системы RAG? Главное преимущество использования RAG - скорость поиска, так как ни регулярки, ни LLM не решает этот вопрос лучше. Но придется тестить много разных моделей для эмбеддингов, и четко оценивать различные метрики расстояния между запросом и документом. 3️⃣Когда лучше использовать Fine-tuning вместо RAG? Базовый ответ на этот вопрос, когда не нужен никакой сильный поиск, потому что зачастую после использования RAG системы все равно нужен запрос в LLM для нормального(человечного) ответа. Все равно RAG требует некоторых вычислительных мощностей, поэтому если можно сократить путь, то всего это делайте. 4️⃣Типы RAG систем Sparse Retrieval (BM25, TF-IDF) BM25 основан на методе оценки ключевых слов TF-IDF(Term-Frequency Inverse-Document Frequency), используя модель двоичной независимости из расчета IDF и добавляя штраф за нормализацию, который взвешивает длину документа относительно средней длины всех документов в базе данных. Чаще всего этот метод используют для реализации быстрых решений, так как он прост в реализации, имеет хорошую скорость и также можно точно настроить под задачу. Но дальше выходят основные ограничения метода: не учитываются семантические свящи между словами и плохая восприимчивость к синонимии и контексту. Ноутбук для использования Dense Retrieval(vector embeddings + ANN) Dense Retrieval сочетает в себе два ключевых компонента: 1. Векторные эмбеддинги для представления запросов и документов в едином векторном пространстве 2. ANN - алгоритмы приближенного поиска ближайших соседей для выборки ближайших векторов Плотные вектора подходят намного больше для поиска по контексту, но у них возникают проблемы с ключевыми словами. Поэтому финальным решением чаще всего становится Hybrid Retrieval. Hybrid Retrieval (комбинация sparse + dense) Хотя dense ретриверы, основанные на сложных моделях встраивания, хорошо понимают семантические связи и намерения пользователя, они иногда могут промахиваться по запросам, требующим точных лексических совпадений. Например, модель может уловить общую тему запроса, но не отдать приоритет документам, содержащим очень конкретный, но менее распространенный код продукта или технический термин, упомянутый пользователем. Напротив, традиционные sparse ретриверы, такие как BM25, отлично находят эти точные термины, но им не хватает более широкого контекстного понимания для поиска семантически похожего, но лексически разного контента. Они работают с ключевыми словами, которые, несмотря на точность, могут быть нестабильны при работе с синонимами, парафразами или сложными запросами на естественном языке. Сочетание плотных и разреженных методов поиска обеспечивает ряд преимуществ для вашей системы RAG Ноутбук с примером

2,029 views

Yayınlandı 18 Ağu

База собесов про LLM - промптинг 💃 Предыдущий пост этой рубрики был встречен очень хорошо по реакциям и репостам, поэтому вторая часть посвященная промптингу к вашему вниманию. 1️⃣Базовая структура промптов По сути, есть две основные методологии составления промптов: AUTOMAT и CO-STAR. Давайте начнем с первого: (А) Act as a … ― вы определяете роль LLM. Имеет смысл сказать модели, чтобы она действовала как профессионал в предметной области. (U) User Persona & Audience ― с кем взаимодействует модель, аудитория, уровень ее подготовки. (T) Targeted Action ― что необходимо сделать. (O) Output Definition ― определяем выходной формат. (M) Mode/Tonality/Style ― настроение, стиль. Объясните модели, как читатель должен воспринимать текст. (A) Atypical Cases ― обработка исключений. Этот раздел для промптов, работающих с разным набором данных. Например, в приложениях, где один и тот же промпт вызывается с разными пользовательскими запросами. Объясните модели, как реагировать, когда пользователь спросил что-то не то. (T) Topic Whitelisting ― контекст, допустимые обсуждаемые темы. Это раздел также для промптов, работающих с разным набором данных. Думаю, создатели фреймворка разделили последние два пункта в таком порядке в основном ради того, чтобы получился красивый акроним. Указываем модели, о чем мы собираемся говорить. Теперь CO-STAR. По сути, тот же фреймворк, только в профиль: Context: Объясните модели, о чем речь, предоставьте подробности и контекст. Objective: Какая цель? Чего вы хотите добиться? Четко опишите задачу. Style & Tone: Аналогично AUTOMAT ― укажите эмоциональный тон ответа. Audience: Ваша аудитория, кто будет это читать, на кого вы ориентируетесь, готовя ответ. Response: Определите формат вывода Есть еще множество различных техник промптинга и вряд ли вы когда-нибудь их будете учить наизусть, но главное для меня - это обьяснять задачу LLM, как ребенку: сказать, чем он занимается, почему это важно, дать инструкции и примеры. 2️⃣Что такое in-context learning? Его еще называют обучение "на лету", то есть когда мы пытаемся улучшить качество ответа через промпт, без изменений весов LLM. 3️⃣Типы промптов Если вы начнете гуглить, то вам выдаст кучу непонятных типов, например сравнительных или ролевых промптов. Но в целом их можно обьединить в три вида: zero-shot, few-shot и chain-of-thought. Разберем каждый из них: Zero-shot: предполагают отсутствие примеров в запросе. Модель должна самостоятельно понять задачу и сгенерировать соответствующий ответ. Этот подход хорошо подходит для получения общего ответа или выполнения простой команды, где не требуется контекст. Few-shot: промпт включает несколько примеров решения задачи, что помогает модели лучше понять контекст и требования. Подходит для сложных задач, где важен контекст или требуется специфический стиль ответа. Сhain-of-thought: модель обрабатывает задачу пошагово, следуя логической цепочке рассуждений. Идеален для ответов, требующих последовательного анализа или расчета. 4️⃣Как повысить точность и надёжность ответов, а также сделать их проверяемыми в LLM? Как мы все знаем, что LLM очень любит галюцинировать и выдавать несуществующие факты за реальные. Для нас это может стать большой проблемой, потому что это достаточно сложно отличить. Поэтому есть несколько вариантов, как это можно избежать: 1. RAG Базовый поиск по векторам по базе документов, при котором LLM не ищет или придумывает данные, а сразу принимает реальные данные из нашей базы данных 2. Делать еще один запрос в LLM для проверки фактов Базовая идея проверить один ответ другим запросом в LLM, но если вы делаете продукт для клиента, то это станет огромной проблемой, так как один запрос в LLM +3 секунды. 3. Делать структурированные выводы информации Одной из лучших вещей, что есть в langchain считается structered_output, который дает возможность писать ответы в LLM в нужном формате. Промпты, наверное, самая простая тема в собесах, так что если на этом посте будет больше 30 репостов, то сразу выпущу вопросы с собеса про RAG. Обязательно ставьте реакции, автору будет приятно💗

1,720 views

Yayınlandı 14 Ağu

Langchain vs LlamaIndex vs CrewAI vs Custom 😃 Последний пост из серии агентов и фреймворков для них, тут освещу основные боли, а также поговорим, а что в итоге выбрать для разных задач. 1️⃣Langchain: тот самый умник, который много что умеет, но начинаешь копаться и становится больно Библиотека хочет казаться швейцарским ножиком для разработки любой вещи в ИИ, собрав в себе все, начиная от агентов до векторных баз, но кажется это начинает превращаться в огромную стопку белья, где ты конечно прекрасно знаешь что лежит, но не совсем... Также для полного силы использования, нужно знать LangGraph, а для прода еще и LangSmith, и уже получается очень много. Да и некоторые методы кажутся сыроватыми и непродуманными. Но все равно этот фреймворк остается самым популярным из-за огромного количества внешних интеграций, хорошей документации и нежеланием разработчиков переходить на другие инструменты. 2️⃣Llamaindex: непонятно, как сюда пришел, но вроде полезен Дело в том, что Llamaindex задумывался вообще под задачу RAG, поэтому тут проблемы абсолютно логичны: не хватает методов, незрелая документация. Но в остальном все очень удобно, есть ноутбуки с пайплайнами решений и он в целом проще. Если вам хочется простой и реальный проект, чтобы понять, но не измучатся с версиями библиотек, то welcome. 3️⃣CrewAI: младший брат Langchain, когда родители устали воспитывать старшего ребенка, поэтому без огромного набора скиллов, но с теми же проблемами СrewAI построен на Langchain, и это уже настораживает. Он обещает упростить создание мультиагентных систем, но за удобство приходится платить. Помимо старых проблем Langchain, тут у тебе совсем мало контроля: например, системные промпты не изменить, так они еще и написаны с ошибками. Использовать, когда нужно быстрое демо мультиагентских систем. 4️⃣ Custom: опять все делать самому Все изучать, думать, короче, если это и делать с нуля, то как можно раньше, потому что уйдет кучу времени и за 5 минут до демо сделать не получится. Бабки, бабки, бабки... Вы скажете, причем тут это, ведь фреймворки ничего не генерят. Да, но они отравляют цепочки вызовов и делают это по разному. Например, у Langchain и CrewAI это около 0.05–0.10 доллара за запрос при сложных цепочках. У Llamaindex все проще 0.01–0.03 доллара за запрос для RAG-задач. Кастомно это будет еще дешевле, но могут пригодиться базы данных, сервера или облака, но можно, изучив все это, просто попасть в бигтех. Про фреймворки читаем у Саши, один из лучших каналов на СНГ просторах Как вам такой формат постов и какую архитектуру вы хотите разобрать?) Обязательно ставьте реакции и пишите комментарии💗

1,520 views

Yayınlandı 11 Ağu

Агентские фреймворки для работы Поскольку вам больше нравятся всякие прикольные штуки с ссылками, чтобы их можно было разобрать, то разберемся сегодня с агентскими фреймворками, сразу с кодом. Трейсхолдом для меня стал гитхаб и 15к звездочек на нем, потому что разработок сейчас очень много. 1️⃣Llamaindex Основной фокус этого фреймворка всегда делался на работу с данными и индексацию разнородных источников. Не смотря на популярность, в нем нет нагромождения механизмов управления агентами, в отличие от того же Langchain. Основные фишки: - Построение деревьев индексов (TreeIndex) и граф-индексов (GraphIndex). - Автоматическая сегментация и аннотирование документов перед поиском. - Встраиваемая система кэширования и переиспользуемых запросов 2️⃣Langchain Самый известный и тяжелый фреймворк по количеству инстрментов: цепочки, агенты, память и тулы. Но, к сожалению, это медленно губит этот фреймворк, куча непонятных методов, огромная документация и боль для разработки Фишечки: - Построение многошаговых workflows: от простых question–answer до сложных бизнес-процессов. - Встроенные шаблоны “ConversationChain”, “RetrievalQA”, “AgentExecutor”. - Модули памяти: chat, vector, SQL, даже Redis. 3️⃣Haystack Наиболее продакшн ориентированный фреймворк, который предлагает готовые UI, устойчивые пайплайны, поддержку Elasticsearch/Weaviate в одном пакете. Заточенность на поиск данных и систем RAG. Фишки: - “Document Store” (Elasticsearch, FAISS, Weaviate, Milvus). - Конвейеры с логированием, кэшированием и Fallback-механизмами. - Встроенная фронт-энд панель (Streamlit/Flask) для проверки качества и аналitika запросов. 4️⃣Semantic-kernel Разработочка от Microsoft, в которой вы сначала пишите целевую функцию, а затем разбиваете ее на шаги, применяя плагины. Подходит для тех, кто хочет интреграцию с C#/.NET сервисами, правда смущает множественное использование Azure. Фишечки: - Planner API: создаёт план из нескольких вызовов LLM, выбирая их автоматически. - Поддержка Python и C#, одинаковый SDK-стиль для обеих платформ. 5️⃣Meta GPT Наше любимое MCP в полном понимании - у каждого агента своя роль и зона ответственности. Многое работает из коробки - получаешь готовые сценарии генераций требований, кода и тестов. Фишечки: - Сценарии коллаборативного генерирования: репорты, доски задач, документация. - Визуализация этапов работы и hand-off между агентами. 6️⃣Autogen Еще одна разработка от ребят, которые очень любят обновлять окна. В целом, это мультиагенсткий фреймворк с гибкой маршрутизацией запросов. Фишечки: - Синхронные и асинхронные сценарии – агенты могут разговаривать как в реальном времени, так и по расписанию. - «Function calling» и кастомные утилиты — легко расширяется внешними API. - Mock-режим: тренируете взаимодействие агентов без реальных LLM-вызовов. 7️⃣crewAI Еще один для разработки мультиагентов, но без обилия зависимостей и сложных пайпланов - идеально, если демо через два часа Фишечки: - DSL для описания агентов, их навыков и целей. - Автоматическое логирование каждого шага и возможность «перемотки» диалога. 8️⃣Mastra Очень крутой проект, так как помимо запуска и разрабокти агентов, предлает визуальные панели с метриками, трасировкой и алертами. Фишечки: - Дашборд с графиками по latency, throughput, ошибкам агентов. - Встроенный мониторинг SLA и оповещения через email/Slack. Как вам такой пост?) Какие фреймворки вы еще используете в разработке?) Обязательно ставьте реакции и пишите комментарии💗

1,650 views

Yayınlandı 7 Ağu

Огромный список open-source LLM для работы 1️⃣ Deepseek DeepSeek-Math-7B DeepSeek-Coder-1.3|6.7|7|33B DeepSeek-VL-1.3|7B DeepSeek-MoE-16B DeepSeek-v2-236B-MoE DeepSeek-Coder-v2-16|236B-MOE DeepSeek-V2.5 DeepSeek-V3 DeepSeek-R1 2️⃣ Alibaba Qwen-1.8B|7B|14B|72B Qwen1.5-0.5B|1.8B|4B|7B|14B|32B|72B|110B|MoE-A2.7B Qwen2-0.5B|1.5B|7B|57B-A14B-MoE|72B Qwen2.5-0.5B|1.5B|3B|7B|14B|32B|72B CodeQwen1.5-7B Qwen2.5-Coder-1.5B|7B|32B Qwen2-Math-1.5B|7B|72B Qwen2.5-Math-1.5B|7B|72B Qwen-VL-7B Qwen2-VL-2B|7B|72B Qwen2-Audio-7B Qwen2.5-VL-3|7|72B Qwen2.5-1M-7|14B 3️⃣ Meta Llama 3.2-1|3|11|90B Llama 3.1-8|70|405B Llama 3-8|70B Llama 2-7|13|70B Llama 1-7|13|33|65B OPT-1.3|6.7|13|30|66B 4️⃣ Mistral AI Codestral-7|22B Mistral-7B Mixtral-8x7B Mixtral-8x22B 5️⃣ Google Gemma2-9|27B Gemma-2|7B RecurrentGemma-2B T5 6️⃣ Apple OpenELM-1.1|3B 7️⃣ Microsoft Phi1-1.3B Phi2-2.7B Phi3-3.8|7|14B 8️⃣ Nvidia Nemotron-4-340B 0️⃣ xAI Grok-1-314B-MoE 🔟 Cohere Command R-35 1⃣1⃣ OpenAI Самые новые модели, которые вышли буквально во вторник Ироничный получается вывод, если смотреть на топ этого списка) Какие бы вы еще хотели подборки?) Обязательно ставьте реакции и буду ждать вас в комментариях💗

1,940 views

Yayınlandı 4 Ağu

В этих постах я хочу обсудить архитектуры, которые не так часто встречаются в жизни, но при этом представляют собой достаточно интересные решения. ELMO — это многослойная двунаправленная рекуррентная нейронная сеть c LSTM (рис. сверху). При использовании word2vec или fastText не учитывается семантическая неоднозначность слов. Так, word2vec назначает слову один вектор независимо от контекста. _ELMO_ решает эту проблему. В основе стоит идея использовать скрытые состояния языковой модели многослойной LSTM. Было замечено, что нижние слои сети отвечают за синтаксис и грамматику, а верхние — за смысл слов. Пусть даны токены t1,...,tN, на которые поделено предложение. Будем считать логарифм правдоподобия метки слова в обоих направлениях, учитывая контекст слева и контекст справа, то есть на основании данных от начала строки до текущего символа и данных от текущего символа и до конца строки. Таким образом, модель предсказывает вероятность следующего токена с учетом истории. Пусть есть L слоев сети. Входные и выходные данные будем представлять в виде векторов, кодируя слова. Тогда каждый результирующий вектор будем считать на основании множества: {xLMk,hLMk,j−→−,hLMk,j←−−|j=1,...,L}={hLMk,j|j=1,...,L}. Здесь xLMk — входящий токен, а hLMk,j−→− и hLMk,j←−− — скрытые слои в одном и в другом направлении. Тогда результат работы ELMO будет представлять из себя выражение: ELMOtaskk=γtaks∑Lj=0staskihLMk,j. Обучаемый общий масштабирующий коэффициент γtask регулирует то, как могут отличаться друг от друга по норме векторные представления слов. Коэффициенты staski — это обучаемые параметры, нормализованные функцией Softmax. Модель применяют дообучая ее: изначально берут предобученную ELMO, а затем корректируют γ и si под конкретную задачу. Тогда вектор, который подается в используемую модель для обучения, будет представлять собой взвешенную сумму значений этого векторах на всех скрытых слоях ELMO. Простое использование ELMO: import torch from allennlp.modules.elmo import Elmo, batch_to_ids options_file = "https://allennlp.s3.amazonaws.com/models/elmo/2x4096_512_2048cnn_2xhighway/elmo_2x4096_512_2048cnn_2xhighway_options.json" weight_file = "https://allennlp.s3.amazonaws.com/models/elmo/2x4096_512_2048cnn_2xhighway/elmo_2x4096_512_2048cnn_2xhighway_weights.hdf5" elmo = Elmo(options_file, weight_file, 1, dropout=0) sentences = [["I", "love", "to", "play", "soccer"], ["My", "favorite", "team", "is", "Barcelona"]] character_ids = batch_to_ids(sentences) elmo_embeddings = elmo(character_ids) Использование ELMO с механизмом Attention: import torch import torch.nn as nn import torch.nn.functional as F from allennlp.modules.elmo import Elmo, batch_to_ids class Attention(nn.Module): def __init__(self, hidden_size): super(Attention, self).__init__() self.fc = nn.Linear(hidden_size, hidden_size) self.tanh = nn.Tanh() self.softmax = nn.Softmax(dim=1) def forward(self, x): out = self.fc(x) out = self.tanh(out) weights = self.softmax(out) return weights options_file = "https://allennlp.s3.amazonaws.com/models/elmo/2x4096_512_2048cnn_2xhighway/elmo_2x4096_512_2048cnn_2xhighway_options.json" weight_file = "https://allennlp.s3.amazonaws.com/models/elmo/2x4096_512_2048cnn_2xhighway/elmo_2x4096_512_2048cnn_2xhighway_weights.hdf5" elmo = Elmo(options_file, weight_file, 1, dropout=0) attention = Attention(1024) sentences = [["I", "love", "to", "play", "soccer"], ["My", "favorite", "team", "is", "Barcelona"]] character_ids = batch_to_ids(sentences) weights = attention(elmo_embeddings['elmo_representations'][0]) weighted_elmo_embeddings = weights * elmo_embeddings['elmo_representations'][0] Как вам такой формат постов и какую архитектуру вы хотите разобрать?) Обязательно ставьте реакции и пишите комментарии💗

1,890 views
1234567•••10•••1617