#python #tensorflow #keras
#python #tensorflow #keras
Вопрос:
Каждый раз, когда я запускаю код Python с использованием TensorFlow (CPU), например:
import keras
Я вижу это:
2020-10-30 15:27:20.518894: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found
2020-10-30 15:27:20.518894: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
2020-10-30 15:27:23.713077: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'nvcuda.dll'; dlerror: nvcuda.dll not found
2020-10-30 15:27:23.713077: E tensorflow/stream_executor/cuda/cuda_driver.cc:313] failed call to cuInit: UNKNOWN ERROR (303)
2020-10-30 15:27:23.716077: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:169] retrieving CUDA diagnostic information for host: User1-PC
2020-10-30 15:27:23.716077: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:176] hostname: User1-PC
2020-10-30 15:27:23.729078: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x10cad0c0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-10-30 15:27:23.729078: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version
Using TensorFlow backend.
Если я суммирую все время ожидания, то время ожидания составляет ~ 10 секунд.
Есть ли способ ускорить этот процесс?Особенно, если я использую TensorFlow для вывода (а не для обучения), я не хочу ждать 10 секунд при каждом запуске движка.
Примечание: Конечно, когда мой код будет готов, я буду постоянно поддерживать процесс с использованием TensorFlow, и я буду использовать какое-то взаимодействие между процессами, чтобы избежать перезапуска всей программы.
Мой вопрос здесь в основном касается этапов прототипирования, когда вам часто нужно перезапускать программу: при создании прототипа необходимость ждать 10 или 15 секунд при каждом запуске скрипта крайне неудобна.
Комментарии:
1. Можете ли вы использовать записную книжку python с помощью jupyter? Вы говорите, что проблема заключается в прототипировании… когда я создаю прототип и хочу быстро перекомпилировать несколько строк кода или целый класс, использование jupyter notebook является ФАНТАСТИЧЕСКИМ и НАМНОГО БЫСТРЕЕ, чем повторный запуск файла.
2. Кроме того, еще один трюк, который я использую для быстрого тестирования, — это оболочка, которая кэширует результаты сети в файл. Таким образом, операторы импорта пропускаются, если мой тестовый код просто использует те же данные, и я просто работаю с другим кодом, который обрабатывает выходные данные сети. Я использовал это для встраивания языка и извлечения встраивания изображений. Наконец, я также кое-что использую только
np.random.rand(...)
для генерации данных вместо запуска tensorflow, чтобы протестировать всю обработку post neuralnetwork.
Ответ №1:
Для вашей проблемы с выводом вам, вероятно, понадобится более длительный процесс, из которого вы можете запрашивать результаты вывода, возможно, через HTTP, gRPC, XML-RPC, именованные каналы, чтение файлов из каталога …?
В противном случае найдите более быструю машину или диск. На моей машине запуск нового процесса Python и импорт Keras занимает около 2 секунд:
$ pip install tensorflow
Collecting tensorflow
Downloading tensorflow-2.3.1-cp38-cp38-macosx_10_14_x86_64.whl (165.2 MB)
[...]
Successfully installed absl-py-0.11.0 astunparse-1.6.3 cachetools-4.1.1 chardet-3.0.4 gast-0.3.3 google-auth-1.23.0 google-auth-oauthlib-0.4.2 google-pasta-0.2.0 grpcio-1.33.2 h5py-2.10.0 idna-2.10 keras-preprocessing-1.1.2 markdown-3.3.3 numpy-1.18.5 oauthlib-3.1.0 opt-einsum-3.3.0 packaging-20.4 protobuf-3.13.0 pyasn1-0.4.8 pyasn1-modules-0.2.8 requests-2.24.0 requests-oauthlib-1.3.0 rsa-4.6 tensorboard-2.3.0 tensorboard-plugin-wit-1.7.0 tensorflow-2.3.1 tensorflow-estimator-2.3.0 termcolor-1.1.0 werkzeug-1.0.1 wrapt-1.12.1
$ time python -c 'import tensorflow.keras as keras'
________________________________________________________
Executed in 2.02 secs fish external
usr time 2.85 secs 118.00 micros 2.85 secs
sys time 0.62 secs 946.00 micros 0.62 secs
Комментарии:
1. «Для вашей проблемы с выводом вам, вероятно, понадобится более длительный процесс, из которого вы можете запрашивать результаты вывода, может быть …» : Да, я это сделаю, конечно, но на этапе «прототипирования» этот начальный 10-секундный запуск немного неудобен.
2. Вы можете попытаться убедиться, что используете версию tensorflow только для процессора. Может помешать ему выполнять все проверки CUDA