DeepSchool
10.7K subscribers
90 photos
2 videos
1 file
501 links
Это канал школы deepschool.ru. Здесь мы будем:
- напоминать вам теорию ML/DL в виде коротких постов,
- задавать вопросы с собеседований,
- рассказывать про полезные фреймворки
- и делиться советами, которые помогут вам в работе.

@deepschool_support
Download Telegram
Встречаемся через 3 часа на лекции по RAG

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

На лекции вы узнаете:
- почему ванильная схема «ретривер + генератор» почти никогда не даёт нужного качества
- с чего начинать улучшения: эмбеддер, поиск, реранкер, генератор, данные или что-то ещё
- какие задачи приходится решать, чтобы RAG действительно работал
- как из разрозненных компонент собрать надежный RAG-продукт

🔥 А также всем участникам подарим скидку 15% на курс LLM Pro — продвинутую программу, на которой вы научитесь строить системы, которые работают в реальном мире!

Начинаем сегодня, 19 марта, в 19:00 МСК

Регистрируйтесь по ссылке и приходите сегодня вечером!
17🔥3🤝3
Как собирать NLP-системы, которые работают под нагрузкой

Обучить модель, построить эмбеддер или воспользоваться API — не значит запустить рабочую систему. RAG галлюцинирует, агент ломается на реальных сценариях, эмбеддинги не работают на специфичном домене. С этими и другими проблемами мы разберёмся на курсе LLM Pro, который стартует 26 марта!

На курсе вы научитесь:
• проектировать и запускать NLP-системы под реальные продуктовые задачи
• адаптировать LLM и эмбеддинги под специфичный домен и «живые» данные
• собирать и размечать датасеты — даже если данных изначально почти нет
• решать задачи классификации, поиска, кластеризации и NER — с ограничениями продакшн-среды
• собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
• строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой

Приходите, чтобы узнать про best practices от опытных инженеров из продуктовых команд и применять похожие подходы в своих проектах

🤖 До 25 марта вы можете присоединиться к обучению со скидкой 5%!

Изучайте программу и отзывы на сайте и записывайтесь на ближайший поток 🎓
111👍5🔥4
Продолжаем разбираться с LLM!

Подготовили 20 новых карточек с вопросами:
- зачем нужен GQA
- как scaling laws влияют на выбор модели
- FSDP vs DDP
- как изображения попадают в LLM

и много других. Готовьтесь к собеседованию здесь!

Теперь можно предложить вопрос со своего собеседования и мы его опубликуем. Для этого нажимайте «предложить вопрос» у коллекции «от сообщества 💚»
17🔥8👍5
Flash Attention-2

FlashAttention-2 — реализация алгоритма attention, которая значительно ускоряет вычисления в сравнении с первой версией и работает заметно быстрее стандартной реализации в PyTorch. В статье простыми словами разбираем, за счёт чего это происходит 👨🏼‍💻

Из нового материала вы узнаете:
- какие проблемы были у FlashAttention-1
- как удалось лучше загрузить GPU
- что изменилось в распределении вычислений
- и какую роль играет параллельный softmax

Читайте статью по ссылке! 👈🏼
Про ускорение LLM, дообучение и их деплой рассказываем на курсе LLM. Запишитесь в лист ожидания, чтобы первыми занять место и получить скидки до 20% 🔥

Автор: Антон Наумов

🪔 DeepSchool
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥2310👍7
Love, 3DCV & Robots

В этот четверг мы проведём воркшоп по использованию трёхмерных данных в CV-системах. На нём вы узнаете, как гуманоидные роботы собирают и обрабатывают 3D-информацию и что роднит их с аппаратом МРТ. Мы разберём, из каких этапов состоит пайплайн обработки 3D-данных и какие применения он находит в частных задачах.

Вы узнаете:
• как и откуда получать 3D-данные
• как их правильно выравнивать и предобрабатывать
• как работать с библиотекой Open3D
• какие 3D DL-модели существуют и для каких представлений данных они подходят
• как оценивать полученный результат
• в каких практических задачах применяется 3D и как именно

