Skip to content

Commit

Permalink
Graphviz fix (NVIDIA#7843)
Browse files Browse the repository at this point in the history
* graphviz reinstallation added

Signed-off-by: Aleksandr Laptev <alaptev@nvidia.com>

* fix comments

Signed-off-by: Aleksandr Laptev <alaptev@nvidia.com>

* remove redundant installations

Signed-off-by: Aleksandr Laptev <alaptev@nvidia.com>

* remove rebase glitch

Signed-off-by: Aleksandr Laptev <alaptev@nvidia.com>

* remove rebase glitch

Signed-off-by: Aleksandr Laptev <alaptev@nvidia.com>

* additional dependencies are put into a separate RUN

Signed-off-by: Aleksandr Laptev <alaptev@nvidia.com>

---------

Signed-off-by: Aleksandr Laptev <alaptev@nvidia.com>
Co-authored-by: Vladimir Bataev <vbataev@nvidia.com>
  • Loading branch information
GNroy and artbataev authored Jan 10, 2024
1 parent bd47c5c commit 0a1a5b1
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 1 deletion.
32 changes: 31 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ ARG REQUIRE_AIS_CLI=false

# Ensure apt-get won't prompt for selecting options
ENV DEBIAN_FRONTEND=noninteractive
# libavdevice-dev rerquired for latest torchaudio
# libavdevice-dev required for latest torchaudio
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y \
Expand All @@ -42,6 +42,25 @@ RUN apt-get update && \
libavdevice-dev && \
rm -rf /var/lib/apt/lists/*

# libtool, ... , libgts-dev are required for graphviz
# graphviz is required for k2 and pynini visualization
RUN apt-get update && \
apt-get install -y \
libtool \
libltdl-dev \
automake \
autoconf \
bison \
flex \
tcl \
ghostscript \
libgd-dev \
fontconfig \
libcairo2-dev \
libpango1.0-dev \
libgts-dev && \
rm -rf /var/lib/apt/lists/*

WORKDIR /workspace/
# Install megatron core, this can be removed once 0.3 pip package is released
# We leave it here in case we need to work off of a specific commit in main
Expand Down Expand Up @@ -90,6 +109,17 @@ RUN pip install flash-attn
# install numba for latest containers
RUN pip install numba>=0.57.1

COPY scripts /tmp/nemo/scripts/
# install correct graphviz version (k2 and pynini visualization tool), skip if installation fails
RUN INSTALL_MSG=$(/bin/bash /tmp/nemo/scripts/installers/install_graphviz.sh --docker); INSTALL_CODE=$?; \
echo ${INSTALL_MSG}; \
if [ ${INSTALL_CODE} -ne 0 ]; then \
echo "graphviz installation failed"; \
if [ "${REQUIRE_K2}" = true ]; then \
exit ${INSTALL_CODE}; \
else echo "Skipping failed graphviz installation"; fi \
else echo "graphviz installed successfully"; fi

# install k2, skip if installation fails
COPY scripts /tmp/nemo/scripts/
RUN INSTALL_MSG=$(/bin/bash /tmp/nemo/scripts/installers/install_k2.sh); INSTALL_CODE=$?; \
Expand Down
51 changes: 51 additions & 0 deletions scripts/installers/install_graphviz.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#!/bin/bash

# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

DOCKER=false
MAYBE_SUDO=""

GRAPHVIZ_REPO=https://gitlab.com/graphviz/graphviz.git
GRAPHVIZ_LATEST_RELEASE=9.0.0
GRAPHVIZ_PY_REPO=https://github.com/xflr6/graphviz
GRAPHVIZ_PY_LATEST_RELEASE=448d1a0 # Temporary fix until 0.20.2

if [[ $* == *--docker* ]]; then
echo "Docker installation"
DOCKER=true
else
echo "Local installation"
if [[ $(sudo -n -v 2) ]]; then
MAYBE_SUDO="sudo"
else
echo "No sudo detected"
fi
fi

{
$MAYBE_SUDO apt-get update
$MAYBE_SUDO apt-get remove -y graphviz
pip uninstall -y graphviz
if [[ $DOCKER == false ]]; then
$MAYBE_SUDO apt-get install -y libtool libltdl-dev automake autoconf bison flex tcl \
ghostscript libgd-dev fontconfig libcairo2-dev libpango1.0-dev libgts-dev
fi
git clone ${GRAPHVIZ_REPO} -b ${GRAPHVIZ_LATEST_RELEASE} && cd graphviz
./autogen.sh && ./configure --disable-python --disable-perl
$MAYBE_SUDO make -j && $MAYBE_SUDO make install
cd .. && $MAYBE_SUDO rm -rf graphviz
pip install -v "git+${GRAPHVIZ_PY_REPO}@${GRAPHVIZ_PY_LATEST_RELEASE}#egg=graphviz"
} || { echo "graphviz installed with errors! Please check installation manually."; exit 1; }
echo "graphviz (re-) installed successfully!"

0 comments on commit 0a1a5b1

Please sign in to comment.