Чат-бот Python Profiler помогает ускорить выполнение скриптов

    0
    0


    Интервью Чтобы ускорить работу кода Python, теперь вы можете получить советы по оптимизации производительности от профилировщика Scalene Python и связанного с ним чат-бота — и в основном его рекомендации помогают.

    Профилировщик Python предоставляет статистические данные о том, как выполняется код Python, например количество вызовов, время, затраченное на выполнение функций и т. д. Вооружившись этой информацией, разработчик имеет возможность найти и устранить потенциальные узкие места в производительности. Например, данные профилирования могут указывать на то, что данная программа, привязанная к ЦП, может работать быстрее при распараллеливании, чтобы лучше использовать несколько ядер ЦП.

    Scalene, разработанный профессором компьютерных наук Массачусетского университета в Амхерсте Эмери Бергером и аспирантами Сэмом Стерном и Хуаном Альтмайером Пиццорно, дебютировал в 2020 году и с тех пор неоднократно улучшался. С момента первого выпуска его скачали более 675 000 раз.

    Инструмент профилирования описывается его создателями как «высокопроизводительный профилировщик ЦП, графического процессора и памяти для Python, который делает ряд вещей, которые другие профилировщики Python не делают и не могут сделать. Он работает на порядки быстрее, чем многие другие профилировщики, обеспечивая при этом гораздо более подробную информацию».

    Он не всегда включал в себя рекомендации по генеративному искусственному интеллекту и начал свое увлечение болтливыми моделями большого языка в январе. Первоначально настроенный для работы с GPT-3 OpenAI, впоследствии он был настроен для подключения к GPT-3.5, а в июле был дополнительно переработан для взаимодействия с GPT-4.

    Это произошло вскоре после того, как Бергер и его соавторы представили статью. [PDF] об этом проекте на 17-м симпозиуме USENIX по проектированию и внедрению операционных систем, который в конечном итоге был удостоен награды за лучший доклад на конференции.

    «Первая версия Scalene была выпущена в 2020 году, но эта версия Scalene полностью отличалась от той, что есть сегодня», — сказал Бергер. Регистр в электронном письме. «Функции искусственного интеллекта были включены в январе. Самая последняя версия вышла на прошлой неделе. Вскоре после конференции мы выпустили основной выпуск, который улучшает оптимизацию на основе искусственного интеллекта».

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

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

    Многие языки программирования выполняют код быстрее, чем Python, но Бергер считает, что повсеместное распространение Python и обширная экосистема оправдывают усилия по ускорению.

    «Python сегодня является одним из самых популярных языков», — сказал он. «Он дает вам доступ к множеству библиотек, особенно для ИИ и науки о данных, и, следовательно, (и по другим причинам) более доступен и гораздо удобнее в использовании, чем высокопроизводительные альтернативы. Это практически лингва франка для ИИ и науки о данных. и многое другое, и его гораздо проще использовать, чем, скажем, Java, C++ или Rust».

    Это практически лингва-франка для искусственного интеллекта, науки о данных и многого другого, и его гораздо проще использовать, чем, скажем, Java.

    Было предпринято множество попыток сделать Python более производительным, включая недавно анонсированный проект Mojo и компилятор Codon, не говоря уже о более известных проектах, таких как Numba и Cython.

    Бергер сказал, что ни Mojo, ни Codon не являются работоспособной заменой Python, поскольку требуют от людей переписывать свой код.

    «На самом деле Mojo еще даже не доступен публично… Я с нетерпением жду возможности использовать его — я в списке ожидания — но для достижения высокой производительности в Mojo, насколько я понимаю, все равно потребуется переписать код для обеспечения статического типа. информацию, чтобы заставить ее работать хорошо», — сказал Бергер. «Mojo задуман как надмножество Python, но Codon несовместим с большей частью существующего кода Python, что, я думаю, станет серьезным препятствием. Я также не думаю, что он совместим со многими широко используемыми библиотеками, но я этого не сделал. проверил это».

    Тем не менее, Бергер предположил, что репутация Python как медленного языка не совсем заслужена, поскольку одним из его основных преимуществ является возможность использовать скомпилированные библиотеки, реализованные с использованием высокопроизводительных языков и инфраструктур, таких как C++ и CUDA.

    «Если вы пишете код на Python, но интенсивно используете эти собственные библиотеки, ваш код будет кричать», — сказал он.

    Scalene также может заставить ваш код кричать, как сообщают пользователи и описано в статье. Например, в прошлогоднем сообщении в репозитории Scalene Крис Вильгельм, инженер Semantic Scholar, сообщил, что одна из моделей машинного обучения компании стала слишком дорогой для запуска и поставила под угрозу соответствующий продукт.

    «Мы сгенерировали набор тестовых данных и запустили наши модели с установленным Scalene — вывод в формате HTML позволил точно определить наши самые скрипучие колеса и помочь нам убедиться, что наши изменения оказали влияние», — написал он. «Процесс был итеративным, точным и повторяемым. В итоге нам удалось сократить затраты на ошеломляющие 92 процента».

    Это было до того, как Scalene добавила поддержку подключения к модели чат-бота OpenAI. Добавив ключ OpenAI API в Scalene, пользователи могут превратить данные профилирования в конкретные советы по изменению кода из не совсем ненадежного чат-бота.

    Текстовый вывод модели ИИ может выглядеть, например, так: «Векторизуйте код, чтобы уменьшить количество циклов и повысить производительность». И за этим последует предлагаемый код для этого.

    «Она не всегда работает, поскольку иногда производит оптимизацию, которая меняет поведение программы (это то, над чем мы работаем и скоро должны выйти), но оптимизации, как правило, «на месте», — сказал Бергер.

    Демонстрация веб-интерфейса Scalene содержит соответствующее предупреждение: “Note что оптимизации генерируются искусственным интеллектом и могут быть неверными».

    Использование Scalene — это всего лишь вопрос его установки (что не обязательно тривиально, учитывая разнообразные варианты управления пакетами в экосистеме Python) и последующего запуска. scalene your_program.py из командной строки, а не python your_program.py.

    «Scalene определяет неэффективность вашей программы», — сказал Бергер. «Затем вы можете нажать на кнопку и получить рекомендации по оптимизации на основе ИИ. Короче говоря, вы уже можете нажать кнопку и повысить производительность». ®

    Предыдущая статьяSamsung Galaxy м31, Galaxy M53 получит обновление безопасности от августа 2023 г.
    Следующая статьяGalaxy S24 Ultra может потрясти Snapdragon 8 SoC Gen 3 по всему миру
    Виктор Попанов
    Эксперт тестовой лаборатории. Первый джойстик держал в руках в возрасте 3 лет. Первый компьютер, на котором „работал” был с процессором Intel i386DX-266. Тестирует оборудование для издания ITBusiness. Будь то анализ новейших гаджетов или устранение сложных неполадок, этот автор всегда готов к выполнению поставленной задачи. Его страсть к технологиям и приверженность качеству делают его бесценным помощником в любой команде.