Во второй части воркшопа вы самостоятельно построите ключевые элементы пайплайна 3D-зрения для ориентации робота в комнате. Мы разделим вас на группы по 2-3 человека, и вы реализуете агрегацию и фильтрацию 3D-данных для построения модели комнаты, обработку данных нейросетью и извлечение информации для навигации робота. У вас будет эмулятор робота в пространстве, к которому вы допишете фрагменты обработки 3D-сцены.

Чтобы не терять времени на воркшопе, заранее установите Conda и настройте среду, используя этот environment.yml, с помощью команды: conda env create -f environment.yml

🙋‍♂️Спикер воркшопа — Давид Свитов, к.т.н., IIT, ex Researcher Samsung AI Center. Давид расскажет про обработку 3D-данных и поможет вам с выполнением задания.

📅 9 апреля, четверг, в 19:00 МСК

Регистрируйтесь по ссылке и приходите в четверг!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21143👻2👍1
Встречаемся через 3 часа на воркшопе по 3D CV

Сегодня разберём, из каких этапов состоит пайплайн обработки 3D-данных и какие применения он находит в частных задачах. А потом вы самостоятельно построите ключевые элементы пайплайна 3D-зрения для ориентации робота в комнате.

Вы узнаете:
• как и откуда получать 3D-данные
• как их правильно выравнивать и предобрабатывать
• как работать с библиотекой Open3D
• какие 3D DL-модели существуют и для каких представлений данных они подходят
• как оценивать полученный результат
• в каких практических задачах применяется 3D и как именно

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

Чтобы не терять времени на воркшопе, заранее установите Conda и настройте среду, используя этот environment.yml, с помощью команды: conda env create -f environment.yml

📅 9 апреля, четверг, в 19:00 МСК

Регистрируйтесь по ссылке и приходите сегодня вечером!
👌95👍4
YOLO history. Part 9

А мы возвращаемся с разбором моделей семейства YOLO! 😎 

В прошлой статье обсудили YOLOv8 и YOLOv11 — а значит, подобрались уже к самым передовым моделям. Сегодня рассмотрим все оставшиеся модели в одном посте 🤓

Итак, в новой статье:
- узнаем, как избавиться от NMS на примере YOLOv10
- поговорим об оптимизации attention для ускорения детекции из YOLOv12
- познакомимся с концепцией гиперграфа с помощью YOLOv13

Скорее читайте по ссылке! 👈🏼

🪔 DeepSchool
Please open Telegram to view this post
VIEW IN TELEGRAM
18🔥9👍8👏1
GENets: Neural Architecture Design For GPU-Efficienet Networks

Для многих GPU — основной девайс для инференса. А значит, получать высокие метрики при низком latency на нём — критически важно. Исследователи из Alibaba утверждают, что текущие быстрые решения не используют весь потенциал GPU.

В работе «Neural Architecture Design for GPU-Efficient Networks» они показывают, как проектировать сети для быстрого инференса на GPU и презентуют семейство backbones GENet.

О принципах построения свёрточных сетей для эффективного инференса на GPU и результатах авторов мы рассказали в новой статье!
Читайте материал по ссылке! 👈🏼

🪔 DeepSchool

Приходите на курс «Ускорение нейросетей», чтобы разобраться в эффективных архитектурах и подходах к ускорению
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍125🔥3🤝1
Что под капотом у видеокодеков, генеративных моделей и тимлидов? | Подкаст с Ильдаром Идрисовым

В этом выпуске мы с Ильдаром Идрисовым, Head of ML Vinteo.ai, разбираемся, как устроены видеокодеки, почему лучшие модели не могут сгенерировать нам план квартиры и почему, став тимлидом, нужно ещё научиться им быть.

Смотрите по ссылке: https://youtu.be/stCi1eQSEYY 👈🏼
🔥1812👍5
HNSW: строим маленькие миры для быстрого поиска

Поиск схожих объектов базовая задач в машинном обучении. Рекомендательные системы, семантический поиск, дедупликация, retrieval в RAG — везде нужно уметь быстро находить ближайшие векторы.

Но делать это «в лоб» — почти всегда довольно длительное занятие, поэтому зачастую используются приближенные методы.

В этой статье мы разберём один из таких методов — HNSW, и узнаем:

- как он работает
- почему гарантирует высокую скорость без сильной потери качества
- за счёт каких особенностей он настолько эффективен
- и как его параметры влияют на качество и скорость поиска

Читайте новую статью по ссылке: https://clck.ru/3TdhnE 🤩
319🔥13👍9
Разбираемся с тестированием

Подготовили карточки с вопросами по тестированию:
- пишем smoke-тесты на обучение модели
- разбираемся, зачем изобрели столько разных скоупов у фикстур
- боремся с долгой установкой в CI
- пишем регрессионный тест на метрики
и много других.

Формат тот же: вопрос на лицевой стороне, развёрнутый ответ с примерами — на обратной. Готовьтесь к собеседованию здесь!
А если хотите подготовиться не только к вопросам по тестированию, но и разобраться во всём цикле разработки DL-сервисов, то приходите на курс DLOps, который стартует 4 июня!
🔥138👍5
От ML-инженеров хотят всё больше. Раньше можно было просто обучить модель и перекинуть ноутбук бэкендеру «через стенку». Сейчас где-то нужно завернуть модель в Docker/сделать минимальное демо и довести его до пользователя. Где-то самому встроить модель в сложную систему. А где-то эту систему ещё и спроектировать.

Код-агенты, конечно, сильно упростили жизнь: собрать демку или MVP теперь проще некуда. Но они не сняли с нас главного: ответственности за полученное решение. По шапке будет получать не Claude:)

А отвечать за систему, в которой не знаешь, как устроены «кубики» — сомнительное удовольствие. Ты вроде что-то собрал и оно работает. Но почему именно так? — 🤷‍♂️. Что делать, когда сломается? — 🤷‍♂️. Остаётся верить сетке на слово, что «так правильно». Спойлер: очень часто нет.

Чтобы «кубики» были не чёрными ящиками, а понятным набором инструментов, мы запускаем курс DLOps. За 4 месяца проходим всю цепочку: от сериализации модели и небольшого сервиса на FastAPI до Nvidia Triton, k8s и мониторинга. Учим создавать полноценные сервисы и доводить их до пользователя.

В этом потоке добавили лекцию про LLM observability. Наш DLOps построен вокруг «обычных» DL-моделей. Но чем дальше, тем меньше сервисов не ходит в LLM хотя бы просто по API. А за ними нужен глаз да глаз 😉

Обучение начинается 4 июня, а до 24 мая действует скидка 20% 🔥

Переходите на сайт, изучайте подробности и оставляйте заявку на курс!

Если возникают вопросы, пишите нам в поддержку в Телеграм!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥137👍6
Спроси DeepSchool

Мы запускаем новую рубрику, в которой будем отвечать на вопросы не только наших студентов, но и всех подписчиков канала.
Начинаем с вопроса, который нам задали на QA-сессии курса DLOps.

«Сделали модель — как её задеплоить?»
💬 Отвечает Константин Носорев — Senior Backend-разработчик в Яндекс, спикер курса DLOps.

На самом деле в этом вопросе скрывается несколько разных вопросов. Разберём каждый.

1. Как запустить модель?

Есть два основных подхода:
а) FastAPI / Flask (и др.) обёртка. Файл модели загружается в HTTP / gRPC-сервис. Минимальные накладные расходы на старте, но проблемы с масштабированием / батчингом придётся решать самостоятельно.

б) Специализированные inference-серверы. Например,Triton Inference Server, TorchServe, vLLM. Поддерживают батчинг, управление памятью и обслуживание нескольких моделей одновременно. Оправданы при высоких требованиях к latency и throughput.


2. Как обеспечить доступность?

Если у вас большие требования к доступности — нужно несколько реплик на разных серверах (а лучше — ДЦ). Иначе сбой на одном сервере — и к вашей модели
«
не достучаться
»
. В случае с несколькими репликами важно, чтобы при падении одной из них трафик перераспределялся между остальными. Здесь тоже есть несколько вариантов, например:

