Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Having trouble compiling... #1

Open
xtknight opened this issue Jul 26, 2016 · 29 comments
Open

Having trouble compiling... #1

xtknight opened this issue Jul 26, 2016 · 29 comments

Comments

@xtknight
Copy link

xtknight commented Jul 26, 2016

I've been struggling with trying to get this to compile for days. (Well there are so many errors I've gotten it probably wouldn't be useful to list them all.) But it seems like tensorflow_serving uses a different version of tensorflow than syntaxnet, and when it gets to the linking stage I get a bunch of linking errors on tensorflow .so files.

Additionally, the tensorflow that syntaxnet uses seems to widely vary from the one tensorflow_serving uses. For one, protobuf is completely missing.

http://stackoverflow.com/questions/37799563/how-do-i-register-custom-op-actually-from-syntaxnet-with-tensorflow-serving

So the next thing I tried was isolating parsey_api and trying to get it to compile in the tensorflow_examples tree and used the advice above to try to pull in syntaxnet to the serving WORKSPACE. I had some success but I'm stuck with this error:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin \
  /usr/bin/gcc -U_FORTIFY_SOURCE '-D_FORTIFY_SOURCE=1' -fstack-protector -Wall -Wl,-z,-relro,-z,now -B/usr/bin -B/usr/bin -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer -g0 -O2 -DNDEBUG -ffunction-sections -fdata-sections '-std=c++0x' '-frandom-seed=bazel-out/local-opt/bin/tensorflow_serving/servables/tensorflow/_objs/session_bundle_factory/tensorflow_serving/servables/tensorflow/session_bundle_factory.o' -DHAVE_CONFIG_H -iquote . -iquote bazel-out/local-opt/genfiles -iquote external/protobuf -iquote bazel-out/local-opt/genfiles/external/protobuf -iquote external/bazel_tools -iquote bazel-out/local-opt/genfiles/external/bazel_tools -iquote external/org_tensorflow -iquote bazel-out/local-opt/genfiles/external/org_tensorflow -iquote external/farmhash_archive -iquote bazel-out/local-opt/genfiles/external/farmhash_archive -iquote external/jpeg_archive -iquote bazel-out/local-opt/genfiles/external/jpeg_archive -iquote external/png_archive -iquote bazel-out/local-opt/genfiles/external/png_archive -iquote external/gif_archive -iquote bazel-out/local-opt/genfiles/external/gif_archive -iquote external/highwayhash -iquote bazel-out/local-opt/genfiles/external/highwayhash -iquote external/re2 -iquote bazel-out/local-opt/genfiles/external/re2 -iquote external/eigen_archive -iquote bazel-out/local-opt/genfiles/external/eigen_archive -iquote external/zlib_archive -iquote bazel-out/local-opt/genfiles/external/zlib_archive -isystem tensorflow_serving/servables/tensorflow -isystem bazel-out/local-opt/genfiles/tensorflow_serving/servables/tensorflow -isystem external/protobuf/src -isystem bazel-out/local-opt/genfiles/external/protobuf/src -isystem external/bazel_tools/tools/cpp/gcc3 -isystem external/farmhash_archive/farmhash-34c13ddfab0e35422f4c3979f360635a8c050260 -isystem bazel-out/local-opt/genfiles/external/farmhash_archive/farmhash-34c13ddfab0e35422f4c3979f360635a8c050260 -isystem external/jpeg_archive/jpeg-9a -isystem bazel-out/local-opt/genfiles/external/jpeg_archive/jpeg-9a -isystem external/png_archive/libpng-1.2.53 -isystem bazel-out/local-opt/genfiles/external/png_archive/libpng-1.2.53 -isystem external/gif_archive/giflib-5.1.4/lib -isystem bazel-out/local-opt/genfiles/external/gif_archive/giflib-5.1.4/lib -isystem external/highwayhash -isystem bazel-out/local-opt/genfiles/external/highwayhash -isystem external/re2 -isystem bazel-out/local-opt/genfiles/external/re2 -isystem external/eigen_archive -isystem bazel-out/local-opt/genfiles/external/eigen_archive -isystem external/zlib_archive/zlib-1.2.8 -isystem bazel-out/local-opt/genfiles/external/zlib_archive/zlib-1.2.8 -isystem external/org_tensorflow/third_party/gpus/cuda -isystem bazel-out/local-opt/genfiles/external/org_tensorflow/third_party/gpus/cuda -isystem external/org_tensorflow/third_party/gpus/cuda/include -isystem bazel-out/local-opt/genfiles/external/org_tensorflow/third_party/gpus/cuda/include -isystem tensorflow_serving/resources -isystem bazel-out/local-opt/genfiles/tensorflow_serving/resources -fno-canonical-system-headers -Wno-builtin-macro-redefined '-D__DATE__="redacted"' '-D__TIMESTAMP__="redacted"' '-D__TIME__="redacted"' -MD -MF bazel-out/local-opt/bin/tensorflow_serving/servables/tensorflow/_objs/session_bundle_factory/tensorflow_serving/servables/tensorflow/session_bundle_factory.d -c tensorflow_serving/servables/tensorflow/session_bundle_factory.cc -o bazel-out/local-opt/bin/tensorflow_serving/servables/tensorflow/_objs/session_bundle_factory/tensorflow_serving/servables/tensorflow/session_bundle_factory.o)
ERROR: /home/andy/Downloads/syntaxnet/serving/tensorflow_serving/example/BUILD:166:1: undeclared inclusion(s) in rule '//tensorflow_serving/example:parsey_api_proto':
this rule is missing dependency declarations for the following files included by 'tensorflow_serving/example/parsey_api.pb.cc':
  'bazel-out/local-opt/genfiles/tensorflow_serving/example/syntaxnet/sentence.pb.h'.
Target //tensorflow_serving/example:parsey_api failed to build

Do you have instructions on exactly what versions of all the components I need? Or is there any way you can come up with a script that pulls the proper revisions from git? All I want is to have something that just works and it doesn't need to be the latest versions of everything.

I'm not sure if there is an error in your link but I got confused from this step.

