Estas instrucciones suponen que está construyendo Popart en Ubuntu 20.04. Estas instrucciones describen cómo instalar cada dependencia requerida. Si está comenzando desde una instalación existente de Ubuntu 20.04, es posible que ya tenga algunas de estas dependencias instaladas. Si es así, asegúrese de que las versiones de estas dependencias sean compatibles con estas instrucciones. Otros sistemas operativos basados en Linux también pueden funcionar, pero los nombres de paquetes y las versiones compatibles de los paquetes pueden variar.
Necesitará las siguientes herramientas instaladas en su sistema si aún no están instaladas:
sudo apt-get install wget git -ysudo apt-get install python3-pip -y
ln -s /usr/bin/python3 /usr/bin/pythonNota : Si tiene Python 2.x instalado en su sistema, puede ignorar el enlace SYM.
sudo apt-get install ninja-build -ysudo apt-get install pkg-config -y Todas las dependencias de Python necesarias para construir y ejecutar Popart se pueden encontrar en requirements.txt . Instalarlos ejecutando
python3 -m pip install -r requirements.txt Si desea contribuir a Popart, se requieren dependencias adicionales para el desarrollo. Estos se encuentran en requirements/dev.txt y se pueden instalar ejecutando:
python3 -m pip install -r requirements/dev.txtPopart se compila contra varias bibliotecas que deben estar disponibles en su sistema:
La versión de la biblioteca SPDLOG en Ubuntu 20.04 ( spdlog-dev ) no es compatible con Popart. En cambio, debe construir la versión 1.8.0 desde la fuente. Para hacer esto, en un directorio de su elección, descargue la fuente de la página Spdlog GitHub y cree e instale de la siguiente manera:
export SPDLOG_INSTALL_DIR= $( pwd ) /spdlog-1.8.0/install_dir/
git clone --branch v1.8.0 https://github.com/gabime/spdlog.git
cd spdlog && mkdir build && cd build
cmake .. -GNinja -DCMAKE_INSTALL_PREFIX= $SPDLOG_INSTALL_DIR && cmake --build . --target install Nota : Necesitará el valor de SPDLOG_INSTALL_DIR más tarde.
La versión de la biblioteca Pybind11 en Ubuntu 20.04 ( pybind11-dev ) es 2.4.3, que no es compatible con Popart. En su lugar, debe construir la versión 2.6.2 a partir de la fuente. Para hacer esto, en un directorio de su elección, descargue la fuente de la página de pybind github y se construya e instale de la siguiente manera:
export PYBIND11_INSTALL_DIR= $( pwd ) /pybind11-2.6.2/install_dir/
wget https://github.com/pybind/pybind11/archive/v2.6.2.tar.gz
tar xvfz v2.6.2.tar.gz
rm v2.6.2.tar.gz
pushd pybind11-2.6.2
mkdir build
mkdir install_dir
cd build
cmake ..
-DCMAKE_INSTALL_PREFIX= $PYBIND11_INSTALL_DIR
-GNinja
ninja
ninja install
popd Nota : Si prefiere construir con make en lugar de ninja , elimine el interruptor -DCMAKE_GENERATOR="Ninja" .
Nota : Necesitará el valor de PYBIND11_INSTALL_DIR más tarde.
Para obtener más información, consulte: https://github.com/pybind/pybind11/blob/master/docs/compiling.rst.
La biblioteca Boost en Ubuntu 20.04 ( libboost-dev ) es 1.71.1, que no es compatible con Popart. En cambio, debe construir la versión 1.80.0 desde la fuente. Para hacer esto, en un directorio de su elección, descargue la fuente de la página de descarga de Boost e cree e instale de la siguiente manera:
export BOOST_INSTALL_DIR= $( pwd ) /boost_1_80_0/install_dir/
wget https://boostorg.jfrog.io/artifactory/main/release/1.70.0/source/boost_1_80_0.tar.gz
tar xvfz boost_1_80_0.tar.gz
rm boost_1_80_0.tar.gz
pushd boost_1_80_0
mkdir install_dir
./bootstrap.sh --prefix= $BOOST_INSTALL_DIR
./b2 -j8 link=static runtime-link=static --abbreviate-paths variant=release toolset=gcc " cxxflags= -fno-semantic-interposition -fPIC " cxxstd=14 --with-test --with-system --with-filesystem --with-program_options --with-graph --with-random install
popd Nota : El interruptor -j8 se usa para reducir los tiempos de construcción mediante la construcción con hasta 8 hilos.
Nota : Necesitará el valor de BOOST_INSTALL_DIR más tarde.
Para obtener más información, consulte: https://www.boost.org/doc/libs/1_80_0/more/getting_started/unix-variants.html.
La biblioteca ONNX también debe ser compilada de la fuente. Para hacer esto, en un directorio de su elección, descargue la fuente de la página ONNX GitHub y se construya e instale de la siguiente manera:
export ONNX_INSTALL_DIR= $( pwd ) /onnx-1.6.0/install_dir/
wget https://github.com/onnx/onnx/archive/v1.6.0.tar.gz
tar xvfz v1.6.0.tar.gz
rm v1.6.0.tar.gz
pushd onnx-1.6.0
mkdir install_dir
cmake ..
-DONNX_ML=0
-DProtobuf_PROTOC_EXECUTABLE= $PROTOBUF_INSTALL_DIR /bin/protoc
-DCMAKE_INSTALL_PREFIX= $ONNX_INSTALL_DIR
make -j8
make install
popd Nota : El interruptor -j8 se usa para reducir los tiempos de construcción mediante la construcción con hasta 8 hilos.
Nota : Necesitará el valor de ONNX_INSTALL_DIR más tarde.
Para obtener más información, consulte: https://github.com/onnx/onnx.
Los lanzamientos de CapnProto se pueden descargar desde la página de descarga de CapnProto. En un directorio de su elección, descargue e instale de la siguiente manera:
export CAPNPROTO_INSTALL_DIR= $( pwd ) /capnproto-0.7.0/install_dir/
wget https://capnproto.org/capnproto-c++-0.7.0.tar.gz
tar xvfz capnproto-c++-0.7.0.tar.gz
rm capnproto-c++-0.7.0.tar.gz
pushd capnproto-c++-0.7.0
./configure --prefix= $CAPNPROTO_INSTALL_DIR
make -j8 check
make install
popd Nota : El interruptor -j8 se usa para reducir los tiempos de prueba mediante la prueba con hasta 8 subprocesos.
Nota : necesitará el valor de CAPNPROTO_INSTALL_DIR más tarde
Para obtener más información, consulte: https://capnproto.org/install.html
El trompeloeil se puede descargar desde la página de trompeloeil Github. En un directorio de su elección, descargue e instale de la siguiente manera:
export TROMPELOEIL_INSTALL_DIR= $( pwd ) /trompeloeil-35/install_dir/
wget https://github.com/rollbear/trompeloeil/archive/refs/tags/v35.tar.gz
tar xvfz v35.tar.gz
rm v35.tar.gz
pushd trompeloeil-35
mkdir build ; cd build
cmake .. -DCMAKE_INSTALL_PREFIX= $TROMPELOEIL_INSTALL_DIR
cmake --build . --target install
popd Puede consultar la biblioteca Popritms de GraphCore en un directorio adecuado del repositorio público de GitHub e instalarla de la siguiente manera:
export POPRITHMS_INSTALL_DIR= $( pwd ) /poprithms/install_dir/
git clone https://github.com/graphcore/poprithms.git
pushd poprithms
mkdir build ; cd build ;
cmake ..
-DBOOST_ROOT= $BOOST_INSTALL_DIR
-DCMAKE_INSTALL_PREFIX= $POPRITHMS_INSTALL_DIR
-DCMAKE_GENERATOR= " Ninja "
ninja
ninja install
popd Nota : Si prefiere construir con make en lugar de ninja , elimine el interruptor -DCMAKE_GENERATOR="Ninja" .
Nota : Las compilaciones se pueden acelerar aún más usando CCACHE.
Nota : Necesitará el valor de POPRITHMS_INSTALL_DIR más tarde.
Para obtener más información, consulte: https://github.com/graphcore/poprithms.
Para obtener el SDK de Poplar, debe registrarse para acceder al portal de soporte de GraphCore. Una vez que tenga acceso, puede descargar el último Ubuntu 18.04 desde el portal de soporte, desempaquételo en un directorio adecuado. Para el resto de este documento, las instrucciones suponen que ha establecido una variable de entorno POPLAR_INSTALL_DIR para señalar el directorio donde se desempaqueta el álamo. Tenga en cuenta que el SDK de Poplar contiene más que solo Poplar y tendrá que señalar la variable específicamente a un subdirectorio llamado algo como poplar-ubuntu_18_04-xxxxx .
Para obtener más información, consulte: https://www.graphcore.ai/developer.
Tenga en cuenta que solo Ubuntu 20.04 es compatible con la construcción de Popart externamente.
Para construir Popart, ejecute los siguientes comandos en el directorio donde revisó el repositorio:
export POPART_INSTALL_DIR= $( pwd ) /popart/install_dir/
export PKG_CONFIG_PATH= " $CAPNPROTO_INSTALL_DIR /lib/pkgconfig: $PKG_CONFIG_PATH "
git clone https://github.com/graphcore/popart.git
push popart
mkdir build ; cd build ;
cmake ..
-DBOOST_ROOT= $BOOST_INSTALL_DIR
-DCapnProto_ROOT= $CAPNPROTO_INSTALL_DIR
-DONNX_ROOT= $ONNX_INSTALL_DIR
-DPOPLAR_INSTALL_DIR= $POPLAR_INSTALL_DIR
-Dpoprithms_ROOT= $POPRITHMS_INSTALL_DIR
-DProtobuf_ROOT= $PROTOBUF_INSTALL_DIR
-Dpybind11_ROOT= $PYBIND11_INSTALL_DIR
-Dspdlog_ROOT= $SPDLOG_INSTALL_DIR
-Dtrompeloeil_ROOT= $TROMPELOEIL_INSTALL_DIR
-DCMAKE_INSTALL_PREFIX= $POPART_INSTALL_DIR
-GNinja
ninja
ninja install
popd Puede usar cualquier método compatible con CMake para señalarlo en las dependencias. Consulte la documentación find_package en la documentación de CMake. Hemos optado por usar <verbatim pkg name>_ROOT variables que apuntan al directorio de instalación del paquete.
Depreción : <uppercase pkg name>_INSTALL_DIR variables, excepto POPLAR_INSTALL_DIR , se han desaprobado y se eliminarán en una versión futura.
Nota : Otros interruptores CMake están disponibles:
-DPOPART_BUILD_TESTING=0 - interruptor que se puede usar para evitar compilar la prueba de popart.-DPOPART_STRICT_COMPARATOR_CHECKS=1 - Verifique que nullptr y punteros no válidos al comparar contenedores de punteros. Nota : Si prefiere construir con make en lugar de ninja , retire el interruptor -GNinja .
Nota : Las compilaciones se pueden acelerar aún más usando CCACHE.
NOTA : CMAKE exporta CMAKE de CapnProto simplemente envuelve PKG-Config. PKG_CONFIG_PATH se establece para decirle a PKG-Config dónde encontrar CapnProto.
Hay una serie de aplicaciones Popart avanzadas disponibles en el repositorio de ejemplo de GraphCore en GitHub. Consulte el ReadMe para obtener una lista completa de ejemplos implementados utilizando Popart y PopXL
El código se proporciona bajo la licencia MIT, consulte el archivo License.txt.
El proyecto incluye trabajo derivado de lo siguiente: Tensorflow, https://github.com/tensorflow/tensorflow/
Copyright 2017 Los autores de TensorFlow. Reservados todos los derechos.
Licenciado bajo la licencia Apache, versión 2.0 (la "licencia"); No puede usar este archivo, excepto de conformidad con la licencia. Puede obtener una copia de la licencia en
http://www.apache.org/licenses/LICENSE-2.0
A menos que la ley aplicable sea requerida o acordado por escrito, el software distribuido bajo la licencia se distribuye de manera "como es", sin garantías o condiciones de ningún tipo, ya sea expresas o implícitas. Consulte la licencia para los permisos y limitaciones de rigor de idioma específico bajo la licencia.
Archivos relevantes:
tests/integration/optimizer_tests/rmsprop_update_numpy.pyEl proyecto incluye trabajo derivado de lo siguiente: Proyecto LLVM, http://llvm.org/doxygen/machineoutliner_8cpp_source.html
Licenciado bajo la licencia Apache, versión 2.0 (la "licencia"); No puede usar este archivo, excepto de conformidad con la licencia. Puede obtener una copia de la licencia en
http://www.apache.org/licenses/license-2.0
A menos que la ley aplicable sea requerida o acordado por escrito, el software distribuido bajo la licencia se distribuye de manera "como es", sin garantías o condiciones de ningún tipo, ya sea expresas o implícitas. Consulte la licencia para los permisos y limitaciones de rigor de idioma específico bajo la licencia.
Archivos relevantes:
willow/src/subgraph/suffixtree.cppEl proyecto incluye trabajo derivado de lo siguiente: Pybind11_mkdoc, https://github.com/pybind/pybind11_mkdoc
pybind11_mkdoc tiene licencia bajo la siguiente licencia del MIT:
La licencia del MIT (MIT)
Copyright (c) 2020 Wenzel Jakob
El permiso se otorga, de forma gratuita, a cualquier persona que obtenga una copia de este software y archivos de documentación asociados (el "software"), para tratar el software sin restricción, incluidos los derechos de usar, copiar, modificar, modificar, modificar, fusionar , publique, distribuya, sublicence y venda copias del software, y para permitir a las personas a las que se proporciona el software para hacerlo, sujeto a las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o porciones sustanciales del software.
El software se proporciona "tal cual", sin garantía de ningún tipo, expresa o implícita, incluidas, entre otros, las garantías de comerciabilidad, idoneidad para un propósito particular y no infracción. En ningún caso los autores o titulares de derechos de autor serán responsables de cualquier reclamo, daños u otro responsabilidad, ya sea en una acción de contrato, agravio o de otro tipo, derivado, de o en relación con el software o el uso u otros tratos en el SOFTWARE.
Archivos relevantes:
scripts/pybind11_mkdoc/El proyecto incluye trabajo derivado de lo siguiente: ONNX, https://github.com/onnx/onnx
ONNX tiene licencia bajo la siguiente licencia del MIT:
Licencia de MIT
Copyright (c) ONNX PROPITORES DEL PROYECTO Todos los derechos reservados.
El permiso se otorga, de forma gratuita, a cualquier persona que obtenga una copia de este software y archivos de documentación asociados (el "software"), para tratar el software sin restricción, incluidos los derechos de usar, copiar, modificar, modificar, modificar, fusionar , publique, distribuya, sublicence y venda copias del software, y para permitir a las personas a las que se proporciona el software para hacerlo, sujeto a las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o porciones sustanciales del software.
El software se proporciona "tal cual", sin garantía de ningún tipo, expresa o implícita, incluidas, entre otros, las garantías de comerciabilidad, idoneidad para un propósito particular y no infracción. En ningún caso los autores o titulares de derechos de autor serán responsables de cualquier reclamo, daños u otro responsabilidad, ya sea en una acción de contrato, agravio o de otro tipo, derivado, de o en relación con el software o el uso u otros tratos en el SOFTWARE.
Archivos relevantes:
tests/integration/operators_test/rnn_helper.pytests/integration/operators_test/gru_test.pytests/integration/operators_test/lstm_test.pyEl proyecto incluye trabajo derivado de lo siguiente: Opcional-Lite, https://github.com/martinmoene/optional-lite
Copyright (c) 2014-2018 Martin Moene
Licencia de software Boost - Versión 1.0 - 17 de agosto de 2003
Distribuido bajo la licencia de software Boost, versión 1.0.
Por la presente, se otorga el permiso, de forma gratuita, a cualquier persona u organización que obtenga una copia del software y la documentación acompañante cubierta por esta licencia (el "Software") para usar, reproducir, mostrar, distribuir, ejecutar y transmitir el software, y Para preparar trabajos derivados del software y permitir que terceros a quienes se proporciona el software para hacerlo, todo sujeto a lo siguiente:
Los avisos de derechos de autor en el software y toda esta declaración, incluida la subvención de licencia anterior, esta restricción y el siguiente descargo de responsabilidad, deben incluirse en todas las copias del software, en su totalidad o en parte, y todos los trabajos derivados del software, a menos que tal Las copias o los trabajos derivados son únicamente en forma de código de objeto ejecutable por máquina generado por un procesador de lenguaje de origen.
El software se proporciona "tal cual", sin garantía de ningún tipo, expresa o implícita, incluidas, entre otros, las garantías de comerciabilidad, idoneidad para un propósito particular, título y no infracción. En ningún caso, los titulares de derechos de autor o cualquiera que distribuya el software sea responsable de ningún daño u otro responsabilidad, ya sea en contrato, agravio o de otra manera, que surja, fuera o en relación con el software o el uso u otros tratos en el software.
Archivos relevantes:
willow/include/popart/vendored/optional.hppEl proyecto incluye trabajo derivado de lo siguiente: Anylite, https://github.com/martinmoene/any-lite
Copyright (c) 2016-2018 Martin Moene
Licencia de software Boost - Versión 1.0 - 17 de agosto de 2003
Distribuido bajo la licencia de software Boost, versión 1.0.
Por la presente, se otorga el permiso, de forma gratuita, a cualquier persona u organización que obtenga una copia del software y la documentación acompañante cubierta por esta licencia (el "software") para usar, reproducir, mostrar, distribuir, ejecutar y transmitir el software y Para preparar trabajos derivados del software y permitir que terceros a quienes se proporciona el software para hacerlo, todo sujeto a lo siguiente:
Los avisos de derechos de autor en el software y toda esta declaración, incluida la subvención de licencia anterior, esta restricción y el siguiente descargo de responsabilidad, deben incluirse en todas las copias del software, en su totalidad o en parte, y todos los trabajos derivados del software, a menos que tal Las copias o los trabajos derivados son únicamente en forma de código de objeto ejecutable por máquina generado por un procesador de lenguaje de origen.
El software se proporciona "tal cual", sin garantía de ningún tipo, expresa o implícita, incluidas, entre otros, las garantías de comerciabilidad, idoneidad para un propósito particular, título y no infracción. En ningún caso, los titulares de derechos de autor o cualquiera que distribuya el software sea responsable de ningún daño u otro responsabilidad, ya sea en contrato, agravio o de otra manera, que surja, fuera o en relación con el software o el uso u otros tratos en el software.
Archivos relevantes:
willow/include/popart/vendored/anylite.hpp