а) Kubernetes. Автоматически поддерживает заданное число реплик, проверяет доступность / работоспособность и перераспределяет трафик.
б) Bare Metal. Прямой запуск на серверах. Максимальный контроль над ресурсами, логику перезапуска и балансировки нужно делать самостоятельно. Например, через systemd и nginx / HAProxy.


3. Как выстроить архитектуру сервиса?

Есть несколько подходов:
а) Бизнес-логика и модель в одном сервисе. Минимальная сложность при запуске, но при росте нагрузки возникают проблемы. Бизнес-логика и инференс потребляют ресурсы совместно и разделить их невозможно: если модель перегружена, масштабируется весь сервис целиком, включая логику, которая в этом не нуждается. Обратная ситуация аналогична. Это приводит к избыточному расходу памяти и GPU, а также к сложностям при горизонтальном масштабировании.

б) Отдельно микросервис с моделью и отдельно сервис с бизнес-логикой. Например, Triton или vLLM обслуживают модель, а «основной» сервис обращается к ним по HTTP/gRPC. Компоненты обновляются и масштабируются независимо: можно добавить реплики только на сторону модели или логики.


✍️ Будем продолжать этот формат — на ваши вопросы будут отвечать такие же опытные практикующие инженеры, как Константин: наши спикеры, авторы статей и друзья школы.

Задавайте вопросы на ask.deepschool.ru, а мы ответим на них в канале!
20🔥14👍10
Data Version Control

DVC - инструмент для версионирования данных, моделей и ML-экспериментов, который помогает управлять данными так же, как Git управляет кодом.

Новая статья познакомит вас с концепцией версионирования данных в DVC, расскажет, как хранить большие объёмы файлов в удалённых хранилищах, поможет внедрить и использовать DVC в своей команде.

Читайте статью по ссылке! 👈🏼

А если хотите научиться превращать модели в сервисы и доводить их до пользователей, то приходите на курс DLOps. Оставьте заявку до 31 мая, чтобы получить скидки до 15% 🔥
18👍11🔥61
Как создавать и деплоить DL-сервисы

Напоминаем, что 4 июня стартует курс DLOps, на котором вы научитесь превращать модели в сервисы и доводить их до пользователей.

На курсе вы научитесь:
• писать код для обучения моделей «по фэншую»
• конвертировать модели в JIT и ONNX
• версионировать данные, эксперименты и модели
• автоматизировать рутину и быть уверенным в своём коде
• писать веб-сервисы на FastAPI
• собирать приложения с помощью Docker
• сервить модели с NVIDIA Triton
• тестировать веб-сервисы и подменять зависимости при помощи DI
• настраивать CI/CD и деплоить веб-сервисы на удалённые машины «по кнопке» при помощи ansible и k8s
• мониторить веб-приложения при помощи Prometheus и Grafana

После каждой лекции вас ждет домашнее задание, а в конце курса — проект, где можно применить все полученные навыки.

На протяжении всего обучения вас будут поддерживать опытные инженеры: ревьюить ваш код, отвечать на вопросы во время лекций, на Q&A-сессиях и в чате.

🚀 Курс стартует 4 июня, а до 3 июня включительно вы можете записаться со скидкой 5%!

Изучайте подробности о программе и спикерах и присоединяйтесь к обучению.

Если возникают вопросы, пишите нам в поддержку в Телеграм!
8🔥4👍2😁1🤩1
Как собрать хорошие траектории для обучения LLM-агента

LLM-агенту недостаточно просто отвечать текстом: важно научить его выбирать действия и работать с инструментами. Сегодня разбираем, какие данные здесь нужны, и почему одного SFT обычно мало.

В новой статье рассказываем:
- что такое траектория в агентских задачах
- чем SFT-данные отличаются от alignment-данных
- как работают пары chosen/rejected и зачем нужен DPO
- что такое hard negatives и каким образом собирать их полезные примеры
- и как выстроить конвейер проверки, покрытия и обновления датасета

Читайте статью по ссылке! 👈🏼

Если хотите не только собирать датасеты, но и понимать, как дообучать, оценивать и запускать LLM-агентов на практике, эта тема напрямую продолжается на курсе LLM. Старт — 30 июня, а до 21 июня вы можете присоединиться со скидкой 20%.
1🔥159👍6
Закройте вопросы по LLM

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

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

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

🔔 Новый поток стартует 30 июня, а до 21 июня вы можете присоединиться со скидкой 20%.

Оставьте заявку на сайте, мы расскажем подробнее о программе, ответим на вопросы и забронируем место на программе!
7🔥5🤩2
Как улучшить векторный поиск в RAG без сложной нарезки чанков?

В объёмных (юридических / медицинских) документах смысл фрагмента часто зависит от контекста. В классическом RAG документ режут на чанки и векторизуют каждый по отдельности. В результате — сбой в поиске, потому что часть смысла чанка лежит за его границами.

⚫️Late chunking — техника от Jina AI, которую обычно пропускают в RAG-туториалах. Основная идея: вместо предварительной обрезки текста прогоняем через модель весь документ и получаем вектор для токенов, каждый из которых уже «впитал» контекст текста.

Эмбеддинг чанка — усреднение (mean pooling) векторов его токенов. Текст подаётся целиком или большими частями с перекрытием. Это «дороже» с точки зрения вычислений, зато у вектора каждого чанка больше контекста.

💡Пример из статьи: в начале документа стоит «Берлин», далее — «город», «он», «его население». При наивной нарезке чанк «его население…» не содержит слова «Берлин», и модель не связывает местоимение с сущностью. При late chunking тот же чанк «помнит» про Берлин. На длиннодокументных retrieval-бенчмарках late chunking почти всегда обходит наивную нарезку без дообучения.

⚫️Что использовать:
- jina-embeddings-v3/v4 (v5 уже не подойдёт — другой тип пулинга)
- модели Perplexity (pplx-embed-context-v1), более современные, обученные под late chunking специально

Автор: Александр Абугалиев

Глубже про векторный поиск и RAG рассказываем на нашем курсе по LLM для ML/DL-инженеров. Также там разбираем fine-tuning, alignment, агентов, ускорение и деплой LLM. Новый поток стартует 30 июня, а до 21 июня вы можете присоединиться со скидкой 20%!
Please open Telegram to view this post
VIEW IN TELEGRAM
19🔥11👍8
CTF по LLM 💻

CTF (Capture The Flag) — это соревновательный формат, где участникам даётся живой объект для исследования: сервис, код, сайт, чат-бот. Внутри спрятана секретная строка-флаг. Задача: разобраться в системе, найти слабое место и «вытащить» флаг. Нашёл флаг → решил задачу → получил баллы.

Подготовили для вас трек по LLM. LLM, RAG, агенты: от prompt-инъекций до внутренностей модели.

Всего 7 задач, появляться будут в 19 Мск в течение недели.

Первая задача уже доступна. В ней нужно обойти цензора, которого поставили поверх слишком разговорчивой модели. https://contest.deepschool.ru/t/llm/boltun

Под анонсы задач и разборов завели отдельный канальчик @deepschool_ctf, заглядывайте!

Делитесь с друзьями и коллегами, вместе решать веселее 💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2964🤩3👍2
Forwarded from DeepSchool CTF
Ничё вы от первой задачи камня на камне не оставили! Так же будет и со второй? 😊

В ней выяснилось, что белым шрифтом в Confluence писать секреты не так же безопасно, как в сохранёнках телеги все пароли хранить. Ладно, дальше сами. Удачи! ⌨️

https://contest.deepschool.ru/t/llm/rag-doc-leak
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥62
Reinforcement Learning: пошаговый план изучения

