Работа студентам авито: Эксперты Авито Работы назвали варианты работы и подработки для студентов

Содержание

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

В Кирове проходит третий сезон проекта «Я в деле», направленного на развитие молодежного предпринимательства. Проект стартовал в 2021 году в Кировской области и насчитывает более 60 региональных команд по всей России. Корреспондент «Бизнес новостей» пообщалась с региональным руководителем проекта Анастасией Калининой и узнала, как в нашем городе молодежь учится развивать свой бизнес.

– Анастасия, чем занимается проект «Я в деле»?

– Это всероссийская программа по развитию молодежного предпринимательства. Мы проводим образовательные курсы, мастер-классы, тренинги для студентов. Также в рамках сезона организуем экспедиции в школы и проводим предпринимательские квизы для школьников.

– Проект взаимодействует с бизнесом города?

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

Бывает и так, что представители бизнеса сами проводят тренинги и лекции.

– Как обычно договариваетесь с партнерами?

– На самом деле всё очень просто. Мы пишем в социальных сетях и рассказываем о проекте, предлагая варианты сотрудничества. Далее устраиваем личные встречи, где точечно проговариваем нюансы.

– Вопрос финансирования. Монетизируется ли проект?

– Сама программа для наших участников бесплатна. Она финансируется за счет благотворительного фонда поддержки образовательных программ «Капитаны». Если говорить о проектах участников, то в этом сезоне наша цель – довести все до этапа монетизации. Многим командам уже это удалось.

– Вся проектная работа происходит в командах?

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

очень актуальная тема на сегодняшний день. Когда находишь «свою» команду, бизнес выходит на новый уровень.

– В рамках бизнеса какие темы обычно рассматриваете со студентами?

– Мастер-классы проходят по базовым темам. Это бизнес-проектирование, включающее в себя поиск идеи, определение целевой аудитории и CustDev, бизнес-моделирование, MVP, маркетинг и работа с конкурентами.

– Получается полноценный курс проектного менеджмента?

– Можно так сказать, да. Мы обучаем ребят без опыта предпринимательства и показываем, что бизнес-проектирование – это доступно и легко для каждого. У нас очень много проектов, связанных с кастомом вещей, лепкой из глины, которые уже монетизируются. Получается, ребята зарабатывают на своем хобби.

– Положительно ли бизнес в Кирове относится к проекту?

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

– В чем заключается роль наставника?

– Во-первых, это поддержка и координация региональных команд. Во-вторых, помощь в решении конфликтов. И, в-третьих, проведение самих мастер-классов. Вообще сейчас существует тенденция на диалоги формата «молодежь-молодежь». Студентам проще запоминать новую информацию, когда с ними разговаривают ровесники и общаются на «ты», неформально.

– Любой ли проект, по вашему мнению, можно монетизировать?

– Да. Даже если кажется, что изначально он не монетизируем. Это значит, что нужно подобрать другую бизнес-модель. Например, я не смогу продать стул через прямые продажи, на рынке. Может быть, смогу продать этот стул другим компаниям и уйду в B2B сегмент. Нужно просто пробовать, рисковать и не бояться принимать сумасшедшие решения. Самый первый наш мастер-класс построен именно на этом. Мы ищем идеи и сталкиваемся с тем, что ребята боятся высказать свои креативные и необычные мысли, потому что присутствует страх непринятия. Однако именно такие сумасшедшие идеи, как правило, и меняют наш мир, являясь сутью предпринимательства.

оставить комментарий

Спасибо за комментарий! Он будет опубликован после модерации

В регионе стартовала Всероссийская ярмарка трудоустройства

САМАРА. 14 АПРЕЛЯ. ВОЛГА НЬЮС.

Авторы: Лидия Поставная

Читали: 460

Версия для печати

Если вы нашли ошибку в тексте — выделите ее и нажмите CTR+Enter

В Самаре 14 апреля стартовал первый этап Всероссийской ярмарки трудоустройства «Работа России. Время возможностей».