Now checkout (in a parallel directory) tensorflow models from my fork (https://github.com/tensorflow/models, master as of today is 2a7f1c36d0e390ed289e0eeec14e1b46d11f0511).

It would be nice to have an overview tree diagram of a working configuration from all directory roots and working revisions of each submodule specifically. Because there's nested tensorflow and syntaxnet folders everywhere I'm getting dyslexic..

Thanks for your hard work!

@dmansfield
Copy link
Owner

Yes. I'll try to make a build script for it. The un-matched versions of tensorflow included by syntaxnet, serving etc. make it very difficult to use this code. Plus the fact that each time you build it takes 40 minutes. Let me see what I can cook up.

@xtknight
Copy link
Author

Thanks grateful for any help you can provide

@dmansfield
Copy link
Owner

@xtknight Ok. I've pushed some changes to the README.md with my exact build steps. I followed these steps in a clean checkout and everything worked for me. Can you see if it works for you?

@xtknight
Copy link
Author

xtknight commented Jul 27, 2016

I followed your instructions but somewhere after compile starts I get an error about gif lib.

andy@andy ~/Downloads/syntaxnet/try4/parsey-mcparseface-api $ bazel build --nocheck_visibility -c opt parsey_api/...
WARNING: /home/andy/.cache/bazel/_bazel_andy/b673a716417b7b66038c009dd6fdee44/external/protobuf/WORKSPACE:1: Workspace name in /home/andy/.cache/bazel/_bazel_andy/b673a716417b7b66038c009dd6fdee44/external/protobuf/WORKSPACE (@__main__) does not match the name given in the repository's definition (@protobuf); this will cause a build error in future versions.
WARNING: /home/andy/.cache/bazel/_bazel_andy/b673a716417b7b66038c009dd6fdee44/external/syntaxnet/WORKSPACE:1: Workspace name in /home/andy/.cache/bazel/_bazel_andy/b673a716417b7b66038c009dd6fdee44/external/syntaxnet/WORKSPACE (@__main__) does not match the name given in the repository's definition (@syntaxnet); this will cause a build error in future versions.
WARNING: /home/andy/Downloads/syntaxnet/try4/parsey-mcparseface-api/parsey_api/BUILD:3:1: in cc_library rule //parsey_api:parsey_api_proto: Target '//parsey_api:parsey_api_proto' violates visibility of target '@syntaxnet//syntaxnet:sentence_proto'. Continuing because --nocheck_visibility is active.
WARNING: /home/andy/.cache/bazel/_bazel_andy/b673a716417b7b66038c009dd6fdee44/external/boringssl_git/WORKSPACE:1: Workspace name in /home/andy/.cache/bazel/_bazel_andy/b673a716417b7b66038c009dd6fdee44/external/boringssl_git/WORKSPACE (@boringssl) does not match the name given in the repository's definition (@boringssl_git); this will cause a build error in future versions.
WARNING: /home/andy/.cache/bazel/_bazel_andy/b673a716417b7b66038c009dd6fdee44/external/highwayhash/WORKSPACE:1: Workspace name in /home/andy/.cache/bazel/_bazel_andy/b673a716417b7b66038c009dd6fdee44/external/highwayhash/WORKSPACE (@__main__) does not match the name given in the repository's definition (@highwayhash); this will cause a build error in future versions.
WARNING: /home/andy/.cache/bazel/_bazel_andy/b673a716417b7b66038c009dd6fdee44/external/re2/WORKSPACE:1: Workspace name in /home/andy/.cache/bazel/_bazel_andy/b673a716417b7b66038c009dd6fdee44/external/re2/WORKSPACE (@__main__) does not match the name given in the repository's definition (@re2); this will cause a build error in future versions.
WARNING: /home/andy/Downloads/syntaxnet/try4/parsey-mcparseface-api/parsey_api/BUILD:14:1: in cc_binary rule //parsey_api:parsey_api: Target '//parsey_api:parsey_api' violates visibility of target '@syntaxnet//syntaxnet:sentence_proto'. Continuing because --nocheck_visibility is active.
INFO: Found 4 targets...
INFO: From Compiling external/zlib_archive/zlib-1.2.8/gzwrite.c:
external/zlib_archive/zlib-1.2.8/gzwrite.c: In function 'gz_comp':
external/zlib_archive/zlib-1.2.8/gzwrite.c:84:9: warning: implicit declaration of function 'write' [-Wimplicit-function-declaration]
         got = write(state->fd, strm->next_in, strm->avail_in);
         ^
external/zlib_archive/zlib-1.2.8/gzwrite.c: In function 'gzclose_w':
external/zlib_archive/zlib-1.2.8/gzwrite.c:573:5: warning: implicit declaration of function 'close' [-Wimplicit-function-declaration]
     if (close(state->fd) == -1)
     ^
INFO: From Compiling external/zlib_archive/zlib-1.2.8/gzlib.c:
external/zlib_archive/zlib-1.2.8/gzlib.c: In function 'gz_open':
external/zlib_archive/zlib-1.2.8/gzlib.c:256:9: warning: implicit declaration of function 'lseek' [-Wimplicit-function-declaration]
         state->start = LSEEK(state->fd, 0, SEEK_CUR);
         ^
INFO: From Compiling external/zlib_archive/zlib-1.2.8/gzread.c:
external/zlib_archive/zlib-1.2.8/gzread.c: In function 'gz_load':
external/zlib_archive/zlib-1.2.8/gzread.c:30:9: warning: implicit declaration of function 'read' [-Wimplicit-function-declaration]
         ret = read(state->fd, buf + *have, len - *have);
         ^
external/zlib_archive/zlib-1.2.8/gzread.c: In function 'gzclose_r':
external/zlib_archive/zlib-1.2.8/gzread.c:591:5: warning: implicit declaration of function 'close' [-Wimplicit-function-declaration]
     ret = close(state->fd);
     ^
ERROR: /home/andy/.cache/bazel/_bazel_andy/b673a716417b7b66038c009dd6fdee44/external/gif_archive/BUILD:14:1: C++ compilation of rule '@gif_archive//:gif' failed: namespace-sandbox failed: error executing command /home/andy/.cache/bazel/_bazel_andy/b673a716417b7b66038c009dd6fdee44/execroot/parsey-mcparseface-api/_bin/namespace-sandbox ... (remaining 45 argument(s) skipped).
external/gif_archive/giflib-5.1.4/lib/gif_err.c:10:29: fatal error: gif_lib_private.h: No such file or directory
 #include "gif_lib_private.h"
                             ^
compilation terminated.
INFO: Elapsed time: 16.892s, Critical Path: 13.52s

What I never understand is that when I get these header errors the header is always in the build tree somewhere...it seems to be a persistent issue I've had.
/home/andy/.cache/bazel/_bazel_andy/b673a716417b7b66038c009dd6fdee44/external/gif_archive/giflib-5.1.4/lib/gif_lib_private.h

@xtknight
Copy link
Author

xtknight commented Jul 27, 2016

I think something is fundamentally buggy in the build system. If I use this command, it compiles fine. I also had a problem where bazel reported git said "connection timed out" when it clearly didn't even attempt a connection. So changing the git repo name back and forth got it to clear some sort of cache and start working again. I hope this comment helps someone else having seemingly nonsensical issues with the build.

bazel build --nocheck_visibility -s -c opt parsey_api/... --genrule_strategy=standalone --spawn_strategy=standalone --verbose_failures

I'm using bazel 0.3.0 installed from a deb file on Linux Mint.

andy@andy ~/Downloads/syntaxnet/try4/parsey-mcparseface-api $ lsb_release -a
LSB Version:    core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:core-4.0-amd64:core-4.0-noarch:core-4.1-amd64:core-4.1-noarch:security-4.0-amd64:security-4.0-noarch:security-4.1-amd64:security-4.1-noarch
Distributor ID: LinuxMint
Description:    Linux Mint 17.3 Rosa
Release:    17.3
Codename:   rosa
andy@andy ~/Downloads/syntaxnet/try4/parsey-mcparseface-api $ dpkg -s bazel
Package: bazel
Status: install ok installed
Priority: optional
Section: contrib/devel
Maintainer: The Bazel Authors <bazel-dev@googlegroups.com>
Architecture: amd64
Version: 0.3.0
Depends: java8-jdk | java8-sdk, pkg-config, zip, g++, zlib1g-dev, unzip, bash-completion
Description: Bazel is a tool that automates software builds and tests.
 Supported build tasks include running compilers and linkers to produce
 executable programs and libraries, and assembling deployable packages
 for Android, iOS and other target environments. Bazel is similar to
 other tools like Make, Ant, Gradle, Buck, Pants and Maven.
Homepage: http://bazel.io
Built-Using: bazel (HEAD)

Anyway, I appreciate your new guide. It clearly works if we can get past the bazel bugs or environmental issues or whatever we'd like to call them :).. I also found out a way of compiling from within tensorflow_serving and was able to update your patch to the new Tensorflow. It's quite easy and it seemed to work fine without downloading all the external dependencies. Just doing a recurse-submodule pull on serving and adding syntaxnet.bzl in WORKSPACE file within that tree seemed to be fine. I'll post a detailed guide on that, but I also ran into bugs when I did that method too.

@dmansfield
Copy link
Owner

Oh, interesting. I have this in my ~/.bazelrc, which is based on the fact that I usually build inside docker where sandboxing is broken:

build --spawn_strategy=standalone --genrule_strategy=standalone --jobs=4 --ignore_unsupported_sandboxing --local_resources 4096,2,.75

I wonder how the "standalone" stuff matters. ..

But are you saying that the server is now compiled and working?

@xtknight
Copy link
Author

Using 'standalone' I was able to get the parsey_api from my own methods working yesterday and it worked with the client and server. I tried with both an older and newer version of TensorFlow (updated my last comment). But I haven't tried the parsey_api from your new README method yet. I'm going to report on that...it seems to at least run.

@dmansfield
Copy link
Owner

That's good news. Thanks.

@xtknight
Copy link
Author

As a matter of fact, everything appears to work fine with your instructions!

andy@andy ~/Downloads/syntaxnet/parsey-mcparseface-api/parsey_client $ node ./index.js
I0727 15:12:09.685830053 15488 ev_epoll_linux.c:84] epoll engine will be using signal: 36
D0727 15:12:09.685894279 15488 ev_posix.c:106] Using polling engine: epoll
{
"result": [
{
"docid": "-:0",
"text": "This is the first sentence",
"token": [
{
"word": "This",
"start": 0,
"end": 3,
"head": 4,
...........

@xtknight
Copy link
Author

xtknight commented Jul 27, 2016

This was my method for getting things working. It involves just using syntaxnet within the tensorflow_serving rather than externally, and then changing the patch a little bit.

It may be useful as an alternative method, so I'll just leave that here.

Alternative method using tensorflow_serving's tensorflow, syntaxnet, models submodules.

Let's call our current directory BASE.

$ git clone https://github.com/dmansfield/parsey-mcparseface-api

$ git clone --recurse-submodules https://github.com/tensorflow/serving

https://github.com/tensorflow/serving
Cloning into 'serving'...
remote: Counting objects: 2071, done.
remote: Compressing objects: 100% (67/67), done.
remote: Total 2071 (delta 33), reused 0 (delta 0), pack-reused 2004
Receiving objects: 100% (2071/2071), 1.27 MiB | 1.15 MiB/s, done.
Resolving deltas: 100% (1411/1411), done.
Checking connectivity... done.
Submodule 'tensorflow' (https://github.com/tensorflow/tensorflow.git) registered for path 'tensorflow'
Submodule 'tf_models' (https://github.com/tensorflow/models.git) registered for path 'tf_models'
Cloning into 'tensorflow'...
remote: Counting objects: 69320, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 69320 (delta 0), reused 0 (delta 0), pack-reused 69316
Receiving objects: 100% (69320/69320), 48.37 MiB | 933.00 KiB/s, done.
Resolving deltas: 100% (51308/51308), done.
Checking connectivity... done.
Submodule path 'tensorflow': checked out 'c5983f87f0402f2cb8c627807917ebdf8e4d4bb6'
Cloning into 'tf_models'...
remote: Counting objects: 748, done.
remote: Total 748 (delta 0), reused 0 (delta 0), pack-reused 748
Receiving objects: 100% (748/748), 39.58 MiB | 546.00 KiB/s, done.
Resolving deltas: 100% (358/358), done.
Checking connectivity... done.
Submodule path 'tf_models': checked out 'a4b7bb9a5dd2c021edcd3d68d326255c734d0ef0'
Submodule 'tensorflow' (https://github.com/tensorflow/tensorflow.git) registered for path 'syntaxnet/tensorflow'
Cloning into 'syntaxnet/tensorflow'...
remote: Counting objects: 69346, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 69346 (delta 0), reused 0 (delta 0), pack-reused 69341
Receiving objects: 100% (69346/69346), 48.38 MiB | 1.13 MiB/s, done.
Resolving deltas: 100% (51332/51332), done.
Checking connectivity... done.
Submodule path 'tf_models/syntaxnet/tensorflow': checked out '861644c0bcae5d56f7b3f439696eefa6df8580ec'

( make sure to follow installation instructions and install prerequisites like gRPC from here: )
https://tensorflow.github.io/serving/setup

( now we need to apply an updated version of dmansfield's patch. I have made an updated patch based on github PR 250 to work with tf_models submodule HEAD a4b7bb9a5dd2c021edcd3d68d326255c734d0ef0. it should apply CLEANLY to this revision. if your tf_models is not this revision, check out that revision. )

The updated patch you need is here: pr250-patch-a4b7bb9a.diff.txt

The old patch is here: https://patch-diff.githubusercontent.com/raw/tensorflow/models/pull/250.diff

$ cd serving/tf_models
$ patch -p1 < ~/Downloads/pr250-patch-a4b7bb9a.diff.txt

patching file syntaxnet/syntaxnet/beam_reader_ops.cc
patching file syntaxnet/syntaxnet/BUILD
patching file syntaxnet/syntaxnet/conll2tree.py
patching file syntaxnet/syntaxnet/document_filters.cc
patching file syntaxnet/syntaxnet/lexicon_builder_test.py
patching file syntaxnet/syntaxnet/ops/parser_ops.cc
patching file syntaxnet/syntaxnet/parsey_mcparseface.py
patching file syntaxnet/syntaxnet/proto_io.h
patching file syntaxnet/syntaxnet/sentence_batch.cc
patching file syntaxnet/syntaxnet/sentence_batch.h
patching file syntaxnet/syntaxnet/structured_graph_builder.py
patching file syntaxnet/syntaxnet/text_formats_test.py

(now configure tensorflow)

$ cd ../tensorflow
$ ./configure

Please specify the location of python. [Default is /usr/bin/python]: 
Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] 
No Google Cloud Platform support will be enabled for TensorFlow
Do you wish to build TensorFlow with GPU support? [y/N] y
GPU support will be enabled for TensorFlow
Please specify which gcc nvcc should use as the host compiler. [Default is /usr/bin/gcc]: 
Please specify the Cuda SDK version you want to use, e.g. 7.0. [Leave empty to use system default]: 
Please specify the location where CUDA  toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: 
Please specify the Cudnn version you want to use. [Leave empty to use system default]: 
Please specify the location where cuDNN  library is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: 
Please specify a list of comma-separated Cuda compute capabilities you want to build with.
You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus.
Please note that each additional compute capability significantly increases your build time and binary size.
[Default is: "3.5,5.2"]: 3.0,2.1

$ cd ..

(Add syntaxnet local repo, already included in git of tensorflow serving)

$ nano tensorflow_serving/workspace.bzl
(we are adding this to the existing workspace.bzl file..just below the other local_repository definitions. do NOT call the repo name 'syntaxnet'... just name something else like org_syntaxnet. it prevents Python modules from loading later due to nested path runfiles/syntaxnet/syntaxnet...)

  native.local_repository(
    name = "org_syntaxnet",
    path = workspace_dir + "/tf_models/syntaxnet",
  )

(Append build instructions for parsey-api too BUILD file)

$ nano tensorflow_serving/example/BUILD

serving_proto_library(
    name = "parsey_api_proto",
    srcs = ["parsey_api.proto"],
    deps = [
    "@org_syntaxnet//syntaxnet:sentence_proto",
    ],
    has_services = 1,
    cc_api_version = 2,
    cc_grpc_version = 1,
)

cc_binary(
    name = "parsey_api",
    srcs = [
        "parsey_api.cc",
    ],
    linkopts = ["-lm"],
    deps = [
        "@grpc//:grpc++",
        "@org_tensorflow//tensorflow/core:core_cpu",
        "@org_tensorflow//tensorflow/core:framework",
        "@org_tensorflow//tensorflow/core:lib",
        "@org_tensorflow//tensorflow/core:protos_all_cc",
        "@org_tensorflow//tensorflow/core:tensorflow",
        "@org_syntaxnet//syntaxnet:parser_ops_cc",
    "@org_syntaxnet//syntaxnet:sentence_proto",
        ":parsey_api_proto",
        "//tensorflow_serving/servables/tensorflow:session_bundle_config_proto",
        "//tensorflow_serving/servables/tensorflow:session_bundle_factory",
        "//tensorflow_serving/session_bundle",
        "//tensorflow_serving/session_bundle:manifest_proto",
        "//tensorflow_serving/session_bundle:signature",
    ],
)

py_binary(
    name = "parsey_mcparseface",
    srcs = ["parsey_mcparseface.py"],
    deps = [
        "@org_syntaxnet//syntaxnet:load_parser_ops_py",
        "@org_syntaxnet//syntaxnet:parser_ops",
        "@org_syntaxnet//syntaxnet:graph_builder",
        "@org_syntaxnet//syntaxnet:sentence_py_pb2",
        "@org_syntaxnet//syntaxnet:structured_graph_builder",
    "@org_syntaxnet//syntaxnet:parser_eval",
        "@org_tensorflow//tensorflow:tensorflow_py",
        "@org_tensorflow//tensorflow/contrib/session_bundle:exporter",
    ],
)

(Copy files from parsey-mcparseface api)

$ cp ../parsey-mcparseface-api/parsey_api/parsey_api.* ./tensorflow_serving/example/

parsey_mcparseface.py (for exporting SyntaxNet model) is available here:
https://github.com/dmansfield/models/blob/documents-from-tensor/syntaxnet/syntaxnet/parsey_mcparseface.py

$ cp ~/Downloads/parsey_mcparseface.py ./tensorflow_serving/example/

$ nano tensorflow_serving/example/parsey_mcparseface.py

Fix the module path to contrib...

-from tensorflow_serving.session_bundle import exporter
+from tensorflow.contrib.session_bundle import exporter

$ nano tensorflow_serving/example/parsey_api.cc

(change the paths of these include files (these are dynamically generatd H files that end up in the same directory as parsey_api.cc))

-#include "parsey_api/parsey_api.grpc.pb.h"
-#include "parsey_api/parsey_api.pb.h"
+#include "tensorflow_serving/example/parsey_api.grpc.pb.h"
+#include "tensorflow_serving/example/parsey_api.pb.h"

Next, ...

  • The nocheck_visibility and standalone parameters are very important, or else the build might fail.

$ bazel --output_user_root=bazel_root build --nocheck_visibility -c opt -s //tensorflow_serving/example:parsey_api --genrule_strategy=standalone --spawn_strategy=standalone --verbose_failures

  /usr/bin/gcc -o bazel-out/local-opt/bin/tensorflow_serving/example/parsey_api -pthread -Wl,-no-as-needed -B/usr/bin -B/usr/bin -pass-exit-codes '-Wl,--build-id=md5' '-Wl,--hash-style=gnu' -Wl,-rpath,/home/andy/Downloads/syntaxnet/try2/serving/bazel_root/08b79c088bc3c400910aff96dad5851f/external/local_config_cc -L/home/andy/Downloads/syntaxnet/try2/serving/bazel_root/08b79c088bc3c400910aff96dad5851f/external/local_config_cc -Wl,-rpath,/usr/local/cuda/lib64 -L/usr/local/cuda/lib64 -Wl,--gc-sections -Wl,@bazel-out/local-opt/bin/tensorflow_serving/example/parsey_api-2.params)
Target //tensorflow_serving/example:parsey_api up-to-date:
  bazel-bin/tensorflow_serving/example/parsey_api
INFO: Elapsed time: 28.556s, Critical Path: 27.81s (your times will be longer..I had already partially compiled at this point)

(Also compile the parsey_mcparseface.py)

$ bazel --output_user_root=bazel_root build --nocheck_visibility -c opt -s //tensorflow_serving/example:parsey_mcparseface --genrule_strategy=standalone --spawn_strategy=standalone --verbose_failures

INFO: Found 1 target...
Target //tensorflow_serving/example:parsey_mcparseface up-to-date:
  bazel-bin/tensorflow_serving/example/parsey_mcparseface
INFO: Elapsed time: 0.311s, Critical Path: 0.01s
  • If you get weird git connection timed out errors, go in the WORKSPACE file, rename the git repo to something weird, run the bazel command again, let it fail with unknown repository, and then go back and change to original name and run the bazel build command again. It clears some sort of cache.

Try to run the binary.

$ bazel-bin/tensorflow_serving/example/parsey_api

F tensorflow_serving/example/parsey_api.cc:149] Usage: parsey_api --port=9000 /path/to/export
Aborted

That's fine. Now let's make it work.

Make sure the following directory tree exists.

BASE/serving $ ln -s ./tf_models/syntaxnet/syntaxnet .

syntaxnet/models/
syntaxnet/models/parsey_mcparseface
syntaxnet/models/parsey_mcparseface/parser-params
syntaxnet/models/parsey_mcparseface/prefix-table
syntaxnet/models/parsey_mcparseface/tag-map
syntaxnet/models/parsey_mcparseface/tagger-params
syntaxnet/models/parsey_mcparseface/context.pbtxt
syntaxnet/models/parsey_mcparseface/fine-to-universal.map
syntaxnet/models/parsey_mcparseface/suffix-table
syntaxnet/models/parsey_mcparseface/label-map
syntaxnet/models/parsey_mcparseface/word-map

Now try the server..

$ ./bazel-bin/tensorflow_serving/example/parsey_api --port=9000 /home/andy/Downloads/syntaxnet/parsey-mcparseface-api/parsey_model

I external/org_tensorflow/tensorflow/contrib/session_bundle/session_bundle.cc:129] Attempting to load a SessionBundle from: /home/andy/Downloads/syntaxnet/parsey-mcparseface-api/parsey_model
I external/org_tensorflow/tensorflow/contrib/session_bundle/session_bundle.cc:106] Running restore op for SessionBundle
I external/org_tensorflow/tensorflow/contrib/session_bundle/session_bundle.cc:203] Done loading SessionBundle
I tensorflow_serving/example/parsey_api.cc:134] Running...

Leave that running and run the nodejs parsey_client in another terminal.

( go to parsey_client folder )

$ cd BASE/parsey-mcparseface-api/parsey_client

Make sure to edit the IP and port in index.js to match the port used for the server (127.0.0.1:9000) and install grpc module for nodejs. I had to actually put the grpc folder in my parsey_client directory. I couldn't figure out how else to get things working.

When you run node ./index.js on client, the server should print the following:

...
I tensorflow_serving/example/parsey_api.cc:93] received text:0:This is the first sentence
I tensorflow_serving/example/parsey_api.cc:93] received text:1:I love this sentence
I tensorflow_serving/example/parsey_api.cc:97] input to tensor: Placeholder:0
I external/syntaxnet/syntaxnet/term_frequency_map.cc:101] Loaded 49 terms from syntaxnet/models/parsey_mcparseface/tag-map.
I external/syntaxnet/syntaxnet/term_frequency_map.cc:101] Loaded 46 terms from syntaxnet/models/parsey_mcparseface/label-map.
I external/syntaxnet/syntaxnet/embedding_feature_extractor.cc:35] Features: input.digit input.hyphen; input.prefix(length="2") input(1).prefix(length="2") input(2).prefix(length="2") input(3).prefix(length="2") input(-1).prefix(length="2") input(-2).prefix(length="2") input(-3).prefix(length="2") input(-4).prefix(length="2"); input.prefix(length="3") input(1).prefix(length="3") input(2).prefix(length="3") input(3).prefix(length="3") input(-1).prefix(length="3") input(-2).prefix(length="3") input(-3).prefix(length="3") input(-4).prefix(length="3"); input.suffix(length="2") input(1).suffix(length="2") input(2).suffix(length="2") input(3).suffix(length="2") input(-1).suffix(length="2") input(-2).suffix(length="2") input(-3).suffix(length="2") input(-4).suffix(length="2"); input.suffix(length="3") input(1).suffix(length="3") input(2).suffix(length="3") input(3).suffix(length="3") input(-1).suffix(length="3") input(-2).suffix(length="3") input(-3).suffix(length="3") input(-4).suffix(length="3"); input.token.word input(1).token.word input(2).token.word input(3).token.word input(-1).token.word input(-2).token.word input(-3).token.word input(-4).token.word 
I external/syntaxnet/syntaxnet/embedding_feature_extractor.cc:36] Embedding names: other;prefix2;prefix3;suffix2;suffix3;words
I external/syntaxnet/syntaxnet/embedding_feature_extractor.cc:37] Embedding dims: 8;16;16;16;16;64
I external/syntaxnet/syntaxnet/term_frequency_map.cc:101] Loaded 64036 terms from syntaxnet/models/parsey_mcparseface/word-map.
I external/syntaxnet/syntaxnet/embedding_feature_extractor.cc:35] Features: stack.child(1).label stack.child(1).sibling(-1).label stack.child(-1).label stack.child(-1).sibling(1).label stack.child(2).label stack.child(-2).label stack(1).child(1).label stack(1).child(1).sibling(-1).label stack(1).child(-1).label stack(1).child(-1).sibling(1).label stack(1).child(2).label stack(1).child(-2).label; input.token.tag input(1).token.tag input(2).token.tag input(3).token.tag stack.token.tag stack.child(1).token.tag stack.child(1).sibling(-1).token.tag stack.child(-1).token.tag stack.child(-1).sibling(1).token.tag stack.child(2).token.tag stack.child(-2).token.tag stack(1).token.tag stack(1).child(1).token.tag stack(1).child(1).sibling(-1).token.tag stack(1).child(-1).token.tag stack(1).child(-1).sibling(1).token.tag stack(1).child(2).token.tag stack(1).child(-2).token.tag stack(2).token.tag stack(3).token.tag; input.token.word input(1).token.word input(2).token.word input(3).token.word stack.token.word stack.child(1).token.word stack.child(1).sibling(-1).token.word stack.child(-1).token.word stack.child(-1).sibling(1).token.word stack.child(2).token.word stack.child(-2).token.word stack(1).token.word stack(1).child(1).token.word stack(1).child(1).sibling(-1).token.word stack(1).child(-1).token.word stack(1).child(-1).sibling(1).token.word stack(1).child(2).token.word stack(1).child(-2).token.word stack(2).token.word stack(3).token.word 
I external/syntaxnet/syntaxnet/embedding_feature_extractor.cc:36] Embedding names: labels;tags;words
I external/syntaxnet/syntaxnet/embedding_feature_extractor.cc:37] Embedding dims: 32;32;64
I external/syntaxnet/syntaxnet/document_filters.cc:108] text: This is the first sentence
I external/syntaxnet/syntaxnet/document_filters.cc:108] text: I love this sentence
I external/syntaxnet/syntaxnet/proto_io.h:183] VectorIn::getline index=0 value=This is the first sentence
I external/syntaxnet/syntaxnet/proto_io.h:160] VectorIn: This is the first sentence
I external/syntaxnet/syntaxnet/proto_io.h:183] VectorIn::getline index=1 value=I love this sentence
I external/syntaxnet/syntaxnet/proto_io.h:160] VectorIn: I love this sentence
I external/syntaxnet/syntaxnet/proto_io.h:160] VectorIn: 
I tensorflow_serving/example/parsey_api.cc:106] ran session once OK 1 output tensors available
I tensorflow_serving/example/parsey_api.cc:108] documents size: 2
I tensorflow_serving/example/parsey_api.cc:113] document 0: docid: "-:0"

