python-3.xjupyter-notebooklstmgoogle-colaboratorycntk

Why is import cntk as C not working in google colab


I installed opencv version 3.4.4, installed cntk,Importing into google collab gives the following results.

import cntk as C 

    /usr/local/lib/python3.6/dist-packages/cntk/cntk_py_init.py:56: UserWarning: Unsupported Linux distribution (ubuntu-18.04). CNTK supports Ubuntu 16.04 and above, only.
  warnings.warn('Unsupported Linux distribution (%s-%s). CNTK supports Ubuntu 16.04 and above, only.' % (__my_distro__, __my_distro_ver__))
/usr/local/lib/python3.6/dist-packages/cntk/cntk_py_init.py:102: UserWarning: 

################################################ Missing optional dependency (   OpenCV   ) ################################################
   CNTK may crash if the component that depends on those dependencies is loaded.
   Visit https://learn.microsoft.com/en-us/cognitive-toolkit/Setup-Linux-Python#optional-opencv for more information.
############################################################################################################################################

  warnings.warn(WARNING_MSG % ('   OpenCV   ', 'https://learn.microsoft.com/en-us/cognitive-toolkit/Setup-Linux-Python#optional-opencv'))
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/cntk/cntk_py.py in swig_import_helper()
     17         try:
---> 18             return importlib.import_module(mname)
     19         except ImportError:

/usr/lib/python3.6/importlib/__init__.py in import_module(name, package)
    125             level += 1
--> 126     return _bootstrap._gcd_import(name[level:], package, level)
    127 

/usr/lib/python3.6/importlib/_bootstrap.py in _gcd_import(name, package, level)

/usr/lib/python3.6/importlib/_bootstrap.py in _find_and_load(name, import_)

/usr/lib/python3.6/importlib/_bootstrap.py in _find_and_load_unlocked(name, import_)

ModuleNotFoundError: No module named 'cntk._cntk_py'

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
<ipython-input-29-f8cc57397495> in <module>()
----> 1 import cntk as c

/usr/local/lib/python3.6/dist-packages/cntk/__init__.py in <module>()
     20 import numpy as np
     21 
---> 22 from . import cntk_py
     23 
     24 #

/usr/local/lib/python3.6/dist-packages/cntk/cntk_py.py in <module>()
     19         except ImportError:
     20             return importlib.import_module('_cntk_py')
---> 21     _cntk_py = swig_import_helper()
     22     del swig_import_helper
     23 elif _swig_python_version_info >= (2, 6, 0):

/usr/local/lib/python3.6/dist-packages/cntk/cntk_py.py in swig_import_helper()
     18             return importlib.import_module(mname)
     19         except ImportError:
---> 20             return importlib.import_module('_cntk_py')
     21     _cntk_py = swig_import_helper()
     22     del swig_import_helper

/usr/lib/python3.6/importlib/__init__.py in import_module(name, package)
    124                 break
    125             level += 1
--> 126     return _bootstrap._gcd_import(name[level:], package, level)
    127 
    128 

I installed opencv. The version is cv2. I wish to use RNN and LSTM networks for sequence to sequence models in google collab laboratory. How to rectify this error?


Solution

  • In general when asking for help with colab it's best to share a minimal notebook that reproduces the issue so it's clear to people trying to help what exactly you've done (e.g. "I installed opencv version 3.4.4" is not as informative as seeing the precise commands you've used, and any output they generated, and so on).

    At least the first warning is probably not work-around-able because colab's VMs run ubuntu:18.04 but CNTK officially doesn't support anything other than 16.04: "Note that only Ubuntu 16.04 is officially supported." (from https://learn.microsoft.com/en-us/cognitive-toolkit/setup-linux-python?tabs=cntkpy26)

    I'm not familiar with CNTK or its deps but this seems to import successfully (albeit with a warning) and successfully show the module's interface:

    !apt-get install --no-install-recommends openmpi-bin libopenmpi-dev libopencv-dev python3-opencv python-opencv && ln -sf /usr/lib/x86_64-linux-gnu/libmpi_cxx.so /usr/lib/x86_64-linux-gnu/libmpi_cxx.so.1 && ln -sf /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.12 && ln -sf /usr/lib/x86_64-linux-gnu/libmpi.so /usr/lib/x86_64-linux-gnu/libmpi.so.12 && pip install cntk
    import cntk as C
    help(C)
    

    (in a py3/CPU colab notebook; sadly the first line takes almost 2m to run, so be patient)