Reinforcement Learning (RL) лежит в основе многих ключевых достижений современного ИИ: обучение роботов локомоции и манипуляции, пост-обучение языковых моделей (RLHF, GRPO). Сегодня понимание RL — нужный навык для широкого круга ML-инженеров. Чтобы помочь прокачаться в этой области, мы подготовили пошаговый план изучения и полезные ресурсы. Welcome 🙂

⚫️План изучения

1. Основы теории вероятностей
RL опирается на аппарат теории вероятностей и стохастических процессов. Фундамент для понимания: условные вероятности, математическое ожидание и его свойства, основы стохастических процессов. Изучать эти темы лучше по мере необходимости: столкнулись с importance sampling — сразу разбираемся с этой концепцией.
Ресурсы: MML (главы по вероятностям и статистике); любой базовый курс теории вероятностей.

2. Классический RL
Можно начать с формализма марковских процессов принятия решений (MDP): состояния, действия, функция перехода и вознаграждения, дисконтирование. И затем перейти к табличным методам: dynamic programming, Monte Carlo, temporal-difference learning, Q-learning, SARSA. Рекомендуем решать задачи из книги или курса — это критически важно для понимания.
Ресурсы: S&B (Part I) — фундаментальный учебник по RL; Stanford CS234 — академический курс с задачами.

3. Deep Reinforcement Learning
Когда пространство состояний становится слишком большим для табличных методов, применяется аппроксимация функций с помощью нейронных сетей. Ключевые темы: Deep Q-Network (DQN), policy gradient методы, actor-critic архитектуры, методы на основе модели (model-based RL). Если нужно подтянуть основы Deep Learning, рекомендуем открытую книгу Understanding Deep Learning.
Ресурсы: Deep RL (CMU) — курс от Katerina Fragkiadaki с современными методами deep RL; Deep RL (UC Berkeley) — курс от Sergey Levine с открытыми домашними заданиями. Рекомендуем выполнить все практические задания.

4. Policy Gradient и современные алгоритмы
Для практического применения RL необходимо глубокое понимание policy gradient методов. Ключевые алгоритмы: REINFORCE, TRPO, PPO — стандарт в робототехнике и RLHF; GRPO — активно применяется в пост-тренировке LLM. Важно не только знать алгоритмы, но и понимать, почему они работают: какие допущения лежат в их основе и какие практические трюки обеспечивают устойчивое обучение.
Ресурсы: S&B (Part II); лекции из курсов CMU и UC Berkeley по policy gradient.

5. Современный RL и применения
После основ — обзор современных направлений: RLHF для языковых моделей, применение в робототехнике, мультиагентный RL, offline RL, model-based RL. Ценным будет понимание практических «трюков», которые стоят за успешными алгоритмами.
Ресурсы: PML:AT (Kevin P. Murphy) — современные работы в RL и практика к языковым моделям; Substack Cameron Wolf — разборы алгоритмов и их применение к LLM доступным языком.

6. Практика
Мы верим, что действительно глубокое понимание невозможно без практического опыта. Рекомендуем два направления в зависимости от области интересов:
робототехника: курс LeRobot (Hugging Face) с фокусом на RL-часть; самостоятельное обучение реального или симулированного манипулятора;
языковые модели: самостоятельная реализация RLHF (CS336).

Полезные ресурсы
Reinforcement Learning: An Introduction (S&B) — Sutton & Barto
Stanford CS234: Reinforcement Learning
Deep RL (CMU) — Katerina Fragkiadaki
Deep RL (UC Berkeley) — Sergey Levine
Probabilistic Machine Learning: Advanced Topics (PML:AT) — Kevin P. Murphy
LeRobot курс (Hugging Face)
Stanford CS336: Language Modeling from Scratch, assignment 5
Substack Cameron Wolf

Автор: Шамиль Мамедов
Ревьюер: Антон Наумов

Помимо робототехники и LLM, RL используется ещё и для обучения LLM-агентов. Об этом глубже рассказываем на нашем курсе по LLM для ML/DL-инженеров. Также там разбираем fine-tuning, alignment, ускорение и деплой LLM. Новый поток стартует 30 июня, а до 21 июня вы можете присоединиться со скидкой 20%!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5118👍14