@dsindex
Copy link

dsindex commented Jul 28, 2016

@xtknight

in my case

  • modify tensorflow_serving/example/BUILD
serving_proto_library(
    name = "parsey_api_proto",
    srcs = ["parsey_api.proto"],
    deps = [
    "@syntaxnet//syntaxnet:sentence_proto",
    ],
    has_services = 1,
    cc_api_version = 2,
    cc_grpc_version = 1,
)

cc_binary(
    name = "parsey_api",
    srcs = [
        "parsey_api.cc",
    ],
    linkopts = ["-lm"],
    deps = [
        "@grpc//:grpc++",
        "@org_tensorflow//tensorflow/core:core_cpu",
        "@org_tensorflow//tensorflow/core:framework",
        "@org_tensorflow//tensorflow/core:lib",
        "@org_tensorflow//tensorflow/core:protos_all_cc",
        "@org_tensorflow//tensorflow/core:tensorflow",
        "@syntaxnet//syntaxnet:parser_ops_cc",
        "@syntaxnet//syntaxnet:sentence_proto",
        ":parsey_api_proto",
        "//tensorflow_serving/servables/tensorflow:session_bundle_config_proto",
        "//tensorflow_serving/servables/tensorflow:session_bundle_factory",
        "@org_tensorflow//tensorflow/contrib/session_bundle",
        "@org_tensorflow//tensorflow/contrib/session_bundle:manifest_proto_cc",
        "@org_tensorflow//tensorflow/contrib/session_bundle:signature",
    ],
)
  • modify parsey_api.cc