Фото: ФОТО АВТОРА

Мероприятие по трудоустройству состоялось во всех городских округах, а также в муниципальных районах Самарской области: Кинель-Черкасском, Красноярском и Нефтегорском. В Самаре было пять площадок: в центре поддержки предпринимательства «Мой Бизнес», ТК «Амбар», Молодежный многофункциональный центр, StrelkaHall и общественный центр Сбербанк. Цель Всероссийской ярмарки трудоустройства не только подбор работы, но и помощь в планировании карьеры. Также наряду с вакансиями представлены все возможности современной службы занятости.

«Сегодня на наших площадках и безработные, и ищущие работу граждане, и студенты, и школьники, и конечно, работодатели, — отметила заместитель министра труда, занятости и миграционной политики Самарской области Ольга Фурсова. — Школьникам здесь помогут выбрать профессию, студентам — узнать об актуальных вакансиях и мерах поддержки. А соискатели смогут пройти собеседование у работодателей и принять участие в мероприятиях по карьерному развитию».

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

Первыми выступали спикеры из организаций: АО «Салют», ПАО Завод им. Тарасова, «Самарский Стройфарфор», АНОО ДПО ТаВолга, РЖД, АО «Авиакор». Представители организаций рассказывали о месте работы: условиях трудоустройства, заработной плате и обучении для тех, кто не имеет опыта работы.

После выступления спикеров, сотрудники службы занятости провели мастер-класс «Социальная адаптация граждан на рынке труда», где рассказали как составить правильно резюме и вести себя на собеседовании. Во время мастер-класса участников ярмарки уже консультировали специалисты центра занятости по предоставляемым услугам, а также начали работу площадки организаций-партнеров, которые ждут для обучения и приглашают на работу людей, желающих трудоустроиться. Вместе с работодателями к ярмарке привлечены эксперты, которые помогли выпускникам, студентам и родителям наметить наиболее перспективные отрасли для дальнейшего трудоустройства. По ходу мероприятия запущен конкурс «Работа моей мечты» в социальной сети «ВКонтакте» от управляющего центра занятости населения, где главным выигрышем стал мерч, итоги подвели в группе организации.

Второй этап Всероссийской ярмарки трудоустройства пройдет 23 июня 2023 года. Специально для федерального этапа будет создана отдельная страница портала «Работа России», где соискатели смогут ознакомиться с представленными на ярмарку предложениями работодателей со всех регионов.

Вход / Регистрация

Популярные материалы

Читаемое Комментируемое

сегодня неделя месяц

Топ 100

Гид потребителя

Маткапитал — не гарантия добросовестности покупателя

«Ох уж эти сказочки»: можно ли заработать на новогодних акциях от банков

Стало известно, где и когда пройдут зимние соревнования по рыбалке

Тренды будущего: как узнать, что нас ждет через 20 лет

Самая эффективная эпиляция: выбираем лучший метод

Смена работы чаще, чем раз в год, может помешать выгодному трудоустройству

Ноу-хау, которые помогают делать улыбку идеальной

Правила секса: вопросы, которые не принято обсуждать

Мой ребенок — вундеркинд: две стороны медали

Скелет в шкафу: как искать работу после конфликтного увольнения

Проблема: частая смена работы.

Как избавиться от образа «летуна»

Время перемен: стоит ли торопиться с пластической операцией

Дело добровольное! Что надо знать о ДМС

Важные вопросы о здоровье мамы и малыша

Красивая улыбка с рождения: Почему прикус становится неправильным

Эксперты обозначили главные вопросы, о которых стоит задуматься самарским работодателям

Традиционный «День карьеры» для студентов и выпускников самарских вузов.

Заседание координационного совета по кадровой политике при губернаторе Самарской области

Все фотогалереи

