Уроки, извлеченные из масштабирования TensorFlow до 300 миллионов прогнозов в секунду

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

Вы правильно прочитали. 300 миллионов предсказаний. каждую секунду

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

Мы видим здесь большие цифры

С технической точки зрения эта отрасль представляет собой интересное слияние двух областей сетей и машинного обучения. Это представляет собой интересный набор проблем, которые необходимо решить. Нам нужна высокая точность, постоянно обновляемые модели и очень низкая задержка. Это затрудняет реализацию традиционных методов/моделей. Авторы этой статьи,"Масштабирование TensorFlow до 300 миллионов прогнозов в секунду«Подробно описали свои проблемы и свой подход к их решению. Они сделали это, поделившись своим опытом работы с Zemanta.

Хорошее базовое знание может помочь вам понять контекст этой статьи/работы.

Вышеприведенный отрывок от автора. В нем объясняется, что такое Zemanta, как работает сервис и как продается рекламное место. Последний пункт подробно описывает использование машинного обучения для максимизации своих KPI, что довольно интересно. Возможно, читатели этого поста продолжат работать в этой области (помните меня, лол).

Некоторая предыстория сделанного выбора дизайна.

В этом посте я поделюсь своим опытом, благодаря которому авторы/команда Zemanta достигли 300 миллионов прогнозов в секунду с помощью фреймворка TensorFlow. Как обычно, аннотированная версия статьи будет в конце (ссылка на arxiv опубликована). Обязательно прочитайте сами. Какое из этих исследований кажется вам наиболее интересным? Пожалуйста, дайте мне знать в комментариях. Если вы хотите обсудить этот документ более подробно, пожалуйста, свяжитесь со мной через социальные сети.

Урок 1: Простые модели (по-прежнему) в приоритете

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

Глубокое обучение привлекло большое внимание в последние дни.

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

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

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

У многих компаний нет больших систем графических процессоров, которые они могли бы использовать непосредственно для обучения и прогнозирования данных. И чаще всего они не нужны. Цитирую автора: Относительно небольшие модели требуютнамного экономичнее.

Урок 2: не игнорируйте ленивых оптимизаторов

Разреженная матрица относится к матрице практически с нулевыми значениями. Они используются для представления систем с ограниченным взаимодействием между двумя парами компонентов. Например, представьте человеческую матрицу, где наши строки и столбцы соответствуют людям на Земле. Значение определенного индекса равно 1, если два человека знают друг друга, и 0, если они этого не знают. Это разреженная матрица, потому что большинство людей не знают большинство других людей в мире.

Матрица, используемая Zemanta, разрежена. Они обнаружили, что причина этого в том, что большинство признаков являются категориальными. Использование оптимизатора Adam увеличивает эксплуатационные расходы (на 50% больше, чем у Adagrad). С другой стороны, Адаград также имеет ужасную производительность. К счастью, есть альтернатива, которая работает хорошо, но стоит дорого. Ленивый Адам.

Ленивые вычисления — хорошо зарекомендовавшая себя практика разработки программного обеспечения. Ленивая загрузка часто используется для графических интерфейсов/интерактивных платформ, таких как веб-сайты и игры. Это только вопрос времени, когда ленивый оптимизатор утвердится в машинном обучении. Когда это произойдет, будьте начеку. Это может быть интересным вариантом, если вы ищете направления исследований в области машинного обучения.

Урок 3: Большие партии → меньшие вычислительные затраты

Это было совершенно неожиданно для меня. "Покопавшись в TF, мы поняли, что вычисления будут намного эффективнее (на пример), если мы увеличим количество примеров в пакете вычислений. Этот низкий линейный рост связан с тем, что код TF сильно векторизован. TF также имеет некоторые накладные расходы для каждого вызова вычислений, которые затем амортизируются для более крупных пакетов. Учитывая это, мы считаем, что для уменьшения количества вызовов вычислений нам необходимо объединить множество запросов в одно вычисление. "

Это новый вопрос. Приводит ли пакетное обучение к снижению вычислительных затрат? Честно говоря, я так и не смог понять, почему. Если кто-то из вас знает почему, обязательно поделитесь со мной. Я хотел бы знать, почему. Масштабы тоже удивляют.их вычислительная стоимость сокращается вдвое. Полный результат такой оптимизации.

Эта реализация высоко оптимизирована и способна сократить количество вызовов вычислений в 5 раз, вдвое сокращая использование ЦП для вычислений TF. В редких случаях, когда поток дозатора не получает процессорное время, время ожидания этих запросов истекает. Однако это происходит менее чем в 0,01% запросов. Мы наблюдали небольшое увеличение средней задержки — в среднем около 5 мс, возможно, выше в часы пик трафика. У нас есть соглашения об уровне обслуживания и надлежащий мониторинг для обеспечения стабильной задержки. Поскольку мы не увеличили резко процент тайм-аутов, это было очень полезно и остается в основе нашего механизма обслуживания TF.

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

заключительные замечания

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

Вы можете прочитать мою полностью аннотированную статью здесь (скачать бесплатно).

medium.com/Media/2Chengdu46…

Свяжитесь со мной

Если эта статья вызвала у вас желание связаться со мной, то этот раздел для вас. Вы можете связаться со мной на любой платформе или просмотреть мой другой контент. Если вы хотите обсудить репетиторство, напишите мне в LinkedIn, IG или Twitter. Если вы хотите поддержать мою работу, используйте мою бесплатную реферальную ссылку Robinhood. Мы все получаем бесплатные акции без риска для вас.Таким образом, не используя его, вы просто теряете свободные деньги.

Ознакомьтесь с другими моими статьями на Medium. :rb.gy/zn1aiu

мой ютуб: https://japan.about/88i для вершины

Свяжитесь со мной в LinkedIn. давайте свяжемся: https://japan.about/no 5OK2 не имеет

Мой инстаграм:rb.gy/gmvuy9

мой твиттер:Twitter.com/machine0177…

Мой подстек:codinginterviewsmadesimple.substack.com/

Получите бесплатные акции на Robinhood: https://join.Robin hood.com/ Злой 75


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