- #include "tensorflow_serving/session_bundle/manifest.pb.h"
- #include "tensorflow_serving/session_bundle/session_bundle.h"
- #include "tensorflow_serving/session_bundle/signature.h"
+ #include "tensorflow/contrib/session_bundle/manifest.pb.h"
+ #include "tensorflow/contrib/session_bundle/session_bundle.h"
+ #include "tensorflow/contrib/session_bundle/signature.h"
  • trouble on npm install, node index.js
- install node from source https://nodejs.org/en/download/
- install grpc for node https://github.com/grpc/grpc/tree/master/src/node

$ npm install
...
grpc@0.14.1 node_modules/grpc
├── arguejs@0.2.3
├── nan@2.4.0
├── lodash@3.10.1
└── protobufjs@4.1.3 (glob@5.0.15, yargs@3.32.0, bytebuffer@4.1.0, ascli@1.0.0)

$ /usr/local/bin/node index.js
module.js:434
  return process.dlopen(module, path._makeLong(filename));
                 ^
Error: Module did not self-register.
    at Error (native)
    at Object.Module._extensions..node (module.js:434:18)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/path/to/parsey-mcparseface-api/parsey_client/node_modules/grpc/src/node/src/grpc_extension.js:38:15)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)

but failed....

so i reinstall grpc : 
$ node --version
v4.4.7
$ npm --version
2.15.8
$ npm install grpc
$ npm install
  • copy sentence.proto