Новости раздела

  • В регионе стартовала Всероссийская ярмарка трудоустройства

  • Дефицит специалистов при высокой конкуренции: тренды рынка труда на 2023

  • Вахтовый труд становится все более привлекательным: соискательская активность в Самаре на Авито Работе выросла на 57%

  • Авито Работа о популярных мерах поддержки сотрудников: 47% компаний в Самаре вкладываются в обучение персонала

  • Авито Работа и Salary Index: за пять лет количество вакансий для таксистов выросло в 40 раз

  • Спрос на административный персонал в Самаре по итогам февраля 2023 года вырос на 14%

  • 88% людей в Самаре поддерживают новый подход к отпускам

  • ВСК выступила организатором HR-форума в Ростове-на-Дону

  • Авито Работа о карьерных стереотипах: в Самаре мужчины стали чаще размещать резюме в типично «женских» профессиях

  • Авито Работа: бьюти-мастеров в Самаре стали искать на 46% чаще

  • Свобода против полного дня: вакансии со свободным графиком в Самаре стали искать на 42% чаще

  • Авито Работа запустила развернутые отзывы о компаниях

  • Авито Работа: предложение от работодателей в промышленных отраслях в Самаре выросло на 134%

  • Нематериальный перевес в пользу бизнеса: какую роль играет вовлеченность сотрудников

  • На Авито Работе агентов по недвижимости стали искать на 47% чаще

  • Авито Работа к Дню экскурсовода: в Самаре предлагают вакансии со сменным графиком

  • Авито Работа составила рейтинг зарплатных банков — большинство людей в Самаре получают зарплату на карты Сбера, ВТБ и Альфа-Банка

  • На работу с мамой: Авито Работа — об отношении сотрудников и работодателей к детским комнатам в офисах

  • «Могу выйти завтра»: Авито Работа запускает инструмент для быстрого трудоустройства

  • Как изменился рынок профессий в прошлом году: исследование Price. ru и Авито Работы

  • Авито Работа к Международному дню пиццы: спрос на пиццамейкеров в России вырос на 58%, а в Самаре на 33%

  • Карьера в автобизнесе: спрос на кадры и медианная зарплата в индустрии на Авито Работе растут

  • Tele2 стала лучшим работодателем среди телеком-компаний по версии hh. ru

  • Ко Дню веселья от Авито Работы: в Самаре спрос на специалистов индустрии развлечений за год вырос на 8%

  • Авито Работа к Дню ювелира: в Самаре зарплата в сфере за год выросла на 4%

  • Дорогу молодым: число вакансий для специалистов без опыта на Авито Работе выросло в 3,8 раза

  • Какие специалисты нужны в сфере транспорта и логистики: анализ ситуации в Самаре на рынке труда от Авито Работы

  • Эксперты Авито Работы назвали варианты работы и подработки для студентов в Самаре

  • Большой выбор вакансий: HoReCa вошла в топ-5 по числу вакансий на Авито Работе в 2022 году

  • МТС вошла в топ-10 лучших ИТ-работодателей России

  • Эксперты Авито Работы подтвердили актуальность инициативы по упрощению трудоустройства подростков от 14 лет

  • Большой выбор вакансий: в 2022 году на Авито Работе вдвое чаще искали сотрудников в Самаре

Все новости

Индексы ВолгаНьюс

популярность

Общие Персоны Организации

