TVM Du Débutant À La Maîtrise | Installer TVM (Partie 2)

Contenu en un coup d'œil :Il existe trois manières d'installer TVM : l'installation à partir du code source, l'installation à l'aide de l'image Docker et l'installation à l'aide de NNPACK Contrib. Cet article explique comment installer via l'image Docker et NNPACK Contrib.
Mots-clés:Tutoriel de base sur TVM Docker
Cet article a été publié pour la première fois sur le compte officiel de WeChat : HyperAI
Bienvenue à la documentation TVM 101. Cette série poursuivra l'enseignement quotidien de TVM.
Numéro précédent Partie 1 Nous avons présenté comment installer TVM à partir du code source. Ce numéro continuera avec les préparatifs avant l'apprentissage du TVM.Explique comment installer TVM via l'image Docker et NNPACK Contrib.
Installation de TVM Installation de l'image Docker
Les développeurs peuvent utiliser les scripts d’outils Docker pour créer un environnement de développement. Cela aide également à exécuter des démonstrations et des didacticiels TVM.
Docker est requis
https://docs.docker.com/engine/installation
Si vous utilisez CUDA, vous aurez besoin de nvidia-docker.
https://github.com/NVIDIA/nvidia-docker
Obtenez la distribution source TVM ou clonez le référentiel GitHub pour obtenir les scripts d'aide :
git clone --recursive https://github.com/apache/tvm tvm
Utilisez la commande suivante pour démarrer l’image Docker :
/path/to/tvm/docker/bash.sh <image-name>
Une fois la construction locale terminée, le nom de l'image ici peut être un nom d'image Docker locale, par exemple :tvm.ci_cpu .
Ce script d'aide permet :
- Monter le répertoire actuel sur /workspace
- Changez d'utilisateur pour celui qui appelle bash.sh (afin de pouvoir lire/écrire sur le système hôte)
- Utilisez le réseau de l'hôte sous Linux. Étant donné que les lecteurs réseau hôtes ne sont pas pris en charge, utilisez la mise en réseau pontée sur macOS et exposez le port 8888 pour utiliser Jupyter Notebook.
Démarrez Jupyter Notebook en tapant :
jupyter notebook
Si vous voyez une erreur lors du lancement de Jupyter Notebook sur macOS OSError : [Errno 99] Impossible d'attribuer l'adresse demandée, vous pouvez modifier l'adresse IP liée en :
jupyter notebook --ip=0.0.0.0
Notez que sur macOS, puisque nous utilisons un réseau ponté, Jupyter Notebook sera signalé dans une fenêtre similaire à http://{container_hostname}:8888/?token=… Exécuter sur l'URL de . Lors du collage dans le navigateur, vous devez nom_hôte_conteneur Remplacer par hôte local .
Code source de Docker
Afficher le code source de Docker : créez votre propre image Docker.
https://github.com/apache/tvm/tree/main/docker
Exécutez la commande suivante pour créer l’image Docker :
/path/to/tvm/docker/build.sh <image-name>
Vous pouvez également utiliser des images prédéfinies tierces non officielles. Remarque : ces images sont destinées à des tests et ne sont pas des versions ASF.
https://hub.docker.com/r/tlcpack
Installation TVM : installation de NNPACK Contrib
NNPACK est un package d'accélération pour les calculs de réseaux neuronaux qui peuvent s'exécuter sur des processeurs avec des architectures x86-64, ARMv7 ou ARM64.Grâce à NNPACK, les bibliothèques de haut niveau comme MXNet peuvent accélérer l'exécution sur les ordinateurs à processeur multicœur, y compris les ordinateurs portables et les appareils mobiles.
Étant donné que TVM dispose déjà d'une planification nativement réglée, NNPACK est principalement utilisé à des fins de référence et de comparaison. Pour une utilisation générale, l'implémentation TVM réglée nativement est meilleure.
TVM prend en charge NNPACK pour la propagation directe dans les couches convolutives, de pooling maximal et entièrement connectées (inférence uniquement).Dans ce document, nous fournissons un aperçu de haut niveau sur la façon d'utiliser NNPACK avec TVM.
condition
L'implémentation sous-jacente de NNPACK utilise une variété de méthodes d'accélération, notamment fft et winograd.Ces algorithmes fonctionnent mieux avec certaines tailles de lots spécifiques, tailles de noyau et paramètres de foulée que d'autres, de sorte que toutes les couches convolutives, de pooling maximal ou entièrement connectées peuvent ne pas être prises en charge par NNPACK en fonction du contexte.
NNPACK n'est pris en charge que sur Linux et OS X, et pas sur Windows pour le moment.
Créer/installer NNPACK
Si le modèle formé répond à certaines conditions d’utilisation de NNPACK, vous pouvez créer un TVM prenant en charge NNPACK.
Suivez ces étapes simples : créez la bibliothèque partagée NNPACK à l’aide de la commande suivante. TVM liera dynamiquement NNPACK.
REMARQUE : les instructions d’installation NNPACK suivantes ont été testées sur Ubuntu 16.04.
Bâtiment Ninja
NNPACK nécessite une version récente de Ninja. Nous devons donc installer Ninja à partir de la source.
git clone git://github.com/ninja-build/ninja.git
cd ninja
./configure.py --bootstrap
Définissez la variable d'environnement PATH pour indiquer à bash où trouver l'exécutable ninja. Par exemple, supposons que nous ayons cloné ninja dans notre répertoire personnel ~. Nous pouvons ensuite ajouter la ligne suivante dans ~/.bashrc .
export PATH="${PATH}:~/ninja"
Bâtiment NNPACK
CMAKE nouvelle version de NNPACK télécharger séparément Peach et autres dépendances
https://github.com/Maratyszcza/PeachPy
REMARQUE : sur OS X au moins, l'exécution de ninja install ci-dessous écrasera la bibliothèque googletest installée dans /usr/local/lib . Si vous reconstruisez googletest pour remplacer votre copie de nnpack, assurez-vous de transmettre -DBUILD_SHARED_LIBS=ON à cmake.
git clone --recursive https://github.com/Maratyszcza/NNPACK.git
cd NNPACK
# 在 CFLAG 和 CXXFLAG 中添加 PIC 选项以构建 NNPACK 共享库
sed -i "s|gnu99|gnu99 -fPIC|g" CMakeLists.txt
sed -i "s|gnu++11|gnu++11 -fPIC|g" CMakeLists.txt
mkdir build
cd build
# 生成 ninja 构建规则并在配置中添加共享库
cmake -G Ninja -D BUILD_SHARED_LIBS=ON ..
ninja
sudo ninja install
# 在你的 ldconfig 中添加 NNPACK 的 lib 文件夹
echo "/usr/local/lib" > /etc/ld.so.conf.d/nnpack.conf
sudo ldconfig
Création de TVM avec prise en charge NNPACK
git clone --recursive https://github.com/apache/tvm tvm
* exister config.cmake Paramètres moyens définir(USE_NNPACK ON) .
* Volonté NNPACK_PATH Régler sur $(VOTRE_CHEMIN_D'INSTALLATION_NNPACK) Après la configuration, utilisez make pour construire TVM
make
Connectez-vous à tvm.hyper.ai pour voir le document original. Hyper AI continuera à mettre à jour le didacticiel TVM chinois à l'avenir, alors restez à l'écoute~
-- sur--