$ cp -rf tf_models/syntaxnet/syntaxnet/sentence.proto ../parsey-mcparseface-api/parsey_client/api/syntaxnet/

# sentence.proto uses syntax 'proto2' and parsey_api.proto uses syntax 'proto3'
# i thought this may cause problem. but it works fine.
  • finally i got the parsing result
16:26 $ node index.js | more
{
  "result": [
    {
      "docid": "-:0",
      "text": "This is the first sentence",
      "token": [
        {
          "word": "This",
          "start": 0,
          "end": 3,
          "head": 4,
          "tag": "DT",
          "category": "DET",
          "label": "nsubj",
          "break_level": "SPACE_BREAK"
        },
        {
          "word": "is",
          "start": 4,
          "end": 5,
          "head": 4,
          "tag": "VBZ",
          "category": "VERB",
          "label": "cop",
          "break_level": "SPACE_BREAK"
        },
...

@xtknight
Copy link
Author

@dsindex Yes I had some of those issues before.
Strange...I ran across the session_bundle problem yesterday but not during compiling this code.
I also wrestled with npm/nodejs until it worked. I ended up copying the "grpc" folder into the same folder as index.js, and I know it's not the right solution. But I think it's the least of my concerns. My goal is to develop parsey api further to handle multiple requests and to be easily compile-able.

The good news is, I got parsey_mcparseface.py to compile with bazel properly. The trick is to use bazel repository syntaxnet but do NOT name the repository syntaxnet, name it something else like 'org_syntaxnet'. (like my previous guide, but change repo name in workspace.bzl and BUILD files.) Otherwise the pythonpath doesn't work. (Python import module gets confused about path xxx.runfiles/syntaxnet/syntaxnet, it must be xxx.runfiles/something_else/syntaxnet). I will post another small guide about it and then maybe @dmansfield can also put in the README in lieu of the forcing PYTHONPATH method. I updated my guide above, but this is the gist...

tensorflow_serving/workspace.bzl

native.local_repository(
  name = "org_syntaxnet",
  path = workspace_dir + "/tf_models/syntaxnet",
)

Add to tensorflow_serving/example/BUILD (I don't know if each dep is required, but at least this works)

py_binary(
    name = "parsey_mcparseface",
    srcs = ["parsey_mcparseface.py"],
    deps = [
        "@org_syntaxnet//syntaxnet:load_parser_ops_py",
        "@org_syntaxnet//syntaxnet:parser_ops",
        "@org_syntaxnet//syntaxnet:graph_builder",
        "@org_syntaxnet//syntaxnet:sentence_py_pb2",
        "@org_syntaxnet//syntaxnet:structured_graph_builder",
        "@org_syntaxnet//syntaxnet:parser_eval",
        "@org_tensorflow//tensorflow:tensorflow_py",
        "@org_tensorflow//tensorflow/contrib/session_bundle:exporter",
    ],
)

@xtknight
Copy link
Author

For fixing the concurrent requests problem it seems like just adding this code in parsey_api.cc makes it work fine. Flooded it like crazy and there was no problem after adding this. But I don't know the precise limits. May require further investigation.

  tensorflow::port::InitMain(argv[0], &argc, &argv);
  SessionBundleConfig session_bundle_config;

.... add:

  //////
  // Request batching, keeping default values for the tuning parameters.
  //
  // (If you prefer to disable batching, simply omit the following lines of code
  // such that session_bundle_config.batching_parameters remains unset.)
  BatchingParameters* batching_parameters =
      session_bundle_config.mutable_batching_parameters();
  batching_parameters->mutable_thread_pool_name()->set_value(
      "mnist_service_batch_threads");
  // Use a very large queue, to avoid rejecting requests. (Note: a production
  // server with load balancing may want to use the default, much smaller,
  // value.)
  batching_parameters->mutable_max_enqueued_batches()->set_value(1000);
  //////

....

  std::unique_ptr<SessionBundleFactory> bundle_factory;

@mastasky
Copy link

mastasky commented Jul 29, 2016

Hi all,

after fiddling around with all of this for a while, I go the server running, but whenever the client makes a request to it, it will shut down with this error... Any ideas:

phil@LinuxServer1:~/parsey/api/serving/bazel-bin$  ./tensorflow_serving/example/parsey_api --port=8000 /home/phil/parsey/api/parsey-mcparseface-api/parsey_model
I external/org_tensorflow/tensorflow/contrib/session_bundle/session_bundle.cc:129] Attempting to load a SessionBundle from: /home/phil/parsey/api/parsey-mcparseface-api/parsey_model
I external/org_tensorflow/tensorflow/contrib/session_bundle/session_bundle.cc:106] Running restore op for SessionBundle
I external/org_tensorflow/tensorflow/contrib/session_bundle/session_bundle.cc:203] Done loading SessionBundle
I tensorflow_serving/example/parsey_api.cc:134] Running...
I tensorflow_serving/example/parsey_api.cc:93] received text:0:This is the first sentence
I tensorflow_serving/example/parsey_api.cc:97] input to tensor: Placeholder:0
W external/org_tensorflow/tensorflow/core/framework/op_kernel.cc:926] Not found: syntaxnet/models/parsey_mcparseface/context.pbtxt
E external/org_tensorflow/tensorflow/core/framework/op_segment.cc:53] Create kernel failed: Not found: syntaxnet/models/parsey_mcparseface/context.pbtxt

