У меня есть код Python, который использует трансформеры Hugging Face для запуска задачи НЛП в PDF-документе. Когда я запускаю этот код в Jupyter Notebook, его выполнение занимает более 1,5 часов. Затем я настраиваю тот же код для запуска через локально размещенное веб-приложение Streamlit. К моему удивлению, оно пробежало менее 5 минут!
Я считаю, что сравниваю яблоки с яблоками, потому что:
.py
создается из блокнота Jupyter с использованием «streamlit-juypter», который просто берет код Python из блокнота и добавляет несколько операторов Streamlit.Таким образом, по сути, тот же код работает с теми же данными и на том же оборудовании.
Единственные различия, о которых я могу думать, которые могут объяснить это:
.py
из командной строки вместо блокнота .ipynb
.Кто-нибудь когда-нибудь испытывал что-то подобное? Может ли запуск того же кода Python из командной строки привести к увеличению скорости в 20 раз?
Редактировать: Как предложил @Wayne, я сравнил вывод pip list
между моей основной установкой Python и venv и обнаружил некоторые различия. Поэтому я обновил все основные пакеты, используемые задачей НЛП, до последних версий, и теперь время выполнения осталось прежним. Хотя я до сих пор не знаю, какой пакет виноват, и, вероятно, сейчас это не имеет значения.
Сравнение версий пакетов MS Excel
Добавлено больше деталей. Помогло бы, если бы я разместил код .ipynb
и код .py
рядом для сравнения?
Я до сих пор не понимаю, где работает Jupyter Notebook? Это тоже работает локально на вашей машине? И чем среда отличается от используемой Streamlit. Вы должны уметь запускать conda list
или pip list
в каждом из них и видеть различия.
Jupyter Notebook тоже работает локально на моем компьютере. Но Streamlit использует виртуальную среду, в которой есть только те пакеты, которые необходимы для выполняемой задачи. Jupyter использует мою основную установку Python, в которой со временем будет установлено множество других пакетов.
Да, и, как я уже упоминал, обычно вы запускаете команды, которые я добавляю, и сравниваете версии соответствующих задействованных пакетов. Вполне возможно, что один из критически важных пакетов намного старше и не так оптимизирован, как другой. Или одна из версий, как известно, имеет существенный недостаток. Пожалуйста, обратитесь к моему первому предложению моего первого комментария. Пожалуйста, прочитайте Как мне задать хороший вопрос?. Обратите внимание, что там написано: «Помните, что вы можете редактировать свой вопрос в любое время!».
Не уверен, заметили ли вы, но каждый раз, когда я отвечаю на комментарий, я также добавляю в свой вопрос дополнительную информацию. В любом случае, мой вопрос: «Кто-нибудь когда-нибудь сталкивался с чем-то подобным?». Меня меньше интересует диагностика причины различий во время выполнения, чем выяснение того, сталкивались ли с этим другие. Я уже знаю, что версии пакетов и т. д. одинаковы для Jupyter и cmd.
«Я уже знаю, что версии пакетов и т. д. в Jupyter и cmd одинаковы». Эти подробности не были предоставлены, и поскольку речь идет о виртуальной среде, отдельной от установки Python основной системы, это маловероятно. Я думаю, что StackOverflow больше подходит для диагностики причины, чем открытые вопросы о том, сталкивались ли с этим другие люди. Если вы следуете руководству, которое я дал, особое внимание будет уделяться практичности вопросов.
Ты прав. Пожалуйста, смотрите последнее редактирование. Разница во времени выполнения была связана с версией пакета между моим основным Python и venv, на котором работает Streamlit. Хотя я до сих пор не знаю, какой именно пакет, так как только что обновил все основные пакеты НЛП. Что бы вы хотели, чтобы я сделал дальше? * Я удаляю вопрос, поскольку разница во времени выполнения не связана с Jupyter и cmd * Вы предоставляете ответ, и я принимаю его
В будущем просто вставьте вывод pip list
и тому подобное в виде текста. Или хотя бы тоже наклеить. Изображения не доступны для поиска. Вы заметите, что в руководстве, на которое я давал ссылку ранее (название: «Как задать хороший вопрос?»), в разделе «Помогите другим воспроизвести проблему» говорится: «НЕ публикуйте изображения кода, данных, сообщений об ошибках». , и т. д.".
Вероятно, это связано с различием двух сред.
Вы можете запустить %pip list
в блокноте и эквивалент pip list
в другой среде и сравнить.
Один из них может иметь некорректный код или не работать оптимально с другими версиями задействованных пакетов.
На самом деле вы даете очень мало подробностей, чтобы кто-либо мог здесь продолжить. Среда HuggingFace и ваша локальная идентична? Каковы различия между всеми задействованными пакетами? Во-вторых, вы запускаете один в блокноте Jupyter, а другой в приложении с потоковой подсветкой, используя файл
.py
. А в блокноте ты чем пользуешься? Запускаем тот же.py
файл с%run
в блокноте. Использование какой-либо магии IPython или то, что запускается в файле.ipynb
, является чистым Python? Сколько ресурсов вы используете на своем компьютере по сравнению с HuggingFace? У вас мощный компьютер или бесплатный виртуальный компьютер на HuggingFace?