Как не обкакаться при старте ML-проекта (Часть 1/2)
Пространство проблем и пространство решений
Когда к вам приходит бизнес и говорит "Нам нужна система рекомендаций!", то вы не должны бежать и, сломя голову, искать новые алгоритмы для решения задачи. Вы должны выдохнуть и спросить: - Зачем она нам нужна?
- Как именно система рекомендаций будет приносить нам деньги?
- Что мы будем рекомендовать?
- Какую проблему она решает?
После ответа на данные вопросы может возникнуть такая ситуация, когда ML-алгоритм совершенно не нужен, достаточно всего лишь какого-нибудь алгоритма или эвристики, что значительно сокращает время на разработку
Перед разработкой любой ML-системы мы задаём вопрос из пространства проблем - определяется вопросами "Что?" и "Зачем?", а затем переходим в пространство решений - определяется вопросом "Как?" - средства реализации проблемы
Пример из жизни
Мы пилили проект по генерации коротких роликов на основе текста. Мы не залезли в пространство проблем, и как итог мы потратили кучу времени и денег, чтобы переделать проект под новые требования. Не было уточнений множества деталей и как итог, бизнес ожидал одно, а рзрабы делали совершенно другое
Итог
Во время проектирования ML-системы задавайтесь вопросом "Что?" и "Зачем?", а уже после "Как?"
Материалы взяты из книги Валерия Бабушкина
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🍌5
Как не обкакаться при старте ML-проекта (Часть 2/2)
Очень часто в компаниях так бывает, что команды делают ML-продукт ради ML-продукта, не понимая того, что хотел заказчик, и зачем модель в целом нужна бизнесу. Обычно это происходит из-за того, что разработчики и заказчики не слышат друг другаИ тут встаёт вопрос:
А как определить проблему так, чтобы обе стороны максимально понимали друг друга?
Алгоритм для того, чтобы наконец-то начать понимать и слышать друг друга:
Алгоритм похож на перевёрнутую пирамиду, которая начинается с понимания самых примитивных вещей и заканчивается более глубинными понятиями
В самом начале мы формулируем проблему, формулировка которой будет понятна любому руководителю уровня C (СTO, CEO, ...).
Например: "В нашем приложении есть мошенники, которые пытаются атаковать наших пользователей. Если определять мошенников, то мы сможем обеспечить более надёжную безопасность приложения."
Это нужно, чтобы погрузиться в детали и конкретные проблемы, которые может решить наша система, также нужно стараться найти несоответствия в ответах и противоречия, так как это наш самый главный враг.
Например: "Что такое мошенник?", "Как он вредит?", "Вредит ли он вообще?"...
Погружаемся ещё глубже и вычленяем подробную информацию и технические детали по имплементации решения.
Например: "Как мы технические определяем, что это мошенник?"
Итог
Перед написанием кода уточните с помощью данного алгоритма следующее:
- что вы хотите в целом делать
- зачем вы хотите делать
- что означают сущности, с которыми вы будете работать
И всеми возможными способами мучайте бизнес, чтобы расставить все точки над И.
Лучше потратить несколько дней на эти вопросы, нежели 3 месяца обучать модель и выкинуть её в окно (P.S. Джейсон Стейтем)
Материалы взяты из книги Валерия Бабушкина
Please open Telegram to view this post
VIEW IN TELEGRAM
🍌9👍7🌭2❤1
Дайджест ресурсов или как стать гуру в LLM, устройстве тензорах и DL парадигм
На YouTube от 3Blue1Brown вышла понятная и короткая серия лекций LLM. В них рассказывают всю базу про их устройство, наглядно визуализируя основные механизмы.
Вследствие этого обновил RoadMap по уничтожению LLM
1.
Introduction
(определения, важные теоремы и общие понятия)
10.
Machine Learning Applications
(про то, как тензоры работают в привычной нам среде, оптимизацию лоссов и атеншен)
12.
Tensorgrad
(более глубоко про производные, градиенты и операции над тензорами)
Ребята c Reddit пару выпустили книгу "Illustrated book to learn about Transformers & LLMs" с объяснением главных DL-парадигм в картинках. Там рассказывается про:
- База нейросетей: (перцептроны, backprop, dropout и тд)
- Эмбеддинги, токенизация, word2vec, RNN, LSTM, GRU
- Трансформеры: BERT, GTP, T5, self-attention, Encoder`ы, Decoder`ы и рекомендации по ускорению вычисления
- LLM: SFT, RLHF, промпт-инжиниринг
- бонусом рассказ про классические задачи: машинный перевод, sentiment extraction и RAG
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15🍌6🍾2❤🔥1❤1👍1
Оффер на 250к за месяц в СберДевайсы
На моём менторстве был ученик с небольшим количеством опыта, и он пришёл с запросом найти новую работу. Спустя ОДИН месяц работы он получил оффер на 250к в СберДевайсы на жёсткую CV позицию.
Как мы с ним это сделали
- как составлять резюме
- как вести себя с HR`ом
- как правильно готовиться к собесу
- где, как, какую и сколько информации учить
- как правильно торговаться
- как побороть страхи и не боятся ошибок и собесов
По итогу моих и его усилий он прошёл несколько собесов, заучил всё про трансформеры и во снах вспоминал про изменяемые типы данных. Спустя все тяжести он стал гигачадом и получил оффер на 250к
Конечно же, он сам бы мог пойти и искать работу, и я уверен, что нашёл бы. Но со мной его процесс ускорился в разы, помог убрать страхи и стать гигачадом, также я дал ему гарантию того, что он получит оффер, если будет прислушиваться к моим советам... Выводы делайте сами
Please open Telegram to view this post
VIEW IN TELEGRAM
Teletype
Data Science Mentoring by Dima Savelko
Меня зовут Дима, и я ментор по Data Science / Machine Learning. Deep Learning Engineer (ClassicML, NLP/LLM) с 4-летним опытом коммерческой разработки.
🍌20🤡7⚡5❤1🔥1
Как устроен этот ваш BERT
В первую очередь, этот пост расчитан для новичков, для тех кто только входит в мир DS
Верхнеуровнего BERT превращает текст в цифры, то есть хавает "Я хочу пиццу", а на выходе даёт что-то типо [0.21, 0.19, 0.14, 0.12]. Эти цифры позволяют комьютеру "понимать" текст на комьютерном языке.
Теперь немного глубже. BERT основан на архитектуре, называемой трансформером. У трансформера две части: энкодер и декодер (1 картинка)
BERT использует энкодер, что делает его топовым инструментом для таких задач как:
BERT обучался на двух ключевых задачах, которые помогли ему стать такой мощной моделью: (2 картинка)
Модель произвела большой скачок в сфере, так как модель принесла
Ссылки для более глубоко понимания BERT:
- Transformer, explained in detail | Igor Kotenkov | NLP Lecture (in Russian) - советую посмотреть весь видос
- BERT Neural Network - EXPLAINED!
- BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
- Оригинальная статья BERT
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🍌4🔥2
Уничтожение Алгоритмов v2
На собесах вам могут спросить как и обычный алгос с LeetCode, так и попросить заебенить линейную регрессию на numpy или self-attention на torch, или на чистом питоне...
Вот роадмапик для низведения до нуля алгоритмов и структур данных
Как стоит подходить к изучению материалов
Решайте алгос 30-40 минут, если ничего не получилось, то смотрите разбор от NeetCode или другого челика. Поняли концепцию и после этого повторили код самостоятельно с этой же концепцией.
Также кидаю дополнительные ресурсы
а) Тренировки по алгоритмам от Яндекса 1.0
б) Тренировки по алгоритмам от Яндекса 2.0
в) Тренировки по алгоритмам от Яндекса 3.0
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18🍌4❤1👍1🤣1
Уничтожение Self-Attention
Self-Attention или механизм внимания - это такой механизм, который используется сейчас во всех современный LLMках. До него многие задачи решались с помощью рекуррентных нейросетей (RNN), но они обладали некоторыми недостатками:
- сложность в учёте длинных последовательностей
- проблема взрыва/затухание градиентов
- нельзя параллелить вычисления
- сложная в интерпретации
Как итог гугл выкладывает статью Attention Is All You Need. В ней гугл показывает концепцию, которая может решить данные недостатки
Как устроен Self-Attention
На вход подаётся векторные представления слов (зелёные матрицы с 1 картинки). Каждая "строка" в этой матрице - это векторное представление слова. Входящие матрица умножаются на матрицы весов Key, Query, Values. После умножение уже получается матрицы Query, Key, Values (розовая, оранжевая и голубая матрица справа на первой картинке).
Умножается матрица Query на транспонированную матрицу Key (Q*K.T). Мы получаем промежуточную матрицу, отражающую значимость токенов друг для друга.
Для нормировки матрицы Q*K.T, матрица делится на корень из значения размерности векторов модели (например, на sqrt(512) для модели с размерностью 512). Нам нужно делить, так как при умножении Q на K.T у нас увеличивается дисперсия на sqrt(размерность).
Потом применяется функция softmax для, чтобы нормализовать значения и получить attention-матрицу. На картинке 3 предложение "Life is short eat desert first", допусти каждое слово - это токен. Проделав шаги 1 - 4 у нас получится примерно такая attention-матрица, как на картинке 3, где каждый с каждым токеном имеет свою оценку "внимания" между собой. Если скор большой, то эти токены как-то связаны между собой, возможно они вместе образуют какую-то общую информацию.
Зависит от задачи (например обучение генеративной модели), но на attention-матрицу может наложиться маска, например как на картинке 4
attention-матрица умножается на матрицу Values по итогу получается матрица, которая идёт в последующие слои.
Почему выбор сделан на self-attention или его преимущества, которые вас обязательно спросят на собесе
Это была краткая сводка материала, чтобы понять концепцию Self-Attention и рассказать на собесе. Если вы хотите больше узнать более подробно про Self-Attention, то прошу к прочтению
- Всем смотреть базу от Котенкова, здесь мы с ручкой и листком переписываем архитектуру, чтобы в полной мере понимать, как она работает
- Трансформеры в картинках - эту статью прочитать в качестве закрепления материала от Котенкова
- Transformers Explained Visually (Part 3): Multi-head Attention, deep dive
- Attention Networks: A simple way to understand Self-Attention
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🍌16👍6🔥4
Уничтожение LLM System Design
Как отвечать на собеседовании, если вас спросят: «Постройка мне чат-бота с помощью LLM»? Разберем основные шаги на конкретной задаче.
Основываясь на этот пост, пройдёмся по пунктам.
Задача: создать чат-бота, который отвечает на финансовые запросы.
Исходные условия:
- В продакшене уже используется API GigaChat (временное решение).
- Доступен API ChatGPT.
- Есть два ассессора.
- Ответы предоставляются без контекста.
Ограничения:
- Ответ за максимум 2 минуты.
- Аппаратные ресурсы: 4 GPU (80 ГБ каждая, A100).
Бизнесовые метрики
- Уровень автоматизации — процент запросов, обработанных ботом без операторов.
- Снижение затрат — экономия на поддержке
- Удержание клиентов — сколько пользователей продолжают пользоваться услугами после общения с ботом. Но эту метрику сложно определить, поэтому для простоты стоит поделить на тех пользовался чат-ботом, а кто не пользовался.
Онлайн-метрики:
- Удовлетворенность клиентов (CSAT) — пользовательская оценка (1–5).
Оффлайн-метрики:
- Loss — насколько хорошо обучена модель.
G-Eval — метод «LLM as Judge», когда одна модель оценивает ответы другой по качеству (например, от 1 до 5).
Оценка ассессоров — реальные люди оценивают ответы по техническому заданию. Это ключевая метрика, с которой можно проверить корреляцию с G-Eval.
Бенчмарки — открытые или специально созданные под задачу бизнеса.
Выделяем ключевые сущности:
У нас есть диалог, а в диалоге:
- Запрос пользователя
- Ответ модели
- Маркер начала диалога
- Идентификаторы запроса, ответа, пользователя и т.д.
Способы получения данных:
Объем данных: Для обучения LoRA потребуется хотя бы 10 тысяч примеров для тренировки и около 700 для тестирования.
Для упрощения пока исключаем поиск контекста, работу с контекстом распишу в следующей части)
Бейзлайн: предположим, что у нас уже есть метрики для текущего решения (например, на GigaChat).
Входные данные:
X — запрос пользователя.
Y — эталонный ответ.
Модели:
llama3.1 400b. Пробуем сначала запромпить модель и смотрим на результаты бенчмарков.
saiga_llama3.1 70b. Сначала промптим, затем обучаем под конкретную задачу.
Loss: Используем CrossEntropyLoss — простой и надежный метод для обучения LoRA на основе SFT.
Метрики:
На тренировочной выборке оцениваем Loss.
На тестовой — G-Eval, оценки ассессоров (на 500 случайных примерах) и бенчмарки.
Деплой: Для деплоя используем vllm.
- Добавить контекст в ответы для повышения точности модели (реализуем в следующей части).
-Применить ORPO-метод, чтобы модель лучше понимала, какие ответы допустимы, а какие нет.
- Квантизация или дистилляция для того, чтобы уменьшить latency
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡14🍌7❤🔥3❤2👍2🥰1
Forwarded from ML Baldini • Nikita Boyandin (Nikita Boyandin)
#Коллабы #road1k
ML system design - это та вещь, с которой я столкнулся только когда уже был на стажировке, причем сразу с книжки Валерия Бабушкина(кстати, он подписался на меня в Linkedin😭 ). У Димы есть невероятно классный пост про старт в mlsd и как их побеждать на собесах, а я постараюсь чуть расширить область и дать реальных кейсов.
В своем посте я разберу типовой кейс из классического мл "Обнаружение вредоносного контента🤨 в социальных сетях"
1. Формулировка проблемы😲
Уточняющие вопросы точно помогут сделать задачу понятнее и проще, поэтому стоит их задавать по максимуму, даже если они кажутся глупыми
Цель: отслеживать публикации, выявлять вредоносный контент и понижать его в должности / удалять
Примеры категорий вредоносного контента: насилие, обнаженная натура, разжигание ненависти
Цель ML: определить, является ли публикация вредоносной
Входные данные: Публикация (текст, изображение, видео)
Выходные данные: P(вредная) или P(насильственная), P (обнаженная натура), P (ненависть) и т.д
Категория ML: Мультимодальная (с несколькими ярлыками) классификация
2. Метрики😐
Оффлайн-метрики: F1, PR-AUC, ROC-AUC
Онлайн-метрики: распространенность (процент вредоносных сообщений, которые не были предотвращены, по сравнению со всеми публикациями), количество показов вредоносных сообщений, процент обоснованных (отмененных) обращений, показатель активности (соотношение обнаруженных систем к обнаруженным пользователями)
3. Архитектурные компоненты🤨
Мультимодальный ввод (текст, изображения, видео и т.д.):
Методы мультимодального слияния
Раннее слияние: сначала объединяются модальности, а затем делается единый прогноз
Позднее слияние: модальности обрабатываются независимо друг от друга, прогнозируется слияние
минусы: отдельные обучающие данные для модальностей, подборка индивидуально безопасного контента может быть вредной
Классификация с несколькими метками/многозадачностью
Один бинарный классификатор для каждой категории вреда (p (насилие), p (обнаженная натура), p (ненависть))
несколько моделей, которые обучаются и обслуживаются отдельно, правда стоят дорого
Один классификатор с несколькими метками - сложная задача для изучения
Многозадачный классификатор: изучайте несколько задач одновременно
на отдельных общих слоях (изучайте сходство между задачами) -> преобразованные объекты
уровни, относящиеся к конкретной задаче: главы классификации
плюсы: единая модель, общие уровни предотвращают избыточность, обучающие данные для каждой задачи можно использовать и для других задач (ограниченные данные)
4. Сбор и подготовка данных☺️
Основные участники, по которым доступны данные:
Идентификатор пользователя, возраст, пол, местоположение, контакты
Элементы(сообщения): идентификатор публикации, идентификатор автора, контекст текста, изображения, видео, ссылки, временная метка
Взаимодействие пользователя с публикацией: user_id, post_id, тип взаимодействия, значение, временная метка
5. Разработка функций😠
Особенности: Содержание публикации (текст, изображение, видео) + Взаимодействие с публикацией (текст + структурированный) + Информация об авторе + Контекст сообщений
Текст:
Предварительная обработка (нормализация + токенизация)
Кодирование (векторизация):
Статистические (BoW, TF-IDF)
Кодеры на основе ML (BERT)
Изображения / видео:
Предварительная обработка и извлечение объектов
Изображения:
Clip, SImCLR
Видео:
VideoMoCo
Взаимодействие с публикациями:
Количество лайков, комментариев, репостов, сообщений (масштаб)
Комментарии (текст):
Аналогично тексту публикации (совокупные вложения в комментарии)
Пользователи:
Используйте только демографические данные автора публикации, характеристики учетной записи (количество подписчиков, возраст учетной записи).
6. Разработка модели и автономная оценка🕺
7. Онлайн-тестирование и внедрение🕺
8. Масштабирование, мониторинг и обновления😠
Ресурсы для лучшего понимая🫡 :
1. Куча примеров кейсов
2. Разница МЛСД в проде и ресерче
Если понравился пост, то обязательно ставь лайк, а я пока буду дальше трудится над каналом💗
ML system design - это та вещь, с которой я столкнулся только когда уже был на стажировке, причем сразу с книжки Валерия Бабушкина(кстати, он подписался на меня в Linkedin
В своем посте я разберу типовой кейс из классического мл "Обнаружение вредоносного контента
1. Формулировка проблемы
Уточняющие вопросы точно помогут сделать задачу понятнее и проще, поэтому стоит их задавать по максимуму, даже если они кажутся глупыми
Цель: отслеживать публикации, выявлять вредоносный контент и понижать его в должности / удалять
Примеры категорий вредоносного контента: насилие, обнаженная натура, разжигание ненависти
Цель ML: определить, является ли публикация вредоносной
Входные данные: Публикация (текст, изображение, видео)
Выходные данные: P(вредная) или P(насильственная), P (обнаженная натура), P (ненависть) и т.д
Категория ML: Мультимодальная (с несколькими ярлыками) классификация
2. Метрики
Оффлайн-метрики: F1, PR-AUC, ROC-AUC
Онлайн-метрики: распространенность (процент вредоносных сообщений, которые не были предотвращены, по сравнению со всеми публикациями), количество показов вредоносных сообщений, процент обоснованных (отмененных) обращений, показатель активности (соотношение обнаруженных систем к обнаруженным пользователями)
3. Архитектурные компоненты
Мультимодальный ввод (текст, изображения, видео и т.д.):
Раннее слияние: сначала объединяются модальности, а затем делается единый прогноз
Позднее слияние: модальности обрабатываются независимо друг от друга, прогнозируется слияние
минусы: отдельные обучающие данные для модальностей, подборка индивидуально безопасного контента может быть вредной
Классификация с несколькими метками/многозадачностью
несколько моделей, которые обучаются и обслуживаются отдельно, правда стоят дорого
Один классификатор с несколькими метками - сложная задача для изучения
Многозадачный классификатор: изучайте несколько задач одновременно
на отдельных общих слоях (изучайте сходство между задачами) -> преобразованные объекты
уровни, относящиеся к конкретной задаче: главы классификации
плюсы: единая модель, общие уровни предотвращают избыточность, обучающие данные для каждой задачи можно использовать и для других задач (ограниченные данные)
4. Сбор и подготовка данных
Идентификатор пользователя, возраст, пол, местоположение, контакты
Элементы(сообщения): идентификатор публикации, идентификатор автора, контекст текста, изображения, видео, ссылки, временная метка
Взаимодействие пользователя с публикацией: user_id, post_id, тип взаимодействия, значение, временная метка
5. Разработка функций
Особенности: Содержание публикации (текст, изображение, видео) + Взаимодействие с публикацией (текст + структурированный) + Информация об авторе + Контекст сообщений
Предварительная обработка (нормализация + токенизация)
Кодирование (векторизация):
Статистические (BoW, TF-IDF)
Кодеры на основе ML (BERT)
Изображения / видео:
Предварительная обработка и извлечение объектов
Изображения:
Clip, SImCLR
Видео:
VideoMoCo
Взаимодействие с публикациями:
Количество лайков, комментариев, репостов, сообщений (масштаб)
Комментарии (текст):
Аналогично тексту публикации (совокупные вложения в комментарии)
Пользователи:
Используйте только демографические данные автора публикации, характеристики учетной записи (количество подписчиков, возраст учетной записи).
6. Разработка модели и автономная оценка
7. Онлайн-тестирование и внедрение
8. Масштабирование, мониторинг и обновления
Ресурсы для лучшего понимая
1. Куча примеров кейсов
2. Разница МЛСД в проде и ресерче
Если понравился пост, то обязательно ставь лайк, а я пока буду дальше трудится над каналом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🍌6🔥2🤝1
Тотальное Уничтожение Multihead-Attention
Для начала вам стоит прочитать пост про Self-Attention для более лучшего понимания данного поста. Если ты действительно хочешь понять MHA, то к данному посту нужно подходить ни один раз, спрашивая в комментах или у GPT.
Главная суть MHA - Multihead Attention
- Распараллеливание: Каждая голова в MHA обрабатывается независимо, что позволяет эффективно использовать вычислительные ресурсы (например, GPU).
- Интерпретация разных смыслов: Разные головы фокусируются на различных аспектах текста, что помогает модели "замечать" важные связи между словами с разных точек зрения.
Детальный разбор
Представим, что batch_size=1, seq_len=4, embedding_dim=6, heads=3 (количество голов).
На вход поступает последовательность ["Я", "Хочу", "Пиццу", "<eos>"]. Каждый токен - это слово, которое преобразуется в эмбеддинг (вектор). На выходе имеем матрицу эмбеддингов X, смотрите на картинку 1
Картинка 1:
- На вход в MHA поступает матрица эмбеддингов X.
- Имеем веса Wq, Wk, Wv, которые обучаются.
- Путём матричного умножения X на Wq, Wk, Wv получаем три матрицы: Q, K, V.
Размерности:
- X → (batch_size, seq_len, embedding_dim)
- Wq, Wk, Wv → (embedding_dim, embedding_dim)
- Q, K, V → (batch_size, seq_len, embedding_dim)
Картинка 2:
Вот у нас получились матрицы Q, K, V. Важно понимать, что MHA — это не создание новых отдельных матриц Q, K, V, а деление каждой из них на головы.
Условно, для каждого токена мы уменьшаем длину его вектора, разделяя его между головами. Например, на картинке 2 токен "пиццу" изначально представлен эмбеддингом длиной 6 → [13,14,15,16,17,18]. Если количество голов равно 3, то теперь этот токен преобразуется в 3 вектора по 2 элемента каждый → [[13,14],[15,16],[17,18]], теперь токен "пиццу" представили как три вектора с размером вектора два. Для этого выполняются операции
reshape
и swap
, у нас появляется новая переменная head_dim = embedding_dim/heads Размерности:
- Q, K, V → (batch_size, seq_len, embedding_dim) = (1, 4, 6)
- Q, K, V после
reshape
→ (batch_size, seq_len, heads, head_dim) = (1, 4, 3, 2)- Q, K, V после
swap
→ (batch_size, heads, seq_len, head_dim) = (1, 3, 4, 2)Картинки 3-5:
Теперь происходит обычная формула Self-Attention по каждой голове: softmax((Q x K.T)/sqrt(head_dim)) * V
И основная суть, что каждая голова обрабатывается параллельно на одном устройстве (например, GPU), что обеспечивает эффективное распараллеливание вычислений
Размерности:
Attention Output для каждой головы имеет размерность → (batch_size, seq_len, head_dim) = (1, 4, 2).
Картинки 6-8:
Вот мы посчитали для каждой головы Attention Output, а теперь время всё конкатить, восстанавливая исходную размерность эмбеддингов. Делаем обратные операции что и на втором шаге. Сначала
reshape
, а потом swap
Размерности:
- Attention Output каждой головы → (batch_size, text, seq_len, head_dim) = (1, 3, 4, 2)
- После
swap
→ (batch_size, seq_len, heads, head_dim)=(1, 4, 3, 2)- После
reshape
→ (batch_size, seq_len, heads×head_dim)=(1, 4, 6)Картинка 9:
Ну и наконец-то получаем наш Attention Output, который матрично умножается на матрицу весов Wo: Attention Output x Wo. По итогу получается FinalOutput, которая идёт в следующие слои
Размерности:
- Wo → (embedding_dim, embedding_dim) = (6, 6)
- Attention Output → (batch_size, seq_len, embedding_dim) = (1, 4, 6)
- FinalOutput → (batch_size, seq_len, embedding_dim) = (1, 4, 6)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🍌14🔥13❤6👍2👏1