DeepSchool / underthehood
1.06K subscribers
253 photos
28 videos
5 files
125 links
Это канал школы deepschool.ru. Каждую неделю ведущим канала становится один из преподавателей или друзей школы. Каждую неделю: новый человек, новая область и домен, новые истории, наблюдения и рекомендации. Поддержка: @deepschool_support
Download Telegram
Всем доброго утра!
Нейро-Иисус из комментариев к предыдущему посту таки выгнал удаленщиков из кофейни, а посему работаем сегодня из офиса

Какой прекрасный вид (нет) открывается на соседний офис :)

А еще сегодня день, когда я буду рассказывать перед командой про свой проект, где я исследую идею стиринга в диффузионных трансформерных моделях, так что пойду, пожалуй, готовиться
🤩87
Всем привет!

Сегодня хотела бы поговорить про то, как строится работа исследователя.

О том, чтобы заниматься наукой я думала еще с бакалавриата, но вот с физикой как-то не сложилось и вот я здесь :)

Как мне кажется, в первую очередь в работе исследователя важно терпение, терпение и еще раз терпение. Так как же вообще выглядит пайплайн работы?

1. Я лично считаю, что нужно читать очень много самых разных статей. Некоторые коллеги со мной не согласятся, но порой какие-то работы могут натолкнуть тебя на мысли, о которых ты бы сам еще долго не догадался. Причем очень часто полезные идеи приходят из смежных областей. Так, многие идеи nlp в какой-то момент перекочевали в computer vision (тот же трансформер, например). А как находить полезные статьи?
Ну тут сейчас бывает полезно обратиться к deep search у современных ллмок. Также я часто нахожу статьи в разных каналах, а еще не надо забывать про твиттер. Там ведется очень активная научная жизнь.

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

3. Следите за кодом, который вы пишите. Очень часто исследователи пишут плохой код. Открываешь потом гитхаб и ничего непонятно. Туда сложно добавить что-то новое, что-то поменять, что-то исправить, а самое главное воспроизвести. А хочется, чтобы ваша работа не пропала, чтобы люди могли на основе вашей идеи и кода продолжать развивать выбранную тему.

4. Ну и самое главное — сил вам с вашими ревьюерами :)

Немного позже расскажу про свой проект на работе и как я к этому пришла!
На связи!
13👍4🔥2
Всем привет!

Во-первых, ура, сегодня первый полноценный день отпуска (вчера был перелёт)! Наконец можно спокойно отдыхать.

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

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

Сейчас я занимаюсь задачей контролируемой генерации с помощью диффузии. Что это значит, давайте разберёмся.

Для начала хорошо бы понимать, что такое диффузия. По сути это процесс генерации, где за несколько шагов мы из шума делаем картинку, по сути каждый раз понемногу удаляя шум. Такую генерацию можно контролировать входным промптом. То есть теперь мы получаем не просто случайную картинку из выученного распределения, а именно картинку, которая соответствует входному тексту. Так работают популярные модели типа Stable Diffusion, Flux, midjourney и другие.

Для тех, кто хочет подробнее познакомиться с понятием диффузии, рекомендую:

1️⃣ Лекции Дмитрия Ветрова часть 1, часть 2
2️⃣ Можно почитать мой пост
3️⃣ Почитать блог-пост тут

Но порой не хватает именно контроля за счет промпта. Например, мы хотим, чтобы картинка соответствовала входному пространственному контролю. Например, глубине или же edges (смотри картинку).

Самый простой вариант, просто обучить диффузионную модель заново, но чтобы она использовала новый контроль. Но это время-деньги-ресурсы-деньги-еще деньги.

К тому же, пусть у нас уже есть предобученная модель, которая умеет генерировать по тексту. Хочется ее переиспользовать.

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

Тем не менее у этого подхода есть ряд недостатков и с обычным диффузионным лоссом модель обучается не так хорошо. И я сейчас как раз работаю над улучшением пайплайна обучения ControlNet модели. Недавно вот выложили препринт, можно почитать тут.

А вообще в диффузиях много всего интересного. Если у вас есть какие-то вопросы или вы что-то хотели бы узнать — пишите, я постараюсь ответить или может посоветовать, где эти ответы искать :)
🔥93
Всем привет!

Сегодня хочу поговорить про межнар по ИИ, который вот прошел совсем недавно.

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