@mastasky
Copy link

mastasky commented Aug 1, 2016

Help, anyone?

@dsindex
Copy link

dsindex commented Aug 1, 2016

@mastasky
hm~ i could not figure out what the problem is.
but what about following my summary ?

https://github.com/dsindex/syntaxnet/blob/master/README_api.md

@mastasky
Copy link

mastasky commented Aug 1, 2016

@dsindex: Thanks! You're referencing some files I don't have:

api/modified_workspace.bzl
api/append_BUILD

where would I find them?

@dsindex
Copy link

dsindex commented Aug 1, 2016

@mastasky
Copy link

mastasky commented Aug 1, 2016

@dsindex Thanks. Now I get this when executing bazel from the serving directory.
no such package '@tf_serving//tensorflow_serving': error loading package 'external': The repository named 'tf_serving' could not be resolved.

@dsindex
Copy link

dsindex commented Aug 1, 2016

@mastasky

i modified instructions

# you can create a shell script with content below!

$ git clone https://github.com/dsindex/syntaxnet.git work
$ cd work
$ git clone --recurse-submodules https://github.com/tensorflow/serving

# you need to install gRPC properly
# https://tensorflow.github.io/serving/setup
# if you have a trouble, see https://github.com/dsindex/tensorflow#tensorflow-serving