неделя месяц год

    Топ 100

    Индексы ВолгаНьюс

    активность

    Общие Персоны Организации

    неделя месяц год

      Топ 100

      Архив

      ЯнварьФевральМартАпрельМайИюньИюльАвгустСентябрьОктябрьНоябрьДекабрь202320222021202020192018201720162015201420132012201120102009200820072006200520042003200220012000

      Пн Вт Ср Чт Пт Сб Вс
      27 28 29 30 31 1 2
      3 4 5 6 7 8 9
      10 11 12 13 14 15 16
      17 18 19 20 21 22 23
      24 25 26 27 28 29 30

      Как начать карьеру с приложением Avito

      Юрий Алявдин Сервис АвитоС2С

      Платформа

      iOS

      Роль

      Дизайнер продукта

      Дата

      2019

      Обзор

      Avito. ru — российский сайт объявлений с разделами, посвященными продаже товаров общего назначения, работе, недвижимости, знакомствам, продаже автомобилей и услугам.

      Avito.ru — самый популярный сайт объявлений в России и второй по величине сайт объявлений в мире после Craigslist. В январе 2019 г., его ежедневно посещало более 10,3 миллиона уникальных посетителей. В среднем пользователи Avit публикуют более 500 000 новых объявлений ежедневно, а общее количество объявлений составляет около 50 миллионов активных объявлений.

      Проблема

      В начале карьеры все вакансии кажутся одинаковыми: низкие требования, одинаковая зарплата, и никто не ждет даже от опытных кандидатов. Но у этих ролей разные перспективы развития и разные требования в будущем.

      Цель

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

      По данным исследования НАФИ, респонденты в большинстве случаев искали работу на Авито.

      Avito.ru

      36

      HeadHunter (hh.ru)

      14

      Job.ru

      14

      SuperJob

      8

      Zarplata.ru

      6

      Mair.ru

      6

      Careerist.ru

      5

      Другое

      1

      Не использовать

      3

      Сегментация аудитории

      Соискатель – начинающий рабочий от 18 до 25 лет. Он ищет свою первую работу, чтобы выбрать свой карьерный путь. Зарплата, место работы и быстрый доступ — самые важные условия.

      Отчет о конкурентном анализе

      Традиционные методы поиска работы в России включают использование услуг бюро по трудоустройству, рекламы и объявлений в газетах, специальных кадровых агентств, прямой контакт с работодателем, специализированные сайты, социальные сети, профессионально ориентированные социальные сети, рекомендации друзей.

      Основную часть рынка занимают крупные локальные игроки.

      Путь клиента

      Итак, я применил полученные качественные исследования пользовательского опыта занятости в CJM.

      Эта практика помогла выявить некоторые болевые точки заявителя

      • Нужно начинать карьеру немедленно, иначе будет поздно
      • Не знаю, как составить резюме
      • Тратит много времени на поиск
      • Получает много отказов, что заставляет сдаться
      • Страх интервью

      Каркасы

      Далее я рассмотрел возможные точки входа в каталог с вакансиями из приложения Авито. В существующем приложении их было два.

      К первому относился поисковый кейс: когда соискатель уже прошел этап определения специальности и искал работу по заданным параметрам.

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

      Решение

      Скопируйте резюме друга

      Обычно потребность в трудоустройстве абитуриент начинает осознавать сразу после окончания учебы (в момент окончания учебы). Его одолевает страх оказаться не у дел на ранней стадии.

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

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

      Контекстные советы

      Некоторые абитуриенты вступают в этот опыт впервые. Так что есть гипотеза, что полезные контекстные подсказки могут помочь:

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

      Страх перед собеседованием вызывает беспокойство и заставляет усомниться в собственной компетентности. Перед походом на назначенное собеседование будет полезно прочитать пару советов.

      Отзывы работодателей

      Идет огромный процесс поиска потенциальных работодателей. Значительная часть этого времени уходит на оценку потенциальной компании. Отзывы соискателей о работодателе могут помочь на этом этапе отсеять недобросовестные компании.

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

      Тайм-аут ответа

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

      Персонализация

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

      Почему мы перешли с Python на Go в системе рекомендаций Авито | Василий Копытов | АвитоТех | март 2023 г.

      Привет! Меня зовут Василий Копытов, я руковожу группой разработки рекомендаций Авито. Мы занимаемся системами, предоставляющими пользователю персонализированную рекламу на сайте и в приложениях. На примере нашего основного сервиса я покажу, когда переходить с Python на Go, а когда оставить все как есть. В конце я дам несколько советов по оптимизации сервисов Python.

      Любой, кто заходит на главную страницу сайта или приложения, видит персонализированную ленту объявлений — рекомендации. Нагрузка на наш основной рекомендательный сервис, отвечающий за генерацию бесконечной ленты объявлений на главной странице, составляет около 200 000 запросов в минуту. Общий трафик до 500 000 запросов в минуту на рекомендации.

      Так выглядят рекомендации в приложении и на сайте

      Сервис выбирает наиболее подходящие объявления из 130 миллионов активных объявлений (элементов) для каждого пользователя. Рекомендации генерируются на основе каждого действия человека за последний месяц.

      Представительство работает по следующему алгоритму:

      1. Сервис обращается к хранилищу истории пользователя и извлекает из него агрегированную историю действий и интересов.

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

      2. Затем передается история и интересы как набор параметров, воздействие на модели машинного обучения первого уровня.

      Модели машинного обучения первого уровня являются базовыми службами. Сейчас у нас есть 4 таких модели. Они предсказывают элементы, используя различные алгоритмы машинного обучения. На выходе каждого сервиса получаем список id (рекомендуемых).

      3. Мы фильтруем идентификатор на основе истории пользователя. У нас получается около 3000 элементов на пользователя.

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

      5. Из данных готовим характеристики. Это параметры ранжирования рекомендаций. Для этого мы используем id элемента для получения данных в хранилище (осколочная база данных 1 ТБ, Redis). Данные товара — название, цена и еще около 50 полей.

      6. Служба передает функции и элементы в модель машинного обучения второго уровня на основе библиотеки CatBoost. Результатом является ранжированная лента объявлений.

      7. Далее представление выполняет бизнес-логику. Например, подбирает в ленте те объявления, за премиум размещение которых взимается плата (boost VAS).

      8. Кешируем и отдаем сгенерированный фид рекомендации пользователю, в нем около 3000 объявлений.

      Алгоритм формирования ленты рекомендаций

      Представительство как услуга очень загружено в Авито. Он обрабатывает 200 000 запросов в минуту. Сервис стал таким не сразу: мы постоянно вносили что-то новое и улучшали качество рекомендаций. В какой-то момент он начал потреблять почти столько же ресурсов, сколько и весь остальной монолит Авито. Нам стало сложно выкатывать сервис в дневное время, в часы пик, из-за нехватки ресурсов в кластере — в это время большинство разработчиков развертывали свои сервисы.

      Карта взаимодействия сервисов Авито. Размер круга показывает, сколько ресурсов кластера потребляет служба

      Вместе с ростом потребления ресурсов росло и время отклика службы. Во время пиковых нагрузок пользователи могли ждать свои рекомендации до 1,6 секунды — это в 8 раз больше, чем за последние 2 года. Все это могло заблокировать дальнейшее развитие и совершенствование рекомендаций.

      Причины этого достаточно очевидны:

      1. Высокая нагрузка, связанная с вводом-выводом. В представлении каждый запрос состоит примерно из 20 сопрограмм — блоков кода, которые выполняются асинхронно при обработке сетевых запросов.
      2. Нагрузка на ЦП от вычислений в реальном времени по ML-модели, которые полностью заняты ЦП, пока происходит ранжирование рекламы.
      3. GIL — представление изначально было написано на однопоточном Python. В этом языке программирования невозможно совместить рабочие нагрузки, связанные с вводом-выводом и с привязкой к ЦП, чтобы служба эффективно использовала ресурсы.

      Позвольте мне рассказать вам, что помогло нам справиться с нашими нагрузками в Python.

      1. ProcessPoolExecutor

      ProcessPoolExecutor создает пул воркеров из процессорных ядер. Каждый воркер — это отдельный процесс, работающий на отдельном ядре. Вы можете передать нагрузку, связанную с ЦП, на рабочий процесс, чтобы он не замедлял другие процессы.

      В представлении мы изначально использовали ProcessPoolExecutor для разделения рабочих нагрузок, связанных с процессором и вводом-выводом. В дополнение к основному процессу Python, который обслуживает запросы и ходит по сети (с привязкой к IO), мы выделили три воркера для ML-модели (с привязкой к CPU).

      У нас есть асинхронная служба на aiohttp, которая обслуживает запросы и успешно обрабатывает нагрузку, связанную с вводом-выводом. ProcessPoolExecutor создает пул рабочих процессов. Рабочую нагрузку, связанную с ЦП, можно передать такому рабочему процессу, чтобы он не замедлял основной процесс службы и не влиял на задержку всей службы.

      Выигрыш времени от использования ProcessPoolExecutor составляет около 35%. Для эксперимента мы решили сделать код синхронным и отключили ProcessPoolExecutor. То есть рабочие нагрузки, связанные с вводом-выводом и процессором, начали выполняться в одном процессе.

      Без ProcessPoolExecutor время отклика увеличилось на 35%

      Как это выглядит в коде:

       async def process_request(user_id): 
      # Задача ввода/вывода
      async with session.post(
      feature_service_url,
      json= {'user_id': user_id},
      ) as resp:
      functions = await resp.json()

      return features

      У нас есть асинхронный обработчик, который обрабатывает запрос. Для тех, кто не знаком с синтаксисом асинхронного ожидания, это ключевые слова, обозначающие точки переключения сопрограммы.

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

       def предсказание (функции) 
      preprocessed_features = процессор.препроцесс (представленный)
      return model.infer(preprocessed_features)

      async def process_request(user_id):
      # задача ввода-вывода
      асинхронно с session.post(
      feature_service_url,
      json ={'user_id': user_id},
      ) как соотв.:
      features = awat resp.json()

      # блокировка CPUtask
      return predict(features)

      Внезапно нам нужно выполнить загрузку с привязкой к ЦП из ML-модели. И так на предсказать функцию наша сопрограмма заблокирует процесс python. Чтобы все сервисные запросы не стояли в очереди и время ответа сервиса не увеличивалось, как мы видели ранее.

       executor = concurrent.futures.ProcessPoolExecutor(man_workers=N) 

      def прогноз(функции):
      preprocessed_features = процессор.preprocess(features)
      return model.infer(preprocessed_features)

      async def process_request(user_id):
      # задача ввода/вывода
      async with session. post(
      feature_service_url,
      json={'user_id': user_id},
      ) as resp:
      features = await resp.json()

      # Неблокирующая задача ЦП
      return await loop.run_in_executor(executor, predict(features))

      Здесь ProcessPoolExecutor вступает со своим собственным пул рабочих, который решает эту проблему. В строке 1 мы создаем пул. В конце блока кода мы берем рабочего оттуда и перемещаем задачу, связанную с процессором, на отдельное ядро. Таким образом, функция прогнозирования будет выполняться асинхронно по отношению к родительскому процессу, а не блокировать его. Приятно то, что все это будет завернуто в обычный синтаксис async-await, а задачи, связанные с процессором, будут выполняться асинхронно, как и задачи, связанные с вводом-выводом, но под капотом будет дополнительная магия с процессами.

      ProcessPoolExecutor позволил нам снизить накладные расходы от модели ML в реальном времени, но и с ним в какой-то момент стало плохо. Первое, с чего мы начали, было самым очевидным — профилированием и выявлением узких мест.

      2. Профилирование службы

      Даже если служба написана опытными программистами, ее можно улучшить. Чтобы понять, какие части кода медленные, а какие быстрые, мы профилировали сервис с помощью профилировщика py-spy.

      Профилировщик строит диаграмму, на которой горизонтальные полосы показывают, сколько процессорного времени тратится впустую на участок кода. Первое, что вы видите, это 3 полосы справа. Это всего лишь наши дочерние процессы для оценки функций модели ML.

      Результат профилирования Rec-представления. Например, видно, что воркеры ProcessPoolExecutor для модели ML занимают почти одинаковое количество ресурсов ЦП

      На графике пламени мы увидели некоторые интересные детали:

      • 7% процессорного времени тратится на сериализацию данных между процессами. Сериализация — это преобразование данных в байты. В Python этот процесс называется pickle , а обратный — unpickle .
      • 3% времени уходит на оверхед ProcessPoolExecutor — подготовка пула воркеров и распределение нагрузки между ними.
      • 6,7% времени тратится на сериализацию данных для сетевых запросов в json.loads и json.dumps.

      В дополнение к процентному распределению, мы хотели знать конкретное время, затрачиваемое на выполнение различных частей кода. Для этого мы снова отключили ProcessPoolExecutor, запустили модель ML для ранжирования синхронно.

      Без ProcessPoolExecutor ранжирование происходит быстрее, т.к. все процессорное время занято только подготовкой фич и скорингом по ML модели, нет накладных расходов на pickle/unpickle и IO-wait

      Но проблема остается — конкретный кусок кода стало быстрее, но сам сервис стал медленнее.

      Поэкспериментировав, мы выяснили:

      • Накладные расходы ProcessPoolExecutor составляют около 100 миллисекунд.
      • Запросы, связанные с вводом-выводом, от сопрограмм ждут 80 миллисекунд, то есть сопрограмма засыпает, и цикл событий снова обращается к ней через 80 мс, чтобы возобновить ее выполнение. В Representation есть три большие группы IO-bound запросов — всего на IO-wait тратится 240 миллисекунд.

      Именно тогда мы впервые подумали о переходе на Go, так как он имеет более эффективную модель планирования подпрограмм из коробки.

      3. Разделить рабочую нагрузку, связанную с процессором и вводом-выводом, на две отдельные службы

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

      Эксперимент показал, что мы экономим время на работе модели, но получаем задержку в 270 миллисекунд при передаче данных по сети и json.loads/json.dumps. Нам нужно передать около 4 Мб на запрос, а для очень активных пользователей до 12 Мб данных для модели ML. После масштабирования rec-ranker реплики стали ненамного меньше старого представления, а время отклика не изменилось. Для нашего случая разбиение на сервисы оказалось неудачным решением, поэтому мы вернулись к предыдущей реализации Representation.

      4. Оцененная общая память

      В службе Представление данные передаются между процессами посредством pickle/unpickle. Вместо этого процессы, которые совместно используют данные, могут указывать на общую область памяти. Это экономит время сериализации.

      Максимальная оценка состоит в том, что мы могли бы выиграть около 70 миллисекунд на сериализацию с таким же сокращением времени для объема выполнения запроса, поскольку загрузка процессора блокировала основной процесс Python, который обрабатывал запросы от пользователей. Такой вывод мы сделали по профилю: pickle/unpickle занимает всего 7% процессорного времени, от разделяемой памяти особого профита не будет.

      5. Подготовка фич в Go

      Мы решили протестировать работоспособность Go сначала на части сервиса. Для эксперимента мы выбрали самую ресурсоемкую задачу в сервисе — подготовку фич.

      Возможности в сервисе рекомендаций — данные о товаре и действия пользователя. Например, название объявления, цена, информация о показах и кликах. Существует около 60 параметров, влияющих на результат модели машинного обучения. То есть мы готовим все эти данные для 3000 элементов и отправляем их в модель, и она дает нам оценку для каждого элемента, которую мы используем для ранжирования фида.

      Чтобы связать код Go для подготовки функций с остальной частью кода службы в Python, мы использовали ctypes.

       def get_predictions( 
      raw_data: bytes,
      model_ptr: POINTER(c_void_p),
      size: int,
      ) -> list:
      raw_predictions = lib.GetPredictionsWithModel(
      GoString(raw_data, len(raw_data)1), model_pt

      )
      прогнозы = [raw_predictions[i] для i в диапазоне (размере)]
      возвращаемые прогнозы

      Вот как выглядит подготовка функций внутри Python. Модуль lib представляет собой скомпилированный пакет Go с функцией GetPredictionsWithModel. В него мы передаем байты с данными об элементах и ​​указатели на ML-модель. Все функции подготовлены кодом Go.

      Результаты были впечатляющими:

      • Функции Go считаются в 20–30 раз быстрее;
      • весь шаг ранжирования в 3 раза быстрее с учетом дополнительной сериализации данных в байты;
      • отклик главной страницы упал на 35%.
      Подготовка фич на Go ускорила загрузку главной страницы сайта с 1060 до 680 миллисекунд Время ранжирования рекомендаций по ML-модели с подготовкой фич. Здесь также нужно учитывать, что в случае с Go у нас синхронный код и мы не используем ProcessPoolExecutor

      Результаты

      После всех экспериментов мы сделали четыре вывода:

      • Функции Go для 3000 элементов на запрос считаются в 20–30 раз быстрее, что экономит 30% времени.
      • ProcessPoolExecutor тратит впустую около 10% времени.
      • Три группы запросов, связанных с вводом-выводом, занимают 25% времени пустых ожиданий.
      • После перехода на Go мы сэкономим около 65% времени.

      Есть модель ML в представлении-го. Естественно кажется, что ML хорош только для Python, но в нашем случае модель ML на CatBoost и у нее есть C-API, который можно вызывать из Go. Этим мы и воспользовались.

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

       if !C.CalcModelPrediction( 
      model.Handler,
      C.size_t(nSamples),
      floatsC,
      C.size_t(floatFeaturesCount),
      CatsC,
      C.size_t(categoryFeaturesCount),
      (*C.double) (&results[0]),
      C.size_t(nSamples),
      ) {
      вернуть nil, getError()
      }

      Проблема в том, что модель машинного обучения все еще обучается на Python. И для того, чтобы он изучал и строил одни и те же функции, важно, чтобы они не расходились.

      Мы начали их готовить по коду Go-service. Обучение происходит на отдельных машинах, туда загружается сервисный код в Go, по этому коду подготавливаются фичи, сохраняются в файл, затем Python-скрипт скачивает этот файл и обучает на них модель. В качестве бонуса обучение также стало в 20–30 раз быстрее.

      Representation-go показал отличные результаты:

      • Время отклика главной страницы сократилось в 3 раза с 1280 миллисекунд до 450 миллисекунд.
      • Потребление ЦП снизилось в 5 раз.
      • Потребление ОЗУ снизилось в 21 раз.
      Сервис работает в три раза быстрее, когда написан на Go по сравнению с Python

      Мы разблокировали дальнейшую разработку рекомендаций — мы можем продолжать реализовывать тяжелые функции .

      В нашем случае переход на Go принес желаемый результат. Основываясь на нашем опыте работы с механизмом рекомендаций, мы определили три условия, когда вам следует подумать о переходе на Go:

      1. сервис имеет высокую нагрузку на ЦП
      2. в то же время высокая нагрузка на ввод-вывод
      3. вам необходимо отправить большой объем данных по сети на подготовить характеристики.

      Если у вас есть только рабочие нагрузки, связанные с вводом-выводом, вам лучше придерживаться Python. Переход на Go не выиграет вам много времени, вы только сэкономите ресурсы, что не так важно для малых и средних рабочих нагрузок.

      Если сервис использует обе нагрузки, но не передает по сети столько данных, сколько мы, есть два варианта:

      1. Использовать ProcessPoolExecutor. Накладные расходы времени не будут очень большими, а обслуживание не огромным.
      2. Поскольку нагрузка по трафику становится слишком высокой, разделите его на 2 службы — службы с привязкой к ЦП и службы с привязкой к IO, чтобы масштабировать их отдельно.

      Оптимизация службы, с чего начать

      Профилируйте свою службу. Используйте py-spy, как мы, или другой профилировщик Python. Скорее всего, ваш код не имеет огромных неоптимальных областей. Но вам нужно повнимательнее присмотреться ко всем небольшим областям, которые будут значительно улучшены. Возможно, вам не потребуется переписывать весь код.

      Запустить py-spy в неблокирующем режиме:

       record -F -o record.