OpenNMT / CTranslate

Lightweight C++ translator for OpenNMT Torch models (deprecated)
https://opennmt.net/
MIT License
79 stars 50 forks source link

Does this code work for a model trained with recent OpenNMT pytorch version? #33

Open dreamk73 opened 6 years ago

dreamk73 commented 6 years ago

I trained a model with OpenNMT with pytorch 0.4. I would like to load the trained model in c++ and translate an input string with it. Can I do that with this version of CTranslate? When I use torch.save in OpenNMT to save the model, I get a pt file and when I try to load it with a small test script that I was able to compile I just get this error:

undefined object=176816768 $ Error: Assertion `0' failed. at /data/esther/Projects/G2P/lts_experiments/scripts/OpenNMT-CTranslate/src/th/Obj.cc:400

I did notice the example in the Readme file shows a model with a t7 extension, so maybe it is not compatible? Any ideas on how to make them compatible?

Command used to compile: g++ -O3 -std=c++11 -o test_translate test_translate.cc -IOpenNMT-CTranslate/include -IOpenNMT-CTranslate/lib/TH -IOpenNMT/lib/tokenizer/include -I/usr/include/eigen3 -LOpenNMT-CTranslate/build -lonmt

g++ version 4.8.5 CentOS 7

guillaumekln commented 6 years ago

No, unfortunately the implementation was designed to support OpenNMT LuaTorch models only. The CTranslate project predates the release of PyTorch itself which uses a very different model serialization logic.

dreamk73 commented 6 years ago

Ok, that is too bad. I have been trying to find a fairly simple C++ interface to load a model and translate. I have been unable so far to compile the latest caffe2 sources, otherwise I would try to export it to that.