Skip to content
This repository has been archived by the owner on Dec 1, 2021. It is now read-only.

error could not find terminal under horovodrun training #1115

Open
joelN123 opened this issue Jul 7, 2020 · 0 comments
Open

error could not find terminal under horovodrun training #1115

joelN123 opened this issue Jul 7, 2020 · 0 comments
Labels
bug Something isn't working

Comments

@joelN123
Copy link
Contributor

joelN123 commented Jul 7, 2020

This occurs when using horovodrun, when running train command:

docker run --runtime=nvidia -e CUDA_VISIBLE_DEVICES="0,1" -v `pwd`:/home/blueoil -v <dataset dir>:/home/blueoil/dataset:ro --user=$(id -u):$(id -g) <docker image> horovodrun -np 2 python blueoil/cmd/main.py train -c blueoil/configs/core/classification/lmnet_quantize_cifar100.py -e testing123 --recreate

causes error:

[1,0]<stderr>:Traceback (most recent call last):
[1,0]<stderr>:  File "blueoil/cmd/main.py", line 23, in <module>
[1,0]<stderr>:    from blueoil.cmd.init import ask_questions, save_config
[1,0]<stderr>:  File "/home/blueoil/blueoil/cmd/init.py", line 21, in <module>
[1,0]<stderr>:    import inquirer
[1,0]<stderr>:  File "/usr/local/pyenv/versions/python3.6/lib/python3.6/site-packages/inquirer/__init__.py", line 6, in <module>
[1,0]<stderr>:    from .prompt import prompt
[1,0]<stderr>:  File "/usr/local/pyenv/versions/python3.6/lib/python3.6/site-packages/inquirer/prompt.py", line 3, in <module>
[1,0]<stderr>:    from .render.console import ConsoleRender
[1,0]<stderr>:  File "/usr/local/pyenv/versions/python3.6/lib/python3.6/site-packages/inquirer/render/__init__.py", line 2, in <module>
[1,0]<stderr>:    from .console import ConsoleRender
[1,0]<stderr>:  File "/usr/local/pyenv/versions/python3.6/lib/python3.6/site-packages/inquirer/render/console/__init__.py", line 9, in <module>
[1,0]<stderr>:    from inquirer import themes
[1,0]<stderr>:  File "/usr/local/pyenv/versions/python3.6/lib/python3.6/site-packages/inquirer/themes.py", line 9, in <module>
[1,0]<stderr>:    term = Terminal()
[1,0]<stderr>:  File "/usr/local/pyenv/versions/python3.6/lib/python3.6/site-packages/blessings/__init__.py", line 98, in __init__
[1,0]<stderr>:    self._init_descriptor)
[1,0]<stderr>:_curses.error: setupterm: could not find terminal

workaround

There's a couple of workarounds that seem to be fine in the short term. So, this is maybe not a high priority issue.

  1. set the TERM environment variable -e TERM=linux
  2. open the docker container in interactive mode, and do horovodrun from inside that.

solution

I'm not sure the best solution. I suppose one way is including the TERM environment variable to the dockerfile, to be used as standard. However, it's strange, when running Blueoil train without the horovodrun, and printing out the environment variables using os.environ, you can see that TERM is not included. So, it seems ultimately not necessary. Somehow the inquirer module gets this error under the horovodrun process, but not under the plain python process.

@joelN123 joelN123 added the bug Something isn't working label Jul 7, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant