Методичка: Поиск Работы в ML/DS
@boris_again Написал классный гайд по поиску работы😮 . Я бы не сказал, что это только для ML/DS. Скорее в целом, для технических специалистов 🔼 . Дальше по тексту из поста:
В общем, однозначный лайк!☺️
@boris_again Написал классный гайд по поиску работы
Все кратко и по делу. Чтения минут на 30. Внутри рассматриваю поиск работы с самых азов и до деталей с примерами из жизни.
https://btseytlin.github.io/intro.html
В общем, однозначный лайк!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3
Счастливое преображение в мемах от DALL·E 3
Попросил DALL·E 3 сгенерировать мем о том, как тяжело обучать нейронные сети в лабе компьютерного зрения🙃 . Получилась картинка слева (не спрашивайте, зачем).
А потом корректирую запрос и пишу, а давай какое-нибудь более реалистичное окружение, типа офиса Google или Apple. И вот результат на правой картинке🤔 .
Вопрос: почему они стали счастливыми?😐 И почему в халатах? 👨⚕️
Попросил DALL·E 3 сгенерировать мем о том, как тяжело обучать нейронные сети в лабе компьютерного зрения
А потом корректирую запрос и пишу, а давай какое-нибудь более реалистичное окружение, типа офиса Google или Apple. И вот результат на правой картинке
Вопрос: почему они стали счастливыми?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣4
Про ту самую новость из OpenAI
Отец знакомого работает в OpenAI. Сегодня срочно вызвали на совещание. Вернулся поздно и ничего не объяснил. Сказал лишь собирать вещи и бежать в магазин за продуктами на две недели. Сейчас качаем веса всех моделей, что есть в интернете. Не знаю, что происходит, но мне кажется началось...
Отец знакомого работает в OpenAI. Сегодня срочно вызвали на совещание. Вернулся поздно и ничего не объяснил. Сказал лишь собирать вещи и бежать в магазин за продуктами на две недели. Сейчас качаем веса всех моделей, что есть в интернете. Не знаю, что происходит, но мне кажется началось...
😁33❤3
Распознавание жестов
Однажды у моей в команды была замечательная задача — нужно было сделать распознавание жестов😃 . Требования были простые: RPi 4B, CPU only инференс, максимальная задержка на кадр — около 30 мс, сами снимики были чб. На тот момент самым популярным готовым решением был 👨🦳
Пайплайн детектирования ключевых точек ладони в фреймворке устроен следующим образом:
1. Сначала отрабатывает детектор ладони (который не совсем тривиальный);
2. Затем происходит поиск ключевых точек на кропнутом изображении ладони.
Обычно ладонь имела ориентацию вверх, т.е. ладонь как-то поворачивали. Для этого использовали ключевые точки, которые находились вместе с детектором второй головой😵💫 . Поэтому обучение такого детектора — не совсем классическая задача детекции.
Проблема первая заключалась в том, что этот самый детектор не хотел работать на чб картинках. Вот вообще. Пришлось реально реверсинженирить модельку и пайплайн обучения для того, чтобы заставить это дело работать как нужно🥲 . Как результат мы получили новую модельку, по качеству не хуже оригинальной на наших датасетах.
Проблема вторая: код исполнялся примерно за 70-100мс на запрос. Это было очень много🤨 . Ну как бейзлайн решили использовать post-training квантезацию. Сначала были проблемы с качеством, но путем подборки хорошего калибровочного датасета всё решилось. Но вот со скоростью стали проблемки. 100мс+ на запрос, что больше даже без квантезации. Как так 🤔 ?
А все просто. Где-то внутри кишочков XNNPACK после долгого лютого дебага обнаружился баг, который некорректно обрабатывал свертки. История в👨🦳 . Мы попробовали и о чудо: каждый запрос до 30мс, а я замечу что тут была еще наша классификационная голова 😅 .
Это вот я вам рассказываю так легко сейчас, а тогда было сложно. Ни нормальной документации, ни порядочных примеров. Но мы справились. В целом, задача вышла достаточно инженерной, в тот момент я прям кайфанул от результатов. Сейчас наверное тоже бы☺️ .
Я еще хотел рассказать про сам🙃
Однажды у моей в команды была замечательная задача — нужно было сделать распознавание жестов
mediapipe — просто берешь распознавание скелета руки, накидываешь сверху постпроцессинг ключевых точек, простой классификатор — и решение готово. Ну или почти готово...Пайплайн детектирования ключевых точек ладони в фреймворке устроен следующим образом:
1. Сначала отрабатывает детектор ладони (который не совсем тривиальный);
2. Затем происходит поиск ключевых точек на кропнутом изображении ладони.
Обычно ладонь имела ориентацию вверх, т.е. ладонь как-то поворачивали. Для этого использовали ключевые точки, которые находились вместе с детектором второй головой
Проблема первая заключалась в том, что этот самый детектор не хотел работать на чб картинках. Вот вообще. Пришлось реально реверсинженирить модельку и пайплайн обучения для того, чтобы заставить это дело работать как нужно
Проблема вторая: код исполнялся примерно за 70-100мс на запрос. Это было очень много
А все просто. Где-то внутри кишочков XNNPACK после долгого лютого дебага обнаружился баг, который некорректно обрабатывал свертки. История в
github показала, что на тот момент ребята из команды этого фреймворка только её решили и еще даже не положили в релиз Это вот я вам рассказываю так легко сейчас, а тогда было сложно. Ни нормальной документации, ни порядочных примеров. Но мы справились. В целом, задача вышла достаточно инженерной, в тот момент я прям кайфанул от результатов. Сейчас наверное тоже бы
Я еще хотел рассказать про сам
mediapipe и как он хорош, но пост уже и так большой. Как нибудь в следующий раз.Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍3🔥2🐳1
Delivering Safe C++
Недавно вышел ролик от CppCon, где Страуструп пытается рассказать про обеспечение Safety в С++.
Вот некоторые заметки, которые я вынес🙃 :
* Security — это не безопасность языка, не безопасность памяти, это не про safety. Security — это свойство системы, которая включает в себя железо, помещение, людей, ПО и т.д.
* Идеальной безопасности добиться сложно — как минимум нам нужно взаимодействовать с ОС, а там половина написана на Си, и проверять в нашем приложении функциональность ядра мы не собираемся, а потому мы верим, что там всё должно быть хорошо;
* Люди часто не хотят использовать безопасные высокоуровневые абстракции под предлогом, что это уменьшает производительность, но при этом не делают никаких бенчмарков;
* Советы по безопасности:
* Инициализируйте переменные;
* Используйте более высокоуровневые абстракции для диапазонов:
* Проверка на
* Используйте умные указатели для избежания утечек памяти, желательно как можно более дешевые, т.е.
* Страуструп считает, что большинство сторонников писать на других языках думают, что альтернатива безопаснее, но в основном это с точки зрения управления памятью.
Ну и естественно это была подводка к предложению о создании "Profiles" — некоторой сущности, которая будет предоставлять разного рода гарантии. По сути показан некоторый концепт, но как это реализовать — не ясно😐 .
Еще нескольких фан фактов😂 :
* Бьярне просто как будто рассказал лекцию студентам;
* Спикер очень тактично избегал назвать язык, где подобные концепты уже зашиты — Rust;
* Скорее всего доклад навеян новостью о том, что АНБ США рекомендовало не использовать C++ для разработки;
* Концепцию RAII Бьярне придумал практически с самого начала C++, но в виде какой-то теоремы формулировка пришла почти через 10 лет;
* Еще в 80-х года Страуструп обсуждал идею
В целом, от доклада сложилось ощущение, что когда Страуструп обсуждал идею доклада, то диалог там был примерно как в этом видео. И это очень грустно, конечно🥹 . При всем уважении к создателю, C++ и правда невообразимо сложный язык. Концепты Бьярне может быть и правильная идея, но очередной костыль, который сложно даже переварить, и какая-то очередная попытка догнать современные тренды.
Недавно вышел ролик от CppCon, где Страуструп пытается рассказать про обеспечение Safety в С++.
Вот некоторые заметки, которые я вынес
* Security — это не безопасность языка, не безопасность памяти, это не про safety. Security — это свойство системы, которая включает в себя железо, помещение, людей, ПО и т.д.
* Идеальной безопасности добиться сложно — как минимум нам нужно взаимодействовать с ОС, а там половина написана на Си, и проверять в нашем приложении функциональность ядра мы не собираемся, а потому мы верим, что там всё должно быть хорошо;
* Люди часто не хотят использовать безопасные высокоуровневые абстракции под предлогом, что это уменьшает производительность, но при этом не делают никаких бенчмарков;
* Советы по безопасности:
* Инициализируйте переменные;
* Используйте более высокоуровневые абстракции для диапазонов:
std::vector, std::span, range-for, range algorithms и т.д.* Проверка на
null-pointer всегда, когда с ними связываетесь;* Используйте умные указатели для избежания утечек памяти, желательно как можно более дешевые, т.е.
std::unique_ptr;* Страуструп считает, что большинство сторонников писать на других языках думают, что альтернатива безопаснее, но в основном это с точки зрения управления памятью.
Ну и естественно это была подводка к предложению о создании "Profiles" — некоторой сущности, которая будет предоставлять разного рода гарантии. По сути показан некоторый концепт, но как это реализовать — не ясно
Еще нескольких фан фактов
* Бьярне просто как будто рассказал лекцию студентам;
* Спикер очень тактично избегал назвать язык, где подобные концепты уже зашиты — Rust;
* Скорее всего доклад навеян новостью о том, что АНБ США рекомендовало не использовать C++ для разработки;
* Концепцию RAII Бьярне придумал практически с самого начала C++, но в виде какой-то теоремы формулировка пришла почти через 10 лет;
* Еще в 80-х года Страуструп обсуждал идею
std::span, когда решали проблему передачи указателя и количество элементов, лежащих в памяти по указателю (aka int max(const int[], size_t)), но реализация в итоге появилась в C++20;В целом, от доклада сложилось ощущение, что когда Страуструп обсуждал идею доклада, то диалог там был примерно как в этом видео. И это очень грустно, конечно
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Клепаю мемы в перерывах между постами
😁13😢3😭3👍2🤝1
Кирилл
У меня долгое время не получалось систематизировать статьи и как-то отслеживать прогресс по их прочтению👨🦳 . А потому я часто забивал на статьи и в основном подчерпывал информацию из телеграм каналов. Но однажды всё поменялось.
Мой коллега по отделу в Яндексе — Кирилл (@kkhrylchenko) рассказал на одном из внутренних докладов о том, как можно грамотно организовывать процесс чтение статей через Zotero. Когда он показывал свою коллекцию прочитанных статей, я сразу подумал: "Хочу также!"🙃
И вот недавно Кирилл завел классный канал по рекомендательным системам — @inforetriever. Я, честно говоря, не слежу за трендами в этой области, но теперь благодаря Кириллу поглядываю за интересными движениями🔼 . И честно говоря, мне нравится как в канале описывается краткое summary большого количества статей, сразу понятно, что можно отложить себе, а что не совсем интересно 🤔 .
А еще Кирилл переодически выступает на конференциях, есть много записей в youtube. Например, относительно недавно на датафесте был рассказ про персональное ранжирование трансформерами.😊
У меня долгое время не получалось систематизировать статьи и как-то отслеживать прогресс по их прочтению
Мой коллега по отделу в Яндексе — Кирилл (@kkhrylchenko) рассказал на одном из внутренних докладов о том, как можно грамотно организовывать процесс чтение статей через Zotero. Когда он показывал свою коллекцию прочитанных статей, я сразу подумал: "Хочу также!"
И вот недавно Кирилл завел классный канал по рекомендательным системам — @inforetriever. Я, честно говоря, не слежу за трендами в этой области, но теперь благодаря Кириллу поглядываю за интересными движениями
А еще Кирилл переодически выступает на конференциях, есть много записей в youtube. Например, относительно недавно на датафесте был рассказ про персональное ранжирование трансформерами.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤3👍1🐳1
Yatool 😧
Совсем неожиданно узнал, что ребята из соседнего отдела Яндекса зарелизили инструмент для (цитата):
Ну или кратко говоря, это билд система👨🦳 . В Яндексе она используется уже достаточно давно и успешно справляется с гигантской монорепой.
Пробуйте, приходите к ребятам в issue. Поздравляю их с релизом в open-source🥰 !
Ссылочка: https://github.com/yandex/yatool
Совсем неожиданно узнал, что ребята из соседнего отдела Яндекса зарелизили инструмент для (цитата):
cross-platform distribution, building, testing, and debugging focused on monorepositoriesНу или кратко говоря, это билд система
Пробуйте, приходите к ребятам в issue. Поздравляю их с релизом в open-source
Ссылочка: https://github.com/yandex/yatool
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13
Лекция в ИТМО 🤓
Давненько я не появлялся в стенах родного Университета. Пора это исправлять!🙃
Ребята из Y&&Y попросили меня рассказать про то, какими компетенциями должен обладать специалист в области машинного обучения, как попасть на стажировку или получить место в штате😊 .
Если кто-то из моих подписчиков учится в ИТМО — приходите! Постараюсь поменьше душнить и побольше рассказать о заявленном топике!😃
https://news.1rj.ru/str/digitalgenerationITMO/91
Давненько я не появлялся в стенах родного Университета. Пора это исправлять!
Ребята из Y&&Y попросили меня рассказать про то, какими компетенциями должен обладать специалист в области машинного обучения, как попасть на стажировку или получить место в штате
Если кто-то из моих подписчиков учится в ИТМО — приходите! Постараюсь поменьше душнить и побольше рассказать о заявленном топике!
https://news.1rj.ru/str/digitalgenerationITMO/91
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
AIM club
Лекция от эксперта Young&&Yandex: откройте для себя мир IT и станьте успешным ML-специалистом!⚙️
Совместно с Клочковым Антоном - старшим разработчиком в команде распознавания текста, вы узнаете все о том, что делают ML-специалисты, и как начать свою карьеру…
Совместно с Клочковым Антоном - старшим разработчиком в команде распознавания текста, вы узнаете все о том, что делают ML-специалисты, и как начать свою карьеру…
👍9❤1
Ловим баги в реальном времени
В общем-то попалось мне на глаза великолепное чтиво🥹 :
https://xuanwo.io/2023/04-rust-std-fs-slower-than-python/
Тут человек пытается разбраться почему один тип чтения работает быстрее, нежели чем другой. Внезапно, посреди статьи оказывается, что чтение файла на😫 . Ну и потом, путем нехитрых манипуляций автор приходит к выводу, что баг в микрокоде процессора от AMD (ничего удивительного, как всегда в подобного рода статьях 😂 ).
Одна из деталей мне доставило особое удовольствие: использование👍 .
Но не багами едины. С помощью этого инструмента можно отслеживать интересующие вас системные вызовы, следить за бинарями в релизной сборке и собирать важную статистическую инфу, чтобы понять, как обстоят дела с памятью, с выделением потоков, с обращением к сети и многое другое🔼 .
Так однажды у меня бинари отрабатывали отлично локально, а потом в тестинге всё сваливалось😔 . Я долго не мог понять почему, пока не залез посмотреть с помощью 🤔 .
В общем, изучайте и пользуйтесь! Но с умом.☺️
В общем-то попалось мне на глаза великолепное чтиво
https://xuanwo.io/2023/04-rust-std-fs-slower-than-python/
Тут человек пытается разбраться почему один тип чтения работает быстрее, нежели чем другой. Внезапно, посреди статьи оказывается, что чтение файла на
Си оказывается медленнее, чем в Python Одна из деталей мне доставило особое удовольствие: использование
strace. Я не читал историю сего инструмента, но кажется его придумали боги, иначе я никак по-другому не могу написать. С помощью этого я такие баги откапывал в продакшн решениях прям на продовых тачках, что мне и снится не могли Но не багами едины. С помощью этого инструмента можно отслеживать интересующие вас системные вызовы, следить за бинарями в релизной сборке и собирать важную статистическую инфу, чтобы понять, как обстоят дела с памятью, с выделением потоков, с обращением к сети и многое другое
Так однажды у меня бинари отрабатывали отлично локально, а потом в тестинге всё сваливалось
strace, что там по системным вызовам. Оказалось, все зависало на этапе обращения к сети, потому что OS не могла понять, как достучаться до домена, на которые делаются запросы. Как оказалось, не подтягивались необходимые DNS конфиги В общем, изучайте и пользуйтесь! Но с умом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥7🤔1🥱1
ШАД
Вчера состоялось официальное открытие пространства ШАД в СПб🔼 . Кто регулярно читает мой канал, знает, что я веду практики по 🙃 .
На мероприятии было очень много знакомых мне людей😁 : кто-то читал мне курсы в универе, кого-то я смотрел на степике, а кто-то просто известный человек в узких кругах. И правда, я бы мог перечислить некоторых из них, но кажется тогда оскорблением не упомянуть их всех, потому что лично для меня большинство из этих людей реально делают образование в РФ ☺️ .
Вместе с открытием также обсуждалась история про AI в образовании: заменят ли сетки преподавателей или переживать не стоит. Коллеги (не побоюсь этого слова, ведь недавно еще они меня учили😂 ) в первую очередь сфокусировались на том, что образование — это не просто передача знаний, а еще и про развитие мышления, передачу опыта, поддержку мотивации и прочие навыки. И я сейчас соглашусь с тем, что в среднем, LLM сейчас это про обмен информации и не больше 😃 .
С другой стороны, если смотреть в сторону удаленных регионов, где преподавателей даже по самым базовым дисциплинам порой нет, там в каком-то виде LLMки могут помочь хоть как-то начать упрощать процесс образования🤔 .
Также некоторое время было посвящено тому, что кажется, что образование сейчас — это механизм отбора, а не повышения образованности😔 . Условно, попасть в какой-либо универ — это задача, с которой справляются не все, хотя изначально образование — это про улучшение образованности людей. И выше, когда я говорил про людей, пришедших на встречу, я подчеркнул, что они реально делают именно образование 😊 .
Очень классно, что мне удалось попасть на такое мероприятие, я даже вдохновился от профессионалов! Надеюсь, что ШАД в СПб будет растить классных специалистов и давать им шикарный и уникальный контент🥹 .
Вчера состоялось официальное открытие пространства ШАД в СПб
C++ в Питерском филиале ШАДа еще с сентября, а потому меня тоже пригласили на открытиеНа мероприятии было очень много знакомых мне людей
Вместе с открытием также обсуждалась история про AI в образовании: заменят ли сетки преподавателей или переживать не стоит. Коллеги (не побоюсь этого слова, ведь недавно еще они меня учили
С другой стороны, если смотреть в сторону удаленных регионов, где преподавателей даже по самым базовым дисциплинам порой нет, там в каком-то виде LLMки могут помочь хоть как-то начать упрощать процесс образования
Также некоторое время было посвящено тому, что кажется, что образование сейчас — это механизм отбора, а не повышения образованности
Очень классно, что мне удалось попасть на такое мероприятие, я даже вдохновился от профессионалов! Надеюсь, что ШАД в СПб будет растить классных специалистов и давать им шикарный и уникальный контент
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4🤝2👎1🐳1
Singleton is all you need (no)
Решил попробовать себя в лонгридах с подробными выкладками кода🥹 . Пишите в комментариях, как вам такой формат. Ну и набрасывайте, если чего не так!
https://teletype.in/@toshiknoscript/g2IANTMvRDv
Решил попробовать себя в лонгридах с подробными выкладками кода
https://teletype.in/@toshiknoscript/g2IANTMvRDv
Please open Telegram to view this post
VIEW IN TELEGRAM
Teletype
Singleton is all you need (no)
На днях перед мной встала одна, на первый взгляд, простая задача для intern/junior разработчика на Python: написать singleton.
👍15🐳3🥰2🗿1
This media is not supported in your browser
VIEW IN TELEGRAM
Иногда просто хочется поделиться мемчиком, так что держите 👨🦳
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣32👎1😁1👌1
Синтетическая биология 😫
Иногда интересно почитать чо происходит где-то в параллельной от IT вселенной👍 . И тут мне заслали статейку про синтетическую биологию: https://habr.com/ru/companies/gazprombank/articles/782528/
Что-ж, судить по одому посту сложно, но чорт, это выглядит весьма интересно🤔 . Очень нравится, как индустрия движется в сторону упрощения проведения экспериментов. Удивило то, как есть площадки для проведения экспериментов. Я думал, у каждой лабы по заводу, а оно вон как уже работает. Интересно, делают ли там какой-то ML🤔 ? Какие-нибудь градиентные бустинги, позволяющие по свойствам оценивать характеристики возможно получаемых образцов.
И я как-то не задумывался, что Impossible Foods — это как раз ребята из синтетической инженерии, а не генной. Хотелось бы попробовать бургер из их мяса, но в СПб пока не встречал🙃 .
P.S. Синтетическое пиво — звучит интересно. Я как человек не пьющий, хотел бы попробовать безалкогольный вариант. Ну и посмотреть на лица товарищей, знающих толк в пивасике, которые бы попробовали сей напиток на вкус😂 .
Иногда интересно почитать чо происходит где-то в параллельной от IT вселенной
Что-ж, судить по одому посту сложно, но чорт, это выглядит весьма интересно
И я как-то не задумывался, что Impossible Foods — это как раз ребята из синтетической инженерии, а не генной. Хотелось бы попробовать бургер из их мяса, но в СПб пока не встречал
P.S. Синтетическое пиво — звучит интересно. Я как человек не пьющий, хотел бы попробовать безалкогольный вариант. Ну и посмотреть на лица товарищей, знающих толк в пивасике, которые бы попробовали сей напиток на вкус
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🐳3
Персональный компуктер
Я тут чего-то задумался прикупить себе ПК👨🦳 . Для игруль (может наконец-то поиграю), МЛя, и мб монтажа (но это можно и на ноуте). Мне вот кажется, что мои примеры — это просто шутка какая-то, а на деле будет пылиться🙆 .
Расскажите, есть ли у вас сейчас ПК? Какая комплектация? Для каких задач используете?🤔
На всякий случай еще раз уточню: речь не про ноутбук, а про ПК в его привычном понимании.
Я тут чего-то задумался прикупить себе ПК
Расскажите, есть ли у вас сейчас ПК? Какая комплектация? Для каких задач используете?
На всякий случай еще раз уточню: речь не про ноутбук, а про ПК в его привычном понимании.
Please open Telegram to view this post
VIEW IN TELEGRAM
4 миллиарда операторов if 🙆
Господи, наконец-то хабр порадовал. Ну и пусть это перевод статьи, но как это захватывающе👍 . Человек запилил проверку 32-битного числа на четность через if операторы 👨🦳 .
И в статье прекрасно всё: и проблемы с большими бинарями, и производительность этого решения. Жалко только, что особо бенчмарков нет. Но самое главное, что всё в итоге вышло и оно работает😐 .
Обожаю такую дичь, если у вас есть еще — скидывайте👍 .
Ссылка на статью: https://habr.com/ru/articles/783714/
Господи, наконец-то хабр порадовал. Ну и пусть это перевод статьи, но как это захватывающе
И в статье прекрасно всё: и проблемы с большими бинарями, и производительность этого решения. Жалко только, что особо бенчмарков нет. Но самое главное, что всё в итоге вышло и оно работает
Обожаю такую дичь, если у вас есть еще — скидывайте
Ссылка на статью: https://habr.com/ru/articles/783714/
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣7👍1😁1🐳1
Всех с новым 2024 годом!
Интересный факт про этот год: если сложить все цифры этого года, то получится 2 в 3 степени, что как бы является одним байтом🤓 . А с одним байтом уже можно и горы свернуть, и сделать много прикольных штук! 👍
Желаю и вам сделать в этом году много невероятных вещей☺️ !
Интересный факт про этот год: если сложить все цифры этого года, то получится 2 в 3 степени, что как бы является одним байтом
Желаю и вам сделать в этом году много невероятных вещей
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳26🔥7😁1👌1🎅1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣16🥰2🤔2