marian-nmt / marian

Fast Neural Machine Translation in C++
https://marian-nmt.github.io
Other
1.22k stars 228 forks source link

Marian command line parsing in 1.9.0 #323

Open SamuelLarkin opened 4 years ago

SamuelLarkin commented 4 years ago

Hi, I've updated from 1.7.0 to 1.9.0 and I now getting an error when trying to translate.

marian-decoder \
  --input=test-dedup/source \
  --devices=0 \
  --num-devices=1 \
  --models=model/model.npz \
  --vocabs vocab.iu.json vocab.en.json \
  --seed=3499 \
  --workspace=2000
Error: Expected at least 1 arguments to --input, got 0
Run with --help for more information.

Then I thought may be I should provide the input through redirection instead.

marian-decoder \
  --devices=0 \
  --num-devices=1 \
  --models=model/model.npz \
  --vocabs vocab.iu.json vocab.en.json \
  --seed=3499 \
  --workspace=2000 \
  < test-dedup/source
Error: Expected at least 1 arguments to --devices, got 0
Run with --help for more information.

My input has some content.

wc test-dedup/source
  3602  91633 638002 test-dedup/source

What else? If I DO NOT use = signs in the command. I can translate.

marian-decoder \
  --input test-dedup/source \
  --devices 0 \
  --num-devices 1 \
  --models model/model.npz \
  --vocabs vocab.iu.json vocab.en.json \
  --seed 3499 \
  --workspace 2000

Thus, are we allowed to use '=' between parameters and their arguments?

If so, when providing --vocabs, should I separate the arguments by a comma?

emjotde commented 4 years ago

Hi, we dropped boost from Marian a while ago and that will cause slight differences in command line parsing. Looks like to you ran into one of the differences.

@snukky Is it correct that '=' doesn't work anymore with the new CLI parser?

SamuelLarkin commented 4 years ago

Hi, not sure if I'm using the minimalist command line but this fails

marian-decoder \
  --input=test-dedup/source \
  --models=model/model.npz \
  --vocabs=vocab.iu.json,vocab.en.json \
  < test-dedup/source
Error: Expected at least 1 arguments to --input, got 0
Run with --help for more information.

But this works

marian-decoder \
  --input test-dedup/source \
  --models model/model.npz \
  --vocabs vocab.iu.json vocab.en.json \
  < test-dedup/source

But putting back = for any parameter, fails

marian-decoder \
  --input=test-dedup/source \
  --models model/model.npz \
  --vocabs vocab.iu.json vocab.en.json \
  < test-dedup/source
Error: Expected at least 1 arguments to --input, got 0
Run with --help for more information.

marian-decoder \
  --input test-dedup/source \
  --models=model/model.npz \
  --vocabs vocab.iu.json vocab.en.json \
  < test-dedup/source
Error: Expected at least 1 arguments to --models, got 0
Run with --help for more information.

marian-decoder \
  --input test-dedup/source \
  --models model/model.npz \
  --vocabs=vocab.iu.json,vocab.en.json \
  < test-dedup/source
Error: Expected at least 1 arguments to --vocabs, got 0
Run with --help for more information.
emjotde commented 4 years ago

OK, that seems to confirm that '=' is gone. In that case this behavior would be expected.

snukky commented 4 years ago

Hm, it seems working for simple options but not for paths and vector options. I'll check what the 3rd party library supports.

emjotde commented 4 years ago

@snukky low priority ping.