# apply patch by dmansfield to serving/tf_models/syntaxnet 
$ cd serving/tf_models
$ patch -p1 < ../../api/pr250-patch-a4b7bb9a.diff.txt
$ cd ../../

# configure serving/tensorflow
$ cd serving/tensorflow
$ ./configure
$ cd ../../

# modify serving/tensorflow_serving/workspace.bzl for referencing syntaxnet
$ cp api/modified_workspace.bzl serving/tensorflow_serving/workspace.bzl
$ cat api/modified_workspace.bzl
#  ... 
#  native.local_repository(
#    name = "syntaxnet",
#    path = workspace_dir + "/tf_models/syntaxnet",
#  )
#  ...

# append build instructions to serving/tensorflow_serving/example/BUILD
$ cat api/append_BUILD >> serving/tensorflow_serving/example/BUILD

# copy parsey_api.cc, parsey_api.proto to example directory to build
$ cp api/parsey_api* serving/tensorflow_serving/example/

# build parsey_api 
$ cd serving
$ bazel --output_user_root=bazel_root build --nocheck_visibility -c opt -s //tensorflow_serving/example:parsey_api --genrule_strategy=standalone --spawn_strategy=standalone --verbose_failures

# make softlink for referencing 'syntaxnet/models/parsey_mcparseface/context.pbtxt'
$ ln -s ./tf_models/syntaxnet/syntaxnet syntaxnet

