Выполнение команды в Linux / Docker Cluster - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь запустить репозиторий из github, а именно this , в докерном кластере, и мне нужно выполнить эту команду:

THEANO_FLAGS=mode=FAST_RUN,device=gpu0,floatX=float32 python -u ...

но я получаю эту ошибку каждый раз:

stdbuf: failed to run command 'THEANO_FLAGS=mode=FAST_RUN,device=gpu0,floatX=float32': No such file or directory

Я относительно новичок в Linux и не могу решить его. Когда я бегу на своем компьютере, у меня не возникает никаких проблем.

У меня есть докер с python 2.7 и theano 0.8, как было предложено

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Это не команда, это настройка среды. Вы можете установить переменные перед выполнением команды.

Т.е.:

var=1 echo "$var"

Команда для запуска - python. Получить докер с python2.

THEANO_FLAGS=mode=FAST_RUN,device=gpu0,floatX=float32 python -u models/three_tier/three_tier.py --exp BEST_3TIER --seq_len 512 --big_frame_size 8 --frame_size 2 --emb_size 256 --skip_conn False --dim 1024 --n_rnn 1 --rnn_type GRU --q_levels 256 --q_type linear --batch_size 128 --weight_norm True --learn_h0 True --which_set MUSIC

Переменные среды устанавливаются и экспортируются оболочкой. Чтобы запустить его как * oneliner с docker, вы должны сначала запустить оболочку и передать ей соответствующую информацию. Кроме того, следует помнить о ВХОДНОЙ ТОЧКЕ образа докера, при необходимости перезаписать его.

docker run some_image sh -c 'THEANO_FLAGS=mode=FAST_RUN,device=gpu0,floatX=float32 python -u models/three_tier/three_tier.py --exp BEST_3TIER --seq_len 512 --big_frame_size 8 --frame_size 2 --emb_size 256 --skip_conn False --dim 1024 --n_rnn 1 --rnn_type GRU --q_levels 256 --q_type linear --batch_size 128 --weight_norm True --learn_h0 True --which_set MUSIC'

Сначала запускается оболочка sh. Затем sh экспортирует переменную THEANO_FLAGS со значением mode=FAST_RUN,device=gpu0,floatX=float32 (вся эта строка является значением переменной). Затем он вызывает команду python (ищется в $PATH) с остальной частью строки в качестве аргументов для программы python.

В качестве альтернативы (и, может быть, чище) вы можете использовать опцию docker s -e или даже добавить ENV в dockerfile:

docker run -e 'THEANO_FLAGS=mode=FAST_RUN,device=gpu0,floatX=float32' some_image python -u models/three_tier/three_tier.py --exp BEST_3TIER --seq_len 512 --big_frame_size 8 --frame_size 2 --emb_size 256 --skip_conn False --dim 1024 --n_rnn 1 --rnn_type GRU --q_levels 256 --q_type linear --batch_size 128 --weight_norm True --learn_h0 True --which_set MUSIC
0 голосов
/ 25 января 2019

Это потому, что это не команда.У тебя есть какой-нибудь документ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...