Сейчас появилась международная олимпиада по ии. Пока, как я понимаю, порядок попдаания на нее немного иной, поскольку сейчас у нас еще нет налаженных этапов муницип-регион-всеросс (хотя что-то подобное уже зарождается). Отбор на межнар проходит после майских сборов, на которые попадают школьники, победившие на различных олимпиадах по ии. Если почитать канал Татьяны Гайнцевой (которая является тренером сборной), то она пишет, что эти олимпиады часто решаются брутфорсом, что, возможно, не очень хорошо для олимпиад (хотя довольно неплохо для хакатонов).

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

Ну и напоследок, хочется поздравить нашу сборную, которая взяла 6 золотых, 1 серебряную и 1 бронзовую медали на прошедшей недавно олимпиаде!
Интересно, как эта область будет развиваться дальше :)

А как вы считаете, как должна выглядеть олимпиада по ии?
10🔥5
Всем привет! Меня зовут Андрей, и я буду новым ведущим на неделю.

Я обычно стараюсь оставаться с другой стороны объектива камеры и сцены, уже несколько лет организуя секцию компьютерного зрения на ODS DataFest. В DeepSchool читаю про обучение метрики и с недавних пор хедлайнер CV Rocket 2.0.

По бумагам я руковожу небольшим R&D отделом, который должен заниматься улучшением безопасности e-KYC и биометрических систем. На деле мы занимаемся автоматизацией сбора данных и попыткой найти очередной способ сломать наши системы (а потом их чинить). А я в основном решаю проблемы коммуникации и занимаюсь веб-разработкой. В оставшееся время я помогаю устраивать митапы и конференции, делюсь кейсами с работы, и фотографирую всё подряд.

Очень люблю настольные игры, обожаю настольные ролевые (это типа Dungeons and Dragons).

Ну а на неделе постараюсь рассказать байки про то, что приходится делать помимо fit-predict. И почему я полюбил демки на JS вместо Python.
🔥22😱2
Не хотите ли поговорить о покр Vercel?

В работе часто требуется поднять демо в том или ином виде. Нужно проверить новую модель с нетривиальным пайплайном? В контейнер и демо. Показать предварительные результаты работы заказчику? Демо с фронтэдом. Дать тестерам на проверку сырую версию пайплайна? Демо, и желательно с человеческим фронтэндом. И это не беря во внимание MVP для потенциальных заказчиков, проверки новых бизнес-идей, и т.д.

Для поднятия демок были популярны разные фреймворки для Python: Django, Streamlit, FastAPI (в связке с чем-то), Gradio. Но мало написать код, его где-то надо ещё запустить, чтобы сторонний человек мог воспользоваться. И для этого тоже были и есть разные решения. Одно из них —- Huggingface Spaces.

С развитием LLM-помощников, всё меньше времени хотелось тратить на написание обвязок и формочек для того, чтобы пользователь мог загрузить данные в модель, и посмотреть результат работы. И для меня неожиданно хорошим выходом стал V0 от Vercel. Ему достаточно было вставить описание API (например, взятого из уже написанного FastAPI), и пары предложений для косметических улучшений. По итогу получалась веб-страница с формами взаимодействия со всеми частями пайплайна, и отрисовывающая результаты работы. Вдобавок одной кнопкой эту веб-страницу можно развернуть на серверах Vercel, чтобы она была доступна всем желающим.

Вот так из ML инженера, занимающегося написанием демок на Python, я постепенно начал превращаться в веб-разработчика на NextJS (тоже от Vercel).
🔥122
👍3
Выступления? Но мне же не о чем рассказать...

Во многих сообществах проходят встречи по интересам, а в профессиональной среде ещё и целые конференции. Если вы инженер, который никогда не ходил на них, или ходил только ради докладов, то советую посмотреть на мероприятия с другой стороны. На любых встречах есть люди со своим опытом, но в очень близкой для вас сфере. Да, скорее всего вы не услышите ответа на то, как решить вашу рабочую задачу, но зато обменяетесь байками про неудавшиеся эксперименты, и вообще что сейчас можно: свёртки, трансформеры, капсульные сети. В общем выскажетесь о наболевшем. И в целом такие мероприятия —- это про обмен опытом и знакомства, которые в неожиданный момент могут помочь с карьерой.

У меня опыт с мероприятиями начался до ML, и вообще был связан с играми. Я ходил на Ролекон, Игрокон, и пр. Помогал и организовывал небольшие игровые дни, и вообще был активный членом ячейки Следопытов. По работе это хобби не пересекалось почти никак, и почему-то на профессиональные конференции я с таким же удовольствием не ходил. Пока не познакомился с Соней, которая когда-то начала организовывать CV in Industry в рамках ODS. Одним выступлением не закончилось, и так договорились, что мне перешла вся организация в последующие года. Ну а с тех пор уже помог с организацией нескольких других ивентов, и в планах есть новые!

А на фото —- это вечер чайной церемонии в нашем офисе. Я люблю китайский чай, и обмениваться с коллегами китайскими поверьями —- отличное начало, чтобы поболтать про что-то помимо работы.
🔥10
А как вы заворачиваете данные?

Во многих курсах по машинному обучению основной упор делают на метаматическую теорию методов, их области применимости, и как это реализовать хотя бы для небольших задачках. Но на работе основное время тартится не на подбор архитектуры нейронной сети, и не на написание кода для экспериментов. А на сбор данных, интерпретацию результатов экспериментов, и поиском ответов на вопрос: "а эта задача вообще выполнима?"

В персой версии CV Rocket много делалось упора на реализацию сервисов и вывод в прод, во второй версии мы больше начали рассказывать про данные и особенности разных задач, потому что деплой сервисов превратился в свой отдельный курс. При этом разных систем по хранению, версионированию, и разметке данных очень много, что их выбор становится больше задачей согласования с другими системами в команде. Если совсем ничего нет (и у нас не исключительно табличные задачи), то лучше ClearML из бесплатных сервисов я пока не трогал. У него довольно топорный интерфейс использования, не накладывающий требований к структуре данных. Плюс те же картинки можно там хранить в виде архивов, и во время обучения потокого считывать из архивов. Про менеджмент данных есть хороший пост в блоге DeepSchool.

Большим бонусом использования ClearML для данных получается, что в экспериментах будет ссылка на использованные данные. Так что будет полноценная связка между кодом, данными, и результатами экспериментами. Даже через полгода можно будет разобраться, что за эксперименты запускались, и на каких данных.
🔥82
Зачем делать, если ничего не работает?

В последний день временного админства немного про мотивацию в разработке рискованных проектов.

Даже со всеми замечательными инструментами, автоматизациями, и ии-помощниками, всё равно кучу времени проходит в том, чтобы заставить задачу сдвинуться с места. И когда занимаешься ислледованиями или интерпретацией результатов, почти всегда процесс итераций представляется как:
1. Выдвинули гипотезу по улучшению. Например: добавить данных, или поменять модель.
2. Увидели изменения, зафиксировали.
3. Если метрики улучшились, берём как за новый бейзлан. В любом случае к п.1

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

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

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

Удачи в ваших начинаниях, и чтобы функции ошибок сходились!
12
Всем привет!
Меня зовут Лёня. На эту неделю вас заперли со мной (или меня с вами, тут уж как получится =).

Немного обо мне:
Синьёр-помидор в Сбере. В ML я с 2018. Много работал с computer vision, чуть меньше с данными, последние год-полтора жмякаю llmки. Когда есть, что сказать, пишу в @batch_of_thoughts, когда думаю - в Obsidian.

Рандомные факты:
- веду подкаст "Под Капотом" на канале DeepSchool
- фотографировал дельфинов, считал тигров, занимался распознаванием жестовых языков в SberAI
- в прошлом музыкант, баскетболист и фотокорреспондент
- дипломированный юрист (это было давно и неправда)
- организовал почти 70 датазавтраков в Сочи
- интроверт

Я хотел бы рассказать, но ещё больше - послушать вас, о том, как не потерять интерес к работе, как отдыхать, как наша область изменилась (и изменилась ли) за последние годы.

Ещё люблю всякие гиковские штуки, которыми возможно поделюсь, если не отберут права на публикацию =)
🔥247👍4
Поговорим о заметках

У меня самая обычная память, к тому же я невнимателен. Многое забываю, решаю одни и те же проблемы по несколько раз и мне такое не нравится. Как и многие, я пытался решить эту проблему конспектами, дневниками, стикерами на столе и т.п., но делал это несистематично, периодически теряясь, что где лежит. Затем нашел Obsidian - и нет, проблема не решилась. Но появилось единое место, где систематизированы мои заметки.

