HyperAI

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

il y a 3 ans
Information
Jiaxin Sun
特色图像

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--