lmcinnes / umap

Uniform Manifold Approximation and Projection
BSD 3-Clause "New" or "Revised" License
7.31k stars 796 forks source link

Kernel keeps restarting with umap 0.4.3 #430

Closed AlexMRuch closed 4 years ago

AlexMRuch commented 4 years ago

UMAP keeps restarting my kernel with umap version 0.4.3 even in a fresh notebook :-(

MAKE NEW ENV ON LINUX UBUNTU 16

amruch@wit:~/graphika/kg$ conda create --name umap python=3.6 ipykernel seaborn pandas hdbscan umap-learn
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /home/amruch/anaconda3/envs/umap

  added / updated specs:
    - hdbscan
    - ipykernel
    - pandas
    - python=3.6
    - seaborn
    - umap-learn

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    decorator-4.4.2            |             py_0          11 KB  conda-forge
    entrypoints-0.3            |py36h9f0ad1d_1001          12 KB  conda-forge
    freetype-2.10.2            |       he06d7ca_0         905 KB  conda-forge
    hdbscan-0.8.26             |   py36h785e9b2_1         645 KB  conda-forge
    ipykernel-5.2.1            |   py36h95af2a2_0         162 KB  conda-forge
    ipython-7.14.0             |   py36h9f0ad1d_0         1.1 MB  conda-forge
    jedi-0.17.0                |   py36h9f0ad1d_0         806 KB  conda-forge
    joblib-0.15.1              |             py_0         202 KB  conda-forge
    jupyter_client-6.1.3       |             py_0          74 KB  conda-forge
    jupyter_core-4.6.3         |   py36h9f0ad1d_1          71 KB  conda-forge
    kiwisolver-1.2.0           |   py36hdb11119_0          87 KB  conda-forge
    libgfortran-ng-7.5.0       |       hdf63c60_6         1.7 MB  conda-forge
    llvmlite-0.31.0            |   py36hfa65bc7_1         325 KB  conda-forge
    matplotlib-base-3.2.1      |   py36hb8e4980_0         7.1 MB  conda-forge
    numba-0.48.0               |   py36hb3f55d8_0         3.4 MB  conda-forge
    numpy-1.18.4               |   py36h7314795_0         5.2 MB  conda-forge
    pandas-1.0.3               |   py36h830a2c2_1        11.1 MB  conda-forge
    pexpect-4.8.0              |   py36h9f0ad1d_1          79 KB  conda-forge
    pickleshare-0.7.5          |py36h9f0ad1d_1001          13 KB  conda-forge
    pip-20.1                   |     pyh9f0ad1d_0         1.1 MB  conda-forge
    pygments-2.6.1             |             py_0         683 KB  conda-forge
    python-3.6.10              |h8356626_1011_cpython        34.1 MB  conda-forge
    python-dateutil-2.8.1      |             py_0         220 KB  conda-forge
    pytz-2020.1                |     pyh9f0ad1d_0         227 KB  conda-forge
    pyzmq-19.0.1               |   py36h9947dbf_0         491 KB  conda-forge
    scikit-learn-0.23.0        |   py36h0e1014b_0         7.4 MB  conda-forge
    scipy-1.4.1                |   py36h2d22cac_3        18.9 MB  conda-forge
    seaborn-0.10.1             |             py_0         158 KB  conda-forge
    setuptools-46.4.0          |   py36h9f0ad1d_0         636 KB  conda-forge
    statsmodels-0.11.1         |   py36h8c4c3a4_1        10.3 MB  conda-forge
    threadpoolctl-2.0.0        |     pyh5ca1d4c_0          14 KB  conda-forge
    tornado-6.0.4              |   py36h8c4c3a4_1         639 KB  conda-forge
    traitlets-4.3.3            |   py36h9f0ad1d_1         133 KB  conda-forge
    umap-learn-0.4.3           |   py36h9f0ad1d_0         108 KB  conda-forge
    ------------------------------------------------------------
                                           Total:       107.9 MB

The following NEW packages will be INSTALLED:

  _libgcc_mutex      conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge
  _openmp_mutex      conda-forge/linux-64::_openmp_mutex-4.5-1_llvm
  backcall           conda-forge/noarch::backcall-0.1.0-py_0
  ca-certificates    conda-forge/linux-64::ca-certificates-2020.4.5.1-hecc5488_0
  certifi            conda-forge/linux-64::certifi-2020.4.5.1-py36h9f0ad1d_0
  cycler             conda-forge/noarch::cycler-0.10.0-py_2
  decorator          conda-forge/noarch::decorator-4.4.2-py_0
  entrypoints        conda-forge/linux-64::entrypoints-0.3-py36h9f0ad1d_1001
  freetype           conda-forge/linux-64::freetype-2.10.2-he06d7ca_0
  hdbscan            conda-forge/linux-64::hdbscan-0.8.26-py36h785e9b2_1
  icu                conda-forge/linux-64::icu-64.2-he1b5a44_1
  ipykernel          conda-forge/linux-64::ipykernel-5.2.1-py36h95af2a2_0
  ipython            conda-forge/linux-64::ipython-7.14.0-py36h9f0ad1d_0
  ipython_genutils   conda-forge/noarch::ipython_genutils-0.2.0-py_1
  jedi               conda-forge/linux-64::jedi-0.17.0-py36h9f0ad1d_0
  joblib             conda-forge/noarch::joblib-0.15.1-py_0
  jupyter_client     conda-forge/noarch::jupyter_client-6.1.3-py_0
  jupyter_core       conda-forge/linux-64::jupyter_core-4.6.3-py36h9f0ad1d_1
  kiwisolver         conda-forge/linux-64::kiwisolver-1.2.0-py36hdb11119_0
  ld_impl_linux-64   conda-forge/linux-64::ld_impl_linux-64-2.34-h53a641e_0
  libblas            conda-forge/linux-64::libblas-3.8.0-16_openblas
  libcblas           conda-forge/linux-64::libcblas-3.8.0-16_openblas
  libffi             conda-forge/linux-64::libffi-3.2.1-he1b5a44_1007
  libgcc-ng          conda-forge/linux-64::libgcc-ng-9.2.0-h24d8f2e_2
  libgfortran-ng     conda-forge/linux-64::libgfortran-ng-7.5.0-hdf63c60_6
  liblapack          conda-forge/linux-64::liblapack-3.8.0-16_openblas
  libllvm8           conda-forge/linux-64::libllvm8-8.0.1-hc9558a2_0
  libopenblas        conda-forge/linux-64::libopenblas-0.3.9-h5ec1e0e_0
  libpng             conda-forge/linux-64::libpng-1.6.37-hed695b0_1
  libsodium          conda-forge/linux-64::libsodium-1.0.17-h516909a_0
  libstdcxx-ng       conda-forge/linux-64::libstdcxx-ng-9.2.0-hdf63c60_2
  llvm-openmp        conda-forge/linux-64::llvm-openmp-10.0.0-hc9558a2_0
  llvmlite           conda-forge/linux-64::llvmlite-0.31.0-py36hfa65bc7_1
  matplotlib-base    conda-forge/linux-64::matplotlib-base-3.2.1-py36hb8e4980_0
  ncurses            conda-forge/linux-64::ncurses-6.1-hf484d3e_1002
  numba              conda-forge/linux-64::numba-0.48.0-py36hb3f55d8_0
  numpy              conda-forge/linux-64::numpy-1.18.4-py36h7314795_0
  openssl            conda-forge/linux-64::openssl-1.1.1g-h516909a_0
  pandas             conda-forge/linux-64::pandas-1.0.3-py36h830a2c2_1
  parso              conda-forge/noarch::parso-0.7.0-pyh9f0ad1d_0
  patsy              conda-forge/noarch::patsy-0.5.1-py_0
  pexpect            conda-forge/linux-64::pexpect-4.8.0-py36h9f0ad1d_1
  pickleshare        conda-forge/linux-64::pickleshare-0.7.5-py36h9f0ad1d_1001
  pip                conda-forge/noarch::pip-20.1-pyh9f0ad1d_0
  prompt-toolkit     conda-forge/noarch::prompt-toolkit-3.0.5-py_0
  ptyprocess         conda-forge/noarch::ptyprocess-0.6.0-py_1001
  pygments           conda-forge/noarch::pygments-2.6.1-py_0
  pyparsing          conda-forge/noarch::pyparsing-2.4.7-pyh9f0ad1d_0
  python             conda-forge/linux-64::python-3.6.10-h8356626_1011_cpython
  python-dateutil    conda-forge/noarch::python-dateutil-2.8.1-py_0
  python_abi         conda-forge/linux-64::python_abi-3.6-1_cp36m
  pytz               conda-forge/noarch::pytz-2020.1-pyh9f0ad1d_0
  pyzmq              conda-forge/linux-64::pyzmq-19.0.1-py36h9947dbf_0
  readline           conda-forge/linux-64::readline-8.0-hf8c457e_0
  scikit-learn       conda-forge/linux-64::scikit-learn-0.23.0-py36h0e1014b_0
  scipy              conda-forge/linux-64::scipy-1.4.1-py36h2d22cac_3
  seaborn            conda-forge/noarch::seaborn-0.10.1-py_0
  setuptools         conda-forge/linux-64::setuptools-46.4.0-py36h9f0ad1d_0
  six                conda-forge/noarch::six-1.14.0-py_1
  sqlite             conda-forge/linux-64::sqlite-3.30.1-hcee41ef_0
  statsmodels        conda-forge/linux-64::statsmodels-0.11.1-py36h8c4c3a4_1
  tbb                conda-forge/linux-64::tbb-2020.1-hc9558a2_0
  threadpoolctl      conda-forge/noarch::threadpoolctl-2.0.0-pyh5ca1d4c_0
  tk                 conda-forge/linux-64::tk-8.6.10-hed695b0_0
  tornado            conda-forge/linux-64::tornado-6.0.4-py36h8c4c3a4_1
  traitlets          conda-forge/linux-64::traitlets-4.3.3-py36h9f0ad1d_1
  umap-learn         conda-forge/linux-64::umap-learn-0.4.3-py36h9f0ad1d_0
  wcwidth            conda-forge/noarch::wcwidth-0.1.9-pyh9f0ad1d_0
  wheel              conda-forge/noarch::wheel-0.34.2-py_1
  xz                 conda-forge/linux-64::xz-5.2.5-h516909a_0
  zeromq             conda-forge/linux-64::zeromq-4.3.2-he1b5a44_2
  zlib               conda-forge/linux-64::zlib-1.2.11-h516909a_1006

Proceed ([y]/n)? y

Downloading and Extracting Packages
entrypoints-0.3      | 12 KB     | ###################################################################################################################### | 100%
statsmodels-0.11.1   | 10.3 MB   | ###################################################################################################################### | 100%
setuptools-46.4.0    | 636 KB    | ###################################################################################################################### | 100%
pygments-2.6.1       | 683 KB    | ###################################################################################################################### | 100%
python-dateutil-2.8. | 220 KB    | ###################################################################################################################### | 100%
hdbscan-0.8.26       | 645 KB    | ###################################################################################################################### | 100%
ipykernel-5.2.1      | 162 KB    | ###################################################################################################################### | 100%
traitlets-4.3.3      | 133 KB    | ###################################################################################################################### | 100%
decorator-4.4.2      | 11 KB     | ###################################################################################################################### | 100%
libgfortran-ng-7.5.0 | 1.7 MB    | ###################################################################################################################### | 100%
threadpoolctl-2.0.0  | 14 KB     | ###################################################################################################################### | 100%
llvmlite-0.31.0      | 325 KB    | ###################################################################################################################### | 100%
pexpect-4.8.0        | 79 KB     | ###################################################################################################################### | 100%
jupyter_core-4.6.3   | 71 KB     | ###################################################################################################################### | 100%
pyzmq-19.0.1         | 491 KB    | ###################################################################################################################### | 100%
joblib-0.15.1        | 202 KB    | ###################################################################################################################### | 100%
scikit-learn-0.23.0  | 7.4 MB    | ###################################################################################################################### | 100%
scipy-1.4.1          | 18.9 MB   | ###################################################################################################################### | 100%
numpy-1.18.4         | 5.2 MB    | ###################################################################################################################### | 100%
tornado-6.0.4        | 639 KB    | ###################################################################################################################### | 100%
pandas-1.0.3         | 11.1 MB   | ###################################################################################################################### | 100%
matplotlib-base-3.2. | 7.1 MB    | ###################################################################################################################### | 100%
seaborn-0.10.1       | 158 KB    | ###################################################################################################################### | 100%
ipython-7.14.0       | 1.1 MB    | ###################################################################################################################### | 100%
python-3.6.10        | 34.1 MB   | ###################################################################################################################### | 100%
pytz-2020.1          | 227 KB    | ###################################################################################################################### | 100%
kiwisolver-1.2.0     | 87 KB     | ###################################################################################################################### | 100%
numba-0.48.0         | 3.4 MB    | ###################################################################################################################### | 100%
umap-learn-0.4.3     | 108 KB    | ###################################################################################################################### | 100%
freetype-2.10.2      | 905 KB    | ###################################################################################################################### | 100%
pickleshare-0.7.5    | 13 KB     | ###################################################################################################################### | 100%
pip-20.1             | 1.1 MB    | ###################################################################################################################### | 100%
jedi-0.17.0          | 806 KB    | ###################################################################################################################### | 100%
jupyter_client-6.1.3 | 74 KB     | ###################################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate umap
#
# To deactivate an active environment, use
#
#     $ conda deactivate

amruch@wit:~/graphika/kg$ conda activate dgl
(dgl) amruch@wit:~/graphika/kg$ conda list | grep "umap"
umap-learn                0.4.3            py38h32f6830_0    conda-forge

SCRIPT TO RUN UMAP

# Import general dependencies
import sys
import os
import numpy as np
import pandas as pd
from collections import Counter
import umap
import hdbscan
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import seaborn as sns
from datetime import datetime
from time import time
import pickle

# Set path to knowledge graph data
network_name = "SXSW_2018"
source_path = "/home/amruch/graphika/kg/ckpts/SXSW2018_ComplEx_20200516/"
entity_embeddings_path = source_path+"SXSW2018_ComplEx_entity.npy"
relation_embeddings_path = source_path+"SXSW2018_ComplEx_relation.npy"
print(f"Analyzing entity and relation embeddings for {network_name} from {source_path}")

# Load knowledge graph data
print("Loading entity embedding data...")
entity_embeddings = np.load(entity_embeddings_path)
print("  Entity embeddings shape:", entity_embeddings.shape)
print("Loading relation embedding data...")
relation_embeddings = np.load(relation_embeddings_path)
print("  Relation embeddings shape:", relation_embeddings.shape)

# Run UMAP dimension reduction on entity embeddings to go from 512-D to 10-D
print(f"Reducing embeddings from {entity_embeddings.shape} to ({entity_embeddings.shape[0]}, 10)...")
entity_embeddings = umap.UMAP(
    n_components=10,
    n_neighbors=50,
    min_dist=0.0,
    metric='cosine',
    angular_rp_forest=True,
    random_state=407,
    verbose=True
).fit_transform(entity_embeddings)
print(f"Reduced embeddings to {entity_embeddings.shape}")

Specifically, the notebook dies at the following umap output point:

Reducing embeddings from (368345, 512) to (368345, 10)...
UMAP(angular_rp_forest=True, metric='cosine', min_dist=0.0, n_components=10,
     n_neighbors=50, random_state=407, verbose=True)
Construct fuzzy simplicial set
Tue May 19 11:29:53 2020 Finding Nearest Neighbors
Tue May 19 11:29:53 2020 Building RP forest with 35 trees
Tue May 19 11:30:50 2020 NN descent for 18 iterations

With my Jupyter Lab log reporting

[I 11:36:45.278 LabApp] KernelRestarter: restarting kernel (1/5), keep random ports
kernel 6e902dcb-337a-49c6-b867-6a8d6065630b restarted

I'll try reverting to umap version 0.4.2 to see if that helps.

AlexMRuch commented 4 years ago

Previously, when I installed UMAP in a notebook with dgl, I received this message (don't know if it's relevant):

/home/amruch/anaconda3/envs/dgl/lib/python3.8/site-packages/umap/spectral.py:4: NumbaDeprecationWarning: No direct replacement for 'numba.targets' available. Visit https://gitter.im/numba/numba-dev to request help. Thanks!
AlexMRuch commented 4 years ago

Installed pynndescent=0.3.3 and I still get

/home/amruch/anaconda3/envs/dgl/lib/python3.8/site-packages/umap/spectral.py:4: NumbaDeprecationWarning: No direct replacement for 'numba.targets' available. Visit https://gitter.im/numba/numba-dev to request help. Thanks!
  import numba.targets

Also, my pipeline still failed at exactly the same place as before, ughhhhh

AlexMRuch commented 4 years ago

Posted my solution you suggested in #416. Probably best to keep the convo in there. Closing this. Thanks for the recommendation!