# run parsey_api with exported model
$ ./bazel-bin/tensorflow_serving/example/parsey_api --port=9000 ../api/parsey_model

and i found the reason of "Not found: syntaxnet/models/parsey_mcparseface/context.pbtxt" problem. you need to make a softlink.

$ cd serving
$ ln -s ./tf_models/syntaxnet/syntaxnet syntaxnet

@mastasky
Copy link

mastasky commented Aug 2, 2016

@dsindex: You are a star! It works perfectly! Thanks so much, this is so much easier than any other solution.

@johndpope
Copy link

johndpope commented Oct 4, 2016

I propose using gist.github.com to keep scripts in sync. The gists can be forked / updated /worked on together.

I drafted this updated Dockerfile which does build as long as you throw enough RAM at it.
https://gist.github.com/johndpope/d41a7d6daf8652cbdaff41a2b063c801

Need to merge this with updated @dsindex script above (in progress)
https://gist.github.com/johndpope/fc1c2327a4ae255d9c44dda9b67b5288#file-gistfile1-txt

@bhoomit
Copy link

bhoomit commented Oct 18, 2016

@dsindex I'm getting this error

ERROR: com.google.devtools.build.lib.packages.BuildFileContainsErrorsException: error loading package '': Extension file not found. Unable to load package for '//third_party/gpus:cuda_configure.bzl': BUILD file not found on package path.

@dsindex
Copy link

dsindex commented Oct 19, 2016

@bhoomit

it was same issue dsindex/syntaxnet#10

so, i updated README_api.md

$ git clone https://github.com/dsindex/syntaxnet.git work
$ cd work
$ git clone --recurse-submodules https://github.com/tensorflow/serving
# checkout proper version of serving
$ git checkout 89e9dfbea055027bc31878ee8da66b54a701a746
# checkout proper version of tf_models
$ cd serving/tf_models
$ git checkout a4b7bb9a5dd2c021edcd3d68d326255c734d0ef0

updated! (2016. 10. 19. 11:27)
i found a problem and fixed it.

# you can create a shell script with content below!

$ git clone https://github.com/dsindex/syntaxnet.git work
$ cd work
$ git clone --recurse-submodules https://github.com/tensorflow/serving
# checkout proper version of serving
$ cd serving
$ git checkout 89e9dfbea055027bc31878ee8da66b54a701a746
$ git submodule update --init --recursive
# checkout proper version of tf_models
$ cd tf_models
$ git checkout a4b7bb9a5dd2c021edcd3d68d326255c734d0ef0

# you need to install gRPC properly
# https://tensorflow.github.io/serving/setup
# if you have a trouble, see https://github.com/dsindex/tensorflow#tensorflow-serving

# apply patch by dmansfield to serving/tf_models/syntaxnet 
$ cd serving/tf_models
$ patch -p1 < ../../api/pr250-patch-a4b7bb9a.diff.txt
$ cd ../../

# configure serving/tensorflow
$ cd serving/tensorflow
$ ./configure
$ cd ../../

@johndpope
Copy link

thanks @dsindex
@bhoomit - I'm still stuck on this -> however I found this related ticket.
tensorflow/tensorflow#4216
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/workspace.bzl#L3

@johndpope
Copy link

johndpope commented Oct 19, 2016

UPDATE - finally building thanks to @dsindex @xiamx

https://gist.github.com/johndpope/fc1c2327a4ae255d9c44dda9b67b5288
(found a bug? fork and fix.)

Optional Docker file
https://github.com/johndpope/DockerParseyMcParsefaceAPI

@bhoomit
Copy link

bhoomit commented Oct 19, 2016

@dsindex hey thanks. I'm using @johndpope 's script.

@johndpope Sorry, I tried the new script. It's still giving the same error.

@bhoomit
Copy link

bhoomit commented Oct 19, 2016

@dsindex it worked :) Thanks a lot.

@johndpope additionally i had to install gRPC and your script works fine after that. Thanks a lot :)

@robinqhuang
Copy link

@xtknight The patch pr250-patch-a4b7bb9a.diff.txt no longer work for the latest syntaxnet, any updated one? Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants