Эти инструкции предполагают, что вы строите Popart на Ubuntu 20.04. Эти инструкции описывают, как установить каждую необходимую зависимость. Если вы начинаете с существующей установки Ubuntu 20.04, у вас уже может быть установлена некоторые из этих зависимостей. Если это так, пожалуйста, убедитесь, что версии этих зависимостей совместимы с этими инструкциями. Другие операционные системы на основе Linux также могут работать, но названия пакетов и поддерживаемые версии пакетов могут варьироваться.
Вам понадобятся следующие инструменты, установленные в вашей системе, если они еще не установлены:
sudo apt-get install wget git -ysudo apt-get install python3-pip -y
ln -s /usr/bin/python3 /usr/bin/pythonПримечание . Если в вашей системе установлен Python 2.x, вы можете игнорировать символику.
sudo apt-get install ninja-build -ysudo apt-get install pkg-config -y Все зависимости от питона, необходимые для построения и запуска Popart, можно найти в requirements.txt . Установите их, работая
python3 -m pip install -r requirements.txt Если вы хотите внести свой вклад в Popart, для разработки требуются дополнительные зависимости. Они найдены в requirements/dev.txt и могут быть установлены с помощью работы:
python3 -m pip install -r requirements/dev.txtPopart собирает несколько библиотек, которые должны быть доступны в вашей системе:
Версия библиотеки SPDLOG в Ubuntu 20.04 ( spdlog-dev ) не совместима с PoPART. Вместо этого вам нужно создать версию 1.8.0 из источника. Для этого, в каталоге по вашему выбору, загрузите источник со страницы Github Spdlog и создайте и установите следующим образом:
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 Примечание . Позже вам понадобится значение SPDLOG_INSTALL_DIR .
Версия библиотеки Pybind11 в Ubuntu 20.04 ( pybind11-dev ) составляет 2.4.3, что не совместимо с Popart. Вместо этого вам необходимо создать версию 2.6.2 из Source. Для этого, в каталоге по вашему выбору, загрузите источник со страницы Github Pybind и создайте и установите следующим образом:
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 ПРИМЕЧАНИЕ . Если вы предпочитаете строительство с помощью make вместо ninja , удалите переключатель -DCMAKE_GENERATOR="Ninja" .
Примечание . Позже вам понадобится значение PYBIND11_INSTALL_DIR .
Для получения дополнительной информации см.: Https://github.com/pybind/pybind11/blob/master/docs/compiling.rst.
Библиотека Boost в Ubuntu 20.04 ( libboost-dev ) составляет 1,71,1, что не совместимо с Popart. Вместо этого вы должны создать версию 1.80.0 из Source. Для этого, в каталоге по вашему выбору, загрузите источник со страницы загрузки Boost, создайте и установите следующим образом:
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 ПРИМЕЧАНИЕ . Переключатель -j8 используется для сокращения времени сборки путем строительства до 8 резьбов.
Примечание . Позже вам понадобится значение BOOST_INSTALL_DIR .
Для получения дополнительной информации см.: Https://www.boost.org/doc/libs/1_80_0/more/getting_started/unix-variants.html.
Библиотека ONNX также должна быть составлена из источника. Для этого, в каталоге по вашему выбору, загрузите источник со страницы Onnx GitHub и создайте и установите следующим образом:
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 ПРИМЕЧАНИЕ . Переключатель -j8 используется для сокращения времени сборки путем строительства до 8 резьбов.
Примечание . Позже вам понадобится значение ONNX_INSTALL_DIR .
Для получения дополнительной информации см.: Https://github.com/onnx/onnx.
Выпуски Capnproto могут быть загружены со страницы загрузки Capnproto. В каталоге по вашему выбору скачать и установить следующим образом:
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 Примечание . Переключатель -j8 используется для сокращения времени испытаний путем тестирования с до 8 потоков.
Примечание : вам понадобится значение CAPNPROTO_INSTALL_DIR позже
Для получения дополнительной информации см.: Https://capnproto.org/install.html
Trompeloeil можно загрузить со страницы Trompeloeil Github. В каталоге по вашему выбору скачать и установить следующим образом:
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 Вы можете заказать библиотеку Poprithms от GraphCore в подходящем каталоге из репозитория Public GitHub и установить ее следующим образом:
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 ПРИМЕЧАНИЕ . Если вы предпочитаете строительство с помощью make вместо ninja , удалите переключатель -DCMAKE_GENERATOR="Ninja" .
Примечание : сборки могут быть дополнительно ускорены с помощью CCache.
Примечание . Позже вам понадобится значение POPRITHMS_INSTALL_DIR .
Для получения дополнительной информации см.: Https://github.com/graphcore/poprithms.
Чтобы получить Poplar SDK, вам необходимо зарегистрироваться для доступа к порталу поддержки GraphCore. После того, как вы получите доступ, вы можете скачать последний Ubuntu 18.04 с портала поддержки, распаковать его в подходящем каталоге. Для оставшейся части этого документа инструкции предполагают, что вы установили переменную среды POPLAR_INSTALL_DIR чтобы указывать на каталог, где распаковывается топ. Обратите внимание, что Poplar SDK содержит больше, чем просто тополь, и вам придется указать переменную специально на подкаталог, названную что-то вроде poplar-ubuntu_18_04-xxxxx .
Для получения дополнительной информации см.: Https://www.graphcore.ai/developer.
Обратите внимание, что только Ubuntu 20.04 поддерживается для строительства пола в снаружи.
Чтобы построить Popart, запустите следующие команды в каталоге, где вы проверили репозиторий:
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 Вы можете использовать любой метод, поддерживаемый CMAKE, чтобы указать его на зависимости. Смотрите документацию find_package в документации Cmake. Мы решили использовать <verbatim pkg name>_ROOT переменные, которые указывают на каталог установки пакета.
Университет : <uppercase pkg name>_INSTALL_DIR , за исключением того, что POPLAR_INSTALL_DIR устарели и будут удалены в будущем выпуске.
Примечание : доступны другие коммутаторы cmake:
-DPOPART_BUILD_TESTING=0 - Переключатель, который можно использовать, чтобы избежать компиляции теста Popart.-DPOPART_STRICT_COMPARATOR_CHECKS=1 - проверьте наличие nullptr и неверные указатели при сравнении контейнеров с указателями. ПРИМЕЧАНИЕ . Если вы предпочитаете строительство с помощью make вместо ninja , удалите переключатель -GNinja .
Примечание : сборки могут быть дополнительно ускорены с помощью CCache.
Примечание . Экспорт Cmake от CAPNProto просто завершает PKG-Config. PKG_CONFIG_PATH установлен, чтобы сообщить PKG-CONFIG, где найти CAPNPROTO.
Существует ряд расширенных приложений Popart, доступных в примере GraphCore на GitHub. См. Readme для полного списка примеров, реализованных с использованием Popart и Popxl
Код предоставляется по лицензии MIT, см. Файл License.txt.
Проект включает в себя полученную работу из следующего: Tensorflow, https://github.com/tensorflow/tensorflow/
Copyright 2017 Thensorflow Авторы. Все права защищены.
Лицензировано по лицензии Apache, версия 2.0 («Лицензия»); Вы не можете использовать этот файл, кроме как в соответствии с лицензией. Вы можете получить копию лицензии на
http://www.apache.org/licenses/LICENSE-2.0
Если это не требуется применимого законодательства или не согласовано в письменной форме, программное обеспечение, распространяемое по лицензии, распределяется по основам «как есть», без каких -либо гарантий или условий, явных или подразумеваемых. См. Лицензию для конкретного языка, регулирующих разрешения и ограничения по лицензии.
Соответствующие файлы:
tests/integration/optimizer_tests/rmsprop_update_numpy.pyПроект включает в себя производные работы от следующего: проект LLVM, http://llvm.org/doxygen/machineoutliner_8cpp_source.html
Лицензировано по лицензии Apache, версия 2.0 («Лицензия»); Вы не можете использовать этот файл, кроме как в соответствии с лицензией. Вы можете получить копию лицензии на
http://www.apache.org/licenses/license-2.0
Если это не требуется применимого законодательства или не согласовано в письменной форме, программное обеспечение, распространяемое по лицензии, распределяется по основам «как есть», без каких -либо гарантий или условий, явных или подразумеваемых. См. Лицензию для конкретного языка, регулирующих разрешения и ограничения по лицензии.
Соответствующие файлы:
willow/src/subgraph/suffixtree.cppПроект включает в себя производную работу из следующего: pybind11_mkdoc, https://github.com/pybind/pybind11_mkdoc
pybind11_mkdoc лицензируется по следующей лицензии MIT:
Лицензия MIT (MIT)
Copyright (C) 2020 Wenzel Jakob
Настоящее разрешение предоставляется бесплатно любому лицу, получающему копию этого программного обеспечения и связанные с ними файлы документации («Программное обеспечение»), для работы в программном обеспечении без ограничений, включая, помимо прочего, права на использование, копирование, изменение, объединение , публиковать, распространять, сублиценс и/или продавать копии программного обеспечения и разрешить лицам, которым предоставлено программное обеспечение, при условии следующих условий:
Вышеуказанное уведомление об авторском праве и это уведомление о разрешении должно быть включено во все копии или существенные части программного обеспечения.
Программное обеспечение предоставляется «как есть», без гарантии любого рода, явного или подразумеваемого, включая, помимо прочего, гарантии товарной пригодности, пригодности для определенной цели и несоответствия. Ни в коем случае не будут нести ответственность авторов или владельцев авторских прав за любые претензии, ущерб или другую ответственность, будь то в действии контракта, деликт или иным образом, возникающих из или в связи с программным обеспечением или использования или других сделок в ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
Соответствующие файлы:
scripts/pybind11_mkdoc/Проект включает в себя производные работы из следующего: ONNX, https://github.com/onnx/onnx
ONNX лицензирован по следующей лицензии MIT:
MIT Лицензия
Авторские права (C) Вкладчики проекта ONNX Все права защищены.
Настоящее разрешение предоставляется бесплатно любому лицу, получающему копию этого программного обеспечения и связанные с ними файлы документации («Программное обеспечение»), для работы в программном обеспечении без ограничений, включая, помимо прочего, права на использование, копирование, изменение, объединение , публиковать, распространять, сублиценс и/или продавать копии программного обеспечения и разрешить лицам, которым предоставлено программное обеспечение, при условии следующих условий:
Вышеуказанное уведомление об авторском праве и это уведомление о разрешении должно быть включено во все копии или существенные части программного обеспечения.
Программное обеспечение предоставляется «как есть», без гарантии любого рода, явного или подразумеваемого, включая, помимо прочего, гарантии товарной пригодности, пригодности для определенной цели и несоответствия. Ни в коем случае не будут нести ответственность авторов или владельцев авторских прав за любые претензии, ущерб или другую ответственность, будь то в действии контракта, деликте или иным образом, возникающим из или в связи с программным обеспечением или использования или других сделок в ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
Соответствующие файлы:
tests/integration/operators_test/rnn_helper.pytests/integration/operators_test/gru_test.pytests/integration/operators_test/lstm_test.pyПроект включает в себя производную работу по следующему: опционально-lite, https://github.com/martinmoene/optional-lite
Copyright (C) 2014-2018 Martin Moene
Лицензия на программное обеспечение Boost - Версия 1.0 - 17 августа 2003 г.
Распространено по лицензии на программное обеспечение Boost, версия 1.0.
Настоящим разрешено бесплатно, любому лицу или организации, получающим копию программного обеспечения и сопровождающую документацию, охватывающую эту лицензию («Программное обеспечение») для использования, воспроизведения, отображения, распределения, выполнения и передачи программ Подготовить производные произведения программного обеспечения и разрешить третьим статьям, которым предоставлено программное обеспечение для этого, все это подлежит следующему:
Уведомления об авторском праве в программном обеспечении и все это заявление, включая приведенный выше грант лицензии, это ограничение и следующее отказ от ответственности, должны быть включены во все копии программного обеспечения, полностью или частично, и все производные работы программного обеспечения, если такое. Копии или производные работы находятся исключительно в форме машинного объектного кода, генерируемого процессором исходного языка.
Программное обеспечение предоставляется «как есть», без гарантии любого рода, явного или подразумеваемого, включая, помимо прочего, гарантии товарной пригодности, пригодности для определенной цели, титула и отсутствия нарушения. Ни в коем случае владельцы авторских прав или кто -либо, кто распространяет программное обеспечение, не несет ответственности за любые убытки или другую ответственность, будь то в контракте, деликте или ином случае, возникающих из или в связи с программным обеспечением или использования или других сделок в программном обеспечении.
Соответствующие файлы:
willow/include/popart/vendored/optional.hppПроект включает в себя производную работу из следующего: Any-Lite, https://github.com/martinmoene/any-lite
Copyright (C) 2016-2018 Martin Moene
Лицензия на программное обеспечение Boost - Версия 1.0 - 17 августа 2003 г.
Распространено по лицензии на программное обеспечение Boost, версия 1.0.
Настоящим разрешено бесплатно, любому лицу или организации, получающим копию программного обеспечения и сопровождающую документацию, охватывающую эту лицензию («Программное обеспечение») для использования, воспроизведения, отображения, распределения, выполнения и передачи программ Подготовить производные произведения программного обеспечения и разрешить третьим статьям, которым предоставлено программное обеспечение для этого, все это подлежит следующему:
Уведомления об авторском праве в программном обеспечении и все это заявление, включая приведенный выше грант лицензии, это ограничение и следующее отказ от ответственности, должны быть включены во все копии программного обеспечения, полностью или частично, и все производные работы программного обеспечения, если такое. Копии или производные работы находятся исключительно в форме машинного объектного кода, генерируемого процессором исходного языка.
Программное обеспечение предоставляется «как есть», без гарантии любого рода, явного или подразумеваемого, включая, помимо прочего, гарантии товарной пригодности, пригодности для определенной цели, титула и отсутствия нарушения. Ни в коем случае владельцы авторских прав или кто -либо, кто распространяет программное обеспечение, не несет ответственности за любые убытки или другую ответственность, будь то в контракте, деликте или ином случае, возникающих из или в связи с программным обеспечением или использования или других сделок в программном обеспечении.
Соответствующие файлы:
willow/include/popart/vendored/anylite.hpp