Первая заметка в моём хранилище в Obsidian датируется 12 октября 2020 года. С того момента я стал периодически что-то записывать: будь то работа, жизнь, покупки, ведение дневника. Даже этот пост я сейчас пишу в нём. За годы я оброс темплейтами, макросами, плагинами (от которых постепенно избавляюсь), у меня сменилось три системы ведения todoшек и календаря, две системы ежедневных заметок, а сам Obsidian возмужал и вырос из обычного markdown-редактора с перекрестными ссылками в хорошее out-of-the-box решение для организации знаний и мыслительного процесса.

На момент написания поста, Obsidian - это программа, в которой:
- все файлы хранятся у вас на устройстве (но и синхронизация между устройствами лежит на вас)
- можно организовать базу знаний с перекрестными ссылками и прыгать по ним (а ещё строить красивые графы, как на картинке)
- есть доски canvases, типа Miro), на которых можно организовать мыслительный процесс, собрать архитектуру статьи, выступления
- появились Bases (таблички, упрощённый Excel), где можно и таск-трекер организовать, и список просмотренного вести, и формулки повводить
- есть плагины, расширяющие функциональность. Это и хорошо, т.к. ваша потребность в name_it уже закрыта каким-то плагином, и плохо, т.к. это может вырасти в космолёт, стартующий минуту и больше с дырами в безопасности

Если вы вдруг подумывали начать что-то записывать, но не устраивает что-то в Notion, Joplin, Google Keep и т.п., то я точно могу рекомендовать Obsidian для личных заметок.

Буду рад, если поделитесь тем, как вы организуете себя в этом хаотичном мире.)
12🔥6👍4
Сплит клавиатура

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

Недолго думая, заказал себе сплит клаву ErgoHaven HPD.
Во-первых, мне было интересно научиться чему-то новому, а печатать на такой клаве (где под большими пальцами у тебя пробел, бэкспейс, cmd, переключение между четырьмя слоями, ctrl, вызов стюардессы и звонок в дверь) - непростая задача, особенно, когда тебе ещё работу работать надо.
Во-вторых, у меня появилась ещё одна тема для понтов перед пацанами (помимо vim).
В-третьих, я надеялся, что неприятные ощущения в пальцах уйдут. И они ушли.

Более того, оказалось, что программируемые клавы - оч прикольная тема, так что я накидал макросов для хоткеев vscode, поменял местами клавиши и сижу довольный. А поменяв удалёнку на гибрид, купил себе вторую такую же, чтобы и на работе, и дома у меня был 1 в 1 такой же сетап.

Что я могу сказать после нескольких лет использования:
1. Оно вам не надо, оно вас сожрёт. Придётся несколько недель или месяцев потратить на обучение, а всё равно печатаешь так же или медленнее.
2. Оно вам, вероятно, нужно, если появляются симптомы туннельного синдрома или проблемы с пальцами.
3. В жизни вы всё равно используете и сплит (на рабочем месте), и обычную клаву (в дороге, на совещаниях, на диванчике).
4. Мне очень нравится. Имхо, одна из лучших покупок, наравне со Стимдеком (о котором будет позже).
12🎉6😁2
А теперь про игры

В школе и на первых курсах юрфака любил погамать во всякое. Социализирует, отвлекает, переключает. Но с переходом в ML игр в жизни стало всё меньше.
Были, конечно, периоды, когда один и с друзьями гонял в Лижку (League of Legends), но эмоционально это было чаще в минус (конечно, из-за тиммейтов, я-то лоуприор прогеймер).
Как-то я даже установил винду рядом с убунтой и пытался на ней во что-то гамать, но спотыкался о переключение между системами (надо всё сохранить, стопнуть процессы, ребутнуть комп, а у тебя там трейн какой-нибудь и т.д. и т.п.) Да и, вставая после игр разбитым с болящей поясницей, я не чувствовал мотивации повторять этот забег ещё раз.
Смирившись, подумал, что слишком стар для этого и забил, переключившись на просмотр стримов или видосов про игры.

Но где-то раз в месяц на меня нападает желание купить что-нибудь ненужное. Обычно в такие моменты я откладываю сумму, которую планировал потратить, но не всегда. Так я купил SteamDeck OLED.
Нажимая на кнопку покупки, я уже думал о впустую потраченных деньгах, прикидывал, как использовать его в качестве домашнего сервачка (ведь там привычный linux под капотом), и как он будет пылиться вместе с RPI 4b, Nvidia Jetson Nano, Arduino и т.п. очень нужными мне вещами. Но как же я ошибался.

Оказалось, что вовсе я не стар для игр. И очень даже люблю лечь на диванчик, взять в руки консоль и пару-тройку часов погамать во что-нибудь. Из последнего это были The King is watching, Into the breach, Automobilista 2, но самой жесткой была покупка Flatout 2, когда я на два полных дня просто выпал из реальности.)

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

Чуть позже я расскажу, как учил себя "трогать траву", а пока буду рад поговорить про игрушки и отдых в комментах.)
15🤩3
Как я учился "трогать траву"

На правах пожилого 30-летнего айтишника предлагаю поднять тему отдыха ещё раз XD

Я был из тех тревожников, которые не могут посидеть 10 минут вдали от компа с кодом или тг канальчиков/блогов. Сразу накатывало чувство, что я безбожно отстаю от жизни, теряю квалификацию, и вообще я уже пропустил сову из Хогватса с письмом об увольнении. И если с переходом в ML в первые годы мне это помогало, то ближе к 30ти стало понятно, что либо закончится тревога, либо я. Особенно тяжело стало с переездом из Сочи (почти удалёнка, налаженная рутина, солнце-море-всё такое) в Москву, которая ещё на подлёте начала высасывать из меня жизнь, а тут и команда новая, и задачи, и половина недели в офисе.

Тогда я начал аккуратно менять режим всего и смотреть, как это влияет на моё состояние:
- стал делать 20-30 минутные прогулки на обеде (иногда с коллегами, иногда один)
- на выходных с друзьями стали выбираться в парки (недавно были в Царицыно и Коломенском)
- весьма строго настроил режим сна: с 22:00 до 8:00 у меня отключаются все уведомления
- если на неделе было много социалки, на выходных я окукливаюсь со стимдеком и едой
- если на работе хорошо поработал, то никакого кодинга дома
- до работы и обратно стал ходить пешком (минут 40 спокойным шагом), слушая книжки или просто залипая

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

Самым сложным, к слову, оказалось просто сидеть/идти и не потреблять информацию. До сих пор невероятно тяжело это даётся, часто не выдерживаю и включаю хотя бы музыку.

А как вы не даёте себе сгореть за валом рабочих задач и новостей?
🔥166👍1
Погоня за последними оставшимися дровами

Лет 5 назад (ещё когда slack ODS жил и трава была зеленее) абсолютно нормальной была ситуация, где ты выделяешь денёк, накидываешь на машинки ubuntu, драйвера nvidia (всегда -1 версию от актуальных) и работаешь лет 5. В соседних чатиках при этом всегда находились ребята, которые с выходом нового дистрибутива/версии дров практически сразу накатывали обнову, а затем ещё неделю пытались понять, почему ничего не работает. Раньше это было нормой, как минимум для меня.

Вчера я отметил, что уже в третий раз за месяц накатываю актуальные дрова на машинках, с которыми работаю. На домашней тачке так и вообще ubuntu с 20.04 на 24.04 обновил, потому что для двадцатки новые дрова уже не выпускают. Причина: инференс движки для llm, использующие последние оптимизации под капотом. Что немудрено, ведь когда твой движок используется на 1 000 000 видеокарт (SGLang), каждый выигранный % в производительности - это немало сэкономленных денег.

Вот я и думаю, это норма в целом обновилась и теперь и в вижене, и в классике и т.д. тоже приходится прыгать на самое новое, или это проблема моего пузыря?
👍71
Что ж, моё пребывание тут в качестве автора (но не подписчика) подошло к завершению.
С удовольствием общался в комментах. Отдельное спасибо за рекомендации (vimium - каеф!), мемы и то, что вообще читали и реагировали на мои постики.)
Надеюсь, было интересно! Звоните, пишите в личку, забегайте иногда в канал)
🔥16🤝7
Дарова леди и джентельмены,
я Дима Гордин @gordinmitya и
с сегодняшнего дня ко мне попалась админка этого канала. На целую неделю шитпостить буду я!
С теми кто проходил курс по ускорению нейросетей мы уже знакомы – я вел там лекцию по запуску на Android, с остальными познакомимся сразу как раскидаюсь с запланированными на сегодня звонками.
На этой неделе:
* меня бесит когда используют chatgpt на работе,
* systemdesign и behaviour это такая же зубрежка как литкод,
* селфхостинг 🏴‍☠️,
* с работы - детекция виртуальных камер из браузера,
* тревога и антидепрессанты,
* всякое администрирование линухи.
🔥9🐳8🤗41
передаю поздравления родным и близким
🫡105👎3😁2